Legosortiermaschine gesamte Anlage
Dies ist ein Unterartikel von der Legoteil_Zählmaschine, welcher die Zusammenführung der einzelnen Teile zu einer Einheit beschrieben.
Schnittstellen
Die Legosortiermaschiene ist in drei Arbeitsbereiche eingeteilt. Dies hat den Vorteil, dass aus dem gesamten Team kleine Gruppen gebildet werden können, welche für ihren Maschinenteil verantwortlich sind. Dadurch wird vermieden, dass Aufgaben doppelt oder gar nicht erledigt werden. Es bringt allerdings den Nachteil mit sich, dass es Schnittstellen zwischen den Gruppen gibt. Diese müssen genau definiert werden, damit eine reibungslose Zusammenarbeit gewährleistet ist.
Separierung - Bildverarbeitung
Die Separierung vereinzelt die Legoteile, damit die Bildverarbeitung diese verarbeiten kann. Dafür sind folgende Vereinbarungen getroffen worden:
Hardware
- Es darf immer nur ein Teil von der Separierung an die Bildverarbeitung übergeben werden
- Das Förderband und der Eingang der Bildverarbeitungsbox liegen auf einer Höhe, damit kein Teil vom Förderband fällt. Damit alle Teile in die Box fallen, ist diese schräg angebracht.
- Die Anlage wird über einen Schaltschrank gesteuert. Dort werden die Komponenten der Separierung und der Bildverarbeitung gesteuert. Informationen hierzu gibt es hier
Software
- Beide Anlagenteile können nicht gleichzeitig durch zwei getrennt Programme gesteuert werden. Deshalb muss eine Hauptfunktion die Laufzeiten steuern. Nötige Vereinbarungen:
- Sobald ein Teil in der Bildbox erkannt wird, bleibt die Separierung stehen
- Kalibrierungen der Kameras wird in der Hauptfunktion durchgeführt
- Die Teilprogramme dürfen keine Dauerschleifen haben
- Die graphische Ausgabe für beide Funktionen ist in einer Figur
Die Realisierung der Softwareschnittstelle ist hier zu lesen.
Bildverarbeitung - Sortierung
Das Teil aus der Bildverarbeitung muss in die Sortierung gelangen, damit es richtig einsortiert wird. Dafür sind folgende Vereinbarungen getroffen worden:
Hardware
- Die Bildverarbeitung hat den Ausgang zur Seite
- Das Teil wird mit einer Luftdüse herausgeschossen
- Die Anlage wird über einen Schaltschrank gesteuert. Informationen dazu gibt es hier.
Software
- Hat die Bildverarbeitung ein Teil erkannt, so steuert sie die Klappen der Sortierung. Dazu ist in der Bildverarbeitung hinterlegt, welche Klappen bei jedem Teil angesteuert werden müssen.
Hardwareumsetzung
Entwicklung einer Steuerplatine
Zur Inbetriebnahme der umgebauten Anlage war es notwendig, die Funktionen der Schaltplatine zu erweitern. Die eingebaute Steuerplatine war auf den Arduino aufgesattelt und bezog Steuersignale sowie die 5 V Versorgungsspannung direkt über die eingesteckten Pins. Mit dieser Platine ist es möglich, drei Motoren mit Strom zu versorgen bzw. durch ein PWM Signal zu steuern. Zusätzlich konnten noch zwei Servomotoren und zwei Infrarotsensoren betrieben werden. Durch die Konzeptänderung der Separierung und der Bildverarbeitung wurde es notwendig, weitere Schaltfunktionen hinzuzufügen. Die Bildverarbeitung benötigte durch Software schaltbares Licht, um zwischen Durch- und Drauflicht in der Bildverarbeitungsbox umschalten zu können. Ebenso wie bei den Motoren sollte die Ansteuerung des Lichts über den Arduino erfolgen. Die Spannungsversorgung der Bildverarbeitungsbox war in der Vergangenheit mit einem eigenen Netzteil erfolgt, welches direkt in eine Steckdose eingesteckt wurde. Neben der Einrichtung von schaltbaren Licht, wurde die Schaltung der Pneumatik hinzugefügt. Auch diese sollte über den Arduino gesteuert werden. Die Ventilinsel wird mit 24 V Signalen angesteuert. Die Motoransteuerung musste auch bei der neuen Steuerplatine wieder per MOSFETs umgesetzt werden, da die Geschwindigkeit hier per PWM Signal gesteuert wird. Die Lichtansteuerung der LED Streifen in den Bildverarbeitungsboxen sollte ebenfalls per MOSFET geschehen, da die Schaltfrequenz gegebenfalls recht hoch werden kann und mechanische Relais nicht für höhere Schaltfrequenzen ausgelegt sind. Außerdem benötigen diese eine 12 V Versorgungsspannung. Die Option auf ein weiteres Netzteil, um aus 230 V Netzspannung die 12 V Spannung für die LEDs herzustellen, wurde aufgrund des hohen Kaufpreises für das Netzteil sowie des hohen Aufwandes für den Umbau abgelehnt. Als Alternative wurde sich für die Verwendung von Linearspannungsreglern auf der Steuerplatine entschieden, die aus der vorhandenen Spannung von 24 V, die zur Versorgung der Motoren benötigt werden, 12 V erzeugen sollen. Bei der Ansteuerung der Ventilinsel gab es ebenfalls zwei Optionen. Die erste Möglichkeit war die Nutzung von Relais, wie z.B. Solid State Relais, durch die Arduino-Ausgänge weniger belastet werden. Die zweite Option war die Nutzung derselben MOSFETs, die schon bei der Ansteuerung der Motoren und des Lichts verwendet wurden. Hier wurde sich aug Grund von bereits vorhandenen Komponenten und der damit verbundenen Einheitlichkeit für die zweite Variante entschieden. Der Schaltplan der Platine wurde in Multisim erstellt, der Leiterplattenentwurf in Ultiboard. Die Platine wurde anschließend in der Hochschule gefräst und bestückt(siehe Abbildung 5). Zum Anschluss an den Arduino wurde die Platine mit Schraubklemmen versehen. Der Arduino wurde eine Platine aus dem Zubehör erweitert, welche jeden Anschluss als Schraubklemme zur Verfügung stellt, um Platine und Arduino zu verbinden.
Während der Tests der Platine sind 2 MOSFETs aus unbekannten Gründen zerstört worden. Die Platine ist weiterhin für die aktuellen Funktionen einsatzfähig, für die Hinzunahme weiterer Funktionen, wie beispielsweise der Einbindung einer weiteren Druckluft-Düse, müssen die Bauteile jedoch ausgetauscht werden.
Umbau des Schaltschranks
Aufgrund des Einsatzes der neuen Steuerplatine war es notwendig, den Schaltschrank umzubauen (siehe Abbildung 6). Hierzu wurde die alte Steuerplatine entfernt und an ihrer Stelle die neue Sattelplatine mit Schraubklemmen auf dem Arduino installiert. Auch wurde der Arduino auf einer Hutschienenhalterung installiert. Ebenso wurde die neue Steuerplatine auf einer solchen Halterung installiert. Die Anschlüsse untereinander wurden verbunden, die Anschlüsse zu den Geräten außerhalb des Schranks wurden auf Reihenklemmen gelegt. In dem Schaltschrank wurde zusätzlich noch der Gecko-Drive für die Steuerung des Linearläufers installiert. Dieser wurde auf eine Seitenwand geschraubt, um Kühlung zu gewährleisten.
Kabelkanal
Seit dem Sommersemester 2016 sind die verlegten Leitungen fest verlegt werden. Hierzu wurde ein Kabelkanal zur ordentlichen Verlegung der Leitungen an den Förderbändern montiert. Er dient dem Schutz und der mechanischen Entlastung der Leitung. Es wurde ein geschlitzter Kabelkanal gewählt, da an vielen unterschiedlichen Stellen Leitungen z.B. zu den Motoren abgehen. So war es nicht nötig, einen geschlossenen Kabelkanal zu modifizieren, um die Leitungsabgänge möglich zu machen.
Elektrische Sicherheit
Die elektrische Sicherheit des Schaltschrankes wurde im Zuge der Umbauarbeiten sichergestellt, indem alle Leitungen gegen spannungsfestere Leitungen vom Typ H07 bzw. H05 ausgetauscht wurden. So werden nun auch die Anforderungen nach VDE 0100-600 erfüllt. Eine Anlagenprüfung wurde im August 2016 vorgenommen.
Softwareumsetzung
Implentierung einer Hauptfunktion
Bis zum Sommersemster 2017 wurden die Legosortiermaschine durch zwei Programme gesteuert. Ein Programm, welches die Separierung steuert, und ein Programm, welches die Bildverarbeitung uns Sortierung steuert. Da immer nur ein Programm in Matlab ausgeführt werden kann, werden beide Programme so geändert, dass eine Hauptfunktion die Laufzeiten dieser steuert. Probleme bei der Zusammenführung waren:
- Die Kameras sollen nur ein mal kalibriert werden
- → Die Kalibrierungen wird am Anfang des Hauptprogramms durchgeführt und nicht mehr in den Unterfunktionen.
- Die Schnittstelle zum Arduino kann nur ein mal erzeugt werden
- → Die Schnittstelle wird in der Hauptfunktion erzeugt. Da die Unterfunktionen die Schnittstelle brauchen, um Befehle an den Arduino zu senden, muss diese beim Funktionsaufruf übergeben werden.
- Es soll eine Auswahl zwischen Teach-In und Sortierung geben
- → Die Gui, über welche diese Abfrage läuft, wird als erstes aufgerufen. Bei Auswahl von Teach-In wird in dieses Unterprogramm gesprungen.
- Wann ist welcher Programmteil dran, damit keine Teile übersehen werden?
- → Die Separierung und Bildverarbeitung laufen immer abwechselnd. Zunächst erzeugt sich die Bildverarbeitung ein Bild. Erkennt sie kein Teil, so wird die Funktion beendet und die Separierung erzeugt sich ein Bild. Diese ermittelt die Anzahl der Teile auf dem Band und pustet diese nach Bedarf auseinander. Danach ermittelt die Bildverarbeitung erneut, ob ein Teil in der Box liegt. Dieser Ablauf wiederholt sich immer wieder.
- Um dies umzusetzten, wird in der Separierung die Dauerschleife entfernt und in der Bildverarbeitung wird ein break implementiert, um aus der Schleife zu springen
- Was passiert wenn ein Teil in der Bildbox liegt?
- → Erkennt die Bildverarbeitung ein Teil in der Box, so wird das Förderband gestoppt. Die Funktion der Bildverarbeitung wird weiter ausgeführt und das Teil wird mit Hilfe der Merkmal erkannt. Dann wird die Sortierung angesteuert und das Teil wird aus der Box gepustet. Erst jetzt wird die Separierung wieder ausgeführt.
- Durch das Abwechseln der Funktionen überlagern sich die graphischen Ausgaben der Kamerabilder
- → Die Bilder werden in einer Figur über Subplots angezeigt.
- Das Programm muss beendbar sein, egal in welchem Programmteil es sich befindet
- → Wird die ESC-Taste gedrückt, so wird dies von dem durchgeführten Programmteil erkannt. Die globale Variabel abbruch wird auf eins gesetzt und der Programmteil wird verlassen. Die Variabel verhindert nun, dass der andere Programmteil ausgeführt wird und beendet die Schleife um die Unterfunktionen. Wird die ESC-Taste gedrückt, während die Bildverarbeitung ein Teil erkennt, so wird das Programm bis zur Einsortierung weiter durchlaufen. So wird gewährleistet, dass kein Teil in der Bildbox liegen bleibt.
- Die Datenbank speichert die leere Box bei jedem Programmaufruf als ein Teil
- → Der Wert des erzeugten Teils, wird nach Beendigung des Programms gelöscht
- Die benötigten Daten sind in vielen verschiedenen Ordnern angeordnet und teilweise schwer zu finden. Außerdem sind dort viele alte nicht verwendete Funktionen
- → Nur die verwendeten Dateien werden in einen neuen Ordner in SVN unter ./SRC/Matlab angeordnet. Dort wird eine neue übersichtliche Ordnerstruktur erzeugt
In Abbildung 2 sieht man den Programmablauf der Hauptfunktion.