PWM Motor an Atmega 8

Gast #2104548
Lesenswert?

Hi, alle AVR Profis!

Für ein Projekt will ich den Timer1 für PWM nutzen.
PB1 (PWM) eines Atmega8 liegt am Gate eines Mosfet(BUZ11), das einen 
Gleichstrommotor(300 Watt) von 12 Volt auf Masse zieht.
Ich will den Motor nun mit PWM regeln. Er treibt ein POV Globus an. 
Leider habe ich bisher null Erfahrung mit PWM.
Takt=8Mhz

PB1 auf Ausgang:
ldi r16, 0x02
out DDRB, r16


PWM Frequenz auf ca. 8 khz. Ist das bei einem 300Watt DC Motor sinnvoll 
und richtig programmiert?

ldi r16, 1<<WGM12 | 1<<CS12 | 1<<CS10
out TCCR1B, r16

Ich will dass die PWM jetzt erstmal 50/50 high/Low an PB1 legt. Wie kann 
ich das Verhältnis ändern?

Wie kann ich die PWM starten und stoppen?

Ich hoffe, jemand kann mir da weiterhelfen.

Schon mal tausend Dank, ich brech mir hier echt einen ab.

Dirk
#2104558
Lesenswert?

Hallo
Bei einer PWM unterscheidet man zwischen einer invertierten und einer 
nicht invertierten PWM. Der Unterschied liegt darin das bei der 
invertierten PWM der Wert des Registers OCR im Gegensatz zur Pulsbtreite 
steht.
Was nun ein richtiger Wert für ich, kann ich nicht sagen, ich habe 
selber fast keine Erfahrung mit PWMs. Auch zur Schaltung kann ich keine 
Komentar geben.
Das Verhältnis steht im OCR Register.
Im allgemeinen zu 
PWMs:http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM
Die PWM kannts du stoppen, indem du bei einer invertierten PWM das OCR 
auf den höchsten Wert legst. Bei der anderen Methode umgekehrt.
Gruß Jannis
Gast #2105366
Lesenswert?

Danke schon mal für deine Tipps. Habe nun anhand des Tutorials folgenden 
Code geschrieben:
1
;TIMER1   PB.1 auf Ausgang
2
    sbi      DDRB, 1
3
;Hoch=1 runter=0    | 8bit Timer
4
    ldi      r16, 1<<COM1A1 | 1<<WGM10
5
    out      TCCR1A, r16
6
;  Frequenz= 8000000/512/ 8 = 2 Khz     
7
    ldi      r16, 1<<CS11
8
    out      TCCR1B, r16
9
;   Vergleichswert
10
    ldi      r16, 0xFF
11
    out      OCR1AH, r16
12
    ldi      r16, 0x00
13
    out      OCR1AL, r16

Leider bleibt der Motor absolut ruhig. Setze ich PB1 ohne Timer mit sbi 
auf 1 läuft er. Die Schaltung ist also korrekt. Kann mit jemand 
helfen???

Vielen Dank,
Dirk
Gast #2105421
Lesenswert?

Hey Spess
Du bist ein cooler Typ! Genau da war der Fehler.
Hab jetzt ne 00 0F in das Register geschrieben und der Motor läuft. Bin 
richtig froh. Vielen Dank für die schnelle Hilfe!

Viele Grüße,
Dirk
Gast #2106793
Lesenswert?

Hi.

Buz11 hatte ich grade da. Haben ihm einen dicken Kühlkörper verpasst mit 
aktivem Lüfter, hoffe das haut hin. Ich gehe auch nicht auf die 300 
Watt, da der Motor 27000 Umdrehungen kann, ich aber nur 3000 brauche.

Arbeite nun mit einer PWM Frequenz von 2 khz. Da haben wir zwar ein 
wenig Pfeifen, aber dafür wohl einen besseren Wirkungsgrad. (Weniger 
Verlust durch Schaltvorgänge im Mosfet)

Werde mich aber schonmal über Logiklevel Mosfets schlau machen. Danke 
für den Tipp.
Gast #2108422
Lesenswert?

Hi Elektroniker.

Wir haben Doch einige Probleme mit der Leistung und der 
Wärmeentwicklung.
Suche nun ein Logiklevel Mosfet und Treiber Mosfet.

Woran erkenne ich denn ein Logiklevel Mosfet?
Ich suche hier:
http://www.mikrocontroller.net/articles/MOSFET-%C3%9Cbersicht#MOSFET-Treiber

- Am Gate habe ich 5 Volt in PWM
- DC Motor soll mit 12 V laufen
- Das Mosfet muss min. 30 Ampere abkönnen


Vielen vielen Dank,
Dirk
Gast #2108430
Lesenswert?

Einen Logik-Level-FET erkennst du an der benötigten Gate-Source Spannung 
um ihn voll auszusteuern. Du hast vom uC 5 Volt zur Verfügung, also 
musst du einen LL-FET finden der bei 5Volt GS Spannung voll ausstuert. 
Bei 30Amper Typen dürfte das aber schwierig werden.

nimm besser einenen Treiberchip und einen richtig dicken FET.

Beispiele:

Treiberchip: TC4421
FET: sowas wie IRL3103

die Beschaltung des Treibers und Fet findest du im Datenblatt des 
Treibers.
Achja, den Treiber kannst du mit 4.5 bis 18 Volt speisen. Diese Spannung 
liegt dann am Ausgang des Treibers an, wenn du also einen FET mit 12Volt 
GS-Spannung hast, Speise den Treiber mit 12 Volt.

Gruss SoundSo
Gast #2108449
Lesenswert?

Hi Soundso und danke für die schnell Hilfe.

Das FET ist schonmal super.
Als Treiber bräuchte ich einen, der auch bei Conrad zu haben ist. Ist 
die einzige Möglichkeit, da heute noch dran zu kommen.

MCP1407-E/P klingt auch passend, ist aber auch nicht bei conrad zu 
haben.

http://www.conrad.de

Kannst du da mal schauen?
Riesen Danke,
Dirk
Gast #2108487
Lesenswert?

Hallo Dirk,

Die Typen von IR haben meist ein L in der Bezeichnung,
ein universeller, billiger ist z. B. IRLZ34N, leider bei deiner 
Anwendung
schon an der Grenze und daher nicht unbedingt zu empfehlen, aber immer 
noch besser als ein BUZ11.

Grüße

der Elektroniker
Gast #2109961
Lesenswert?

Hi Leute.

Hab nun den BUZ11 gegen ein IRLZ34N getauscht. Leider bleibt der Motor 
ruhig...
Selbst wenn ich 5 Volt ohne OWM ans Gate lege, zuckt er nicht einmal.

Schaltplan ist im Anhang. Sieht jemand einen Fehler?
Habe keinen Mosfet Treiber verbaut. Ist das das Problem?

Vielen Dank und schöne Grüße,
Dirk
Angehängte Dateien:
Gast #2110146
Lesenswert?

Am fehlenden Mosfet Treiber liegts nicht.
Habe ein zweites Netzteil mit 5 Volt an das Gategelegt und langsam bis 
auf 12 Volt aufgedreht. Das Mosfet schaltet einfach nicht durch...

Hab es auch schonmal ausgetauscht. Gleiches Problem...
Pin Belegung hundert mal geprüft.... Ich werd noch verrückt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren