Hallo Alle,
nochmal danke für eure Hilfen. Das Servoprogramm läuft bei der Erprobung einwandfrei mit den zehn Servos (Anm.: teils getestet mit realen Servos, teils mit Oszilloskop - es fehlt seit Tagen eine Hardwarelieferung). Die aktuell erzielbare Auflösung ist hoch und ...... im aktuell geschalteten Fall sieht es so aus, dass eine Periodenzeit von 22 ms im Vergleich mit einer Periode von 20 ms bei gleicher Rampenzeit die gleiche Servostellung bewirkt. Geprüft einfach durch Augenschein mit Peilung über den Servohebel gegen markierten Untergrund.
Mal ein paar Eckpunkte:
Timer1 auf 312,5 kHz (20 MHz mit Prescaler 64)
ISR (TIMER1_COMPA_vect) durch OCR1A = 800 alle 2,56 ms. Ein umlaufender Servopointer {1 bis 10} setzt den entsprechenden Servopin.
ISR (TIMER1_COMPB_vect) wird in TC1_CMPA mit OCR1B gestartet und erzeugt die Rampe, der Servopointer dient zum Löschen der Rampe.
Die zuständigen Rampenwerte liegen in einem Feld Srv_tm [12] (*ggg* ich weiß, das sind zu viele Elemente, aber ich nehme der Übersichtlichkeit halber nur die Elemente ~[1] bis ~[10] für Servo1 bis Servo10 und habe das zwölfte für "sonstige" Zwecke" frei).
Der Schwenkbereich liegt bei (m)einem Billigservo bei fast 180° - mit OCR1B-Werten zwischen 120 und 780. Für die "allgemeine" Anwendung wirds auf 200 bis 700 beschränkt. Das entspricht einer theoretischen Auflösung von weniger als einem Drittel Grad (rund 17 Gradminuten).
Nun habe ich ja ein reproduzierbar getaktetes/taktbares Modul, da kann ich mich demnächst damit spielen. Die ersten Ergebnisse mit 8 oder zehn Servos und entsprechend acht oder zehn TC1_CMPA-Schleifen sehen schon gut aus. Das "... demnächst damit spielen ..." wird etwas dauern, weil ich ziemlich hinter meinem Zeitplan herhinke.
Ciao sagt der JoeamBerg
Trotzdem habe ich eine neue Platine gebaut (bauen müssen) - einige Funktionen fehlten mir. Ich glaube Projekte mit dem Flag "erledigt" halten sich manchmal besser als andere . . .... "... demnächst damit spielen ..." wird etwas dauern, ... ziemlich hinter meinem Zeitplan ...
......
Kurz ein paar Details zum Bild :
1 Energieeinspeisung VBATT 8 V .. 20 V mit Verpolungschutz
die grüne LED zeigt Spannung > ca. 2V auf Vcc
SpannungsIC ist ein 78S05 mit etwas ELKO und KerKo
2 PORTB mit GND (9) und Vcc (10)
3 ISP, Vcc rechts oben über Jumper wählbar
4 2x2 – GND (rechts) und Vcc (links)
5 UART0 – nur RX, GND, TX
6 ISP, links daneben Pegelanzeige mit LED, leuchtet wenn GND an /RES
7 UART1 wie 5
8 PORTA0 .. ~A3, dazu GND und Vcc
9 Energieeinspeisung Servos Vs
10 Jumper zur Strommessung von 9 zu Servosteckern (15)
zur Verbindung von 9 zu den Servosteckern MUSS ein Jumper rechts
sitzen, Jumper links verbindet die Controllerversorgung
nach dem 78S05 mit Servo-Vcc
11 Heartbeat (gnLED, Timer2, 1 Hz) und Info-LED rt
12 Resettaster
13 78S05
14 2 Taster zur freien Verfügung, auch interruptfähig PD6, PD7
15 10 Servostecker, von links: SIG, Vs, GND
16 Spannungsanzeige > 2V auf Vs
Die internen Leitungen sind meist Kupferlackdraht mit „lötbarer“ Beschichtung. Der Quarz und die 100nF-Abblockungen liegen unter dem Controller, L 10µH für AVcc liegt mit anderem SMD-Hühnerfutter – z.B. 1k für LED bei (1) – auf der Lötseite. Leer – ohne Controller – Stromaufnahme mit LED (1) und gnLED (für Heartbeat) auf (4) 20,7 mA, ohne „Heartbeat“ etwas über 10 mA. Mit m1284 ungeflasht ca. 35 mA, Anfahr-Anzeige auf dem DMM >> 70 mA.
Nach Setzen der Fuses und disablen der JTAGEN-Fuses wurden ca. 48 mA gezogen.
Nun sieht die Hardware (für mich) praxisgerecht aus - und mit den zwei, drei Details, die eine breite Spielwiese bieten (na ja, der Baustil l heißt eher Plattenbau und nicht Platinenherstellung. Rein vom Stil und der Fertigungstechnologie her).
Ciao sagt der JoeamBerg
Lesezeichen