Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
projektewise20:cuberpublic:start [2021/06/04 16:58] d.golovko angelegt |
projektewise20:cuberpublic:start [2021/06/04 16:59] (aktuell) d.golovko |
||
---|---|---|---|
Zeile 222: | Zeile 222: | ||
Die Hubmagneten werden mithilfe einer Mosfetschaltung gesteuert. Ein Problem das mit den Hubmagneten aufgetreten ist, ist dass sie einen sehr hohen Strom ziehen. Da wir vier Stück verbaut haben, kommen wir dabei Schnell an die Grenzen unserer Stromquellen. Um dies zu Umgehen, nutzen wir die Eigenschaft der Hubmagneten, dass sie eine deutlich höhere Kraft aufbringen, wenn der Kern innerhalb der Spule ist. Dies ist immer dann der Fall wenn der Greifer zu ist und damit der häufigste Fall. Da der Greifer also in dem Fall eine deutlich höhere Kraft aufbringt, kann man während der Zeit, die der Greifer zu ist, den Stromfluss mit Hilfe von Pulsweitenmodulation (PWM) reduzieren. Das bedeutet, dass man in kurzen zeitlichen Abständen den Hubmagneten an- und ausschaltet. Dadurch entsteht die Illusion, der Hubmagnet würde weniger Strom verbrauchen und dafür an Kraft einbüßen. Das dabei Kraft eingebüßt ist kein Problem, da der Hubmagnet in dieser Stellung mehr Kraft hat. Die Mechanik in dem Greifer ist außerdem so konstruiert, dass sie den Greifer in dieser Stellung so weit Unterstützt, dass er nur seine Feder überwinden muss. Eine hoher Strom ist also nur kurzfristig nötig um den Greifer zu schließen. Danach kann der Stromverbrauch mit Hilfe von PWM reduziert werden. | Die Hubmagneten werden mithilfe einer Mosfetschaltung gesteuert. Ein Problem das mit den Hubmagneten aufgetreten ist, ist dass sie einen sehr hohen Strom ziehen. Da wir vier Stück verbaut haben, kommen wir dabei Schnell an die Grenzen unserer Stromquellen. Um dies zu Umgehen, nutzen wir die Eigenschaft der Hubmagneten, dass sie eine deutlich höhere Kraft aufbringen, wenn der Kern innerhalb der Spule ist. Dies ist immer dann der Fall wenn der Greifer zu ist und damit der häufigste Fall. Da der Greifer also in dem Fall eine deutlich höhere Kraft aufbringt, kann man während der Zeit, die der Greifer zu ist, den Stromfluss mit Hilfe von Pulsweitenmodulation (PWM) reduzieren. Das bedeutet, dass man in kurzen zeitlichen Abständen den Hubmagneten an- und ausschaltet. Dadurch entsteht die Illusion, der Hubmagnet würde weniger Strom verbrauchen und dafür an Kraft einbüßen. Das dabei Kraft eingebüßt ist kein Problem, da der Hubmagnet in dieser Stellung mehr Kraft hat. Die Mechanik in dem Greifer ist außerdem so konstruiert, dass sie den Greifer in dieser Stellung so weit Unterstützt, dass er nur seine Feder überwinden muss. Eine hoher Strom ist also nur kurzfristig nötig um den Greifer zu schließen. Danach kann der Stromverbrauch mit Hilfe von PWM reduziert werden. | ||
- | {{ projektewise20:cuber:pololu_driver.jpg?200| Anschlüsse des Motortreiber}} | ||
Um die Getriebemotoren anzusteuern, werden zwei Dual MC33926 Motor Treiber https://www.pololu.com/product/1213 von Pololu verwendet. Mithilfe eines Treibers lassen sich dabei zwei Motoren ansteuern. Ein Motor wird dabei an die Ausgänge OUT1 und OUT2 angeschlossen. Zur Kontrolle der Motoren sind von Seiten des Raspberrys nur die Pins IN1 und IN2 wichtig. Diese Ermöglichen die logische Kontrolle der Ausgänge OUT1 bzw. OUT2. Das bedeutet, dass wenn man an IN1 3V+ anschließt, wird an OUT1 mit der Eingangspannung Vin verbunden, andernfalls mit GND. Je nach dem, ob man jetzt an IN1 oder an IN2 eine Spannung anschließt, kann man den Motor vorwärts oder Rückwärts drehen lassen, da die Verpolung dann genau umgekehrt wäre. Zusätzlich erlaubt es die Platine auch, dass man an IN1 und IN2 ein PWM Signal anlegt. Dadurch kann man dann den Motor auch unterschiedlich schnell drehen lassen. | Um die Getriebemotoren anzusteuern, werden zwei Dual MC33926 Motor Treiber https://www.pololu.com/product/1213 von Pololu verwendet. Mithilfe eines Treibers lassen sich dabei zwei Motoren ansteuern. Ein Motor wird dabei an die Ausgänge OUT1 und OUT2 angeschlossen. Zur Kontrolle der Motoren sind von Seiten des Raspberrys nur die Pins IN1 und IN2 wichtig. Diese Ermöglichen die logische Kontrolle der Ausgänge OUT1 bzw. OUT2. Das bedeutet, dass wenn man an IN1 3V+ anschließt, wird an OUT1 mit der Eingangspannung Vin verbunden, andernfalls mit GND. Je nach dem, ob man jetzt an IN1 oder an IN2 eine Spannung anschließt, kann man den Motor vorwärts oder Rückwärts drehen lassen, da die Verpolung dann genau umgekehrt wäre. Zusätzlich erlaubt es die Platine auch, dass man an IN1 und IN2 ein PWM Signal anlegt. Dadurch kann man dann den Motor auch unterschiedlich schnell drehen lassen. | ||
- | {{ projektewise20:cuber:pololu_square_wave.jpg?400| Verschobene Rechteckwelle am Hallsensor }} | ||
Die Motoren zu drehen reicht allerdings nicht, da wir den Greifer immer genau um 90 Grad drehen müssen. Dafür nutzen wir die am Motor angebrachten Encoder https://www.pololu.com/product/2285, welche immer eine Rückmeldung geben, wenn die Primärachse des Motors das 48 einer Drehung, d.h. einen Schritt getätigt hat. Dies geschieht durch zwei Rechteckwellen, die um eine Phase von 90 Grad verschoben sind. Diese Messen wir über zwei GPIOs am Raspberry. Die Versetzung der beiden Wellen erlaubt uns nachzuverfolgen, in welche Richtung dieser Schritt geschehen ist. Hier ein Beispiel: Wir nennen den Momentan Werte der beiden Rechteckwellen A und B. Wenn wir zum Anfang an beiden LOW messen, und kurz darauf an A HIGH messen, können wir darauf schließen, dass der Motor einen Schritt vorwärts gemacht hat. Wenn allerdings anstelle von A B HIGH ist, muss der Motor einen Schritt Rückwärts gemacht haben. Indem wir im Programm die einzelnen Schritte zusammenaddieren, können wir auf die aktuelle Rotation schließen, in dem wir mit dem Getriebeverhältnis multiplizieren. Mithilfe dieser Information können wir dann im Programm solange nachregeln, bis wir die gewünschte Position des Motors erreicht haben. | Die Motoren zu drehen reicht allerdings nicht, da wir den Greifer immer genau um 90 Grad drehen müssen. Dafür nutzen wir die am Motor angebrachten Encoder https://www.pololu.com/product/2285, welche immer eine Rückmeldung geben, wenn die Primärachse des Motors das 48 einer Drehung, d.h. einen Schritt getätigt hat. Dies geschieht durch zwei Rechteckwellen, die um eine Phase von 90 Grad verschoben sind. Diese Messen wir über zwei GPIOs am Raspberry. Die Versetzung der beiden Wellen erlaubt uns nachzuverfolgen, in welche Richtung dieser Schritt geschehen ist. Hier ein Beispiel: Wir nennen den Momentan Werte der beiden Rechteckwellen A und B. Wenn wir zum Anfang an beiden LOW messen, und kurz darauf an A HIGH messen, können wir darauf schließen, dass der Motor einen Schritt vorwärts gemacht hat. Wenn allerdings anstelle von A B HIGH ist, muss der Motor einen Schritt Rückwärts gemacht haben. Indem wir im Programm die einzelnen Schritte zusammenaddieren, können wir auf die aktuelle Rotation schließen, in dem wir mit dem Getriebeverhältnis multiplizieren. Mithilfe dieser Information können wir dann im Programm solange nachregeln, bis wir die gewünschte Position des Motors erreicht haben. | ||