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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.