Forum: Mikrocontroller und Digitale Elektronik Entwicklung eines ferngesteuerten Antriebs für Mecanum-Räder


von Andreas W. (andy_tenne)


Lesenswert?

Hallo ihr Lieben,

ich hoffe mein Beitrag ist im richigen Forum, ansonsten würde ich einen 
der Admins bitten, diesen dorthin zu verschieben :)
Den letzten Beitrag, den ich zu dieser Thematik gefunden habe stammt von 
2009, daher dachte ich, mache ich einen neues Thema auf, da sich 
technisch sicherlich einiges getan hat in dieser Zeit.

Derzeit absolviere ich die Technikerschule (Elektrotechnik) und soll als 
Technikerprojekt einen ferngesteuerten Antrieb für Mecanum-Räder 
entwickeln.
Ich habe bereits Motortreiber (Cytron MDD10A Rev2.0), um die in den vier 
Rädern verbauten 24V DC-Kleingetriebmotoren anzusteuern.
Nun war mein Gedanke, die Signale der (drahtlosen) Fernsteuerung mit 
einem Arduino zu verarbeiten. Dieser müsste dann je Motor ein Signal für 
die Drehrichtung ausgeben und ein 3,3V - 5V Logiksignal für die 
Drehzahlsteuerung.

Da ich blutiger Anfänger bin, was Mikrocontroller / Arduino angeht meine 
Frage an euch:
Welche Komponenten bräuchte ich für die Realisierung? Arduinos gibt es 
ja verschiedene mit ganz unterschiedlicher Preisspanne und ich habe 
leider keine Ahnung, welchen davon ich bräuchte.
Für den Empfang der Funksignale bräuchte ich einen 2,4 GHZ-Empfänger, 
das habe ich schon herausgefunden.

Grüße
Andy

: Verschoben durch Moderator
von Hint (Gast)


Lesenswert?

PWM

von Hint (Gast)


Lesenswert?

Bzw. DAC, falls dein Motortreiber ein Analogsignal braucht.

von N. M. (mani)


Lesenswert?

Hint schrieb:
> PWM

Hint schrieb:
> Bzw. DAC, falls dein Motortreiber ein Analogsignal braucht.

PWM und DIR steht im Manual

Andreas W. schrieb:
> Da ich blutiger Anfänger bin, was Mikrocontroller / Arduino angeht

Warum macht man sowas? Mach doch was womit du dich auskennst. Wie lange 
hast du Zeit?

Andreas W. schrieb:
> Welche Komponenten bräuchte ich für die Realisierung?

Akku/Spannungsversorgung, Motortreiber, Motoren, uC Board mindestens.
Funk würde ich an deiner Stelle auf etwas fertiges oder sehr einfaches 
setzen.
Man könnte sich aus dem Modellbau bedienen. Dann hast du die 
Fernbedienung schon fertig. Dann noch einen Fahrtenregler oder was es da 
passendes gibt. Dann muss man mit dem uC nur eine Signalkonvertierung 
machen.

Funkmodule die man erst noch Parametertieren muss würde ich an deiner 
Stelle vermeiden wegen dem Aufwand und deiner Erfahrung.

Andreas W. schrieb:
> Für den Empfang der Funksignale bräuchte ich einen 2,4 GHZ-Empfänger,
> das habe ich schon herausgefunden.

Aha. Warum 2,4GHz? Vielen Modellbauautos laufen auch mit 434/868MHz.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hint schrieb:
> Analogsignal
Hint schrieb:
> PWM
Man muss nicht raten:
https://www.cytron.io/p-10amp-5v-30v-dc-motor-driver-2-channels

Andreas W. schrieb:
> die Signale der (drahtlosen) Fernsteuerung
Welche denn?
> Für den Empfang der Funksignale bräuchte ich einen 2,4 GHZ-Empfänger
Das kommt ganz auf den Sender an...

> Da ich blutiger Anfänger bin, was Mikrocontroller / Arduino angeht
Du solltest dein Problem aufteilen:
1. Ansteuerung des Motortreibers
2. Kommunikation mit der unbekannten Fernbedienung

> Welche Komponenten bräuchte ich für die Realisierung? Arduinos gibt es
> ja verschiedene mit ganz unterschiedlicher Preisspanne und ich habe
> leider keine Ahnung, welchen davon ich bräuchte.
Bei brauchbarer Programmierung ist es egal, welchen du nimmst. Aber weil 
das eine Hausaufgabe ist, solltest du einfach mal deine Mitschüler oder 
den Labortechniker/Betreuer fragen, was bei euch so üblich ist.

: Bearbeitet durch Moderator
von Udo S. (urschmitt)


Lesenswert?

Andreas W. schrieb:
> Derzeit absolviere ich die Technikerschule (Elektrotechnik) und soll als
> Technikerprojekt einen ferngesteuerten Antrieb für Mecanum-Räder
> entwickeln.

Was soll der können und wie gesteuert?

Hast du eine handelsübliche Modellbausteuerung und sollst dann die 
Signale der Steuerknüppel in die richtigen Drehrichtungen des Fahrzeugs 
"übersetzen"?

Wie Lothar gesagt hat zerlege dein Problem in Teilprobleme:
1. Wie soll das Fahrzeug angesteuert werden? 
Vorwärts/rückwärts/seitwärts/drehen/...?
2. Welche Information muss man dazu übertragen (Kanalanzahl, wie 
darstellen auf der Fernbedienung)
3. Welche Funkfernsteuerung braucht man dazu
4. Welcher Empfänger
5. Wie bekommt man die Empfängersignale in den Controller
6. Wie steuert man die einzelnen Räder vom Controller an

7. Ein Programm das die empfangenen Signale auswertet, in Drehrichtungen 
der Motore umsetzt und die Motore ansteuert.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Andreas W. schrieb:
> Für den Empfang der Funksignale bräuchte ich einen 2,4 GHZ-Empfänger,
> das habe ich schon herausgefunden.

Immerhin. Falls es sich allerdings um eine handelübliche 2,4GHz 
Modellbau Fernsteuerung handelt, wird es dir nicht gelingen, die Signale 
mit irgendetwas anderem als dem mitgelieferten Empfänger zu dekodieren.
Mit dem Reverse-Engineering des Binding usw. habe ich mich mal 
beschäftigt, und das ist nicht so einfach.

von Andreas W. (andy_tenne)


Lesenswert?

Danke für die Antworten.

N. M. schrieb:
> Warum macht man sowas? Mach doch was womit du dich auskennst. Wie lange
> hast du Zeit?

Das Projekt wurde mir angeboten und klang interessant. Muss bis Ende Mai 
fertig sein. Mir ist bewusst, dass das sehr eng wird. Jetzt geht's erst 
mal darum, das gegebene Fahrgestell vorwärts und rückwärts fahren zu 
lassen. Die restlichen Funktionen wie seitwärts fahren, auf der Stelle 
drehen und lenken während des Fahrens sind erst mal zweitrangig. Wenn 
das nicht mehr klappt, kann auch ein anderer Technikerschüler das 
Projekt fortsetzen.


N. M. schrieb:
> Aha. Warum 2,4GHz? Vielen Modellbauautos laufen auch mit 434/868MHz.

Die Fernsteuerungen, die ich bisher angeschaut habe, senden alle über 
2,4GHz.


Mein bisheriger Ansatz war, ein Modellfahrzeug zu nehmen, das über einen 
solchen Antrieb verfügt und aus diesem die Steuerung auszubauen und die 
Motortreiber durch stärkere zu ersetzen. Leider hat sich jetzt gezeigt, 
dass das so nicht funktionieren wird, da in dem Modell alles auf der 
Empfängerplatine verbaut ist und von dieser die Leitungen direkt auf die 
Motoren gehen. Ist also nichts mit Motortreiber ersetzen.
Von daher muss ich jetzt doch den aufwändigeren / kompliziertern Weg 
gehen.

von Andreas (Gast)


Lesenswert?

Andreas W. schrieb:
> Die Fernsteuerungen, die ich bisher angeschaut habe

Es hilft dir nicht, wenn du daraus ein Geheimnis machst.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas W. schrieb:
> Jetzt geht's erst mal darum, das gegebene Fahrgestell vorwärts und
> rückwärts fahren zu lassen.
Dann mach das mal und steuere diese Fahrt vorerst noch mit einem Kabel.

Und für die Fernsteuerung nimmst du entweder was "Richtiges" aus dem 
Modellbau (das funktioniert sicher auch über große Entfernungen).

Oder du nimmst du nimmst ein Handy, ein BT-Shield und als App z.B. den 
"Bluetooth RC Controller": https://www.youtube.com/watch?v=FW2fbMqY6j8

Das ist natürlich nur für kleine Aktionsradien geeignet. Nach ein paar 
Metern ist da Schluss...

: Bearbeitet durch Moderator
von Christian M. (christian_m280)


Lesenswert?

Andreas W. schrieb:
> Muss bis Ende Mai fertig sein.

Andreas W. schrieb:
> Da ich blutiger Anfänger bin

Das kannst Du gleich knicken! Sorry isso.

Gruss Chregu

von Andreas (Gast)


Lesenswert?

Andreas W. schrieb:
> Da ich blutiger Anfänger bin, was Mikrocontroller / Arduino angeht

Andreas W. schrieb:
> Derzeit absolviere ich die Technikerschule

Irgendetwas wirst du doch schon gelernt haben, oder? Was denn? Was darf 
es kosten?

Unkonkrete Frage -> unkonkrete Antwort

Man nehme irgend eine fertige Fernsteuerung und den passenden Empfänger 
dazu.
Man nehme sich eine Fahrzeug Stromversorgung, irgendeinen Arduino, STM32 
Bluepill, ESP32 o.ä. Schreibe zwei Monate die Software dafür und schon 
bist du fertig.

von Hint (Gast)


Lesenswert?

Also mindestens 2x, besser 3x PPM-Signale vom Fernsteuerungsempfänger 
erfassen und 4x PWM + DIR für die Motoren erzeugen.

Ich würde sagen, mit einem normalen Arduino dürfte es als Anfänger knapp 
werden. Vielleicht nimmst du einen "fetten" Controller, der kompatibel 
zur Arduino-Umgebung ist oder sogar ein Python-Board.
Auf die Spannungen der Signale achten (3.3 / 5V) und ggf. Pegelwandler 
einplanen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hint schrieb:
> Ich würde sagen, mit einem normalen Arduino dürfte es als Anfänger knapp
> werden.
Das Programm ist doch simpel. Die Hauptschleife sieht so aus:
- miss die Pulsdauer am Eingang A
- miss die Pulsdauer am Eingang B
- rechne aus diesen beiden Pulswerten neue Richtungs- und PWM-Werte aus
- gib die Richtungs- und PWM-Werte an die Motorsteuerungen weiter

D.h. auch bei ungünstiger Programmierung werden alle 50ms neue PWM-Werte 
an die Motoren gegeben.

von Andreas (Gast)


Lesenswert?

Hint schrieb:
> Also mindestens 2x, besser 3x PPM-Signale

Lothar M. schrieb:
> - miss die Pulsdauer am Eingang A
> - miss die Pulsdauer am Eingang B

Oder gleich einen Empfänger mit S-Bus o.ä. nehmen.

von STK500-Besitzer (Gast)


Lesenswert?

Es gibt doch auch diverse Beispiele mit dem nRF24L01+ im Zusammenspiel 
mit Arduinos.
Dazwischen hatte ich eins gesehen, das auf der einen Seite ein Poti 
einliest und auf der anderen ein Servo steuert.
Ob da jetzt ein Servo gesteuert wird oder der Motorcontroller dürfte 
nicht viel Umbauaufwand sein.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas W. schrieb:
> Dieser müsste dann je Motor ein Signal für die Drehrichtung ausgeben und
> ein 3,3V - 5V Logiksignal für die Drehzahlsteuerung.
Wenn das ein Fahrzeug ist, so wie ich Fahrzeuge kenne (Räder die die 
links und rechts an der Seite in die selbe Richtung zeigen, dann 
brauchst du nur 2 PWM und 2 Richtungen. Denn ohne gelenkte Räder ist das 
ja eine Art "Panzer ohne Ketten", der sich in Kurven halt irgendwie um 
die Ecke "rubbelt".

von Yalu X. (yalu) (Moderator)


Lesenswert?

Andreas W. schrieb:
> Ich habe bereits Motortreiber (Cytron MDD10A Rev2.0), um die in den vier
> Rädern verbauten 24V DC-Kleingetriebmotoren anzusteuern.

Eigentlich sollten die Motoren drehzahlgeregelt werden, da die Zahl der
Antriebe (4) größer als die Anzahl der Freiheitsgrade des Fahrzeugs (3)
und die Kinematik deswegen überbestimmt ist. Ohne genau definierte
Drehzahl der Antriebe werden die Räder ständig auf dem Boden radieren.

Für eine Drehzahlregelung müssen die Antriebe aber mit Encodern
ausgestattet sein (bzw. werden, falls sie es nicht schon sind). Außerdem
musst du die Regelung in der Software implementieren (bspw. in Form
eines PI-Reglers).

Da du nach eigener Aussage Mikrocontrolleranfänger bist, erscheint mir
das angesichts der begrenzten Zeit kaum möglich. Wenn das Fahrzeug klein
und leicht ist, wird das Radieren der Räder auf dem Boden wahrscheinlich
kaum auffallen, so dass du evtl. auf die Regelung verzichten kannst.

Du könntest aber auch die Anzahl der Räder von vier auf drei reduzieren.
Dann ist die Kinematik nicht mehr überbestimmt und das Radierproblem
beseitigt. Dennoch wird die Bewegung des Fahrzeugs wegen der fehlenden
Regelung ungenau sein, so dass dieses bspw. nicht sauber geradeaus
fährt, wenn der Bediener dies vorgibt. Das bedeutet, dass der Bediener
die Bewegung laufend etwas korrigieren muss, um das Fahrzeug auf der
gewünschten Bahn und in der gewünschten Orientierung zu halten. Aber das
dürfte für das geplante Projekt akzeptabel sein.

Auch für das Dreiradfahrwerk kannst du Mecanum-Räder verwenden, üblicher
sind hier aber Allseitenräder (Omniwheels). Sie unterscheiden sich in
der Orientierung der passiven Rollen auf den Rädern:

  https://de.wikipedia.org/wiki/Mecanum-Rad
  https://de.wikipedia.org/wiki/Allseitenrad

Beispiel eines Dreiradfahrwerks mit Allseitenrädern:

  https://www.youtube.com/watch?v=9GQ0lPGDC1w

Beispiel eines Vierradfahrwerks mit Mecanum-Rädern:

  https://www.youtube.com/watch?v=pXONdyBGoBo


Andreas schrieb:
> Lothar M. schrieb:
>> - miss die Pulsdauer am Eingang A
>> - miss die Pulsdauer am Eingang B
>
> Oder gleich einen Empfänger mit S-Bus o.ä. nehmen.

Oder gleich so ein Gamepad inkl. Empfänger, der direkt an einen Arduino
angeschlossen werden kann, und für das es eine fertige Arduino-Library
gibt:

  https://www.reichelt.de/de/de/entwicklerboards-gamepad-im-playstation-design-kabellos-debo-ctrlr-ps-p232869.html

Die Reichweite ist zwar mit 8 m nicht allzu groß, sollte aber für so ein
Demoprojekt ausreichend sein.

Mit dem linken zweiachsigen Joystick kannst du die Geschwindigkeit in
Längs- und Querrichtung, mit einer Achse des rechten Joysticks die
Rotationsgeschwindigkeit um die Vertikalachse des Fahrzeugs vorgeben.
Natürlich kannst du die verschiedenen Bewegungen durch gleichzeitige
Nutzung beider Joysticks kombinieren, um bspw. – ähnlich einem
Rallye-Auto – scheinbar driftend um eine Kurve zu fahren.

Die zweite Achse des rechten Joysticks und die vielen Buttons kannst du
für lustige Gimmicks nutzen, falls du bis Ende Mai noch etwas Zeit übrig
hast :)

: Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.