mach das ganze über die timer da kannst du hardwaretechnisch eine pwm erzeugen.
wenn du es ganz auf die spitze treiben willst könntest du das nach dem glätten nochmal mit dem AD-Wandler einlesen und regeln.
Werbung
mach das ganze über die timer da kannst du hardwaretechnisch eine pwm erzeugen.
wenn du es ganz auf die spitze treiben willst könntest du das nach dem glätten nochmal mit dem AD-Wandler einlesen und regeln.
Der miniatur Quadrocopter: www.nanoquad.de
Ne, geregelt muss es nicht sein.
Ich muss doch im Grunde zwei Timmer haben, und bei sagen wir einmal einer Periodendauer von 10ms
Je nach gewünschter Spannung:
t1 = 10*(1-x) t2 = 10*x
Wenn ich x jetzt zwischen 0 und 1 verändere kann ich prozentual die Spannung einstellen.
x = 0 0V
x = 0.5 2.5V
x = 1 5V
Aber ich muss ja irgendwie gewährleisten, dass neben der Modulation auch noch weiterhin der Sollwert eingelesen wird ohne, dass es zu Verzögerungen kommt!?
lese mal im datenblatt was dort zu den timern steht.
der m328p generiert mit einem timer ein PWM signal und das von selbst. du musst nur, bei einem 8bit timer, einen wert von 0 - 255 vorgeben.
daneben hast du noch alle zeit der welt was anderes zu machen
Der miniatur Quadrocopter: www.nanoquad.de
Ich würd es auch über die Timer und Hardware PWM machen.
Dazu ist noch nicht mal ein Interrupt nötig, weil die PWM Generierung rein in Hardware läuft.
Bei den 8 Bit Timern hast du ne 8 Bit PWM ( 256 Stufen ) mit dem 16Bit Timer ( Timer 1 ) gibts 65536 Stufen und 2 PWM Ausgänge OCR1A, OCR1B.
Einzig die PWM Frequenz ist nicht stufenlos wählbar, sondern abhängig von der Taktfrequenz des Controllers, dem Prescaler und der Eingestellten Auflösung. Denn die PWM des Timer1 kann man mit verschiedenen Auflösungen laufen lassen.
Was noch zu beachten wäre ist, das der Controller keine großen Lasten treiben sollte. LED's oder Siebensegmentanzeigen direkt vom Controller zu speisen ist keine gute Idee, wenn man die PWM's benutzen will. Man kriegt dann die Ausgangsspannung nicht mehr auf 0V runter.
Sollen solche Lasten betrieben werden müssen den Controllerports Treiber nachgeschaltet werden.
Ich habe die folgende Funktion gefunden:
Jedoch kann ich diese Funktion nur nutzen wenn ich auch den Andruino-Programmer verwende oder sehe ich das falsch ?PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the analogWrite() function.
Habe nur noch nie mir mit diesem gearbeitet, gibt es große Unterschiede ?
Hat jemand eine Programmbeispiel ? Eventuell sogar für Bascom ?
Also ich habe jetzt das Tool von Arduino benutzt und es mit der analogWrite() - Funktion gelöst.
Funktioniert super![]()
Danke für eure Hilfe.
Lesezeichen