Willkommen Gast. Bitte einloggen oder registrieren.
Juli 9, 2025, 21:25:11
Übersicht Ungelesene Beitr�ge auflisten Hilfe Suche Spiele Mitgliederkarte Kalender Login Registrieren

Schnellsuche
+  MODDING-FAQ FORUM
|-+  Alles rund ums Modden
| |-+  Elektronik, Elektrik (Moderator: TzA)
| | |-+  Atmel und 4 PWMs
  « vorheriges nächstes »
0 Mitglieder und 0 Gäste betrachten dieses Thema.
Seiten: [1] 2 3 4 nach unten Drucken
Autor Thema: Atmel und 4 PWMs  (Gelesen 27321 mal)
philipp.ni
Dremelfreund

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 100


Ich liebe dieses Forum!


Profil anzeigen WWW
Atmel und 4 PWMs
« am: Februar 7, 2005, 12:26:10 »

hoi.
ich will mir ne lüftersteuerung basierend auf nem atmega16 bauen. dabei sollen 4 kanäle per PWM angesteuert werden. der chip hat diese 4 PWMs, aber ich werd aus den Datenblättern net schlau (google gibt garnichts her), wie ich die richtig einstell. ich verwende assembler, darum bringen mir die topics hier auch nix, da die alle in basic gemacht sind. Hat da jemand ne ahnung wie ich die ansteuer, oder ist es besser das irgentwie extern zu realisieren?!

cu philipp
Gespeichert
Spunky
Case-Konstrukteur

*

Karma: +9/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 715



Profil anzeigen
Re: Atmel und 4 PWMs
« Antwort #1 am: Februar 7, 2005, 16:27:49 »

Die PWM aus dem AVR kannst du schlecht für Lüftersteuerungen verwenden. Sie liefern zu hohe Frequenzen. Eine PWM für Lüfter sollte etwa 50 bis 100Hz haben.
Du wirst also die PWM selber per Programm und Timer bauen müssen.
Gespeichert

„Liebe Nachwelt! Wenn Ihr nicht gerechter, friedlicher und überhaupt vernünftiger sein werdet als wir gewesen sind, dann soll Euch der Teufel holen. Diesen frommen Wunsch mit aller Hochachtung geäußert habend bin ich Euer ehemaliger, gezeichnet: Albert Einstein.“
--->>> AFAIK? IMHO? HTH? Guckst du hier -> Chat-Akronyme / -Abkürzungen <<<---
philipp.ni
Dremelfreund

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 100


Ich liebe dieses Forum!


Profil anzeigen WWW
Re: Atmel und 4 PWMs
« Antwort #2 am: Februar 7, 2005, 18:47:33 »

ok, thx. aber wie stell ich die timer ein? du hast das doch schonmal gemacht, oder? haste nen beispiel-code für mich? Roll Eyes ich find einfach nix dazu Sad
die sekündliche abfrage der temperatursensoren werde ich wohl mit nem 555er und normalem interrupt machen Wink

edit: auserdem hat der mega16 - wie ich gerade bemerkt habe nur 3 timer (2x8bit 1x16bit). der einzige der 4 timer hätte wäre der 162er und der ist a) 2€ teurer und b) hat er keine ad-wandler die ich ja zur temperaturbestimmung brauche...
« Letzte Änderung: Februar 7, 2005, 19:01:18 von philipp.ni » Gespeichert
OlafSt
Global Moderator

*

Karma: +13/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 2138


Master of STLCD and LISA III


Profil anzeigen
Re: Atmel und 4 PWMs
« Antwort #3 am: Februar 7, 2005, 19:47:37 »

Für eine PWM in Software braucht man nur einen Timer.

Nur als Beispiel, wie ich ein inzwischen fast abgeschlossenes Projekt aufgebaut habe:

1 Timer, 8 Bit. Mehr nicht.

In diesem Timer wird:
- Ein 1/100-Sekunden-Clocktick generiert
- Ein 1-Sekunden-Tick generiert
- 5 PWM-Kanäle erzeugt (200 Steps maximal)

Das ganze läuft auf nem Mega128 @ 14.7456MHz. Und ich hab nebenbei noch Zeit, um
- 3 Taster abzufragen
- 11 LED anzusteuern
- Fernsteuerung und Near-Realtime-Debugging per Serielle

zu realisieren. Zeit für ne LCD-Ausgabe wäre sicherlich auch noch Massenhaft vorhanden.

Du siehst: Alles eine Frage des Konzepts.
Gespeichert

Erstens: Lies was da steht. Zweitens: Denk drüber nach. Drittens: Dann erst fragen
philipp.ni
Dremelfreund

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 100


Ich liebe dieses Forum!


Profil anzeigen WWW
Re: Atmel und 4 PWMs
« Antwort #4 am: Februar 7, 2005, 20:50:35 »

damit wir uns richtig verstehen:
also muss ich den timer so einstellen, dass er alle 1/100 sek. jumpt und dann dort vllt. anhand eines runterzählenden registers die pwms setzt?! und dann nochmal die frage, WIE setze ich den timer?
Gespeichert
OlafSt
Global Moderator

*

Karma: +13/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 2138


Master of STLCD and LISA III


Profil anzeigen
Re: Atmel und 4 PWMs
« Antwort #5 am: Februar 8, 2005, 08:55:40 »

So einfach ist es nun auch wieder nicht  Grin

Mein Timer läuft mit 20kHz, damit ich eine halbwegs brauchbare PWM erzeugen kann. Warum das so ist, erkennt man nach den ersten Versuchen selbst.

Zum Thema Timer einstellen rate ich zu einem Blick in das Datenblatt, es wird während des Projektes ohnehin dein bester Freund werden.
Gespeichert

Erstens: Lies was da steht. Zweitens: Denk drüber nach. Drittens: Dann erst fragen
Freak5
Dremelfreund

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 139



Profil anzeigen WWW
Re: Atmel und 4 PWMs
« Antwort #6 am: Februar 8, 2005, 20:17:56 »

Kann man die Spannung aus dem PWM nicht mit einer Spule soweit glätten, dass immer eine Grundspannung vorhanden ist, mit der der Lüfter auch seine Elektronik laufen lassen kann? Huh
Gespeichert

b0nze
Gast


E-Mail
Re: Atmel und 4 PWMs
« Antwort #7 am: Februar 8, 2005, 20:36:02 »

Du könntest einfach nen Kondi hinten ran hauen, wobei du dann aber ne normale Spannung hättest.

Kommt ganz drauf an, warum du die PWM überhaupt einsetzt (Keine Verluste/ Niedrige Drehzahlen).

Zur PWM-Frequenz (bei Software):
CPU-Takt / (TimerTakt*Auflösung)

b0nze
Gespeichert
philipp.ni
Dremelfreund

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 100


Ich liebe dieses Forum!


Profil anzeigen WWW
Re: Atmel und 4 PWMs
« Antwort #8 am: Februar 8, 2005, 23:07:17 »

die pwm setze ich ein um die lüfter zu steuern Wink wobei mir das steuern wichtiger ist als die verluste... also 5-10% wären mir am ende au egal. ich sollte wohl noch sagen, dass das mein erstes projekt mit mikrocontrolern ist, und ich daher auch noch recht unbeholfen mit den datenblättern bin - mein englisch ist auch nicht das beste (9. Klasse gymnasium eben).
das mit dem kondi bringt mich auf eine idee - ich könnte (um eine digitale frequenz zu kriegen) einfach nen 555er auf nen interrupt legen - dann hab ich meine frequenz und das problem mit den timern hab ich auch nicht mehr. wie ich das aus den datenblättern braucht man ja eh nen externen zeitgeber... die sache mit dem register runterzählen gefällt mir von mal zu mal besser - bei 50% Fan hab ich dann bei 20khz frequenz 100steps an und danach 100steps aus.  damit ist auch ganz einfach rechenbar (ich hab das einstellen in 10%-schritten geplant) Smiley

wenn ihr nen guten grund dagegen wisst bin ich natürlich immer offen Cheesy

thx und cu philipp
Gespeichert
b0nze
Gast


E-Mail
Re: Atmel und 4 PWMs
« Antwort #9 am: Februar 9, 2005, 09:10:07 »

wie ich das aus den datenblättern braucht man ja eh nen externen zeitgeber...

Zeitgeber ist nen schlechtes Wort Smiley Du brauchst ne Taktquelle, mit der der Mikrocontroller arbeitet, einen Quarz mit xMhz. Das braucht man aber immer mit nem MC, höchstens du hast einen der AVR-Mega-Typen oder Tiny, die haben einen eingebauten RC-Oszillator.
Der Timer selbst ist einfach nen Ding, dass dir alle xxxTakte nen Interrupt auslöst.

Für ne SoftwarePWM hast du einen Zähler. Der Zähler wird in jedem Interrupt heruntergezählt. Dann hast du deine Werte der Kanäle.
Ich machs so:
Pins auf 0 und den Zähler auf das Max laden (PWM-Auflösung)
Bei jeder ISR (Interrupt Service Routine) den Zähler eins runterzählen und schauen, ob einer der Werte gleich ist wie der Zähler, wenn ja, dann setze den Pin.
... gleiche gleiche gleiche gleiche
bis du bei Zähler=0 bist, dann wieder oben anfangen.

Alternativ könnteste nen DA Wandler nehmen... TDA8444 (8 Kanäle).

Um die Lüfter ansteuern zu können brauchste aber noch ne Endstufe. Entweder machste ne analoge Spannung aus der PWM und modifizierst etwas ne NoDrop oder direkt an nen MosFet (gut sind High-Side-Switches, dazu kann Olaf berichten)

b0nze
Gespeichert
philipp.ni
Dremelfreund

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 100


Ich liebe dieses Forum!


Profil anzeigen WWW
Re: Atmel und 4 PWMs
« Antwort #10 am: Februar 9, 2005, 11:24:16 »

ich verwende nen mega16, werde aber trotzdem n externes Quarz verwenden.

Ich hab jetzt was sehr gutes über timer timer gefunden. ich nehm nen takt von 16MHz und dann erstmal nen prescaler von 8 (TCCR0 auf 0x02) dann müssen es genau 100 schritte bis zum interrupt sein. nur, wie sag ich dem timer wann der counter overflowed ist? Einfach TCNT0 auf 0x64 (dez.: 100) setzen? zu der Endstufe: vertragen die lüfter keine PWM oder wie? ich dachte da einfach an nen transistor, der die 5V vom µC in die 12V für den lüfter umwandelt.
« Letzte Änderung: Februar 9, 2005, 11:27:54 von philipp.ni » Gespeichert
b0nze
Gast


E-Mail
Re: Atmel und 4 PWMs
« Antwort #11 am: Februar 9, 2005, 12:27:14 »

Such dir erstmal ne Frequenz aus, mit der der Timer anspringen soll. Besser noch Takte.
Du musst ja zwischendrin noch Taster etc. abfragen. Da kommt natürlich die Frage auf, ob du mit Assembler oder C programmierst. Olaf und ich haben in Assembler programmiert und das ist um Massen schneller als C in solchen Sachen. Die ISR muss möglichst kurz sein und das andre sollte natürlich auch nicht lange dauern.

Der Timer hat einmal die Überlauf (Overflow) und einmal die Compare Match Funktion. Für das würde ich der Einfachheitshalber einfach den Compare Match nehmen (CTC = Clear Timer on Compare Match).
Da schreibste nen Wert ins OC-Register (OCR0, OCR1AH:L etc.) und dann den richtigen Modus in den Control-Registern einstelllen und dann zählt der Timer mit dem Prescaler immer bis zu dem Wert hoch und löst den IRQ aus und resettet sich.
Mit Overflow müsstest du halt immer in jeder ISR einen Preload machen, und zwar bei den 8bittern 256-[gewünschter Wert], damit er nur noch x-Schritte hochzählen muss.

wenn du ne 10%-Auflösung hast, dann sind das ja 10 Schritte. Ich denke 20 wären OK.
16Mhz / 8 = 2Mhz,
2Mhz / 100Hz = 20kHz,
20kHz / 20 Schritte = 1000;

Für nen 8-Bit-Timer brauchste also nen höheren Prescaler.

Für die Ansteuerung kannste auch ne PWM nehmen. Da sind solche HighSideSwitches (teure MosFets) sehr gut.
Olaf beim Werkeln

b0nze
Gespeichert
philipp.ni
Dremelfreund

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 100


Ich liebe dieses Forum!


Profil anzeigen WWW
Re: Atmel und 4 PWMs
« Antwort #12 am: Februar 9, 2005, 12:58:34 »

ich programmier wie oben schon erwähnt in assembler.

was sind die 1000?
ich dachte das so:
16Mhz / 8 = 2Mhz,
2Mhz / 100 = 20khz,
20khz / 200 Schritte = 100

d.h. ich nehm die gespeicherte %-zahl mal 2 dann hab ich die possition ab der der port auf 1 geschalten werden muss. dann zähl ich bei jedem interrupt den software-counter runter ("dec fancount") und wenn fancount == fanswitch schalt ich auf 1.
damit hab ich theoretisch ne auflößung von 0.5% aber die frage ist ja immer wie ichs dem user präsentier. wenn ich bei jedem erhöhen +10 und bei jedem erniedrigen -10 rechne sinds wieder 5% schritte. ich denke, das ist die einfachste möglichkeit.
wenn ich nen prescaler von 256 nehm darf ich bei 10% Fan bei 25.6 umschalten Wink
Gespeichert
b0nze
Gast


E-Mail
Re: Atmel und 4 PWMs
« Antwort #13 am: Februar 9, 2005, 13:05:51 »

Warum willst du unbedingt auf 0,5%? (5 ProMille Grin)
Olaf hat halt sein Lämpchen und da hatter halt 200 genommen. Aber nen Lüfter da denke ich sind 25-30 Maximal drin...

Wenn man dann mit 20 statt 200 rechnet, ist der Wert, der in das OC-Register geschrieben wird nämlich zu groß für nen 8-bit.

Aber is nur ne Kleinigkeit.

b0nze
Gespeichert
philipp.ni
Dremelfreund

*

Karma: +0/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 100


Ich liebe dieses Forum!


Profil anzeigen WWW
Re: Atmel und 4 PWMs
« Antwort #14 am: Februar 9, 2005, 13:30:52 »

wie gesagt ist es mit nem prescaler von 8 später leichter zu rechnen als mit 256 oder 1024 o.ä.  was spricht denn gegen 200?

noch was: sind die 5V vom pc-netzteil stabiel genug, oder soll ich 12V und nen 7805er nehmen?
Gespeichert
Seiten: [1] 2 3 4 nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Einloggen mit Benutzername, Passwort und Sitzungslänge      

Powered by MySQL Powered by PHP
eXTReMe Tracker
Seite erstellt in 0.018 Sekunden mit 17 Zugriffen.
© 2001-2022 MODDING-FAQ FORUM | SMF
Alle Rechte vorbehalten.
Prüfe XHTML 1.0! Prüfe CSS!