PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ProBot: PWM Signal auf freien Pin der C-Control für Servos



Gizmo1.0
15.05.2010, 21:46
Hallo,

ich habe zwar schon die Suche bemüht und auch ansatzweise etwas gefunden, aber ich bin halt nur der Stift aus dem Ersten....daher mal ne Typische Azubifrage:

Ich möchte einen Servo ansteuern (später auch noch mehr, daher die folgende Vorgehensweise) und habe dazu die Stomversorgung von meinem GIZMO angezapft und weil die C-Control ja noch so viele schöne frei Pins hat einfach mal den letzten X3er (dürfte PIN 16 sein wenn mich nicht alles täuscht) mit der Steuerleitung des Servos verbunden.....
Nun habe ich ja auch schon etwas über Sevobefehle usw. gelesen...aber ich muss ja nun irgendwie meiner C-Control auch klar machen an welchem PIN der Servo hängt, oder? Bitte, bitte einmal für Doofe mit doppel OO: Wie müsste in meinem Fall der Code in C aussehen um den Servo zu bewegen? Dat wär echt bupper! :) ( Und nein, ich hänge den nicht irgenwie, irgendwo anders drann!)


Gruß

nici
16.05.2010, 10:42
em ja da steht eigentlich alles wenn ich deine frage richtig verstanden habe .

http://www.c-control.de/c-control-pro/applikationen/servos_ansteuern.html

wkrug
16.05.2010, 10:57
Du musst ein Signal erzeugen, das eine Impulslänge von 1ms ( voller Linksausschlag ) bis 2ms ( voller Rechtsausschlag ) erzeugt.
Zwischen den Impulsen muss dann eine nullage von 18...20ms kommen.

Ich mach das gerne mit dem Timer 1 des Controllers und den dazugehörigen Comparematch Interrupts.

Der Timer 1 läuft dabei frei und kann deshalb auch noch für andere Aufgaben verwendet werden.
Ein Comparematch Interrupt tritt auf -> Dae gewünschte Pin wird auf "H" geschaltet. Das Comparematchregister wird mit dem Wert für den nächsten Interrupt vorgeladen ( TCNT1 + gewünschte Impulslänge ).
Tritt dieser Interrupt dann wieder auf wird der Ausgang "L" geschaltet und das Comparematchregister für den nächsten Interrupt ( Impuls ) vorgeladen ( TCNT1+gewünschte Pausezeit ).
Die Ansteuerung der einzelnen Sequenzen im Interrupt kann man über eine Zählvariable machen.
Das System ist auch sehr einfach auf zusätzliche Servokanäle erweiterbar, indem man einfach zusätzliche Sequenzen hinzufügt, die dann den Vorherigen Servokanal löschen und den aktuellen aktivieren.

Das funktioniert so bis ca. 8 Servos, dann wird die Pause zwischen den Pulsen zu lang.

Das Hauptprogramm muß dann nur noch eine Variable mit den gewünschten Servoimpulslängen füttern, der Rest läuft im Interrupt.

Gizmo1.0
17.05.2010, 17:47
Hallo ihr Zwei,
vielen Dank für eure Hilfe! Ich hab mich mal ein wenig in den Dokus des Probot und des ATMega 128 schlau gemacht auf den Seiten die nici gelinkt hat und denke das Pin X3_16 demnach mit PA7 bzw. Portbit 44 ansprechen kann über den Servo_ Befehl, oder?!
Danke nochmals! Werd berichten wenn ich Zeit zum ausgibig testen hatte!

Gruß

kif
28.08.2010, 22:32
Hey
würde mich mal interessieren ob was daraus geworden ist. Hab auch keine Ahnung wie ich einen Servo mit dem Pro Bot ansteuern soll, daher würde mich das Ergebniss interessieren. Bauplan wie man den Servo anschließt und Programm wären sehr hilfreich. Danke

Mfg kif

radbruch
29.08.2010, 08:40
Hallo

Leider hat der Probot keine freien Pins. Deshalb muss man die Servos irgendwie frei an den X1-X4-Buchsen anschliesen. Ansteuerung wurde u.A. hier beschrieben:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=487868#487868

Die Zuordnung der Portbits des C-Control musst du dir selbst suchen.

Gruß

mic