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?
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.