Ich möchte gerne an einem Mikrocontroller 8 Servos an 4 Pins betreiben. Deshalb habe ich mir den CD4051 besorgt. Ich habe die Schaltung aufgebaut (mit Pull down an den Ausgängen des 4051), die Servos stören sich aber irgendwie gegenseitig (z.B. bewegen sich 2 zugleich.) Dann habe ich 4 der Servos direkt an die Pins des µC gehängt und hatte keine Probleme. Ich habe bei beiden Versionen eine eigene Betriebsspannung von +6V für die Servos erzeugt. Nun habe ich mir gedacht ich könnte das Problem mit einem Digitalen anstatt einem Analogen Demultiplexer lösen. Kennt jemand zufällig so einen digitalen Demultiplexer oder kennt jemand eine andere Lösung für mein Problem vorschlagen? Ich habe leider nur noch 4 Pins frei.
Nimm ein Schieberegister ohne Latch. Dann eine 1 reinschieben und nach dem Timing für das erste Servo eine Position weiterschieben. Nach dem Timing fürs 2.Servo wider eins weiterschieben, usw. Sobald du wieder das erste Servo ansprechen musst, eine neue 1 über SI reinschieben. So passen ca 8 Servos in einen 20 ms-Zyklus. So werden auch im Mehrkanalempfänger einer RC-Anlage aus dem Summensignal die verschiedenen Kanäle erzeugt.
Ich würde den Demultiplexer bevorzugen da das Programm dafür einfacher und ich nie mehrere Servos zur gleichen seit ansteuern muss.
Ich mach gerade auch was mit dem 4051 und mir ist es ein Rätsel, wie du ihn beschaltest. Der ist doch 1 zu 8.
Hier ist die Schaltung. Die Impulse für den Servo kommen von RC0.
Müßte eigentlich gehen. Mach zur Sicherheit an den Eingang auch noch einen Pulldown rein. Kannst du bei jeder Adressumschaltung eine kleine Minipause einbauen? Oder kann es sein, das über die Servoeingänge eine Spannung zurück in den 4051 gelangen kann? Ich schiebe mit einem 74HC4051 PWM auf acht LED rüber. Das geht prima. Wenn du hast, versuche es doch mit einem 74HC4051. Er hat die gleiche Pinbelegung.
Obi Plal schrieb: > Nun habe ich mir gedacht ich könnte das > Problem mit einem Digitalen anstatt einem Analogen Demultiplexer lösen. > Kennt jemand zufällig so einen digitalen Demultiplexer oder kennt jemand > eine andere Lösung für mein Problem vorschlagen? Grundsätzlich geht das auch mit einem Analogswitch. Du musst das Timing der Servos beachten, die mindestens alle 20ms einen neuen Puls benötigen. Komplett wegschalten für einen längeren Zeitraum geht nicht, da die Servocontroller dann undefiniert reagieren. Du musst also ständig weiterschalten und den benötigten PWM-Puls durchreichen. Bei 8 Servos bist Du dann aber schon fast an der Grenze des Machbaren, rein von der Laufzeit her, da Du vor und nach dem Umschalten eine kleine "0"-Pause einlegen musst, um Verwischungseffekte durch das Umschalten zu vermeiden. Alternativ kann man auch ein 74HC595 verwenden. /OE gibt dabei den (invertieren) PWM-Puls auf den durch das Schieberegister adressierten Ausgang weiter. Dafür braucht man dann nur 3 Leitungen: Daten, Shift+Latch-Clock (beide Clocks zusammengeschaltet, erfordert im ersten Schiebezyklus eine zusätzliche Clock) und /OE.
Wenn ich die Servos direkt an den Ausgängen des µCs anschließe sind alle nicht gebrauchten Servos permanent auf null und ich bekomme keine Störungen.
Ich empfehle dir nochmals, einen 74HC4051 oder 74HCT4051 zu benutzen. Der HEF4051 fühlt sich erst bei 15V richtig wohl. Das betrifft die Schaltzeiten und die Pegelschwellen.
müssen die servos dann permanent inpulse bekommen oder reidht es den eingang auf masse zu legn?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.