Raspberry Car – Aufbau der Hardware

Nachdem ich die L293D verstanden hatte, habe ich mir eine Platine geholt und die Bauteile aufgelötet. Leider hatte ich nur drei verschiedene Farben Draht zur Verfügung. Also habe ich für Ground Weiß, für +V Braun und für alles andere Grün genommen. Sehr übersichtlich ist es nicht. Vielleicht mache ich das Ganze nochmals neu, wenn alles einmal läuft.
AIMG_0118ls nächstes habe ich mir überlegt, wie ich am besten die Akkus anbringe. Diese wollte ich unbedingt auf der unteren Ebene befestigen, vor allem wegen dem Gewicht. Auch die Zugänglichkeit für den Rapberry und Co ist hier wichtiger.
Außerdem steht in der Zukunft noch an, dass ich ein Ladegerät für sechs AA-Akkus organisiere und diese dann über einen Steckmechanismus laden kann. Somit müsste ich die obere Ebene nicht jedes Mal ab- und wieder anschrauben.
Als nächstes habe ich einige Jumper Kabel abgezwickt und mit den einzelnen Kabeln der Motoren verknüpft. Zwei Jumper habe ich noch an die Enden der Batteriefächer gelötet. Auf die Platine habe ich die dementsprechend Anzahl Pins montiert. Jetzt kann ich meine Motoren sehr leicht an und ausstecken.

 

IMG_0119Zusätzlich habe ich noch einen Schalter angebracht, mit dem ich die Batteriefächer zuschalten kann. Eine rote LED mit Vorwiderstand zeigt mir an, ob die Spannung aktiv ist oder nicht.
Die Platine ist mit etwas längeren Schrauben an der oberen Ebene befestigt und der Raspberry Pi versetzt darunter (siehe Bild). Hinter oder unter erstere soll die Powerbank für den Raspberry Pi angebracht werden. Leider ist meine bisherige ein paar Millimeter zu breit. Hier muss ich mir unbedingt noch eine Lösung einfallen lassen.
Die Löcher für die Montage habe ich einfach mit einem passenden Bohrer hinzugefügt. Das Plastik hält das durchaus aus. Trotzdem ist Vorsicht besser als Nachsicht. Laufen zu viele Löcher in einer Bahn, hat man schnell eine Sollbruchstelle. Mir ist beim Verschrauben vorne Rechts der Zapfen mit dem Loch für die Verbindungsstrebe abgebrochen. Obwohl ich mit wenig Druck gearbeitet hatte. Aber mit diesem Schaden kann ich durchaus leben.

 

Ein wenig Code habe ich auch schon geschrieben. Zum eine die Motor Klasse, die ich benutze, um die Motoren zu steuern. Und meine „main“, in der ich eben alles andere regele. Bisher funktioniert leider nur das Testen der Motoren, für den Rest muss ich mir noch ein wenig Steuerungscode ausdenken. Ich möchte unbedingt eine GUI mit Tkinter erstellen und über diese das spätere Webcam Bild ausgeben lassen. Zudem soll auf ihr der Status der einzelnen Räder und aller zusammen angezeigt werden. Ich überlege auch, eine Socket Connection herzustellen und die Steuerungssoftware auf einem Windows PC laufen zu lassen.

Hier die Motor Klasse:

Und das ist meine „main“:

Den aktuellsten Code gibt es immer in meinem GitHub Repo:

github.com/PetzJohannes/RaspberryCar_v2

Hier noch zwei Bilder vom Aufbau:

IMG_0114IMG_0117IMG_0120

L293D – Geschwindigkeit und Richtung von DC Motoren steuern

Wie im letzten Eintrag angesprochen, muss ich für die vier Motoren des RaspberryCars verschiedene Geschwindigkeiten ermöglichen, um z.B. Kurven zu fahren.

Als Steuerung nehme ich hierfür den L293D Controller. Dieser ermöglicht es mir, mit zwei Input Pins an den Raspberry die Richtung der Drehung zu bestimmen. Mit einem dritten Pin, den ich ein PWM Signal ausgeben lasse, kann ich dann die Geschwindigkeit regeln.

Schaltbild L293DZwei Ausgänge gehen hier zu einem Motor (Grün & Gelb).

Zwei Eingänge werden mit dem Raspberry Pi verbunden (Braun). Sie sind für IN/OUT (Vorwärts/Rückwärts) zuständig.

Ein Eingang wird mit einem weiteren Pin des Raspberry Pis verbunden (Cyan). Dieser wird der PWM Pin (Geschwindigkeit).

Nun fehlt noch Ground, 5V Eingang vom Raspberry aus und die Grundspannung für die Motoren (Rot & Blau). Diese sollten unbedingt durch eine andere Quelle als den Raspberry betrieben werden. Der Rasbperry kann nicht alles versorgen und ist dann schnell überlastet.

Wenn man alles richtig verbunden hat, kann folgendes Skript den Motor vorwärts und rückwärts drehen lassen, sowie die Geschwindigkeit verändern. Mit „f“ oder „r“ kann vor und zurück gesteuert werden. Mit 0-9 die Geschwindigkeit. Mit x wird das Skript abgebrochen und die GPIOs zurückgesetzt.

Der Code kann auch in meinem GitHub Repo gefunden werden. Dort werde ich auch alle Änderungen ergänzen.

Das Skript stammt ursprünglich von Adafruit. Ich habe es als Grundlage für dieses Skript benutzt. Mit einem Motor funktioniert das ursprüngliche Skript sehr gut. Allerdings hat es den nachteil, dass nur ein PWM Pin definiert werden kann. Hierzu ist auch zwingend das Betriebssystem Occidentalis von Adafruit notwendig. In meiner Lösung benutzt ich Raspbian.

Achtung! Mit Occidentalis ist es nicht möglich, dieses Skript korrekt auszuführen!

Schaut man sich die L293D genau an, sieht man, dass sie symmetrisch aufgebaut ist:
L293DEN1 und EN2 sind für die jeweilige Seite die PWM Steuerung.

IN1/IN2 und IN3/IN4 sind die Pins, die an den Raspberry führen und zum steuern der Richtung der jeweiligen Seite verantwortlich sind.

OUT1/OUT2 und OUT3/OUT4 sind die Pins, die an die Motoren führen.

+V ist die Versorgungsspannung über den Raspberry Pi.

+Vmotor ist die Spannung, die für die Motoren benutzt wird.

0V ist Ground. Es ist egal, an welchen der vier Pins angelegt wird.

 

 

Ich habe das ganze mit zwei Motoren getestet und werde meinen Aufbau hier einstellen, sobald ich alles verlötet und die Platine auf die Chassis montiert habe.

Raspberry Car Version 2 Vorwort und Overview

Mit der alten Chassis hat das Raspberry Car wenig Möglichkeiten gehabt. Der Servo, den ich für die Lenkung verbaut hatte, ist nicht genau genug und zu schwach. Die Reifen sind aus relativ hartem Plastik und haben auf Teppichböden so viel Widerstand, dass der Motor es nicht mehr antreiben kann. Also muss etwas Neues her. Aber was?
Raspberry Car Version 2 Vorwort und Overview weiterlesen