Ich kenne mich mit PICs nicht aus aber ich denke auch die werden etwas wie nen ADC und Timer haben. Über den ADC wird die Spannung erfasst und abhängig von dieser dann per Timer das PWM-Signal erzeugt.
Hallo zusammen,
ich bin auf der Suche nach einer PIC-Schaltung, die es erlaubt ein Servo per Spannungsänderung z.B. 5-10V zu steuern. Sämtliche Schalltungen, die ich gefunden habe laufen per Schalter, Taster, Poti. Grrr.
Trotz intensiver Suche (und ich habe wirklich Ausdauer) habe ich nichts gefunden.
Vielleicht hat ja einer einer eine Idee bzw. die Ahnung welche Schaltung / welches Prog man modden könnte oder wie man solch ein Projekt grundsätzlich umsetzen könnte.
Bestenfalls mit Einstellung der Drehgeschwindigkeit per Poti. Das habe ich allerdings schon gefunden.
Grüße Dirk
Ich kenne mich mit PICs nicht aus aber ich denke auch die werden etwas wie nen ADC und Timer haben. Über den ADC wird die Spannung erfasst und abhängig von dieser dann per Timer das PWM-Signal erzeugt.
Alles ist möglich. Unmögliches dauert nur etwas länger!
Halo Dirk,
willkommen im Forum.
Hmmm, schlecht schlecht. Warum? Weil Servos lieber eine einigermassen konstante Spannung (-sversorgung) haben und lieber von einem PWM-Signal gesteuert werden. Ist so - für Dich möglicherweise leider. Siehe hier (klick drauf).
Aber vielleicht können wir uns auf Auswege einigen (mit PICs kann ich auch nicht, noch mehr "leider").
Ciao sagt der JoeamBerg
Nunja, die Versorgungspannung muß natürlich auch vorhanden sein.
Aktuell habe ich eine Schaltung per 555. Nur über diese bekomme ich die Geschwindigkeitseinstellung nicht realisiert.
Dazu kommt, daß der Lötaufwand ziemlich hoch ist. (Ich brauche mehrere davon)
Übrigens habe ich einen fertigen Servotester gefunden, der per Mod auch per Spannung gesteuert werden kann.
Wenns hilft Suche ich das Bild raus.
Danke schonmal für Eure Teilnahme!
Du willst nicht wirklich einen Servo per Spannungsregelung ansteuern sondern Du möchtest eine Blackbox per per Spannungsregelung ansprechen und die soll Dir dann die Servos je nach anliegender Spannung bewegen, oder?
Weil so wie Du es geschrieben hast funktionieren (Modellbau)Servos nicht, die werden nur über PWM angesteuert.
LG
Hmm,
dann habe ich es wohl nicht genau genug beschrieben.
Es gibt bereits einen Servotester Turnigy der das kann wenn man den Poti-Anschluß abtrennt und einen 10K-Widerstand vorschaltet.
Über diesem kann ich dann per Spannung die Position steuern.
So etwas möchte ich selbst bauen, mit dem Zusatzfeature die Drehgeschwindigkeit einstellen zu können.
VG
Dirk
Hi Dirk,
schau Dir nochmal in irgendeinem Tutorial an wie Servos funktionieren. Kurz zusammengefasst: Sie haben drei Kabel, an einem liegt GND an, an einem V+ und am dritten kommt das Steuersignal rein. Dieses Steuersignal schaut bei Analogservos so aus, daß dort alle 20ms die Spannung für 1-2ms anliegt. Wenn jetzt der Servo z.Bsp. in die Mittenstellung fahren soll dann muß das Signal dort für 1,5ms anliegen. Die Spannung die da anliegt ist aber immer gleich hoch. Gestellt wird über die Dauer dieser Spannung. Das ist eine PWM, schau Dir das auch nochmal an wie die aussieht.
Um jetzt z. Bsp. einen Servo von einem Ende zum anderen fahren zu lassen nimmt man mal eine PWM die eine Pulsbreite von 1ms=1000µs hat. (Die Frequenz bleibt aber immer gleich bei 50Hz!) Damit steht das Servo an der minimum Position (die 1000µs sind nur ein Richtwert, genaueres lies nach) Um an die max Postion zu kommen legt man eine Pulsbreite von 2000µs an. Damit versucht dann der Servo so schnell wie möglich zur Max-Position zu fahren.
Wenn Du Drehgeschwindigkeit auch steuern möchtest dann muß man zwischen 1000µs und 2000µs Zwischenschritte einführen. Überlegen wir folgendes Beispiel: Wir wollen das der Servo von der min-Position zur max-Position fährt und er soll dafür 5 Sekunden brauchen. Wissen tun wir folgendes: der Servo bekommt 50x in der Sekunde eine neue Positionsinfo --> das ist die Frequenz der PWM im Fall von Analogservos eben 50Hz oder anders gesagt, alle 20ms ein neues Signal. Und wir wissen, daß dieses Signal zwischen 1000µs und 2000µs dauert für die min und max Position. Bei 5 Sekunden sind das 250 Einzelschritte die wir auf 1000µs aufteilen können. 1000/250=4. D. h. wenn wir bei 1000µs beginnen dann hat die nächste Position 1004µs dann 1008µs dann 1012µs und so weiter bis wir nach 250 Schritten bei 2000µs angekommen sind. Und damit bewegt sich das Servo langsam. In unserem Fall von min zu max innerhalb von 5s.
Obiges gilt für Analogservos. Digitalservos kann man weitaus schneller ansteuern als Analogservos. Ich hoffe, das hilft ein bischen.
Was ich jetzt noch nicht so genau weiß ob Du ein Spannungssignal hast mit dem Du die Servos ansteuern möchtest oder ob Du halt gesehen hast, daß es diesen Umbau des Turnigys Servotester gibt und Du deshalb auf die Idee kommst. Denn wenn Du eh mit µC arbeiten möchtest dann brauchst diesen Umweg über die Spannung nicht unbedingt. Da könntest dir auch einen Servotester bauen wo Du die Servopositionen eingibst, dazu noch einen Wert wie langsam oder schnell sie die Position erreichen sollten und fertig. Da brauchst dann nicht über Spannungspegel gehen die Du vorher digitalisieren mußt und dann extra umrechnen auf Servopositionen. Nachdem Du aber von mehr Servos sprichst geht es wohl auch nicht nur um einen einfachen Servotester?
Hallo PuraVida,
vielen Dank für die ausführliche Beschreibung.
Die Funktionsweise von Servos ist mir bekannt.
In der Tat habe ich ein anliegendes Spannnungssignal, mit dem ich das Servo steuern muß/möchte.
Der Servotester wäre dann also zweckentfremdet, bietet aber schon die Basis für die Umsetzung.
Ich müßte jetzt also wissen, welchen PIC ich verwenden muß. Der Turnigy arbeit, so weit ich weiß mit einem PICAXE-M08, der ist aber schwierig zu beschaffen. Ist aber eigentlich auch egal, da der Code eh neu her muß. (Nirgends gefunden).
VG
eigentlich ganz einfach:
miss die Spannung mit dem ADU in 1024 Schritten, von denen du nur 1000 nutzt. Wert > 1000 -> Wert = 1000
Erzeuge mit dem Timer 20ms-Intervalle, Interrupt bei Intervall-Beginn.
In der Interruptroutine 1000µs High über eine Warteschleife an einem Digitalausgangspin. Eine weitere Warteschleife mit der Zeit, die der ADU-Wert 0...1000 angibt bleibt High am Ausgang. Sobald die zweite Schleife abgelaufen ist, wird der Ausgang wieder auf Low geschaltet.
Nach 20ms wiederholt sich das Spielchen.
Also nochmal kurz:
20ms-Interrupt -> Pin = 1 -> Warteschleife(1000µs) -> Warteschleife(ADU-Wert in µs) -> Pin = 0 ... usw.
übrigens PICs sind nicht viel anders als AT-Megas u.ä.
Ich hoffe, ich hab die Aufgabenstellung richtig verstanden...
Hallo Thoralf,
ja so sollte es gehen. Nur die Programmierung und zusammenstellen der Schaltung geht mir nicht so leicht von der Hand. Außerdem möchte ich das Rad ja nicht neu erfinden. Mit anderen Worten Suche ich einen Schaltplan, der dem des Turnigys ähnelt (inkl. des Progs), so daß ich dann deine Lösung mit umsetzen kann.
Wäre super, wenn ihr mir dabei helfen könntet.
Lesezeichen