PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM-Signal für Fahrtenregler



23.11.2004, 21:22
Hallo Zusammen,

ich stehe vor der Aufgabe mit einer C-Control MainUnit2 das PWM Signal für einen handelsübichen Fahrtenregler (Conrad, TOP40C JR Auto) immitieren zu müssen.

Leider gibt es nicht mal vom Hersteller genauere Spezifikationen zu dem Signaltyp. ich weis nur, dass er mit einer Taktfrequenz von 3 kHz angesprochen wird.

Daher meine Fragen:
wie genau sieht denn dieses signal eigentlich aus?
genauer:
1. in welchem Spannungsbereich liegt dieses signal?
2. wie lange ist ein high bzw. low peak?
3. ist der low peak bei null volt, oder im negativen bereich gegenüber dem high peak.
4. das puls-pausen-verhältnis für "motor stopp" ist bei diesem regler programmierbar. kann bei einer puslpausen-definition von 50/50 dennoch mit voller leistung forwärts und rückwärts gefahren werden?


vielen dank im vorraus,

christoph

recycle
23.11.2004, 22:13
Soweit ich weiss schliest man einen elektrischen Fahrtenregler statt einem Servo + mechanischem Fahrtenreglerr an den RC-Empfänger an.

Demnach reagiert der Fahrtenregler wohl auf dieselben Signale wie ein Servo.
Wie das Signal zur Steuerung von Servos aussehen muss findest du hier im Forum in diversen Threads beschrieben.
In Bascom Basic gibt es da spezielle Befehle für, aber das hilft dir bei der C-Control natürlich wenig.
Ich habe hier vor längerer Zeit aber auch mal in irgendeinem Thread gelesen wie jemand Servos mit der C-Control ansteuert. Probiers am besten mal mal mit der Suchfunktion.



weis nur, dass er mit einer Taktfrequenz von 3 kHz angesprochen wird.

Wenn du mal einige der Fahrtenregler die z.B. Conrad anbietet vergleichst findest du für verschiedene Regler verschedene Frequenzangaben zwischen 500 - 3000 Hz.
Da man aber sämtliche Fahrtenregler an jeden x-beliebigen RC-Empfänger anschliessen kann und ein Empfänger die Fahrtenregler sicherlich alle gleich ansteuert, kann mit der Frequenzangabe eigentlich nicht die Ansteuerfrequenz gemeint sein.

Ich vermute eher, dass es sich bei den 3000 Hz um die Frequenz handelt mit der der Fahrtenegler den Motor steuert.

m.artmann
24.11.2004, 08:18
Hallo,


Ich vermute eher, dass es sich bei den 3000 Hz um die Frequenz handelt mit der der Fahrtenegler den Motor steuert.

Stimmt genau, der Motor wird auch mit einer PWM geregelt und diese wird mit den besagten 3000 Hz erzeugt.
Fast alle Fahrtenregler aus dem Modellbaubereich haben einen kleinen Schalter mit dem man den Regler erst einschaltet.

In der Anleitung zum Fahrtenregler steht man soll erst den Modellbausender einschalten. Dann den Empfänger für 1-2 Sekunden.

Dadurch erkennt der Empfänger die Neutralstellung des Senderknüppels und gibt diese seinerseits zum Fahrtenregler aus.
(ca. 1,5ms alle 20ms)

Erst nach dieser Zeit soll man den Schalter am Fahrtenregler betätigen.
Dieser erkennt dann diese 1,5ms vom Empfänger auch als Neutralstellung an d.h. der Motor läuft nicht.
Ein PWM Signal vom Empfänger/µC von 1,5 bis 2ms wird dann als vorwärts bzw von 1,5 bis 1ms als rückwärts interpretiert.

Ich persönlich habe diesen kleinen Schalter am Regler entfernt und durch einen Optokoppler ersetzt.
Mein AVR Mega32 erzeugt beim Einschalten als erstes ein PWM Signal für diese Neutralstellung und
danach erst schalte ich über einen Ausgangspin den Optokoppler durch.

Gruß
m.artmann

christoph materne
24.11.2004, 19:18
OK, vielen Dank, das half mir schon mal gut weiter.

Allerdings wüsste ich noch gerne, ob denn der fahrtenregler dennoch mit voller leistung vorwärts fahren kann, wenn ich einen gewissen bereich des puls-pausen-verhältnisses für das rückwärtsfahren reservieren muss?

christoph

m.artmann
24.11.2004, 20:28
Allerdings wüsste ich noch gerne, ob denn der fahrtenregler dennoch mit voller leistung vorwärts fahren kann, wenn ich einen gewissen bereich des puls-pausen-verhältnisses für das rückwärtsfahren reservieren muss?

Ja natürlich, fährt der Regler mit voller Leistung vorwärts bzw. rückwärts.
Ich baue meinen Roboter auf dem Kettenfahrzeug "Catwiesel" von Conrad Elektronik auf.
Da ist jeweils ein Motor für den Antrieb einer Kette zuständig.

Da ich auch noch ein paar Sensoren (Ultraschalll und IR)
auf Servos drehbar anbringen will habe ich die Fahrtregler nicht direkt
an meinen AVR gehängt sondern dafür einen extra Servotreiber RS1 vorgesehen.
Diesem kann man über eine serielle Schnittstelle mitteilen
welches Servo/Fahrenregler welche Stellung einnehmen soll.
Die genaue Stellung eines Servos gibt man dabei mit einem dezimalen Wert zwischen 1 und 255 an.
Wobei dann ein Wert von 128 eben der Neutralstellung des Fahrtreglers bzw. der
Mittelstellung eines Servos entspricht.
Dementsprechend bedeutet ein Wert von 1 dann Vollgas nach vorne / Servo linksanschlag
bzw. ein Wert von 255 Vollgas rückwärts / Servo rechtsanschlag.
Wenn ich also eine Variable von 128 auf 1 runterzählen lasse und diese Variable dann immer an den
Servotreiber ausgebe dann beschleunigt der Roboter von Null auf Vollgas vorwärts.
Bei Werten von 128 bis 255 entsprechend rückwärts.

Da ich diese kleinen Schalter durch die Optokoppler ersetzt habe kann ich jedoch bei Bedarf
den Wert für die Neutralstellung auch auf z.B. 200 stellen und kann dadurch
etwas feiner auf Vollgas regeln und dafür rückwärts etwas grober..

Ich hoffe ich habe mich verständlich ausgedrückt, wenn nicht frag einfach nochmal nach. O:)

Gruß
m.artmann

recycle
24.11.2004, 23:47
Allerdings wüsste ich noch gerne, ob denn der fahrtenregler dennoch mit voller leistung vorwärts fahren kann, wenn ich einen gewissen bereich des puls-pausen-verhältnisses für das rückwärtsfahren reservieren muss?


Grundsätzlich musst du dafür natürlich einen Fahrtenregler haben, der auch "Rückwärtsfahren" unterstützt. Manche Fahrtenregeler z.B. die meisten für Modellflieger und Boote aber auch manche Regler für Autos unterstützen nur Vorwärts.

Die meisten Fahrtenregler kann/muss man erst einmal kalibrieren damit Nullstellung, volle Leistung vorwärts und volle Leistung Rückwärts korrekt umgesetzt werden.
Ältere Fahrtentregler haben dafür oft 2 kleine Potis, an einem kann man die Nullstellung justieren, an dem anderen den Vollausschlag.

Neuere Fahrtenregler haben oft nur einen kleinen Setup-Knopf und ein oder zwei LEDs. Nachdem man den Setup-Knopf gedrückt hat signalisieren die LEDs in welche Stellung man den Gashebel bringen muss. Wenn man das Setup dann einmal durchgeführt hat speichert der Regler die Werte. Solange man den Regler dann am selben Empfänger betreibt braucht man ihn normalerweise danach nicht mehr neu zu kalibrieren.

Es gibt aber auch Fahrtenregler die das "angeblich" voll automatisch machen. Da muss man dann jedes mal nach dem Einschalten den Gasbebel ein paar Sekunden in Nullstellung lassen. Bis zum nächsten Einschalten "merkt" sich de Regler diese Position dann als Nullstellung.
Da man bei so eiinem Regler den Vollausschlag nicht kalibriert, kann ich mir eigentlich nicht vorstellen, dass Vollausschlag des Gashebels und "Vollgas" wirklich immer ganz genau übereinstimmen. Bei meinem Regler passt es aber trotzdem gut genug.

Für deinen Zweck dürfte es relativ egal sein, welche Möglichkeit zur Kalibrierung der Fahrtenregler hat. Da du das Signal selber generieren willst, kannst du ja zur Not das Signal auf den Regler abstimmen und brauchst nicht unbedingt den Regler auf das Signal abstimmen.

25.11.2004, 01:36
Wunderbar, das war sehr hilfreich. vielen dank!
ich habe allerdings noch eine frage zur kommunikation von pc und Servotreiber RS1.
gitb es da vordefinierte software für den pc und den RS1 oder muss mann selber hand anlegen und protokolle und signalübertragung über die serielle schnittstelle selber hinbasteln?

die steuersignale, die über die serielle schnittstelle ausgegeben werden sollen, werden von einem noch zu schreibendem c++ programm generiert.
gitb es da irgendwelche konfortablen bibliotheken oder plug ins, für die kommunikation mir diesem RS1?

und: kann ich auh eine c-control (plus) anstelle der RS1 verwenden. ist die schnell genug um PWM-signale von ca 50Hz zu generieren?
auch hier stellt sich die frage nach entsprechenden kommunikationsprotokollen/bibliotheken.

sind jetzt n haufen fragen auf einmal. aber hier tummeln sich ja anscheinend einige spezialisten ;-)

christoph materne
25.11.2004, 01:42
hm, hab vergesen mich einzuloggen :-s (siehe obiger artikel)
hasse es anonym zu schreiben...

m.artmann
25.11.2004, 07:48
gitb es da vordefinierte software für den pc und den RS1 oder muss mann selber hand anlegen und protokolle und signalübertragung über die serielle schnittstelle selber hinbasteln?
Naja Protokoll würde ich nicht unbedingt dazu sagen ;-)
Aus der Anleitung:
Bis zu 10 Servos können bequem über einen angeschlossenen Controller oder PC angesteuert werden.
Die Ansteuerung erfolgt über eine einzige RS232 Leitung mit 9600 Baud (TTL-Pegel).
Die Ansteuerung ist einfach. Sie lehnt sich an den schon von Fabian Greif entwickelten Servocontroller RNKC10 an.
Die Befehlssequenz die per RS232 übertragen werden muß, besteht aus 4 Bytes:

1. Byte 1 und Byte 2: Sind immer "#s" (also Dezimal 35 und 83)
3. Byte: Servonummer (1 bis 10)
4. Byte: Servoposition 1 bis 255 (nicht 0)



gitb es da irgendwelche konfortablen bibliotheken oder plug ins, für die kommunikation mir diesem RS1?
und: kann ich auh eine c-control (plus) anstelle der RS1 verwenden. ist die schnell genug um PWM-signale von ca 50Hz zu generieren?

Sorry aber von C++ habe ich keine Ahnung. Aber das Senden oben genannter Zeichen über die serielle Schnittstelle sollte doch
einfach so aus Deinem Programm heraus möglich sein.

Ob die C-Control schnell genug ist kann ich mangels einer solchen auch nicht mit Bestimmtheit sagen, aber ein bis zwei PWM Signale
mit dieser Frequenz sollte sie doch noch hinbekommen.
Die Fahrtenregler sind bei der Qualität des eingehenden Signals nicht so empfindlich, es können ja auch die unterschiedlichsten
Empfänger von den verschiedensten Herstellern daran angeschlossen werden.

Allerdings würde ich Dir bei einem Preis von ca. 6-7 Euro doch eher zu einem seperaten Servo Kontroller raten.
Die C-Controll kannst Du dann für andere Aufgaben benutzen.
Du könntest mit der C-Controll aber auch den Servo Kontroller ansteuern
und überlegst Dir für die Verbindung PC -> C-Controll dann ein eigenes Protokoll.

Gruß
m.artmann