PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mal wieder Servotester / Servosteuerung - Aber ... Spannungsgeregelt (PIC)



gibacht
17.11.2011, 18:18
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

Arkon
17.11.2011, 18:39
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.

oberallgeier
17.11.2011, 18:56
Halo Dirk,

willkommen im Forum.


... Suche ... PIC-Schaltung ... Servo per Spannungsänderung z.B. 5-10V zu steuern ...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). (http://www.rn-wissen.de/index.php/Servo#Ansteuerung:_Signalform_und_Schaltung)

Aber vielleicht können wir uns auf Auswege einigen (mit PICs kann ich auch nicht, noch mehr "leider").

gibacht
17.11.2011, 19:21
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!

PuraVida
18.11.2011, 05:58
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

gibacht
18.11.2011, 06:18
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

PuraVida
18.11.2011, 07:04
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?

gibacht
18.11.2011, 07:18
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

Thoralf
18.11.2011, 07:59
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...

gibacht
18.11.2011, 08:08
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.

gibacht
18.11.2011, 15:46
Hat keiner eine Idee, wie man die Drehgeschwindigkeitseinstellung per Poti realisieren könnte?

Geistesblitz
18.11.2011, 16:19
Was möchtest du jetzt genau? Einen Servo mit konstanter, einstellbarer Geschwindigkeit fahren lassen oder die Geschwindigkeit von einer Position zur anderen einstellen? Bei ersterem wäre das ein Servomod, internes Poti gegen Spannungsteiler tauschen und dann mit einem anderen Poti die PWM für das Servo erzeugen. Ansonsten würde ich das eher alles programmintern machen, es wurde ja schon eine Möglichkeit aufgezeigt, wie man ein Servo geschwindigkeitsbegrenzt verfahren kann. Ich frag mich trotzdem, warum du unbedingt mit Analogsigalen arbeiten willst. Das ist, als würde man ein Stück Vierkant rund feilen, um danach wieder ein Vierkant daraus zu schnitzen.

gibacht
19.11.2011, 08:44
Es soll so sein:
0V = Servo in -45°
5V = Servo Mittenstellung
10V = Servo in 45°

Zusätzlich:
Poti zur festen Einstellung der Drehgeschwindigkeit.
Poti zu: Keine Änderung
Poti auf: Servo erreicht bei 10V nach 5s den Vollausschlag

Abnormal
19.11.2011, 09:42
verstehe das Problem nicht. ist doch das selbe wie die Potentiometer-geschichte. Am ADWandler wird ein Wert anhand einer Spannung festgestellt und dewr uC gibt das dazupassende PWM Signal an den Servo aus. Dem Wandler ist es doch völlig egal ob die Spannung über einen Spannungsteiler mit Poti "erzeugT" wird oder sonst woher kommt...
Keine Ahnung von PIC aber ziemlich jeder Atmel-Controller kann das.

Thoralf
19.11.2011, 13:04
@gibacht:
ich werd versuchen dir zu helfen.
Wir müssen aber erstmal was klären:
hast du einen PIC-Programmierer? oder ein Entwicklungssystem?
Welcher Pic soll verwendet werden?
Reichts, wenn nur Poti-abhängig eine Stellung angefahren wird?
Auf Zeitkram (wie nach 5s das und das oder best. geschwindigkeiten) würde ich verzichten. Macht alles komplizierter und braucht man evtl. nicht.
Eingangsspannung fürs Poti = 5V wäre besser als 10V. der Pic wird sowieso mit 5V gespeist und die interne Referenz ja auch.
Für die Servos kann man ja eine Extraspannung jumpern.
Ich würde nur einen einzigen Servo gleichzeitig testen wollen.

Make it simple!

gibacht
19.11.2011, 13:18
@gibacht:
ich werd versuchen dir zu helfen.
Wir müssen aber erstmal was klären:
hast du einen PIC-Programmierer? oder ein Entwicklungssystem?
Welcher Pic soll verwendet werden?

-- Ich noch Neuling auf diesem Gebiet, von daher werde ich mir, je nach Empfehlung die entsprechende Variante zulegen.
-- Evtl. der PIC16F84

Reichts, wenn nur Poti-abhängig eine Stellung angefahren wird?

-- Nein leider nicht. Ich möchte über einen handelsüblichen Lichtdimmer das Servo steuern.

Auf Zeitkram (wie nach 5s das und das oder best. geschwindigkeiten) würde ich verzichten. Macht alles komplizierter und braucht man evtl. nicht.

-- Die Standardgeschwindigkeit von Servos ist viel zu hoch.

Eingangsspannung fürs Poti = 5V wäre besser als 10V. der Pic wird sowieso mit 5V gespeist und die interne Referenz ja auch.

-- Da das Netzteil frei wählbar ist steht dem nichts im Wege.

Für die Servos kann man ja eine Extraspannung jumpern.
Ich würde nur einen einzigen Servo gleichzeitig testen wollen.

-- Das wäre OK.


Make it simple!

Grüße Dirk

oberallgeier
19.11.2011, 13:46
... Drehgeschwindigkeitseinstellung per Poti realisieren ...
... Ich möchte über einen handelsüblichen Lichtdimmer das Servo steuern ...Was willst Du denn nun wirklich? Poti oder Dimmer? Ich fürchte, jetzt wirds kompliziert.

Mehrere erfahrene Kollegen erzählen Dir, dass die Drehgeschwindigkeit der Servos (hier Modellbauservos) kaum zu beeinflussen ist. Du bist davon aber nicht abzubringen. Nun willst Du ein anspruchsvolles elektronisches Steuergerät (eine handelsüblichen Lichtdimmer) mit einem Poti vergleichen ? ? ? Vielleicht solltest Du Dich erstmal zum Thema Lichtdimmer und Potentiometer sachkundig machen?

Die Drehgeschwindigkeit am Servo ist selten gut und einfach zu verstellen. Man kann allerdings die Sollposition mit winzigkleinen Schritten vorgeben. Dann ergäbe sich bei einem ausreichenden Zeitraster der Schrittvorgabe eine langsame, annähernd gleichmässig ausssehende Drehgeschwindigkeit. Das würde ich aber eher mit nem Atmel-Controller machen - ist jetzt sehr persönlich - weil die möglicherweise einfacher zu handhaben sind (kann ich aber auch nur vom Hörensagen beurteilen - daher ist es eben - sehr persönlich).

gibacht
19.11.2011, 13:57
Was willst Du denn nun wirklich? Poti oder Dimmer? Ich fürchte, jetzt wirds kompliziert.

Mehrere erfahrene Kollegen erzählen Dir, dass die Drehgeschwindigkeit der Servos (hier Modellbauservos) kaum zu beeinflussen ist. Du bist davon aber nicht abzubringen. Nun willst Du ein anspruchsvolles elektronisches Steuergerät (eine handelsüblichen Lichtdimmer) mit einem Poti vergleichen ? ? ? Vielleicht solltest Du Dich erstmal zum Thema Lichtdimmer und Potentiometer sachkundig machen?

-- Dimmer für den Servoweg
-- Poti für die Geschwindigkeiteinstellung

Die Drehgeschwindigkeit am Servo ist selten gut und einfach zu verstellen. Man kann allerdings die Sollposition mit winzigkleinen Schritten vorgeben. Dann ergäbe sich bei einem ausreichenden Zeitraster der Schrittvorgabe eine langsame, annähernd gleichmässig ausssehende Drehgeschwindigkeit. Das würde ich aber eher mit nem Atmel-Controller machen - ist jetzt sehr persönlich - weil die möglicherweise einfacher zu handhaben sind (kann ich aber auch nur vom Hörensagen beurteilen - daher ist es eben - sehr persönlich).

Habe da ein ähnliches Projekt im Forum gefunden, mit dem Verweis auf die EAM 8/2007 von Conrad.
Hartnäckig wie ich bin habe ich mir die Zeitschrift bzw. per E-Mail zukommen lassen. Studiere diese gerade. Vielen Dank dafür an Herrn K. aus Niederkassel!

gibacht
19.11.2011, 14:01
Hier der Schaltplan dazu (Anlage)

PuraVida
19.11.2011, 16:22
Habe da ein ähnliches Projekt im Forum gefunden, mit dem Verweis auf die EAM 8/2007 von Conrad.
Hartnäckig wie ich bin habe ich mir die Zeitschrift bzw. per E-Mail zukommen lassen. Studiere diese gerade. Vielen Dank dafür an Herrn K. aus Niederkassel!

Na fein, da hast ja Glück gehabt, daß gerade in der allerletzten Ausgabe der Zeitschrift Dein Projekt drinnen ist.

Sag, aus welchen Gründen hast Du Dich für einen Pic entschieden? Welche Vorteile hat der gegenüber anderen Controllern?

oberallgeier
19.11.2011, 17:11
Habe ... ähnliches Projekt ... gefunden ... Studiere diese gerade ...Schön, mein Glückwunsch, dass es doch noch klappt. Würdest Du bitte dann vorstellen, wie Deine Aufgabenstelltung mit dem PIC gelöst wird?

Zum Schaltplan - ich war immer der Meinung, dass eine direkte Versorgung von Servo(s) und Controller recht störempfindlich ist. Noch dazu ohne Kondensator. Da scheint der PIC ja nicht davon betroffen zu sein. Der PIC braucht auch keine Kondensatoren zur Versorgung? Dann ist er ja viel sicherer gegen Störungen als ein Atmelcontroller. Hmmmmm.

gibacht
19.11.2011, 17:25
Schön, mein Glückwunsch, dass es doch noch klappt. Würdest Du bitte dann vorstellen, wie Deine Aufgabenstelltung mit dem PIC gelöst wird?

Zum Schaltplan - ich war immer der Meinung, dass eine direkte Versorgung von Servo(s) und Controller recht störempfindlich ist. Noch dazu ohne Kondensator. Da scheint der PIC ja nicht davon betroffen zu sein. Der PIC braucht auch keine Kondensatoren zur Versorgung? Dann ist er ja viel sicherer gegen Störungen als ein Atmelcontroller. Hmmmmm.

Ich werde den Code kurzfristig reinstellen. Da muß noch was modifiziert werden...

Thoralf
20.11.2011, 12:08
"Der PIC braucht auch keine Kondensatoren zur Versorgung? Dann ist er ja viel sicherer gegen Störungen als ein Atmelcontroller. Hmmmmm"


Du hast natürlich den Daumen auf der Wunde. Ich arbeite viel mit PICs zur Servosteuerung u.a. natürlich auch.
Unbedingt muß auch der PIC mit 50...100nF Vielschichtkondi abegepuffert werden (scheiß Bastelliteraturschaltungen, sorry)

Übrigens ist der PIC16F84 total obsolet. Nimm den 16F876

Gruß

gibacht
22.11.2011, 19:55
"Der PIC braucht auch keine Kondensatoren zur Versorgung? Dann ist er ja viel sicherer gegen Störungen als ein Atmelcontroller. Hmmmmm"


Du hast natürlich den Daumen auf der Wunde. Ich arbeite viel mit PICs zur Servosteuerung u.a. natürlich auch.
Unbedingt muß auch der PIC mit 50...100nF Vielschichtkondi abegepuffert werden (scheiß Bastelliteraturschaltungen, sorry)

-- Kein Problem, irgendwie muß ich ja anfangen. Habe den Code mal in MPLAB getippt :eek: und soweit schon mal durch den debugger gejagt.
-- Dann habe ich angefangen mich sprut.de einzulesen.

Übrigens ist der PIC16F84 total obsolet. Nimm den 16F876

-- Beim Lesen bin ich auf ein Problem gestoßen:
-- Der PIC16F84 bzw. der 16F876 kann wohl keine anlogen Eingangssignale verarbeiten, aber das brauche ich doch wenn ich eine Spannung zum Steuern -- benutzen will.
-- Stehe also ziemlich auf dem Schlauch.


Gruß

Hast Du / Ihr noch einen Tipp?

Gruß

Thoralf
23.11.2011, 06:41
hi

der 16F876 hat 5 analoge Eingänge und 16 digitale.
Tip: gib auf RC6 (=Tx) den eingestellten Wert (dezimal) aus. Dann kannst du an jedem primitiven Terminalprogramm deine Einstellungen mitverfolgen. Das spart den Aufwand für eine Display ein. Und TTL zu RS232 oder USB zu wandeln ist auch nicht der Hit.

gibacht
23.11.2011, 15:33
Also, ich glaube ich komme so nicht weiter und meine Anforderungen sind für ein Einsteigerprojekt zu hoch.
Wie wohl einige technische Geräte u.a. Osci zur Verfügung stehen und der Keller einige Kisten mit elektr. Bauteilen beherbergt. (Vom Opa gerbt).
Eigentlich schade, aber ich brauche erst einmal eine Lösung.

Daher meine Frage, ob hier jemand Lust und Zeit hat sich mit diesem Projekt auseinander zu setzen und / oder mit mir zu erarbeiten.

Benötigte Bauteile würde ich bereitstellen und über ein "Schmerzensgeld" läßt sich natürlich auch reden.

Ggfs. werde ich dazu einen neuen Thread öffnen.

Grüße
Dirk