Tach zusammen, neulich hat mich der Rappel gepackt und unter dem altruistischen Vorwand, etwas für meinen zweijährigen Sohn anzuschaffen, kam eine Flysky-Fernbedienung ins Haus. Einen Fischertechnik-Kasten hatte ich noch rumstehen, schwupps ein Gefährt mit zwei Motoren gebaut, Empfänger etc. drauf... ja Mist, die Motoren muss man ja ansteuern, das geht mit Servo nicht direkt. Also hab ich den ATTiny2313 zu einem dualen Motorcontroller programmiert, mit 2x MAX628 als H-Brücke und an beiden Motoren je zwei selbstgebaute Kupferdrahtspulen (d=1mm, D=8mm, n=15) und ein 100nF-Kondensator zum Entstören. (Interessensfrage: Weiss jemand, ob die Fischertechnik-Motoren vielleicht intern schon entstört sind?) Zwei Servo-Ausgänge des Receivers (RX = FS-iA6b) gehen mit dem Signal-Eingang an die INT0- und INT1-Eingänge des AVR, intern wird das Ganze von Pulsdauer 1ms..2ms umgerechnet auf PWM-Duty 0-100% für den Timer0 (8 Bit) und zusätzlich werden die Kanäle gemixt, so dass ein Kettenfahrzeug gesteuert werden kann (d.h. rechts lenken heisst: linker Motor Vollgas voraus, rechter Motor Vollgas zurück). Soweit, so gut, das Mixen könnte die Fernsteuerung auch intern, dafür ist sie schlau genug. Ich hatte den Code aber schon rumliegen. Klappt prima - invertierte Fast PWM zusammen mit dem invertierten Eingang vom MAX628. Ein weiterer Eingang wird je nach Richtung auf 1 oder 0 geschaltet und steuert so, ob vorwärts oder rückwärts gefahren wird. Ein Problem kriege ich da, wo ich das Signal vom RX abgreifen will: Wie kommen die Impulse aus dem Gerätchen? Jeder der sechs Servokanäle hat seinen 20ms-Takt, klar. Fangen alle sechs Impulse für den jeweiligen Servo gleichzeitig an? Kommen sie nacheinander? Hören sie gleichzeitig auf? (OK, letzteres wohl kaum...) Da spielt ja eventuell auch die maximale Leistung des Empfängers eine Rolle, wenn die (analogen) Servos ihre Spannung jeweils gleichzeitig mit ihrem Steuerungsimpuls beziehen: Ziehen sie alle gleichzeitig oder wird das multiplexed? Wenn sie gleichzeitig anfangen, kann ich auf dem einen Kanal auf "high" warten und bei beiden separat die Endzeit abfangen. Wenn sie nacheinander kommen, muss ich das anders programmieren. Aktuell arbeite ich mit dem Worst Case, also ohne Interrupts und mit Endlosschleife "Hab ich schon den Sprung in Kanal 1 auf High, 1 auf Low, 2 auf High, 2 auf Low - OK; JETZT kann ich die Rechnung starten". Ein Oszi steht leider nicht rum. Weiss jemand, ob es da sowas wie einen Standard gibt? Ich finde im Netz wirklich gar nichts dazu! Danke schonmal, Simon
Simon schrieb: > (Interessensfrage: Weiss jemand, ob die > Fischertechnik-Motoren vielleicht intern schon entstört sind?) Meine Sammlung an FT-Motoren ist schon etwas älter, aber sowohl die kleinen als auch die grossen Motoren sind hier alle nicht entstört. Simon schrieb: > Kommen sie nacheinander? Sie kommen nacheinander. Der Dekoder im RC Empfänger ist im Allgemeinen ein Schieberegister. Ich will nicht ausschliessen, das es davon Abweichungen gibt, aber der Regelfall ist ein Nacheinander.
:
Bearbeitet durch User
Wow, das ging ja schnell! Vielen Dank! Da meine Motoren auch etwas bis sehr viel älter sind, denke ich, das wird bei meinen genauso sein... super! Wo kommt das Schieberegister ins Spiel? Kannst du näher erklären, ob es dann zwischen den Pulsen immer gleiche Abstände gibt oder ob jeder Servo seinen "Slot" hat? Fall 1: Servo 1 für 1.5ms an, dann Pause 0.5ms, dann Servo 2 für 1.8ms an, dann 0.5ms Pause (alle mit Puffer hintereinander) Fall 2: Servo 1 Puls in einem fixen Zeitraum zwischen 0ms und 3ms, Servo 2 Puls zwischen 3ms und 6ms etc. (Start der Pulse mit fixem Abstand) Viele Grüsse, Simon
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.