Mit Python und dem PiXtend-Board Sortieralgorithmen programmieren

© Zefart, 123RF

Der Reihe nach

Das PiXtend erweitert den RasPi um eine Steuereinheit. So sorgen Sie auf einer kleinen Bandstraße für Ordnung.

Der RasPi macht es möglich: Mit wenigen Bauteilen entsteht auf der Werkbank eine kleine Sortieranlage. Sie besteht aus einem Fließband, auf dem die Werkstücke laufen. Mithilfe eines Servomotors, an dem ein Hebelarm angebracht ist, sortiert der Aufbau die Werkstücke. Um die Positionen eines Teils zu bestimmen, kommen dabei drei unterschiedliche Sensoren zum Einsatz.

Die Reflexlichtschranke basiert auf dem Prinzip der Reflexion. Sie besteht aus einem Infrarot-Sender und einem passenden Empfänger. Sobald ein Gegenstand ausreichend Licht reflektiert, löst das Bauteil aus. Die Reichweite solcher Lichtschranken beträgt je nach Modell mehrere Meter.

Ein induktiver Näherungsschalter baut ein Magnetfeld auf. Stört ein Objekt das Feld, löst der Sensor aus. Die Reichweite ist oft auf wenige Zentimeter begrenzt. Nur metallische Gegenstände sorgen für den entsprechenden Impuls.

Ein kapazitiver Näherungsschalter baut ein elektrisches Feld auf. Er löst aus, sobald ein Gegenstand das Feld stört. Der kapazitive Sensor besitzt eine ähnliche Reichweite wie der induktive Sensor, erkennt aber auch nicht metallische Gegenstände, die das elektrische Feld kreuzen.

Diese drei Typen von Sensoren kommen im Projekt zum Einsatz, um einerseits Metalle auszusortieren und andererseits die drei in der Industrie am weitesten verbreiteten Sensortypen kurz vorzustellen. Beachten Sie bei der Auswahl der Sensoren, dass es Versionen mit unterschiedlichen Betriebsparametern gibt. Das betrifft neben der Betriebsspannung und Reichweite auch das Schaltverhalten (schalten sie ein oder aus, wenn sie einen Gegenstand erfassen) und die Art, wie sie den Ausgang schalten (NPN gegen Masse oder PNP gegen Betriebsspannung).

Es gibt also viele Möglichkeiten, einen Sensor zu konfigurieren. Daher lohnt es sich, beim Kauf der Sensoren genau zu überlegen, welchen Typ Sie benötigen. Als Beispiel dient hier der Sensor 1 aus unserem Aufbau, der eine umgekehrte Schaltlogik aufweist. Im vorliegenden Fall stellt das kein Problem dar, da sich das Verhalten per Software korrigieren lässt.

Ein Motor treibt über ein Getriebe das Fließband an. Beachten Sie die parallel zum Motor in Sperrrichtung geschaltete Diode. Sie sorgt dafür, dass Überspannungen, die der Motor verursacht, nicht die Endstufentransistoren des PiXtend beschädigen. Diese Dioden heißen Freilaufdioden. Bei unserem kleinen Motor genügt eine 1N4004. Haben Sie ein solche nicht zur Hand, verwenden Sie eine Diode mit höherer Leistung, wie etwa die 1N4007.

Der am Motor verbaute Kondensator dient dazu, durch den Motor verursachte Störungen zu verringern. Der Motor hängt am Ausgang D04. Diesen versetzen Sie per Jumper (D04-PWM0 links neben den Relais) in den PWM-Modus. Den Servomotor mit dem Hebelarm schließen Sie direkt an den Ausgang PWM1 an.

Um eine Vorstellung davon zu erhalten, wie die Anlage arbeitet, werfen Sie einen Blick auf Abbildung 1, die den kompletten Aufbau zeigt. Auf Youtube finden Sie ein Video der Anlage in Aktion [1]. Der Kasten "Projektopfer" vermittelt einen Eindruck davon, was im Test alles schiefging.

Abbildung 1: Die komplette Sortieranlage ist auf einer Lochplatte montiert, die es erlaubt, die Komponenten in einem geordneten Raster zu platzieren.

Projektopfer

An dieser Stelle gedenkt der Autor jener Bauteile, die dieses Projekt nicht überlebt haben. Diesmal hat sich überdurchschnittlich viel Material verabschiedet.

Das erste Opfer war eine Lichtschranke, für 5 Volt Betriebsspannung gedacht und versehentlich an 24 Volt angeschlossen. Das ertrug sie tapfer fast zwei Minuten lang, bevor sie sich zumindest teilweise in Rauch auflöste. Tipp des Experten: Brille aufsetzen, Typkennung vor dem Einbau genau lesen.

Eine Verkettung unglücklicher Zustände mit resultierender Überlast kostete einen DC/DC-Wandler (er segnete mit viel Rauch und Gestank das Zeitliche) und einen Servo das Leben. Nach dem Durchbrennen des Wandlers lagen am Servo 24 Volt an – da gab es keine Chance mehr.

Nachdem die Hardware endlich so dimensioniert war, dass keine Überlast mehr drohte, rauchte ein weiterer Servo ab, weil das PWM-Signal ihn in eine Blockierung trieb. Das Rauchwölkchen blieb dezent, der Geruch war kaum wahrzunehmen.

Bei den letzten beiden Opfern handelte es sich um 0,8-Millimeter-Bohrer. Sie brachen beim Versuch ab, ein Loch in die Antriebswelle des Fließbandes zu bohren. Das war nötig, als nach dem Ölen des Getriebes das Zahnrad des Antriebs unerwartet keinen Halt mehr auf der Welle fand.

Abbildung 2 zeigt den Schaltplan der Anlage, die Funktion ist schnell erklärt. Befindet sich ein Gegenstand im Bereich des kapazitiven Sensors (S1), beginnt das Förderband, das Objekt in Richtung induktiver Sensor zu fördern (S2). Erkennt dieser den Gegenstand als metallisch, schiebt der Hebelarm ihn vom Band. Nach vier Sekunden stoppt das Band automatisch. Handelt es sich um einen nicht metallischen Werkstoff, fährt er bis zur Lichtschranke (S3), und das Band bleibt stehen.

Abbildung 2: Im Test lösten sich diverse Bauteile des vorliegenden Testaufbaus in Rauch auf, weil sie bei der Arbeit mit zwei unterschiedlichen Spannungen (5 und 24 Volt) am falschen Kabel hingen.

Software-Installation

Für das Projekt kommt die PiXtend Python Library (PPL) zum Einsatz [2]. Sie steht unter der GPLv3, was bedeutet, dass Sie sie frei verwenden, modifizieren und in eigene Programme übernehmen dürfen.

Für die Installation gibt es zwei Möglichkeiten: Entweder laden Sie die Library herunter und richten sie unter Raspbian ein; das gelingt recht einfach, weil alle Abhängigkeiten im aktuellen Raspbian bereits erfüllt sind. Oder Sie laden alternativ ein vorbereitetes Image von der PiXtend-Homepage herunter und legen direkt los.

Der Autor hat sich für Letzteres entschieden. Dazu wählen Sie zuerst im Download-Bereich [3] der PiXtend-Homepage die Version passend zur Hardware aus. Dann scrollen Sie auf der Seite nach unten bis zu PiXtend SD-Karten. Dort finden Sie das PiXtend Image Python. Das laden Sie herunter und schreiben es mit einem Tool Ihrer Wahl auf eine SD-Karte. Diese stecken Sie nun in den Raspberry Pi auf Ihrem PiXtend, und anschließend kann es direkt losgehen.

Wissenswertes

Die PPL wurde für Python 2.7.9 entwickelt, eignet sich aber auch für den Einsatz mit Python 3.4.2. Beide Python-Versionen sind auf einem RasPi mit Raspbian bereits vorinstalliert, sodass es keine zusätzlichen Abhängigkeiten mehr aufzulösen gilt.

Über die Library greifen Sie auf alle Funktionen des PiXtend-Boards zu. Die Tabelle "PPL-Dokumentation" zeigt im Überblick, welche Möglichkeiten die Bibliothek bereitstellt. Die komplette Dokumentation finden Sie im Ordner doc/ der PPL-Installation. Sie beschreibt alle Funktionen sehr ausführlich.

Das Board selbst stellt zwei Betriebsmodi bereit: den langsamen manuellen Modus und den Auto-Mode. Über die Bibliothek haben Sie die Möglichkeit, alle Eigenschaften im manuellen Modus zu verwenden. Dadurch dürfen Sie an einer beliebigen Stelle im Programm der Hardware eine Anweisung erteilen oder einen Sensor abfragen.

Das Ausführen eines Befehls im manuellen Mode benötigt jedoch Zeit. Der Auto-Mode dagegen tauscht bei jedem Aufruf alle Informationen mit dem Mikrocontroller auf dem PiXtend aus, was die Kommunikation insgesamt effizienter macht. Für zyklische Aufrufe stellt dieser Modus daher die bessere Wahl dar. Dabei rufen Sie die Funktion auto_mode() so lange auf, bis sie eine Null zurückgibt, was bedeutet, dass die Kommunikation mit dem Mikrocontroller abgeschlossen ist.

PPL-Dokumentation

Methode

Funktion

auto_mode()

Kommunikationsmodus RasPi-PiXtend

open()

öffnet eine Verbindung zum Board

close()

beendet die Verbindung

open_dac()

DA-Wandler aktivieren

set_dac_output()

DA-Werte ausgeben

pwm_ctrl_configure()

Konfiguration für PWM-Generator aktivieren

update_rtc()

RTC mit Uhrzeit auf den RasPi synchronisieren

analog_input[n]()

Analogeingang lesen

analog_input[n]_10volts_jumper

Status des 10-Volt-Jumpers lesen und ändern

analog_input[n]_nos

Anzahl der Messungen des Analogeingangs

analog_input[n]_raw

RAW-Daten eines Analogeingangs

analog_input_nos_freq

Frequenz des AD-Wandlers

dac_selection

Auswahl des AD-Wandlers

dht[n]

DHT-1-Wire-Sensor an GPIO

gpio[n]

Wert des Ports

gpio[n]_direction

Betriebsmodus des Ports

h[n]_dht11

Luftfeuchtigkeit DHT11

h[n]_dht22

Luftfeuchtigkeit DHT22

hum_input[n]_raw

RAW-Wert der Luftfeuchtigkeit DHT

pwm[n]

Wert für den PWM-Ausgang

pwm_ctrl_cs0

Wert CS0 für den PWM-Teiler

pwm_ctrl_cs1

Wert CS1 für den PWM-Teiler

pwm_ctrl_cs2

Wert CS2 für den PWM-Teiler

pwm_ctrl_mode

Modus für die PWM-Ausgänge (Servo/PWM)

pwm_ctrl_od[n]

Servo-Overdrive-Mode (Drehung > 180 Grad)

pwm_ctrl_period

Periodendauer des PWM-Signals

relay[n]

Relay-Ausgang n ansteuern

serial_mode

Modus für serielle Schnittstelle (RS232/RS485)

servo[n]

Wert für Servoposition

t[n]_dht11

Temperatur DHT11

t[n]_dht22

Temperatur DHT22

temp_input[n]_raw

RAW-Wert der Temperatur DHT

uc_board_version

Version des Boards

uc_control

Mikrocontroller-Control-Register lesen/schreiben

uc_fw_version

Firmware-Version des Mikrocontrollers

uc_status

Mikrocontroller-Status-Byte

use_fahrenheit

DHT-Eingänge auf Fahrenheit setzen

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Aktuelle Ausgabe

04/2019
TV & Multimedia

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Finger weg

    Ein Temperatursensor verrät, ob Sie einen Gegenstand gefahrlos berühren dürfen. Beim Messen brauchen Sie dabei noch nicht einmal Kontakt zum Objekt.

  • Aus einer Hand

    Um einen Mikrocontroller zu programmieren, genügt ein Raspberry Pi. Wir zeigen, was Sie dazu noch benötigen.

  • Im Gleichtakt

    Synchronisierte Live-Loops und selbst erstellte Funktionen helfen dabei, Sonic Pi wie ein Live-Instrument zu spielen.

  • Mach mal

    Das Ftduino-Modul schlägt die Brücke zu Fischertechnik und ermöglicht es unter anderem, einen Drei-Achsen-Roboter anzusteuern.

  • Eleganter Diener

    Jeden Morgen dieselben Handgriffe, um zu sehen, ob die S-Bahn fährt und wie das Wetter wird? Ein cleverer Infoscreen auf RasPi-Basis automatisiert den Vorgang.

  • Bienenflüsterer

    Bienenzüchter, die ihre Völker besser kennenlernen möchten, müssen die fleißigen Insekten nicht pausenlos stören. Mit einem Raspberry Pi und verschiedenen Sensoren überwachen sie Temperatur, Luftfeuchtigkeit und bald auch das Gewicht des Bienenstocks.

  • Beerige Musik

    Für echten Hi-Fi-Sound braucht es mehr als einen kleinen Bluetooth-Brüllwürfel. Mit Volumio und einem Raspberry Pi rüsten Sie Ihre klassische Hi-Fi-Anlage mit smarten Funktionen auf.

  • Ton ab!

    Auf den ersten Blick erscheint der RasPi zu schwachbrüstig für den Betrieb leistungshungriger DAW-Software. Doch der Schein trügt.

  • Himbeer-TV

    Der DVB TV µHAT rüstet den Raspberry Pi mit einem DVB-T/T2-Tuner auf. Die deutsche TV-Landschaft schränkt dessen Möglichkeiten allerdings ein.

  • Git à la RasPi

    Mit wenigen Handgriffen zum Git-Hoster: Die dezentrale Arbeitsweise von Git erleichtert in Kombination mit der Netzwerkfähigkeit des RasPi das Verwalten von Quellcode.