Mehrere Servos, bewegen, wenn sie nicht eingeschaltet sind

Ich versuche also, 28 Servos zu steuern, um eine 7-Segment-Anzeigeuhr mit beweglichen Segmenten zu erstellen. Verwendung einer einzelnen Signalleitung und 4 p-Kanal-MOSFETs und 7 n-Kanal-MOSFETs und eines Binär-zu-7-Segment-Decoders (cd4511).

Link zum Video

Unten ist ein Beispielschema und danach das eigentliche Schema. Ich weiß, dass beide MOSFETs als N-Kanal angezeigt werden, aber das Endprodukt hat die richtigen P-Kanäle mit korrekter Pinbelegung. Sie können auch die eigentliche Platine anzeigen, für die das Modul in der Mitte bestimmt ist ein RTC, neben Barrel Jack ist Vreg für den Mikrocontroller und Vreg für die ServosBeispielschema Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Sehen Sie sich die Bilder an, die als Referenz im realen Schaltplan bereitgestellt werden, da ich in meinen Schaltplänen Beschriftungen und keine echten Linien verwende. Daher bin ich mir nicht sicher, ob dies Ihnen hilft, die Schaltung zu verstehen. Deshalb habe ich ein Beispiel mit Linien gezeichnet. Ich habe auch einen Videolink von einer der Ziffern, der wie erwartet funktioniert, aber das Problem tritt auf, sobald ich die restlichen Ziffern verbinde.

Erstens gibt es einen CD4511-Binär-zu-7-Segment-Decoder, dieser benötigt 4 Eingänge ABCD, wobei A das niederwertigste Bit ist. Ich treibe diese Pins hoch und niedrig, um eine Binärzahl zwischen 0 und 9 zu erzeugen. Der IC treibt dann die entsprechenden Ausgangsleitungen ( ABCDEFG) hoch, um diese Zahl auf einer Segmentanzeige erscheinen zu lassen. Ich verwende es jedoch nicht, um eine LED-Anzeige anzusteuern, sondern treibe MOSFETs an, die als LOW-Seitenschalter für die Servos fungieren, alle 28 Servos! Allerdings sind nicht alle 28 tatsächlich an, denn für jeweils 7 Servos (also eine Ziffer) habe ich einen P-Kanal-MOSFET als High-Side-Schalter, den ich mit dem Mikrocontroller steuere. Wenn sich die Zeit ändert, ändere ich also nur eine Ziffer (7 Servos ) auf einmal und niemals alle 28 Servos.

Wenn ich zum Beispiel möchte, dass die erste Ziffer (die Einerziffer für die Minute) eine 3 anzeigt, würde ich A und B auf dem CD4511-Chip hoch setzen, dies würde dann durch die N-Kanal-MOSFETs die niedrige Seite für die liefern Servos, dann würde ich auch den P_channel MOSFET über den Mikrocontroller aktivieren, um nur die High-Seite der ersten 7 Servos bereitzustellen, die der Einerstelle der Minuten entsprechen. Jetzt sind diese 7 Servos "an" und ich gebe ihnen das PWM-Signal, um ihre Arme in die gewünschte Position zu bewegen, die das Segment wie im Video zeigt. Theoretisch sind die restlichen Servos nicht eingeschaltet, weil der CD4511-Decoder ihre MOSFETs nicht einschaltet, und ich habe auch den High-Side-MOSFET für sie nicht eingeschaltet ... das Problem ist, dass sie sich bewegen und diejenigen, die ich will sich bewegen nicht richtig bewegen!!! und nicht auf die durch das PWM-Signal eingestellte Position, sondern nur unregelmäßig. Wenn ich jetzt alle Servos ausstecke und nur 7 Servos eingesteckt lasse, ist es egal, welche 7 Servos es sind, aber solange ich nur mit einer Ziffer arbeite, funktioniert alles gut wie im Video, die Probleme treten auf, wenn alles eingesteckt ist ... Ich kann nur nicht herausfinden, warum? Das PWM-Signal sieht im Bereich sauber aus.

Was rechtfertigt eine Ablehnung? Habe ich falsch gefragt? Bitte korrigieren Sie mich, damit ich meine Fragen so stellen kann, wie sie gestellt werden sollten, sonst werde ich es nie lernen.
Ich weiß nicht, was jemanden dazu veranlasst hat, abzustimmen. Scheint mir eine berechtigte Frage zu sein. Wie auch immer, kommen wir zum Punkt. Können Sie weitere Details mitteilen, ich meine die MOSFET-Nummer und die Servodetails? Werden alle Servos über 7805 IC versorgt?
Ihre Servos benötigen ständig VCC und Masse. Das Ein- und Ausschalten von VCC stört die servointerne Steuerung. Alles, was Sie tun müssen, ist das PWM-Signal zu jedem Segment für die Ziffern zu steuern. Da Sie eigentlich nur zwei Positionen für jedes Servo haben, könnten Sie einfach die Ein- / Aus-PWM von einfachen digitalen Ports auf jedes Segment schalten und zwei PWMs als Interrupt-gesteuerte Aktivierung ausführen. Sie brauchen überhaupt keinen Decoder ... das alles könnte einfach in Software erledigt werden.
Können Sie zum besseren Verständnis und zur Bereitstellung einer besseren Lösung erklären, warum Sie sich für dieses Design entschieden haben? Ich meine, ist es, dass Ihre Anwendung sehr leistungsempfindlich ist? Das liegt daran, dass es meiner Meinung nach eine bessere Lösung wäre, nur einen analogen Multiplexer im Kaskadenmodus zu verwenden, und nur 5 Mux sollten die Schaltung zum Laufen bringen. Obwohl ich mir dessen nicht sicher bin.
Ich stimme @JackCreasey zu, die Dekodierung könnte einfach per Controller erfolgen und ein Decoder ist überhaupt nicht erforderlich.
@ Mayank. Ein analoger Multiplexer funktioniert nicht (für das Signal). Wenn Sie VCC an einen Servo angelegt haben und keine eingehenden Frames (das Signal) eingehen, befindet sich der Servo im freien Modus (es wird niedriger Strom sein). Wenn Sie die Signalrahmen anwenden (typischerweise 50 -300 Hz, je nach Typ), hält oder sucht das Servo das definierte PWM-Signal.
Die Entscheidung, den Decoder zu verwenden, war einfach, weil ich den Chip herumliegen hatte und ich dachte, ich könnte viele if-Anweisungen oder Wechselfälle in meinem Programm vermeiden, indem ich es einfach dem IC überlasse, ganz zu schweigen davon, dass ich die verwendeten Pins reduziert habe , 4 für den BCD-Decoder gegenüber 7 müsste ich verwenden, um die MOSFETs über den Mikrocontroller anzusteuern. Außerdem schalte ich die Servos aus, weil es ein ständiges Zittern gibt, wenn sie eingeschaltet bleiben, ganz zu schweigen davon, dass ich aufgrund des Designs Servos bewegen würde, wenn ich sie eingeschaltet ließe, die ich nicht bewegen wollte.
Da die Servos einen sehr leichten Arm bewegen, mache ich mir keine Sorgen, dass sie ihre Position nicht beibehalten, da der Arm so leicht ist, dass er das Servo beim Ausschalten einfach nicht bewegt. Aber wie ich bereits erwähnt habe, funktioniert die Schaltung gut, wenn eine Ziffer an die Platine angeschlossen ist, aber sobald ich ein Durcheinander von Drähten mit allen 28 angeschlossenen Servos habe, bekomme ich ein unberechenbares Verhalten. Meine Vermutung ist, dass die Stromleitungen laut werden, ich habe sie auf dem Zielfernrohr betrachtet und sie werden laut, höchstwahrscheinlich ist es die Grundebene. Oh nad die Servos werden von einem 7806 versorgt, der Mikrocontroller von einem 7805 über 12V 2A Eingang.
Ich wünschte, ich könnte die Schaltpläne dieser 32 Servocontroller bei ebay bekommen , Sie können ihm Befehle senden und ihm sagen, welches Servo wie viel und wie schnell bewegt werden soll

Antworten (1)

Theoretisch sind die restlichen Servos nicht eingeschaltet, weil der CD4511-Decoder ihre MOSFETs nicht einschaltet, und ich habe auch den High-Side-MOSFET für sie nicht eingeschaltet ... das Problem ist, dass sie sich bewegen

Ich vermute, dass dies durch eine Stromrückspeisung durch die "nicht mit Strom versorgten" Servos verursacht wird . Im Gegensatz zu LEDs, die den Rückstrom blockieren, haben RC-Servos einen Steuer-IC (und möglicherweise eine diskrete H-Brücke), der wie eine in Vorwärtsrichtung vorgespannte Diode aussieht, wenn er mit umgekehrter Polarität angeschlossen wird.

Betrachten Sie die vereinfachte Schaltung unten mit nur 2 Segmenten und 2 Ziffern. Die Ziffern- und Segment-FETs sind als Schalter und Servos als Lampen mit parasitären Sperrdioden modelliert: -

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Ziffer 1 und Segment A werden eingeschaltet und versorgen Servo1A mit Strom. Aber es gibt einen anderen Weg – durch die Pfeile gezeigt – durch Servo1B, Servo2B (umgekehrt) und Servo2A. Servo2B fällt um ca. 0,6 V ab, sodass ca. 5,4 V zwischen Servo1B und Servo2A geteilt werden. Einer oder beide dieser Servos können sich bewegen, wenn ihr Anteil an der Spannung ausreicht, um sie zu betreiben.

Um Rückspeisungen zu vermeiden, können Sie eine Diode in Reihe mit der positiven Leitung jedes Servos schalten. Es kann jedoch besser sein, die Signaleingänge der Servos zu schalten als ihre Stromversorgung. Das Multiplexen der Servosignale würde auch mögliche Probleme verhindern, die durch Signale verursacht werden, die in nicht mit Strom versorgte Servos mit schwebenden Massen eingespeist werden.