Gast
#5248969
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