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
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
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
Hi Du konfigurierst eine 8-Bit-PWM (Top=$FF) und setzt den Comparewert auf $FF00. Was soll da passieren? MfG Spess
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
BUZ11 ist nicht die beste Wahl, kein Logiklevel MOSFET, dürfte bei genutzten 300W(25A) zu heiß werden , besser einen Logiklevel MOSFET nehmen, IR hat viele, die bei Reichelt erhältlich sind.
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.
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
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
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
Zur Not könnte ich auch bei Reichelt Express bestellen. Würde dieser Mosfet Treiber zum IRL3103 passen? MCP 1407-E/P :: Single MOSFET Treiber 6 A DIP-8 http://www.reichelt.de/ICs-M-MN-/MCP-1407-E-P/index.html?;ACTION=3;LA=444;GROUP=A217;GROUPID=2914;ARTICLE=90039;START=0;SORT=artnr;OFFSET=16;SID=11TYMST38AAAIAAAYBH1Mabd5d6c7e92ccb9f9def46460ccf33fe
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
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
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.
Problem gelöst, das Bauteil war defekt. Jetzt läufts ^^ Kein treiber IC notwendig. Das Mosfet kann nur 30 Ampere führen. Kann ich zwei davon parallel schalten, um den Maximalstorm zu verdoppeln?
Dirk schrieb: > Das Mosfet kann nur 30 Ampere führen. Kann ich zwei davon parallel > schalten, um den Maximalstorm zu verdoppeln? Ja kannst du, da Schaltbetrieb.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.