Gast
#3325081
Guten Abend, ich habe mich heute zum ersten mal mit den PWM funktionen der Timer/counter und mit der ADC Wandlung beschäftigt. Dazu habe ich einen kleinen Servotester gebaut der an Pin40 (PA0 bzw. ADC0) meines ATmega 32 eine Analoge Spannung am Schleifer eines 10k Potis abgreift. Das Poti ist mit 10k gegen masse geschalten. Sodass der schleifer nicht auf masse liegt. Der letzte Freie Pin liegt über 1k auf +5V um nicht ganz auf die Versorgungs- und Referenzspannung zu kommen. Als Referenz verwende ich AREF auf +5V(ADMUX bit 7 und 6 auf 0). Den nun Digitalisierten Wert nehme ich als Vorgabe für ti (also OCR1A). Das funktioniert auch alles Wunderbar. Ich habe meine 20ms Periodendauer nur die Impulsdauer läuft von knapp 500µs bis knapp 1000µs. So, nun habe ich mir durch sehr primitive weise geholfen und den Wert ADCW einfach mit 2 Multipliziert. So komme ich auf 0,980ms bis 1,940ms laut meinem Oszi. Das Servo lässt sich steuern, sieht gut aus, nur die Unschöne Lösung in meinem Programm stört mich. Prinzipiell eine frage, muss ich in der Software, oder der Hardware nach der Lösung des Problems suchen? Hier noch mein Quelltext:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
Danke schonmal im Vorraus. Grüße Jens