Forum: Mikrocontroller und Digitale Elektronik Programmierbare Gleichspannungsquelle mit AVR und Bascom


von FrankWeller (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Christian T. (shuzz)


Lesenswert?

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

von FrankWeller (Gast)


Lesenswert?

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

von Weingut P. (weinbauer)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@  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

von Vlad T. (vlad_tepesch)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@  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

von Vlad T. (vlad_tepesch)


Lesenswert?

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.

von FrankWeller (Gast)


Lesenswert?

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?

von Zeitgast (Gast)


Lesenswert?

Hallo!

Steht doch in der Hilfe!

Config Timer1 = Pwm , Pwm = 8(9)(10) ,......

MfG

von Karl H. (kbuchegg)


Lesenswert?

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.

von FrankWeller (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.