Hallo, ich (Hobbybastler) möchte ein paar Messreihen durchführen und bräuchte dafür eine Gleichspannungsquelle, die den Bereich von 0V bis ca. 5V in 0,2V-Schritten durchfahren kann. Da fiel mir direkt mein altes AVR-Brett mit AtMega16 ein. Ich kann allerdings nur in Bascom (halbwegs) programmieren, aber für das Projekt müßte es eigentlich reichen... Dazu ein paar Fragen: 1. Was ist wohl die höhste Auflösung, die man mit dem PWM-Kanal erzeugen kann (20Mhz-Quarz) und gibt es da verschiedene Modi? 2. Wie nah kommt die maximal erzielbare PWM-Spannung der Betriebsspannung (hier +5V)? 3. Wenn ich einen Operationsverstärker als Buffer nachschalten will, reicht dann ein passives RC-Glied (z.B. 10KOhm, 1µF) zur Glättung? Das ganze ist wie gesagt für ein paar provisorische Messungen für den Hobbybereich gedacht! Der Aufwand sollte in jedem Fall vertretbar bleiben... Vielen Dank! Frank
FrankWeller schrieb: > 1. Was ist wohl die höhste Auflösung, die man mit dem PWM-Kanal erzeugen > kann (20Mhz-Quarz) und gibt es da verschiedene Modi? Ja, gibt es. Hardwaremässig wirst du wohl auf Fast-PWM gehen, damit du die höchste mögliche PWM-Frequenz bekommst. Da gibt es dann 8 Bit, 9 Bit und 10 Bit PWM Mit 10 Bit hast du dann immerhin 1024 Abstufungen. Kannst dir ja mal ausrechnen, welche Schritte da herauskommen, wenn du von 0 bis 5V in 1024 Schritten gehen kannst. > 2. Wie nah kommt die maximal erzielbare PWM-Spannung der > Betriebsspannung (hier +5V)? 100% Im schlimmsten Fall kann man nämlich die PWM immer noch abschalten und den Pin ganz einfach auf konstant 0 oder 1 legen. > 3. Wenn ich einen Operationsverstärker als Buffer nachschalten will, > reicht dann ein passives RC-Glied (z.B. 10KOhm, 1µF) zur Glättung? Kommt drauf an welchen Ripple du noch akzeptieren willst.
FrankWeller schrieb: > Hallo, > > ich (Hobbybastler) möchte ein paar Messreihen durchführen und bräuchte > dafür eine Gleichspannungsquelle, die den Bereich von 0V bis ca. 5V in > 0,2V-Schritten durchfahren kann. > Da fiel mir direkt mein altes AVR-Brett mit AtMega16 ein. Ich kann > allerdings nur in Bascom (halbwegs) programmieren, aber für das Projekt > müßte es eigentlich reichen... > > Dazu ein paar Fragen: > > 1. Was ist wohl die höhste Auflösung, die man mit dem PWM-Kanal erzeugen > kann (20Mhz-Quarz) und gibt es da verschiedene Modi? 8 Bit mit x1 Prescaler bei 20MHz macht 20.000.000 / 256 = ca. 78kHz Verschiedene Modi gibt es, z.B. Fast PWM, Phase correct PWM, Phase and frequency correct PWM. Für Details: Siehe Datenblatt. ;) > 2. Wie nah kommt die maximal erzielbare PWM-Spannung der > Betriebsspannung (hier +5V)? 100% (Ausgang bleibt bei maximum einfach auf high) > 3. Wenn ich einen Operationsverstärker als Buffer nachschalten will, > reicht dann ein passives RC-Glied (z.B. 10KOhm, 1µF) zur Glättung? Kann ich Dir nicht 100%ig sagen. Ich könnte mir vorstellen, dass das bei passender Dimensionierung funktioniert. Grüße, Christian Edit: Da war der Moderator schneller... ^^
Hallo, Danke Euch beiden für die schnellen und ausführlichen Antworten!!! Gibt es zur Not auch einen Modus mit mehr als 10 Bit? Viele Grüße PS: man könnte beim passiven RC-Glied den C natürlich weiter vergrößern, aber das bedeutet natürlich auch, dass immer eine gewisse Zeit vergeht, bis der Wert sich der neuen Spannung angepasst hat...
Hardwaremäßig macht er AVR 8-Bitter nicht mehr als 10 Bit PWM und das macht auch Sinn, da die PWM-Frequenz halt mit der Bitzahl abnimmt (Timer Prescaller) Man kann mit kleinen Tricks und Kniffen aber entweder ne Soft-PWM erzeugen, da wird dann aber die Frequenz unterirdisch bei hoher Bitzahl oder man kann auch die verschiedenen Interrupts (Compare und Overflow) nutzen um ne halb-Hardware PWM zu erzeugen. In meiner Anwendung hab ich die mit ca. 15Bit auf 50Hz gedrückt. Bei mir ist das ideal weil träges System und Filter, keine Ahnung ob das auch bei Dir passt.
@ FrankWeller (Gast) >Gibt es zur Not auch einen Modus mit mehr als 10 Bit? Sicher, der AVR kann bis zu 16 Bit PWM in Hardware, siehe LED-Fading. >PS: man könnte beim passiven RC-Glied den C natürlich weiter vergrößern, >aber das bedeutet natürlich auch, dass immer eine gewisse Zeit vergeht, >bis der Wert sich der neuen Spannung angepasst hat... Logisch. Wenn man aber mehrere Tiefpässe hintereinander schaltet, geht das deutlich schneller, siehe PWM. MFG Falk
Falk Brunner schrieb:
> Sicher, der AVR kann bis zu 16 Bit PWM in Hardware,
20Mhz/(2^16) = 305Hz
Ich denke das ist für eine Spannungsquelle viel zu wenig.
für jedes bit, was du wegnimmst verdoppelt sich die Frequenz -> musst
halt einen Kompromiss schließen.
@ Vlad Tepesch (vlad_tepesch) >> Sicher, der AVR kann bis zu 16 Bit PWM in Hardware, >20Mhz/(2^16) = 305Hz >Ich denke das ist für eine Spannungsquelle viel zu wenig. ??? für eine GLEICHspannungsquelle reicht das locker. Ausserdem wollen wir mal die ursprüngliche Anforderung nciht aus den Augen verlieren. "dafür eine Gleichspannungsquelle, die den Bereich von 0V bis ca. 5V in 0,2V-Schritten durchfahren kann." 8 Bit PWM reicht für ein programmierbares Netzteil LOCKER!!!! MFG Falk
Falk Brunner schrieb: > ??? > für eine GLEICHspannungsquelle reicht das locker. Ja genau, Gleichspannung. Meine bedenken sind nur, dass durch die niedrige Frequenz die Spannung nicht richtig geglättet werden kann. > > Ausserdem wollen wir mal die ursprüngliche Anforderung nciht aus den > Augen verlieren. > > "dafür eine Gleichspannungsquelle, die den Bereich von 0V bis ca. 5V in > 0,2V-Schritten durchfahren kann." > > 8 Bit PWM reicht für ein programmierbares Netzteil LOCKER!!!! Ich habe nichts gegenteiliges behauptet. Es stand ja nur die Frage nach einer höheren Auflösung als 10bit im Raum.
Hallo, so, hab mittlerweile mal ein bisschen mit Bascom rumprobiert und bin zu folgendem Programm gekommen (die unwesentlichen Zeilen wurden entfernt): $regfile = "m32def.dat" $crystal = 20000000 $hwstack = 128 $swstack = 128 $framesize = 128 Config Pind.7 = Output Config Timer2 = Pwm , Prescale = 1 , Compare = Clear Enable Timer2 Timer2 = 0 Start Timer2 Ocr2 = 128 End Mit "Orc2 = 128" erhält man an PinD.7 eine Spannung von etwa 2,51V , mit "Orc2 = 255" etwa 5,01V. D.h., momentan arbeitet der PWM-Kanal mit einer 8-Bit-Auflösung. Was mir aber absolut nicht klar ist, ist, wie man es fertigbringt, eine Auflösung von beispielsweise 10 Bit einzustellen (trotz Blick in die Bascom-Hilfe). Weiß jemand, wie man eine höhere Auflösung als 8 Bit einstellt?
Hallo! Steht doch in der Hilfe! Config Timer1 = Pwm , Pwm = 8(9)(10) ,...... MfG
FrankWeller schrieb: > Config Timer2 = Pwm , Prescale = 1 , Compare = Clear > D.h., momentan arbeitet der PWM-Kanal mit einer 8-Bit-Auflösung. > Was mir aber absolut nicht klar ist, ist, wie man es fertigbringt, eine > Auflösung von beispielsweise 10 Bit einzustellen (trotz Blick in die > Bascom-Hilfe). Mit einem 8-Bit Timer wird es auch schwierig werden, ein PWM mit mehr als 8 Bit zu erreichen. -> Die Bascom Hilfe ersaprt einem nicht den Blick ins Datenblatt des Prozessors. Dort holt man sich raus, welche Möglichkeiten der µC hat, in der Bascom Hilfe steht dann wie man sich diese Möglichkeiten in Bascom zunutze macht.
Hallo, Danke für die Antworten! Habe es mittlerweile auch gemerkt und benutze jetzt Timer1.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.