PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Board zum Ansteuern von 18Servos



yaro
14.04.2009, 15:43
Hallo leute, ich bin gerade dabei ein Board zur Ansteuerung von 18 Servos für meinen Hexapod zu entwickeln. Dazu soll ein AtMega8 über I2C angesteuert werden.
Eigentlich wäre das keine große Sache, nur gibt es da das Problem mit den überaus hohen Strömen.....
Zu spitzenzeiten können bis zu 17A über das Board flißen (bei5V). Da ich noch nie mit so hohen Strömen gearbeitet habe, wollte ich erstmal fragen, was es für Tücken dabei gibt. So könnte ich mir zum Beispiel vorstellen, das es beim einschalten der Stromzufuhr zu einem sehr schnellen Anstieg des Stromes führen würde, weil die Servos sich in ihre Anfangslage versetzten wollen, weil der AtMega noch nicht angesprungen ist, weil an ihm noch nicht genug Spannung anliegt. Sollte ich dann erst den Atmega anschalten, oder ist dieser Verdacht zu vernachlässigen?
Was gibt es sonst noch wichtiges zu beachten?

P.S. die Stromversorgung wird über Netzgerät oder Akkus realisiert, und mit einem StepDown-Wandler runtergeregelt.

Danke im Voraus

ikarus_177
14.04.2009, 20:03
ich würde die Stromversorgung von Leistungs- und Logikteil getrennt regeln und die beiden Massen verbinden. So hast du nicht die ganzen Störungen in der Stromversorgung durch den periodischen Stromhunger der Servos auch im Logikteil.

Viele Grüße

TomEdl
14.04.2009, 20:18
Ich würde die Versorgung auch ausreichend mit Elkos puffern, damit kein Spannungseinbruch entsteht wenn die Servos alle zugleich anfahren. Sonst könnte dir der Controller in den Reset gehen.

Gruß
Thomas

yaro
14.04.2009, 23:32
Ok, dann werde ich den Mikrocontroller mit einem 9V Block Versorgen (+Spannungswandler).
Allerdings hatte ich soetwas schonmal gemacht, und hatte damit trotzdem Probleme (was mir damals unerklärbar schien). Ich hatte ein ferngesteuertes Auto gebaut, mit einem RFM als Funksender/Empfänger, und dort habe ich aus den gleichen Überlegungen 2 verschiedene Spannungsversorgungen gehabt, und GND verbunden. Allerdings ist mir der RFM ständig abgestürzt (der AtMega8 lief weiter), und das auch nur bei niedrigen drehfrequenzen des Motors. Dies ging so weiter, bis ich dann irgendwann 3 verschiedene Kondensatoren direkt über den RFM gehängt hatte, dann gings besser (außerdem hatte ich ihn dann jedes mal vor dem Empfangen neu initialisiert). Trotzdem bleiben mir diese Spannungsspitzen dort unerklärlich, denn es waren ja völlig unterschiedliche Stromkreise, die sich eigentlich nicht beeinflussen lassen sollten.
Der Motor des Autos zog nur um die 2A, deswegen bin ich bei diesem Projekt, o ein viel größerer Strom fließt lieber doppelt vorsichtig.

Gruß yaro

Mixxer
15.04.2009, 10:15
Du solltest deinen Mega8 so programmieren, dass die Servoimpulse nacheinander/zeitversetzt ausgegeben werden - so kannst du den Spitzenstrom auch runterbekommen und ein bisschen verteilen!
MFG Mixxer

TomEdl
15.04.2009, 16:21
@yaro

Diese Spannungsspitzen können auch induktiv eingekoppelt werden. Zum Beispiel hatte ich mal eine Schaltung, die bei Berührung einer Sensorfläche eine LED aufleuchten lässt entwickelt. Diese Schaltung war nichts anderes wie drei Transistoren in Darlingtonschaltung zusammengeschaltet. Bei Berührung flossen einige µA in die Basis des ersten Transistors, der dann wiederrum den zweiten Transistor ansteuert und so weiter, bis dann schließlich am Ende der Strom für eine LED ausreicht. Diese Schaltung funktionierte auch soweit. Zufällig nahm ich diese Schaltung damals in die Schule mit und ging damit ins Labor, wo einige dicke Motoren stehen. Aus Spass hatte ich die Schaltung vor mir auf dem Tisch liegen. Jedesmal wenn einige Meter entfernt der 50kW-Motor anfuhr (und dabei einige 100A zog) leuchtete die LED auf.

Gruß
Thomas
;)

Richard
15.04.2009, 17:20
Hallo leute, i
..... beim einschalten der Stromzufuhr zu einem sehr schnellen Anstieg des Stromes führen würde, weil die Servos sich in ihre Anfangslage versetzten wollen .......
Danke im Voraus

Moin moin.

Ich stelle es mir gerade vor, Du schaltest ein und der Hex springt an die
Decke, weil alle Servos in End/Startposition Fahren. :-)

Die Servos sollten beim Einschalten stehenbleiben wo sie beim
Ausschalten standen, oder sie sollten beim/vorm Ausschalten in Ruhe
Position gefahren werden.

Der Mega sollte zuerst gestartet und initialisiert werden damit alle
ein Ausgänge die Werte haben welche für die Servos sinnvoll sind.

Erst dann sollte die Spannung für die Servos eingeschaltet werden,
im optimalen Fall bewegt sich da dann erst einmal NIX. :-) Um
hohe Einschaltstromspitzen zu vermeiden sollte in die Spannungsversorgung
der Motoren eine "passende" Drossel sitzen, die sorgt für einen relativ
langsamen Stromanstieg.

Erst danach sollten die Servos (nach) einen Steuerbefehl diesen
Befehl dann ausführen.

Gruß Richard

yaro
15.04.2009, 18:58
Hmm..... das mit der Decke wäre natürlich echt cool =)

Naja, eigentlich hatte ich vor, den Hexa in der Hand zu halten, wenn ich ihn starte, aber mit einer vordefinierten Startposition ist das natürlich viel besser.

Ich werde wohl wirklich verschiedene Spannungsversorgungen für Motor und Logik einbauen.
Lohnt es sich denn, ein Relais einzubauen, um die Servos zu starten?
Kennt vielleicht jemand ein Relais von Conrad, Reichelt oder rs-online, dass bei 5V 20A aushällt? Soweit ich weiß, haben Relais doch einen viel geringeren Eigenwiderstand, als MosFets, richtig? Sonst würde es sich ja überhaupt nicht lohnen, dann könnte ich die Motoren auch per Hand anschalten.

Gruß, Yaro

Richard
15.04.2009, 19:55
als MosFets, richtig? Sonst würde es sich ja überhaupt nicht lohnen, dann könnte ich die Motoren auch per Hand anschalten.

Gruß, Yaro

Moin moin.

Nehme besser einen Mosfet die sind bei den Strömen erheblich kleiner
und auch einfacher zu Schalten. Der Innenwiderstand ist extrem gering,
den kann man eigentlich vergessen. Es gibt da auch Typen welche vom
mc diereckt angesteuert werden können. Welche (?). :-/

Gruß Richard

yaro
16.04.2009, 18:05
Ok, ich werd mich nach power-Mosfets umschauen.

Vielen Dank für die schnellen Antworten

Quirino
19.12.2009, 11:38
Vorsicht beim Schalten von Power FET's ! um den Schaltvorgang schnell zu halten muss man die Gatekapazität möglichst schnell Laden/Entladen -> Das Ansteruen sollte mit einem möglichst grossen Strom erfolgen -> Die Basis nicht direkt über den Controller sondern über eine Transistor-Zwischenstufe ansteuern, dann klapps auch mit dem Nachbarn.

Besserwessi
19.12.2009, 12:48
Wenn es nur darum geht die Servos einmal ein und wieder auszuschalten, kommt es auch ein paar µs bei der Schaltzeit nicht an. Es gibt auch welche die man direkt vom µC schalten kann (z.B. IRLZ44). Wenn die Servos wirklich so viel Strom brauchen, dann ggf. auch was größeres, oder 2 davon.

Viele ( fast alle ?) Servos sind schon praktisch ausgeschaltet wenn sie keine Steuerpulse bekommen. Das könnte man vorher mal testen.

Wie sollten die 18 Servos gesteuert werden? Das wird schon relativ aufwendig mit der Software, denn kann kaum mehr als 10 Servos einfach hintereinander abarbeiten. Bei mehr als 12 Servos (2 per Hardware PWM und 10 per Software) leidet vermutlich die Genauigkeit.

robin
20.12.2009, 17:06
Siehe hier https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=51512&highlight= mein Beitrag mit Codebeispiel. Damit könnte man 160Servos in 20ms ansteuern. Jede ms 8 Stück und am anfang den nächsten port die 1ms einschalten.

Bis 80 Stück wäre ohne probleme möglich, wenn die µC genügend ports hätten.

Richard
20.12.2009, 17:30
Vorsicht beim Schalten von Power FET's ! um den Schaltvorgang schnell zu halten muss man die Gatekapazität möglichst schnell Laden/Entladen -> Das Ansteruen sollte mit einem möglichst grossen Strom erfolgen -> Die Basis nicht direkt über den Controller sondern über eine Transistor-Zwischenstufe ansteuern, dann klapps auch mit dem Nachbarn.

Hmm, ich bin nicht DER Mosfeed Profi, aber wenn es Mosfeeds welche
von einem µC angesteuert werden können giebt, sollten sie entsprechende
Treiber schon intern haben? Ansonsten währe das in (meinen) Augen
einfach beschiss! Das die möglicherweise etwas teurer sind, kein Problem
Man spartr ja letztendlich an anderer Stelle wieder ein.

Gruß Richard

021aet04
20.12.2009, 18:32
Auch wenn es Logicfets sind haben diese keine Treiber integriert. Logic Fets heißen nur deswegen so weil die Gatespannung (Ugs) bei 5V oder weniger liegt.

MfG Hannes

yaro
26.12.2009, 17:24
Hallo Leute,

die Software dazu ist schon fertig, habe eine ASM-Funktion geschrieben, die die je 9 Servos in ca. 2,6 ms (meine Servos brauchen eine Pulsdauer von ca. 0,6 - 2,6 ms) mit einer Genauigkeit von 1/3° ansteuert (die Genauigkeit ist wichtig, damit der Hexapod (in dem das implementiert werden soll) nicht ruckelt, denn mir ist schon klar, dass 1/3° im Lagerspiel verloren gehen).

Ich hab mich entschieden, die Motoren manuell anzuschalten, also per Schalter. Erst schalte ich den Mikrocontroller und dann die Motoren an. (ist sowieso erstmal ein Prototyp). Wenn mir das auf die Dauer zu lästig wird, dann werd ich das mit einem Mosfet regeln.

Gruß, Yaro