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.
Hallo,
ich habe folgendes Problem.
Ich benötige eine Steuerbaren Analogausgang (0-5V), dazu will ich einen mC nutzen.
Habe mir überlegt einfach eine PWM zu erzeugen so das ich über das High/Low Verhältnis den Mittelwert verändern kann.
Jetzt stellt sich mir nur die Frage wie ich das Softwareseitig umsetzen kann ?
Ich brauche ein Programm dem ich über eine feste Periodendauer das Verhältnis zwischen Ein und aus vorgeben kann.
Das ganze einfach in der Hauptschleife laufen lassen und mit "wait" Zeiten Arbeiten hat war leider viel zu ungenau und mit Interrupts kenn ich mich leider zu wenig aus.
Hat jemand einen Lösungsansatz für mich?
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