CANopen-gesteuerter Lego-Kran
Einleitung
Die Kommunikation im Kran und mit den Steuerelementen auf CANopen. Im Inneren befindet sich ein Raspberry Pi als CANopen-Master und ein STM32 Microcontroller als CANopen-Salve. Man kann ihn über ein Touch-Display und über eine separate CANopen-Fernbedienung steuern. Er wurde im Rahmen eines Schülerpraktikums bei der Firma emtas GmbH als Austellungsstück für Messen und Schulungen entwickelt.
Interesse, wie der Kran funktioniert oder wie der Kran umgebaut wurde? Dann unbedingt weiter lesen!
Modifikationen am Kran
Damit der Kran über CANopen steuerbar ist, bedarf es diverser Komponenten:
- Lego-Kran (Model 42042)
- extra Lego-Motor (Artkl.: 88003 (es wird nur ein Motor mitgeliefert))
- selbstgebauter Lego-Sockel (als Gehäuse für Raspberry Pi)
- Raspberry Pi 3 (mit PiCan-Erweiterungsplatine)
- STM32L4-Microcontroller (mit Aufsatzplatine)
- Touch-Display
- Fernbedienung
- Reed-Sensoren
- diverse LEDs (3mm)
Nachdem der Kran nach Anleitung aufgebaut wurde, kann man ihn auch gleich wieder auseinander nehmen, denn wir brauchen Platz für den CANopen-Slave (STM32L4).
Zudem muss das Getriebe aus folgenden Gründen umgebaut werden:
- Platz im Heck vergrößern
- Zweiten Motor einbauen (um Turm und Seilwinde getrennt anzusteuern)
- Drehgeschwindigkeit verlangsamen
- Seilwinde beschleunigen
Um die LEDs überhaupt vernünftig befestigen zu können, müssen die Ränder der LEDs abgeschliffen werden.
Und nun? Nun muss man die Anschluss-Kabel zum CANopen-Slave verlegen. Wenn man noch die Magneten und die Reed-Sensoren angebracht hat, kann man sich dem Sockel widmen.
Dafür benötigt man:
- Legosteine
- Raspberry Pi 3
- Touch-Display (Waveshare 7inch 1024×600 LCD)
- CAN-Kabel & div. Anschlüsse
Als erstes muss der Sockel an sich gebaut werden. Es eignet sich eine Schräge an der Front, damit das Display schräg eingesetzt werden kann. In den Sockel kommen dann das Display und der Pi. Es werden noch ein paar Steine bearbeitet, damit an der Rückseite zwei CAN-Anschlüsse, eine Mikro-USB Buchse und außerdem eine Hohlsteckerbuchse Platz finden können.
Aber wie funktioniert das System?
Funktionsweise des Krans
Wenn man „Links“ drückt, dreht der Kran sich nach links. Das ist ersichtlich, aber was passiert im Inneren?
Drückt man auf dem Display auf den linken Pfeil, wird eine CANopen-Nachricht versendet. Diese Nachricht schickt der CANopen-Master (Raspberry Pi) zu dem CANopen-Slave (STM32L4), welcher dann auf die Nachricht reagiert, indem er den Motor in Richtung Links drehen lässt. Dies wird unterbrochen, wenn der Benutzer die Taste loslässt oder der Reed-Sensor auslöst und somit die Richtung blockiert wird. Aber was sind eigentlich Reed-Sensoren und wie funktionieren sie? Die Reed-Sensoren dienen in unserem Fall der Begrenzung der Drehung. Reed-Sensoren an sich sind Schalter, die über einen Magneten ausgelöst werden. Am Kran sind drei Stück verbaut:
- Links hinten
- Rechts hinten
- Oben (über der Greifer-Aufhängung)
Die Magneten sitzen unter den Ketten, außer der für die Seilwinde, welcher auf dem Greifer befestigt ist. Tritt diese Situation ein, wird an dem CANopen-Slave ein digitaler Eingang gesetzt und signalisiert dem CANopen-Master über ein PDO, dass in einer Richtung die maximale Position erreicht ist. Dies wird von dem Programm optisch visualisiert, indem er den entsprechenden Pfeil aus graut.
Der Master sendet zwei verschiedene CAN-Nachrichten:
- Zustände der LEDs (alle 500 msec)
- Motorsteuerdaten (alle 50 msec)
Der Slave hingegen schickt nur eine CAN-Nachricht:
- Zustände der Sensoren (alle 50 msec)
Steuerung via externer CANopen-Tools
Den Kran kann man alternativ auch mithilfe externer CANopen-Tools steuern. Hierzu eignet sich der emtas CANopen Device Explorers, mit dem man CANopen-Nachrichten definieren und versenden kann.
Hierfür wird allerdings noch ein Gerät (USB-CAN o.Ä.) benötigt, mit welchem man auf den CAN-Bus zugreifen kann.
index | sub | description |
0x2000 | 1 | up/down engine on/off |
0x2000 | 2 | up/down engine direction |
0x2001 | 1 | left/right engine on/off |
0x2001 | 2 | left/right engine direction |
0x2002 | 0 | red LEDs on/off |
0x2003 | 0 | front/back LEDs on/off |
0x2004 | 1 | reed-sensor left on/off |
0x2004 | 2 | reed-sensor up on/off |
0x2004 | 3 | reed-sensor right on/off |
Nachdem man das gemacht hat, kann man den Kran steuern.
CANopen-Fernbedienung
Als besonderes Feature gibt es die CANopen Kran-Fernbedienung. Mit der Fernbedienung kann man sowohl die Beleuchtung des Krans, als auch die Motoren steuern. Sie kommuniziert über PDOs mit dem Slave. Allerdings kann in der Zeit, in der die Fernbedienung benutzt wird, das Display nicht zur Steuerung genutzt werden.