Forum: Projekte & Code RC-Servoelektronik für DC-Motor


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


Angehängte Dateien:

Lesenswert?

Für ein Projekt von mir (U-Boot) brauchte ich eine Schaltung, die einen 
Motor mit hoher Stromaufnahme vor- und rückwärts laufen lassen sollte, 
geregelt durch PWM. Eine H-Brücke kam hier nicht in Frage, da ich keine 
P-Kanal Logiklevel FET für hohe Ströme parat hatte.
Der Tiny bekommt ein Standard RC Servo Signal vom Empfänger. Liegt 
dieses um eine Pulsdauer von etwa 1500µs (Neutralstellung), passiert 
nichts. Wird der Puls kürzer ( Joystick ziehen -> U-Boot taucht), wird 
zuerst das Relais aktiviert und dann der Motor mit etwa 240 Hz PWM 
angesteuert - die PWM wird dabei stärker, je kürzer der Puls ist.
Schiebt man den Joystick nach oben (-> auftauchen), bleibt das Relais 
inaktiv und der Motor wird mit wachsender PWM angesteuert.

Da es sich hier um die Ballastpumpe fürs U-Boot handelt, ist eine 
Ausfallsicherung vergesehen. Beim Ausbleiben des Servosignals wird der 
Motor ohne Relaisaktivierung auf halbe Kraft geschaltet zum Auftauchen.

Als Spannungsquelle V+ dient eine Parallelschaltung von 4*18650 Li-Ion 
Zellen, während Tiny und Relais normal vom RC Akku (+5V) gespeist 
werden. Die Ballastpumpe hier ist eine Zahnradpumpe mit etwa 3V DC und 
bis zu 4 Ampere Stromaufnahme.


Wie immer benutze ich AVR Studio 4 zum Kompilieren, es sollten wenige 
Anpassungen für andere IDE nötig sein. Der Tiny wird auf 8MHz mit 
internem RC - Oszillator gefused. Da der MC im Auslieferzustand die 
gesetzte CKDIV8 Fuse hat, reicht es, diese zu löschen.

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Schönes kompaktes Projekt, ich würde noch einen Elko zwischen V+ und GND 
spendieren um dem pulsförmigen PWM abzufangen und einen 100k Widerstand 
vom Gate nach GND damit der MOSFET aus ist wenn der uC nach RESET noch 
nicht initialisiert ist.

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


Angehängte Dateien:

Lesenswert?

MaWin schrieb:
> Schönes kompaktes Projekt, ich würde noch einen Elko zwischen V+ und GND
> spendieren um dem pulsförmigen PWM abzufangen und einen 100k Widerstand
> vom Gate nach GND damit der MOSFET aus ist wenn der uC nach RESET noch
> nicht initialisiert ist.

Beides gute Tipps, tatsächlich ist ein fetter Elko an V+ (1000µF/10V), 
den ich vergessen habe, einzuzeichnen. Mache ich aber sofort, ebenso wie 
den Pulldown am Gate. Siehe Anhang

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

Hier jetzt die Variante für Motoren mit höherer ( 9V < V+ < 18V) 
Versorgungsspannung. Eine klassische H-Brücke mit etwa 6-10A 
Treiberstrom. Die IRLZ44 könnten wesentlich mehr, aber für die IRF9530 
ist bei 14A Schluss.

Eingangssignal ist wie im ersten Beitrag ein normales RC Servosignal. V+ 
darf die maximale Ugs der P-Kanaler (+/-20V beim IRF9530) nicht 
überschreiten.
Das Dings ist also ein normaler Fahrtenregler.
Wichtig hier ist der Elko an V+. Eine Freilaufdiode geht hier ja nicht 
wirklich und die Bodydioden der MOSFet leiten die Gegen-EMK dann über 
sich hinweg - in V+. Also schön abblocken und alles niederohmig mit 
dicken Bahnen oder Drähten bauen.

Unterschiedlich ist das Notfallverhalten - hier wird der Motor einfach 
nur gestoppt.

Da sich immer noch die meiste Peripherie auf dem Tiny langweilt, werde 
ich mit einem Poti am ADC auch nochmal ein Proportionalservo 
implementieren - praktisch eine Nachbildung eines echten Servo IC wie 
dem NE544 oder dem M51660, die ja langsam schwer zu bekommen sind und 
nicht sehr viel Strom liefern können. Überstrommessung wäre auch noch 
schön.

: Bearbeitet durch User
von Harald W. (wilhelms)


Lesenswert?

Matthias S. schrieb:

> Da sich immer noch die meiste Peripherie auf dem Tiny langweilt, werde
> ich mit einem Poti am ADC auch nochmal ein Proportionalservo
> implementieren - praktisch eine Nachbildung eines echten Servo IC wie
> dem NE544 oder dem M51660, die ja langsam schwer zu bekommen sind und
> nicht sehr viel Strom liefern können. Überstrommessung wäre auch noch
> schön.

Ja, solche "Powerservos" werden inzwischen in diesem Forum ja verstärkt
gesucht, gern auch mit hoher Auflösung/Genauigkeit, die man z.B. mit
einem Mehrgangpoti erreichen kann. Vielleicht wäre sogar ein Servo mit
einem Inkremantalgeber und zusätzlicher Nullpunkterkennung per Licht-
schranke für manche Anwender interessant.

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


Angehängte Dateien:

Lesenswert?

Da hatte ich doch die Failsafe Routinen in beiden Projekten nicht 
richtig durchdacht - ich musste die Strategie dafür deutlich ändern.

Nun funktioniert es so, das die ISR bei der Pulslängenmessung einen 
Plausibilitätscheck macht und bei guten RC Pulsen eine Variable 
hochzählt und bei Blödsinn diese Variable (good) auf null setzt.
Erst wenn es mehr als 50 gute Pulse (1 Sekunde) gibt und kein Timeout, 
wird das Signal als gültig akzeptiert.
Das klappt jetzt recht brauchbar. Anbei die neuen Sourcen für die 
Relais- und die H-Brückenvariante.

von Paul W. (pawi)


Lesenswert?

Hallo

ist das Projekt schon fertig? hätte Interesse an einigen Erfahrungen und 
Daten.

Schönen Abend noch
LG
Paul

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


Lesenswert?

Paul W. schrieb:
> Hallo
>
> ist das Projekt schon fertig?

Das hier beschriebene Modul ist soweit fertig.

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.