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 Servos
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.
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: -
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.
Edwin Fairchild
Mayank
Jack Creasey
Mayank
Mayank
Jack Creasey
Edwin Fairchild
Edwin Fairchild
Edwin Fairchild