PWM Frage

  • 1
  • 2
  • 3
  • 4
  • Page 1 of 4
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

PWM Frage

 · 
Posted: 04.04.2015 - 19:20  ·  #1
Hallo,
es haben ja einige hier im Forum ja mitbekommen das ich ein StepDown Wandler gebaut habe, mit Harald´s Ansteuerung funzt der jetzt auch super.

Da ich ihn aber selber über eine repeat until (taste) starte und stope, wäre meine überlegung ob ich ein PWM Signal dafür nehme, so kann das Programm weiter Arbeiten (zb. ADC Messung) u.v.m.

Auf meiner Testplatine ist ein AtMega8 mit 14745600 Mhz

Nur habe ich überhaupt keine Ahnung wie ich was mit einen PWM anfange, wie ich den Pin OC1A starte oder stope. Wie ich 20uS Taktsignal einstelle.

Im mom habe ich eine Led am OC1A Ausgang angelötet.

Import PWMport1A

Define
PWMpresc1 = 1024; {prescaler timer1}
PWMres1 = 10; {resolution timer1}
PWMmode1 = slow, positive; {optional define}


Für Hilfe wäre ich sehr Dankbar.


Gruß Frank
Harald_K
 
Avatar
 
Subject:

Re: PWM Frage

 · 
Posted: 05.04.2015 - 00:51  ·  #2
jetzt mußt du eigentlich nur noch irgendwo im Programm

pwmport1a := 511;

hinschreiben und es sollte am OC1A ein 50/50-Takt zu sehen sein.

kannst du dann einfach zwischen 0 und 1023 einstellen, von ganz low bis ganz high

bitte drauf achten, die "Münchhausen"-Schaltung funzt nicht mehr wenn du den FET ganz einschalten willst, weil dann der Hilfselko nicht mehr geladen wird.

achja - kann sein daß du den OC1A-Pin noch im DDR auf Ausgang stellen mußt.

ggf. hilft ein Blick ins Datenblatt zum mega8
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

Re: PWM Frage

 · 
Posted: 05.04.2015 - 05:55  ·  #3
Moin Harald,
ich habe gestern abend noch mit pwmport1a := 511; gespielt, man sieht es an der Led.

Aber dazu brauche ich jetzt ein Oszi.
In AVRco unter Simulator kann man das nicht sehen ???

mfg Frank
Harald_K
 
Avatar
 
Subject:

Re: PWM Frage

 · 
Posted: 05.04.2015 - 10:16  ·  #4
jo, da muß der Oszi ran ...

ob der Simulator das hinbekommt - keine Ahnung.

du müßtest aber bei genügend schmaler Einschaltdauer ne Helligkeitsvariation der LED beobachten können.
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: PWM Frage

 · 
Posted: 05.04.2015 - 15:47  ·  #5
Hi Frank,

ich hab das heute mal mit einem Mega644 @ 20 MHz getestet. Die höchste erreichbare Frequenz war bei mir 78 kHz (8-bit-Timer). Ich stell später noch ein paar Bilder ein .... hab meinen Notizzettel in der Werkstatt vergessen.

..... und ein paar Fragen hab ich dann auch noch.

Gruss
Harry
Harald_K
 
Avatar
 
Subject:

Re: PWM Frage

 · 
Posted: 05.04.2015 - 16:37  ·  #6
na logo ... 20000000 / 256 = 78125 - mehr kann nicht kommen bei 8 bit.

bei 14745600 und 10 bis sind das:
14745600 / 1024 = 14400 Hz.
mit nem 1024er Vorteiler dann nochmal 1/1024tel oder 14,... Hz

Schaltfrequenz beim StepDown sollte schonmal über 20kHz liegen, sonst pfeift die Drossel, außerdem braucht man große Drossel und große Elkos
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: PWM Frage

 · 
Posted: 05.04.2015 - 17:17  ·  #7
Hallo Harald,

wieso /256 oder /1024 ? Ok 8 und 10 Bit, aber wieso wird der Takt geteilt ? Woher kommt das ?

Gruss
Harry
Harald_K
 
Avatar
 
Subject:

Re: PWM Frage

 · 
Posted: 05.04.2015 - 19:19  ·  #8
aha - typischer Fall von datasheet-not-read-error 📖

son PWM läuft so:
der Zähler zählt zyklisch von 0 auf den Endwert, der Endwert wird durch die Bit-Auflösung festgesetzt. Beim Erreichen des Endwertes wird der Zähler wieder genullt, der OCx-Ausgang auf 1 gesetzt und alles beginnt von vorne.
Wenn der Zähler beim pwmport1x-Vergleichswert vorbeizählt wird der OC1x-Ausgang genullt. (oder andersrum bei negative)

Für "krumme" Teilungen kann man auch je nach Timer das TCR1-Register oder als Endwert nehmen, dann muß man nur aufpassen, daß der Zähler beim Zählen auch am pwmport1x-Wert vorbeizählen kann, sonst springt der OC1x-Pin nie um.

die andren OC-Pins / Compareregister kann man gleichzeitig auch nutzen, damit kann man je nach Anzahl der Comparestufen auch mehrere verschiedene PWMs erzeugen.

zudem gibts für die Timer noch andere Zählmodi, wo der Timer immer von 0 auf den Endwert rauf und dann wieder auf null runterzählt, damit wirds dann noch langsamer.

Das "slow" im define heißt glaub ich, daß die Vergleichsregister nicht direkt geladen werden, sondern erst beim Nulldurchgang des Zählers ... damit sind PWM-Änderungen synchronisierbar.

näheres wie gesagt im Datenblatt,
  • 1
  • 2
  • 3
  • 4
  • Page 1 of 4
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   135   149 · Page-Gen-Time: 0.027208s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI