Hallo zusammen, ich stehe zum ersten mal vor der Aufgabe (nein keine Hausaufgabe, aus dem Alter bin ich leider schon etwas raus g) PWM verwenden zu müssen bzw. wollen. Mein Sohn hat in seinem Kinderzimmer eine Wolke aus Blau lackiertem Holz in der rund 100 Löcher sind (hab grad nicht nachgezählt aber hab sowas in erinnerung). Dort Steckten bis vor kurzem Lämpchen einer Lichterkette drin, quasi als Sterne. Nachdem die Lichterkette schon eine Weile kaputt ist und wir beim letzten Umzug auch die Lämpchen aus den Löchern entfernt haben, kam mir die Idee dort LEDs einzusetzen und diese auch ein wenig hin und her zu dimmen. Da die Lampe beim Einschlafen meistens an ist (war) sollte das ganze natürlich nicht zu unruhig flackern oder blinken. Bei meinen Überlegungen bin ich auf den ATtiny2313 gestossen der 4 Hardware PWM-Kanäle bietet, d.h. ich würde damit 4 Gruppen von etwa 25 LEDs ansteuern und sanft hin und her faden. Ich habe zwar mit dem tiny2313 schon ein paar Dinge gemacht, aber habe PWM noch nie benutzt. Die Programmiersprache meiner Wahl ist Bascom (bitte keine Diskussionen pro/contra Basic, C, ASM, whatever, ...) und weder die Forensuche, ncoh Google oder die ansonsten sehr gute Bascom Onlinehilfe war hier hilfreich, ich konnte schlicht nichts finden. Hat jemand vielleicht einen Tipp, einen Link oder ein Codesnippet zum Thema Hardware-PWM mit Bascom auf einem ATtiny2313? Danke und Gruß Dominique Görsch PS: Wie würdet ihr die Versorgungsspannung dimensionieren und wie würdet ihr aus den PWM-Ausgängen die LEDs treiben? Ist ja doch schon eine nette Anzahl...
Nunja, er hat jetzt andere Lichtquellen als Alternative. Finde es aber auch nicht schlimm, wenn Kinder lieber bei etwas Licht einschlafen. Kenne das ganze noch von meiner Schwester: bei ihr musste immer eine kleine Lampe im Flur stehen und die Türe einen Spalt offen bleiben. Mein Sohnemann (5) hat lieber die Türe zu, mag dafür aber eben ein bisschen Licht in seinem Zimmer haben (aktuell von einer Benjamin Blümchen-Kinderlampe und einer Lichterkette an der Wand). Aber es geht doch nicht nur um das Einschlaflicht, sondern auch um den Deko-Effekt dieser Wolke, die sein Großvater für ihn mal gemacht hat. Gruß Dominique Görsch
Dim z1 as byte dim z2 as byte dim z3 as byte dim z4 as byte do incr z1 if z1 > 100 then z1=0 toggle port_von_led1 endif incr z2 if z2 > 50 then z2=0 toggle port_von_led2 endif 'usw. für 3 und 4 'hier evtl. bremsen, für langsamere PWM loop die 50 100 ... durch Variablen ersetzen und zur Laufzeit verändern. Braucht nichtmal Hardware-PWM. Stromstarker Transistor mit guter Kühlung sollte ausreichen. Versorgungsspannung ist unkritisch (altes Steckernetzteil?) sollte zum Transistor und zum Vorwiderstand passen.
Die Schleifen hintereinander halte ich für ungünstig, dann gibts den Zustand ganz dunkel, das ist dann nicht "smooth" genug und könnte störendes "blinken" an den Wänden und so ergeben. OK, dann mache ich das ganze in Soft-PWM... hab grad mal die Löcher gezählt, sind "nur" 78. Gehen wir also mal von 80 LEDs aus. Ich wollte nun natürlich nicht 80 LEDs mit jeweils einem Vorwiderstand versehen, brauch ich den Überhaupt, wenn ich beim PWM nie voll aufdrehe? Als LEDs wollte ich zu den ganz einfachen 5mm Low Cost gelb greifen. Die sind mit 2,1V Vorwärtsspannung angegeben. bei 12V Versorgungsspannung könnte ich ja 5 LEDs mit 75Ohm in Reihe schalten. Macht dann noch 16 Vorwiderstände. Oder wie löst man sowas besser? Als Transistor dann 4x (pro PWM-Kanal einen) einen Typ der den Strom der 20 LEDs (400mA) aushält? Gruß Dominique Görsch //Nachtrag: Wenn ich ohnehin zu Soft-PWM greife, könnte ich ja auch mehrere Kanäle realisieren und die I/Os des 2313 weiter ausnutzen...
Hab nun mal angehängten Plan fabriziert. Ein Bekannter meinte, der BC547 könnte ausreichen, da ja der Strom nicht konstant fließt, ist der denn dennoch zu kühlen? Brauch ich Basiswiderstände? Brauche ich noch Cs um den Spannungsregler? Der Kram rechts mit dem T und den LEDs ist dann im Endeffekt 5mal da, an PC0-4, somit komme ich auf meine 80 LEDs. Kommentare zum Schaltplan erwünscht. Gruß Dominique Görsch PS: ISP hab ich mir im Plan geschenkt, auf die Platine wird er allerdings kommen denke ich.
Hier mal das Gebilde um das es überhaupt geht anbei. Bei den Widerständen hab ich mich übriegens vertan, das müssten wohl 180 Ohm, nicht 220.
Dominique Görsch wrote: > Die Schleifen hintereinander halte ich für ungünstig, dann gibts den > Zustand ganz dunkel, das ist dann nicht "smooth" genug und könnte > störendes "blinken" an den Wänden und so ergeben. > > OK, dann mache ich das ganze in Soft-PWM... hab grad mal die Löcher Schau Dir doch mal das Datenblatt des ATtiny2313 an. Dort sollest Du finden, was Du brauchst und die PWM-Timer zu bestücken. Das sieht in VB auch nicht viel anders aus, als in C.
Dieter Engelhardt wrote: > Schau Dir doch mal das Datenblatt des ATtiny2313 an. Dort sollest Du > finden, was Du brauchst und die PWM-Timer zu bestücken. > Das sieht in VB auch nicht viel anders aus, als in C. VB geht auch auf dem AVR? ;) Hab mich nun für Soft-PWM entschieden, da ich da nicht an die Anzahl der Hardware-PWM-Kanäle des µC beschränkt bin. Trotzdem danke für den Tipp.
Ich denke es geht hier um eine PWM = Puls Weiten Modulation!? Mit dem Programm: do incr z1 if z1 > 100 then z1=0 toggle port_von_led1 endif loop ... blinkt doch die LED nur, quasi eine PWM mit einem Tastverhältnis 50:50. Eine Änderung der "100" ändert nur die Blinkfrequenz. Oder habe ich jetzt einen Denkfehler?
Das sieht nach Pulsfrequenzmodulation aus. Das geht für diesen Zweck auch. MfG Paul
Schau dir einfach mal an, wie ich es in meinem Projekt schlussendlich gelöst habe: Beitrag "Re: Ansteuerung von 80 LEDs mit PWM"
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.