Forum: Projekte & Code PowerLED PWM mit RC5 Fernbedienung


von Lothar L. (lole)


Angehängte Dateien:

Lesenswert?

Hallo World,

hier mal mein letztes Bastelprojekt. Die Steuerung eines LED Clusters 
mit einem ATTiny25, PWM mit Stromregelung mit 8Bit und 125Khz. Über eine 
RC5 Fernbedienung können 10 (log) Leuchtstärken und Off ausgewählt 
werden. Mit Vol+/- geht auch ein Finetuning. Insgesamt billiger als ein 
fertiges Modul und passt locker in eine Streichholzschachtel. Die RC5 
Routinen sind von Peter Dannegger, vielen Dank dafür, wenn auch sehr 
tricky. Ich musste die Compileroptimierung abschalten, um ein RC5 Signal 
zu erhalten. Vielleicht wissen die Profis einen Rat.

Grüsse Lothar

von Di P. (drpepper) Benutzerseite


Lesenswert?

Ich habe mit Peters RC5 Teil keine Probleme, auch mit Optimierung. 
Vielleicht fummelst du sonst zuviel per Interrupt rum, sodass die 
RC5-Routine von Peter aus dem Takt gerät?

von Lothar L. (lole)


Lesenswert?

Die Int-Routine macht nur die RC5 Dekodierung. Warscheinlich 
irgrndwelche defines. Ich bin nicht der Profi.

von Di P. (drpepper) Benutzerseite


Lesenswert?

Peters RC5-Routine macht mehr als nur defines. d.h falls du noch ISRs 
mit höherer priorität hast, funken die der RC5-dekodierung dazwischen

von Lothar L. (lole)


Lesenswert?

Du hast die die Sourcen nicht angeschaut, es gibt keine weiteren INTs. 
Die external in RC5.h wird nicht richtig interpretiert. Macht aber auch 
nix, der AVR ist auch ohne Optimierung nicht voll.

von Lothar L. (lole)


Angehängte Dateien:

Lesenswert?

Wenns interessiert, hier noch die Schaltung.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Ich hab den Code jetzt nur überflogen, aber du benutzt einen I-Regler um 
dem LED Strom zu regeln?

von Lothar L. (lole)


Lesenswert?

Ja, ein I-Regler reicht hier vollkommen aus und ist so schnell, dass ich 
für Änderungen der Helligkeit eine Rampe eingebaut habe. Der Strom wird 
sehr gut gehalten, das PWM Signal flattert schon ein bisschen. Ich habe 
auf einen guten Wirkungsgrad Wert gelegt. Bei 1A fallen nur 200mV am 
Shunt ab. Normale Stromquellen (Step down Regler) brauchen da schon mal 
1,2V wegen der internen Referenz. Der Tiny kann 20fach verstärken und 
hat einen high-speed Timer mit 64MHz. Die 125kHz PWM lässt auch die 
Speicherdrossel schön klein ausfallen. Bei 1A ist keine nennenswerte 
Erwärmung von FET, Drossel und Shotkydiode feststellbar.
Grüsse
Lothar

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Gut zu wissen, ich habe nämlich ähnliches vor, für eine Fahrrad Lampe
Ich war mir nur nicht sicher, ob die Auflösung der PWM reicht um der LED 
kennlinie gerecht zu werden, aber offensichtlich geht es ;)
Bei mir wirds ne Luxeon K2 in Weiß ;) maximum 1,5A.

von Peter (Gast)


Lesenswert?

dafür würde ich aber lieber ein LED Treiber nehmen, habe ich auch 
gemacht. Diesen führe ich dann das PWM signal vom Tiny zu.

von Lothar L. (lole)


Lesenswert?

@Hauke
Der eingesetzte FET schafft 5,8A bei 50mOhm. Eine dickere L und D, dann 
ist auch mehr Leistung drin. Atmel lädt sogar Akkus damit, AN450. Da 
sieht man auch, wo die Vorteile vom Tiny 25(15) sind, die PLL für den 
Timer. Beim Radeln brauchst Du doch sowiso immer full Power. Die log. 
Helligkeitsanpassung fällt weg und Du regelst Deine 1,5A. Ich stehe z.Z. 
auf Cree, in weiß bis zu 120 Lumen/Watt und fertig auf Star. Die 
Wärmeableitug würde ich so nie hinkriegen, ohne Lötofen.

@Peter
Klar, geht auch. Ich nehme oft das, was ich noch rumzuliegen habe. 
Deswegen auch verschiedene Bauformen der Rs und Cs, von 0603 bis 1206. 
Und da sammelt sich im Laufe eines Bastlerlebens so Einiges an.

Grüsse
Lothar

von Herbert (Gast)


Lesenswert?

Ist mir etwas peinlich: das auf meinem Windows-System installierte 
Flizip kann die 7z-Datei nicht öffnen. Kann jemand das 7z-Format in das 
ZIP-Format konvertieren und posten?

von Lothar L. (lole)


Angehängte Dateien:

Lesenswert?

Sorry,

hier noch mal im ZIP Format. Ich das Layout und die Schaltung mal mit 
reingepackt.

Grüsse
Lothar

von Herbert (Gast)


Lesenswert?

Vielen Dank Lothar!

von Oliver (Gast)


Lesenswert?

>Die RC5
>Routinen sind von Peter Dannegger, vielen Dank dafür, wenn auch sehr
>tricky. Ich musste die Compileroptimierung abschalten, um ein RC5 Signal
>zu erhalten.

Da fehlt ein volatile bei rc5_data. Mit (ganz) früheren gcc-Versionen 
funktionierte das auch so mit eingeschalteter Optimierung, die neueren 
optimieren gnadenlos alles weg.

Oliver

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Ja ich hab schon ne Plateine für die geschichte entwickelt und alles, 
aber dann nicht weiter gemacht weil ich dachte mit der PWM auflösung von 
8 bit könnte man den Strom nicht genau genug regeln.

von Lothar L. (lole)


Lesenswert?

@Oliver
Mit den defines habe ich so meine Schwierigkeiten, was wo wie 
definieren, damit der Compiler nicht meckert. Peter hat rc5_data als 
external in der RC5.h definiert. Das müsste dann wohl raus und die 
volatile def in der RC5.c definiert werden.

@Hauke
Wie ich oben schon mal gesagt habe, der Strom wird sehr gut geregelt. 
Die PWM schwimmt wahrscheinlich um den Sollwert rum und der ADC macht 
10Bit. die 10µ glätten bei 125kHz auch ganz gut. Probiere es einfach 
mal, rein optisch sieht es sehr gut aus. Die Grenzen mußt Du austesten, 
zu wenig oder zu viel, dann spinnt die PWM. Für die PWM ist auch die 
Eingangsspannung wichtig. Ein paar Volt mehr können nicht schaden. Bei 
1A habe ich 9,1V an den LEDs, knappe 3V für den StepDown Wandler. 15V 
wären bestimmt besser. Das 12V Netzteil war aber grade da und hat in das 
Lampengehäuse gepasst.

von Oliver (Gast)


Lesenswert?

>Mit den defines habe ich so meine Schwierigkeiten, was wo wie
>definieren, damit der Compiler nicht meckert.

rc5.c:
[c]volatile uint rc5_data;[c]

rc5.h:
[c]extern volatile uint rc5_data;[c]

Oliver

von Lothar L. (lole)


Lesenswert?

Hallo Oliver,

der Compiler hat das erst mal ohne zu meckern geschluckt. Da die Lampe 
schon montiert ist, kann ich es nicht mehr testen. Wird schon 
funktionieren.
Vielen Dank für Deine Hilfe.

Grüsse
Lothar

von Strahlemann (Gast)


Lesenswert?

Hallo Lothar,

Hast du mal ein paar Fotos oder Videos von dem Treiber im Einsatz - 
würde mich mal brennend interessieren?

Könnte man zur not auch einen anderen Tiny nehmen? Einen ohne PLL für 
hohe Frequenzen?

Was hällst du/ihr von der Kamparator Konstantstromquelle aus dem 
Konstantstromquellenbeitrag im Wiki 
(http://www.mikrocontroller.net/articles/Konstantstromquelle#Konstantstromquelle_mit_Komparatoren)? 
Gut, die ist erst einmal nicht regelbar, aber ich hätte den Fall, das 
ich LEDs nicht regeln möchte, sondern sie eben einfach nur an bzw ab zu 
schalten.

von Lothar L. (lole)


Angehängte Dateien:

Lesenswert?

Hier ein Foto. Meine Knipse hat im Makrobereich nicht seine Stärken.
Ein Tiny ohne PLL schafft natürlich keine PWM mit 125kHz, dann muss die 
Induktivität deutlich größer ausfallen.
Eine Stromregelung mit StepDown-IC geht auch, Du verbrätst aber bei den 
meisten 1,25V am Shunt. Bei 1A sind das 1,25W. Meine Schaltung verbrät 
dafür 0,2W. Muss jeder für sich entscheiden. Die freie 
Programmierbarkeit für Softstart usw. ist auch ein Vorteil. Bei mir war 
es eben auch die RC5 Steuerung. Ein Bild folgt noch.

Grüsse
Lothar

von Lothar L. (lole)


Angehängte Dateien:

Lesenswert?

Und das versprochene zweite.

von Strahlemann (Gast)


Lesenswert?

Die Frage nach dem Tiny kamm, da ich min. 2 Kanäle und nene UART 
brauche..

und da sieht es beim Tiny 25 schon schlecht aus - leider

PS das sind aber keine CREEs, sieht eher nach Osrams aus. Hab in der 
letzten Zeit viel mit Edison Optos (die benutzen auch CREE Chips in 
manchen Modellen) gemacht.

von Strahlemann (Gast)


Lesenswert?

Eine Frage habe ich noch zu deinem Schaltplan. Was mach die Diode 
zwischen T4 und dem BSS138?
Willst du damit den Leistungstransi schneller zum sperren bringen?

von Lothar L. (lole)


Lesenswert?

Neee, das sind keine Cree, auf die bin ich später gekommen. Super Teile 
aus China, auf Star und keine 5€..... nur der Zoll, Horror. Die, wie Du 
richtig erkannt hast, eingesetzten Osrams kann ich mangels Lötofens auch 
nicht so gut kühlen. Deshalb relativ viel Zinn und eine 0,5mm PCB.
Schau Dir mal den ATtiny261 an, 3 PWM Outputs mit 8/10Bit High Speed 
Timer. Ein Universal Serial Interface ist auch dabei. Bei 20 Beinchen 
ist recht viel möglich, steht schon auf meiner nächsten CSD Wunschliste.

von Lothar L. (lole)


Lesenswert?

Zur Diode. Das ist eine Standarttreiberschaltung, die durch eine 
negative Basisspannung den Transi sehr schnell sperrt. Hast Du richtig 
erkannt. Deswegen musste das auch ein BiPo Transi sein. Sonst nehme ich 
lieber FETs, da brauche ich keine Basiswiderstand. Auf dem Oszi sahen 
die Flanken recht gut aus, deswegen wird auch nichts warm.

von Strahlemann (Gast)


Lesenswert?

Kann man den FET nicht direkt treiben? Der hat doch nur eine sehr 
geringe Gate-Kapazität.

Hat der ATtiny261 auch solch eine PLL für schnelles PWM?

von Lothar L. (lole)


Lesenswert?

Klar geht auch eine passive Ansteuerung, dann müsste der R, der dann 
zwischen Gate und Source des P-FETs liegen würde, wesentlich kleiner 
ausfallen, was den Wirkungsgrad drückt. Atmel macht das beim Akku-Lader 
so, AN450 glaube ich.
Der T261 macht High Speed PWM, ob die PLL auch mit 64MHz läuft... da 
müsste ich auch ins Datenblatt schauen. Der Shunt könnte noch kleiner 
ausfallen, da der ADC auch eine Gain von 32 kann. Alles im Interesse 
eines guten Wirkungsgrades ;o)) Ich weiß, mann kann es auch übertreiben.

von Strahlemann (Gast)


Lesenswert?

Ok, steht gleich auf dem Deckblatt "3 High Frequency PWM Outputs with 
Separate Output Compare Registers"

Sind die Vorwiderstände an jedem LED-Strang unbeding notwendig? hab 
schon viele Parallelschaltungen ohne gesehen. z.B. in den neuen Crees 
(MCE glaube ich), da wo man die Cores in reihe oder parallel schalten 
kann

von Lothar L. (lole)


Lesenswert?

Hmmmm, Reihenschaltung macht gar keine Probleme, es fliest ja überall 
der gleiche Strom. Bei Parallelschaltung scheiden sich die Geister. Die 
Kennlinien sind bei diesen Stromstärken schon recht steil. 50mV 
Spannungsdifferenz erzeugen eine recht große Stromdifferenz. Ich habe je 
Strang zwei 1 Ohm Rs, also 0,5 Ohm. Ich bin aber der Ansicht, dass das 
nicht nötig ist. Wen interessiert es, wenn in einem Strang 320mA fließen 
und im andern nur 280mA. Wenn ich sie einsetze, bin ich auf der sicheren 
Seite. Der Wirkungsgrad sinkt allerdings :o((

von Strahlemann (Gast)


Lesenswert?

Also ich glaube, ich versuche mal mein glück und baue mal was mit dem 
Tiny261 auf. Vielleicht sogar 3 kanalig. Die Idee ist einfach spitze. 
Hab vorher immer mit nem LM2xxx gemacht - aber so kann ich sogar noch 
eine Regelung und ggf auch einen Bus zur Steuerung unterbringen

von Strahlemann (Gast)


Lesenswert?

ach mist - der hat nur einen USI und keinen UART. da kann ich den ja 
maximal als SPI/I²C Slave benutzen. Dachte schon ich könnte dem nen 
RS485/232 spendieren. Schade

von Lothar L. (lole)


Lesenswert?

Viel Erfolg!!
Und wenns eng wird, da gibts auch noch zwei größere Brüder.

von Lothar L. (lole)


Lesenswert?

Vielleicht geht ein USI als UART zu vergewaltigen, oder Du 
implementierst 'ne SoftUART. Da habe ich hier schon Beispiele gesehen.

von Strahlemann (Gast)


Lesenswert?

ja aber ohne quarz? würde dann scon an dmx oder so denken. das sind aber 
250kbaud

von Lothar L. (lole)


Lesenswert?

Wenn Du an kein Protokoll gebunden bist, wäre SPI doch eine gute Wahl. 
Bei niedriger Bitrate und RS232 TreiberIC sind mit Sicherheit auch 
größere Entfernungen überbrückbar. Der interne RC Takt ist recht gut und 
kalibrierbar. Bei Bitsynchronisation sind +/- 10% kein Problem, das 
zeigt die RC5 Routine.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Bei SPI hat man das problem ja erst garnicht weils eben ne Serielle 
Synchrone schnittstelle ist (eben mit Taktsignal) deswegen ists kein 
problem den internen Takt zu verwenden.

von Strahlemann (Gast)


Lesenswert?

@ Lothar Lehmann
Sorry das ich diesen "Alten" Fred wieder anwärme, aber wie sieht es mit 
dem Projekt aus? Läuft alles noch? Hast du Änderungen (HW/SW) eingebaut 
oder Erfahrungen sammel können?

von Lothar L. (lole)


Lesenswert?

Never touch the running system...

Deswegen habe ich nichts mehr daran gemacht, auch wenn die nächste 
Software anders aussehen würde. Was bei 12V Ub noch sauber lief, zeigt 
bei 15V in der höchsten Stufe Einschwingerscheinungen.
Aber das Teil ist an der Decke, da fallen Experimente aus.
Gruß Lothar

von Strahlemann (Gast)


Lesenswert?

Schwingungen...
Mist! Ich habe ein 24V System vor gehabt es damit zu ersetzen... 
grummel

von Lothar L. (lole)


Lesenswert?

Sicher machbar, dann krebst die PWM aber bei recht kleinen Werten rum. 
Ich würde erst mal die Induktivität vergrößern und die Stromregelung in 
feineren Schritten machen. Durch die exp. Kennlinie ist der Schritt von 
8 nach 9 am Größten. Ich habe Wert auf geringe Programmgröße gelegt, 
würde ich jetzt anders machen. Eine feiner abgestufte Tabelle und eine 
aufwendigere Berechnung. Z.B. acht Stützwerte pro Stufe. Je nach 
Helligkeitssprung dann alle, jeden zweiten, vierten o. achten Wert 
nehmen. In der Art etwa.
Try and error. 5-6 Leds in Reihe würden auch gehen.
Gruß Lothar

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
Noch kein Account? Hier anmelden.