Final – Lab

Das ist unser finaler Code:

from machine import Pin, PWM

In1 = Pin(23, Pin.OUT)
In2 = Pin(19, Pin.OUT)
In3 = Pin(22, Pin.OUT)
In4 = Pin(21, Pin.OUT)
ENA = PWM(Pin(18), freq=50)
ENB = PWM(Pin(17), freq=50)

SignalLinks = Pin(38, Pin.IN)

SignalMitte = Pin(37, Pin.IN)
SignalRechts = Pin(36, Pin.IN)

while True:
    ENA.duty(500)
    ENB.duty(500)
    In1.value(0)
    In2.value(1)
    In3.value(1)
    In4.value(0)
    if SignalRechts.value() == 1 and SignalMitte.value() == 0 and SignalLinks.value() == 0:
        while SignalMitte.value() == 0:
            ENA.duty(400)
            ENB.duty(200)
            In1.value(1)
            In2.value(0)
    if SignalLinks.value() == 1 and SignalMitte.value() == 0 and SignalRechts.value() == 0:
        while SignalMitte.value() == 0:
            ENA.duty(400)
            ENB.duty(200)
            In3.value(0)
            In4.value(1)

Trotz der Kürze des Codes erweist er sich als einer der besten. Unser Algorithmus fährt so lange geradeaus, bis er links oder rechts einen schwarzen Strich wahrnimmt, aber in der Mitte keinen mehr. In so einer Situation biegt er dann so lang ab, bis er in der Mitte wieder einen Strich sieht, aber rechts und links keinen. Wir lassen ihn beim geradeaus fahren schneller fahren, wie wenn er um die Kurve fährt. Wenn er um die Kurve fährt lassen wir den einen Motor rückwärts fahren, damit er sich schneller dreht. 

Fazit

Wir können stärkere Motoren verwenden, damit wir kein Getriebe nutzten müssen. Wir können unser ganzes Gehäuse kleiner und leichter designen, damit er wendiger ist. Wir können unsere Sensoren weiter auseinander positionieren, damit er auf einer Geraden nicht die ganze Zeit seine Richtung korrigiert und dadurch abbremst. Wenn wir schneller fahren wollen, brauchen wir bessere Sensoren, um die Kurve besser zu erkennen und er auf gerader Strecke nicht plötzlich eine Kurve sieht, ohne das sich dort eine befindet.  

22.04.2021, Tag 4

Als wir heute Morgen in die Schule kamen war unsere Konstruktion schon fertig gedruckt, doch wir konnte diese noch garnicht benutzten, denn wir hatten noch ein ganz anderes Problem. Ein Infrarotsensor funktionierte nicht und deshalb mussten wir einen neuen nehmen und diesen muss man zuerst löten, damit er in unsre Konstruktion passt. Als wir den zweiten gelötet haben und diesen angeschlossen haben funktionierte dieser nicht. Wir mussten dann nochmals einen löten und bis dieser dann funktionierte dauerte es noch mal ein bisschen. Als wir das Problem gelöst haben, konnten wir nun alles am Auto befestigen und nochmals den Code überarbeiten. Uns ist einmal das Kabel für den Motor abgerissen und dann mussten wir dieses auch noch löten. Als wir dann alles montiert hatten, waren wir bereit den Roboter zum ersten mal laufen zu lassen. Er sah dann so aus:

Beim ersten Versuch ist uns direkt ein Motor kaputt gegangen und wir mussten diesen dann austauschen. Dann ging es in die Mittagspause

Nach der Mittagspause bereiteten Emre und Andres die Teststrecke vor, diese dann so aussieht:

Lukas versuchte noch den Code zu verbessern, doch dies brachte nicht sehr viel, denn der Motor hatte zu schwache Motoren, um sich zu drehen. Deshalb beschlossen wir ein Getriebe zu drucken. Wir waren dann den ganzen Nachmittag mit dem Getriebe beschäftigt und vor allem damit, die Konstruktion um zu modellieren, damit man das Getriebe befestigen kann. Wir liessen dann alles auf den nächsten Tag ausdrucken.

21.04.2021, Tag 3

Heute hatten wir einen guten Start, denn Herr Weiss kam mit einem DC Motor Driver zu uns. Ein DC Motor Driver ist ein Modul, damit wir die Geschwindigkeit eines Gleichstrommotors steuern können, denn dies konnte man bisher mit den Pins noch nicht, da die Pins zu wenig Ampere hatten. Unsere letzten Motoren waren Servomotoren, die man mit Stromimpulsen steuert und bei diesen kann es dazu führen, dass wenn man einen Motor in die andere Richtung laufen lassen will, er zu schnell oder zu langsam ist. Andres setzte sich wieder vor den Computer und entwickelte ein neues Auto, damit wir eine grössere Spannweite zwischen den zwei Rädern haben, ausserdem kann man jetzt den DC Motor Driver drauf kleben. Er war den ganzen Morgen damit beschäftigt. Unser hoffentlich finales Produkt sieht so aus:

Emre und Lukas haben sich mit der Technik auseinander gesetzt und haben beschlossen den Infrarotsensor zu wechseln, da der andere besser funktioniert. Sie haben ausserdem den DC Motor Driver angeschlossen und gesteuert.

Am Nachmittag wechselten wir nochmals den Motor zu einem kräftigeren, dafür langsameren, da unser alter deutlich zu schwach war. Hier sieht man links den neuen und rechts den alten Motor

Wir liessen den Drucker laufen und verfeinerten unseren bisherigen Code.

20.04.2021, Tag 2

Heute haben wir einen Prototypen mit Hilfe von Lego gebaut, um unsere Technik zu testen. Wir waren den ganzen Morgen damit beschäftigt. Andres hat in dieser Zeit ein neues Grundkonstrukt mit Hilfe des Computers errichtet und unser altes verbessert. Das linke Gehäuse ist unser altes und das rechte unser neues: 

Wir haben hauptsächlich den Schlitz für das Vorderrad vergrössert, denn das Rad passte bei unserem alten Gehäuse nicht hindurch. Ausserdem haben wir noch die vorderen Löcher für die Achse vergrössert, denn bei unserem letzten ist uns die Achse durchgebrochen, weil es zu klein war. Zuletzt haben wir noch eine bessere Rille für unsere zwei Motoren ausgedruckt, damit sie jetzt besser verankert sind.

Am Nachmittag waren Lukas und Emre damit beschäftigt die Technik zu testen und zu verbessern und vor allem neue Codes auszuprobieren. Sie waren nicht sehr erfolgreich, denn das Auto reagierte nur sehr selten, wenn es die schwarze Linie gekreuzt hat. Andres konstruierte neue grössere Hinterräder, denn grössere sind besser.

19.04.2021, Tag 1

Emre und Andres haben heute Morgen zuerst die Grundkonstruktion auf dem Computer gestalltet und dann mit Hilfe des 3D-Druckers ausgedruckt. Lukas hat währenddessen die verschiedenen Motoren und Sensoren an den Microcontroller angeschlossen und zum Laufen gebracht und sie dabei besser kennengelernt. Wir gingen davon aus, einen einfachen Motor nutzen zu können, doch mussten dann fest stellen, das dieser nicht funktioniert, wenn er an einen Pin angeschlossen ist, da zu wenig Ampere durch das Kabel fliesst. Wir probierten eine halbe Ewigkeit daran, dieses Problem zu umgehen, doch wir kamen auf keine Lösung. Dann ging es auch schon in die Mittagspause.

Nach der Mittagspause kam Herr Weiss zu uns und erzählte, dass man das Problem mit einem Transistor lösen kann, doch er empfahl uns die Servomotoren zu nutzen, denn diese sind einfacher um zu beginnen. Wir setzten uns danach mit dem Infrarotsensor auseinander und schrieben einen Code, um dessen Messdaten zu nutzen und anzeigen zu lassen. Als wir damit begannen funktionierte dies noch nicht sehr zuverlässig. Wir dachten eine Zeit lang, das es nichts mit den IR-Sensoren wird, doch mit der Zeit wurden die Ergebnisse immer nach vollziehbarer. Irgendwann bemerkten wir dann, das der Sensor doch sehr exakt misst, und wir das einzige Problem, in der ganzen Sache waren, denn wir achteten nicht auf den Abstand, den der Sensor zum Gegenstand hatte und das hatte grosse Auswirkungen auf die Messungen. Wir fanden dann den Idealen Abstand und die Messungen waren sehr genau. Andres arbeitete in dieser Zeit an einem zweiten Gerüst für den Roboter, denn das erste war nicht gut genug. Er schickte es noch rechtzeitig zum Drucken, dass es bis zur Ende der Lektion fertig wurde.