Hallo! Ich bin gerade dabei, für 2 Hobbyprojekte LEDs über eine PWM zu modulieren. Hierfür verwende ich momentan den ATtiny 45 und nutze den Hardware-PWM-Mode zur Steuerung des OC1B Pins. Das Programm läuft soweit ohne Probleme, auch am Ausgang des OC1B Pins liegt das gewünschte PWM-Signal an. Da die LEDs zu viel Strom benötigen, steuere ich mit dem Signal vom Mikrocontroller einen MOSFET ( IRLML2502 ). Der Schaltplan liegt im Anhang, wobei die Zweige mit LED2 und LED3 nur zu Testzwecken eingefügt wurden. Mein Ziel ist es, eine PWM mit 1khz zu erreichen, allerdings stoße ich dabei auf ein Problem: (Gemessen wurde die Spannung über der LED) Die ansteigende Flanke, wenn der MOSFET durchschaltet, verläuft wie gewohnt sehr steil. Dagegen weist die fallende Flanke immer das gleiche Verhalten auf. Sie klingt exponentiell in etwa 1ms ab. Das führt dazu, dass -wie im angehängten Bild- ab einer Frequenz von etwa 625Hz die Spannung über der LED nichtmehr auf Null sinkt (mal abgesehen davon, dass die Rechteckform sowieso total hinüber ist). Messe ich den Spannungsabfall über dem Vorwiderstand der LED oder dem MOSFET, so liegt dort ein perfektes Rechtecksignal an, so wie es eigentlich auch bei der LED sein soll. Die langsam fallende Flanke tritt also nur über der LED auf. Zu Testzwecken habe ich noch eine Variante mit einem BC548 Transistor ausprobiert, mit dem gleichen Ergebnis für den Spannungsabfall über der LED (mit 1k und 4,7k Basiswiderstand). Schließe ich dagegen die LED direkt an den Ausgang des Mikrocontrollers an, so messe ich ein ideales Rechtecksignal, ohne die langsam fallende Flanke. Um mir das zu erklären reicht mein Wissen leider nicht aus. Daher poste ich mein Problem mal hier und hoffe, jemand kann mir erklären, warum die fallende Flanke bei der Verwendung von einem MOSFET/Bipolartransistor so langsam abklingt bzw. wie man das lösen/umgehen kann. Danke!
Bastler schrieb: > Pull-down Widerstand an die Basis! Das ist doch schon der Basiswiderstand, wenn der AVR bei der PWM auf LOW/GND zieht. Gruß Oliver
Also die PWM an sich läuft wie gesagt ohne Probleme. Wenn ich mit dem Oszi direkt an den OC1B Pin gehe, messe ich ein ideales Rechtecksignal.
1 | .include "tn45def.inc" |
2 | |
3 | .def temp = r16 |
4 | |
5 | .equ DUTY = 50 ;Tastverhältnis-Zähler (D = 1, DUTY = 100) |
6 | |
7 | .org 0x0000 |
8 | rjmp main ;Reset Handler |
9 | |
10 | main: |
11 | ldi temp, LOW(RAMEND) |
12 | out SPL, temp |
13 | ldi temp, HIGH(RAMEND) |
14 | out SPH, temp |
15 | |
16 | ldi temp, (1<<CS12) | (1<<CS10) |
17 | out TCCR1, temp ;Vorteiler auf 16 |
18 | ldi temp, (1<<PWM1B) | (1<<COM1B1) |
19 | out GTCCR, temp ;PWM an PB4 ein, /OC1B deaktiviert |
20 | |
21 | ldi temp, 100 ;Maximalwert für Dutycycle |
22 | out OCR1C, temp ;OCR1C legt Maximalwert für TCNT1 fest |
23 | ldi temp, DUTY ;D = DUTY/100 |
24 | out OCR1B, temp ;OCR1B legt Comparematch mit TCNT1 fest |
25 | |
26 | ldi temp, 1<<PB4 ;Pin PB4 auf Ausgang |
27 | out DDRB, temp |
28 | ldi temp, 0 ;PortB auf low |
29 | out PortB, temp |
30 | |
31 | loop: rjmp loop |
Edit: Der ATtiny läuft mit 1 Mhz Systemtakt.
Oliver J. schrieb: > Das ist doch schon der Basiswiderstand, wenn der AVR bei der PWM auf > LOW/GND zieht. Ist aber offensichtlich nicht genug. @TO: Wieso muss die PWM so schnell sein, ist doch blos ne LED?
Bastler schrieb: > Ist aber offensichtlich nicht genug. Welchen Basis-Pulldown-Widerstand empfiehlst du denn? Gruß Oliver
Könnte es sein, dass einer der Lowside Treiber im AVR halbkaputt ist? Miss' mal wenn der Pin auf 0 ist, den Widerstand gegen Masse und zum Vergleich den Widerstand gegen Vcc, wenn der Pin auf 1 ist.
Schließe einfach mal parallel zur LED einen 1k-Widerstand an oder messe mit einem niederohmigen Tastkopf oder messe den Spannungsabfall über dem LED-Vorwiderstand (⇒Strom durch die LED) und vergleiche.
Bastler schrieb: > Schau halt mal was du da hast, 5k o. 10k sollten zum Testen gehen. Richtig, es gehen auch 100Ω oder alles dazwischen. Niederohmig ist besser. Ich wollte nur damit sagen, dass es am Messen liegt. Du solltest den Strom messen!
HildeK schrieb: > Richtig, es gehen auch 100Ω oder alles dazwischen. Niederohmig ist > besser. 100 Ohm hinter R2 gegen Masse?
Das war zwar auf den Pull-down bezogen, aber es ist ja auch schon spät.. Sicher kann es auch am Messen liegen. Teste einfach beide Varianten und berichte uns über das Ergebnis ;-)
Im Endeffekt kann ich die PWM auf 100Hz regeln, das ist natürlich kein Problem (der Flankenabfall bleibt trotzdem bestehen). Allerdings will ich u.A. eine Lichtschranke damit bauen, und da eignen sich die 1khz besser. Zudem interessiert es mich brennend, warum bei mir eine PWM im khz Bereich nicht funktioniert, obwohl man recht häufig über solche liest (mit MOSFETS). Rein durch die Auf-/Entladezeit bleibt ja trotz der Strombegrenzung vom Mikrocontroller noch einiges an Spielraum nach oben hinaus. Wegen dem Pulldown-Widerstand: Zwischen Gate und Source bzw. Basis und Emitter muss der Widerstand oder? Das hatte ich schonmal probiert mit 10k und 47k (bzw. auch nur der Basiswiderstand beim BC548 auf 10k/47k), aber dabei hat sich nix geändert beim Spannungsabfall über der LED. Edit: Erstmal durchlesen was grad noch geschrieben wurde ;)
Oliver J. schrieb: > HildeK schrieb: >> Richtig, es gehen auch 100Ω oder alles dazwischen. Niederohmig ist >> besser. > 100 Ohm hinter R2 gegen Masse? Da hab ich wohl ein paar Posts verpasst ;). Ist wiklich schon spät. Gruß Oliver
Oliver J. schrieb: > 100 Ohm hinter R2 gegen Masse? Nein, als Last parallel zur LED + LED-Vorwiderstand. Du sagtest, dass du die Spannung an der LED aufgezeichnet hast. Wenn der Transistor oder FET abschalten, wird die Spannung bei hochohmiger Messung auf Grund von parasitären Kapazitäten nicht in wenigen ns auf Null gehen. Der (Messhilfs-)Widerstand wird dir zeigen, ob es daran liegt. Deshalb auch mein anderer Vorschlag: messe nicht die Spannung über der LED sondern über deren Vorwiderstand. Die zeigt dir den Verlauf des LED-Stroms und der ist schließlich verantwortlich für das Leuchten ...
HildeK schrieb: > Du sagtest, dass du die Spannung an der LED aufgezeichnet hast. Da hast du mich doch glatt mit dem TO verwechselt ;)
Oliver J. schrieb: > Da hast du mich doch glatt mit dem TO verwechselt ;) Oh ja, sorry, aber es wurde doch schon mehrfach erwähnt, wie spät es sei. Das nagt auch an meiner Konzentration.
HildeK schrieb: > Oh ja, sorry, aber es wurde doch schon mehrfach erwähnt, wie spät es > sei. Das nagt auch an meiner Konzentration. Willkommen im Club.
Hi, HildeK ist auf der richtigen Fährte. Wenn abgeschaltet wird, sinkt die Spannung schlagartig auf ca. 2,xV und dann nur noch langsam. Da fliesst dann einfach kein Strom mehr (wie gewünscht) und das weitere langsame Absinken der Spannung ist einfach nur Leckstrom. Also alles ok und normal. Miss mal zum Spaß den Strom mittels Vorwiderstand. Also die Spannung zwischen R4 und der LED gegen GND oder direkt die Spannung über R4. Das wird wieder ein schönes Rechteck sein. Gruß, Norbert
Danke für die Ratschläge und das Aufbleiben bisher ;)! Meine Augen wollen auch langsam nichtmehr, aber ich kann sowieso nicht pennen weil ich dauernd über die Ursache grübel :D Also ich hab gerade ein bisschen ausprobiert: MOSFET+LED1: Wenn ich einen Widerstand (1k) über die LED bzw über LED+Vorwiderstand lege, messe ich meine ideale Rechteckspannung. Ich hab aber mal geschaut, was mein Fototransistor ausgibt, wenn ich ihn an die LED halte: Und siehe da, der zeigt mir die langsam abfallende Flanke an. Wenn ich statt der LED den Vorwiderstand messe, sehe ich auch die Rechteckspannung ohne langsam abfallende Flanke (das gleiche am MOSFET). Nur an der LED ist die langsame Flanke beobachtbar. Direkt angeschlossen+LED3 Ich hab auch nochmal geschaut, was mein Fototransistor sagt, wenn die LED direkt an den Mikrocontroller-Pin angeschlossen ist (hab ich vorm Erstellen des threads nicht gemacht). Obwohl die Messung der Spannung an der LED keine langsam fallende Flanke ergibt, sehe ich sie am Fototransistor. Irgendwie vermute ich, dass es einfach an der LED liegt. Aber dann verstehe ich nicht, warum am Vorwiderstand das Rechtecksignal anliegt, an der LED aber nicht (eigentlich würde das am Vorwiderstand ja heissen, dass der Strom abrupt aufhört zu fliessen. Also müsste ja die LED auch abrupt aufhören zu leuchten, was sie aber nicht tut, wie man am Fototransistor-signal sieht).
Hi, am Fototransistor ist es vermutlich der selbe Effekt. Was hast Du da gemessen und wie ist der verschaltet? Gruß, Norbert
Im Prinzip hab ich an die 9V Quelle nur den Fototransistor mit einem 47k Widerstand in Reihe geschalten und den Spannungsabfall über dem Widerstand gemessen. Bei anderen LEDs ist es der gleiche Effekt, habe gerade mal 4 andere ausprobiert.
Hi, bei 47k ist das Signal natürlich verwaschen am Fototransistor. Das liegt nicht an den Bauteilen. Was soll das denn werden? Gruß, Norbert
Einerseits baue ich eine binäre Uhr, bei der durch Multiplexen über 8 Pins ein 4x4 LED Feld betrieben wird. Angesteuert werden die Zeilen/Spalten durch MOSFETS (wegen dem geringen Spannungsabfall). In dem Fall ist das mit der langsamen Flanke nicht so kritisch, da ich eh nur Wiederholraten von 100Hz benutze. Andererseits baue ich eine Lichtschranke mit 2 ATtinys. Einmal um die LED zu modulieren (ich nehm keinen NE555, weil ich mit dem ATtiny mein Tastverhältnis bequemer einstellen kann). Der Andere ATtiny sitzt in der Empfängereinheit. Das Signal moduliere ich, damit ich an der Empfängereinheit durch einen einfachen Entkoppelkondensator das Gleichsignal vom Umgebungslicht unterdrücken kann, bevor ich das ankommende Signal der LED verstärke. Die 1khz strebe ich deswegen an, um meine Auswerteroutine besser anpassen zu können (legt u.A. auch die Reaktionsgeschwindigkeit fest). Zum Signal am Fototransistor: Zumindest die ansteigende Flanke sah noch sehr scharf aus.
Lukas K. schrieb: > Könnte es sein, dass einer der Lowside Treiber im AVR halbkaputt ist? > Miss' mal wenn der Pin auf 0 ist, den Widerstand gegen Masse und zum > Vergleich den Widerstand gegen Vcc, wenn der Pin auf 1 ist. Wenn der Pin auf 0 ist: Widerstand gegen Masse: 28 Ohm Wenn Pin auf 1 ist: Widerstand gegen Vcc: 25,5 Ohm Die jeweiligen anderen Werte konnte ich nicht messen, also nehme ich mal an, dass sie ein wenig außerhalb des Messbereichs meiner beiden Messgeräte lagen.
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.