Forum: Projekte & Code 12-Kanal LED-Fader mit 16-Bit-Hardware-PWM


von Jürgen O. (__juergen)


Angehängte Dateien:

Lesenswert?

Letztes Jahr hab ich mir einen Swimmingpool mit vier 
Unter-Wasser-Scheinwerfern gebaut. Jede der Leuchten ist mit je 6 roten, 
grünen und blauen 1-Watt-LEDs bestückt.
Nun war ich schon länger auf der Suche nach einem Fader, mit dem ich die 
vier Leuchten ansteueren kann. Das, was es so fertig auf dem Markt zu 
kaufen gibt, bot nicht, was ich mir vorstelle.

Also hab ich mich dran gemacht, selber einen Fader zu entwickeln, 
welcher vier mal drei LED-Stränge mit 16 Bit PWM ansteuern kann, also 
insgesamt 12 Kanäle.

Ausstattung und Funktion:
- Zustandsanzeige mit 2-zeiligem Punktmatrix-LCD-Display
- zwei Tasten auf/ab zum Auswählen des Fading-/Farbprogramms
- zwei Tasten langsamer/schneller
- eine Taste zum ein-/ausschalten der LED-Scheinwerfer
- fünf verschiedene Farbverläufe
  RGB (es wird zyklisch von R nach G und B durchgefadet)
  RGB subtraktiv (es leuchten alle Farben, währans R, G, oder B zyklisch 
aus-/eingeblendet wird -> gibt Pastell-Farbverläufe)
  das ganze dann jeweils noch sequenziell und zeitversetzt über die vier 
Scheinwerfer verteilt
  RGB nacheinander einzelne Farbe an-/abschwellend
  Konstante Farbwiedergabe von 10 vorgegebenen Farben.

Fading- und Farbverläufe werden in Structs definiert, also beleibig um 
neue Sets erweiterbar (solange das Flash vom Controller reicht g).

Hardware und Entwicklungsplattform:

Compiler: AVR-GCC 4.3.2 mit gnu99-flag, AVR-LIBC 1.6.2
Entwicklungsplattform: Kontrollerlab unter Kanotix (Linux-Debian 5.0)
Wichtig: Konstante F_CPU muss vom Compiler mit der Prozessorfrequenz 
angegeben werden. Sonst kennen sich die Delayroutinen in <util/delay.h> 
nicht aus.
AVR: Atmega8, 8 MHz int. RC-Osz., Fuse-Bytes: Low:0xD4 High:0xE9
Display: Lehner Dabitros YL#202-17/A7 (2 x 20 Z), baugleich mit DEM20231
(gibt's z. B. bei www.elpro.org)
PWM-Controller: MBI5030 von Macroblock

Mit diesem Projekt wird die Steuereinheit vorgestellt, welche zunächst 
nur für jeden Kanal eine Status-LED ansteuert. Die 12 LEDs sind auf der 
Platine in vier Gruppen zu jeweils R/G/B angeordnet.
ALs nächstes werde ich noch den Leistungsteil entwickeln 
(Linear-Konstantstrom-Quellen mit 350 mA, taktbar), aufbauen und 
vorstellen, mit dem man dann 12 ganze Stränge von jeweils 6 hinter 
einander geschalteten 1-Watt-LEDs treiben kann. Aber das hat dann nix 
mehr mit AVR und Software zu tun :).

ALs Programmbasis habe ich Routinen von roboternetz.de für die 
Tasterabfrage verwendet, die pwmtable_16[] vom Artikel "LED-Fading" hier 
auf'm Board, sowie eine auf 4-bit-io für den KS0066 umgeschriebene 
LCD-lib von P. Fleury. Die Bit-Banging-Routinen für die SPI-Ansteuerung 
des PWM-Controllers sind selber gebastelt, ebenso wie der Rest. Die 
C-Profis hier auf'm Board mögen hier sicher manche Programmierarbeit als 
stark verbesserungswürdig einstufen. Aber ich hab gegeben, was ich kann 
:)

Ich hab mich nach langem Suchen und Recherchieren auch hier auf'm Board 
für einen Hardware-PWM-Controller entschieden. Die üblichen ATmegas 
bieten 16-Bit-PWM nur auf einem Kanal - soweit ich das verstanden habe. 
und 12-Kanal-Soft-PWM in 16-Bit Auflösung mit einem 8-Bit-AVR hab ich 
nirgends gefunden, auch keine Anregungen dazu. Das wird ein 8-Bit-µC 
auch ned mit brauchbarem PWM-Zyklus < 10 ms schaffen.
Der MBI5030 schafft 16 Kanäle in 16-Bit-SPWM. Das heißt Scrambling PWM 
und bedeutet, dass mit einer überlagerten 10+6-Bit-PWM sehr hohe 
PWM-Zyklus-Frequenzen in effektiver 16-Bit-Auflösung erreicht werden. 
Ich hab mal nachgemessen: bei einem Takt von 0,5 MHz am GCLK-Eingang des 
MBI (für die PWM-Ansteuerung vorzugebender Takt) werden die LEDs bei 
16-Bit-SPWM mit 500 Hz angesteuert und das auf 16 Kanälen. Der GCLK darf 
aber laut Datenblatt bis 8 MHz betragen, das ergäbe 8 kHZ an den LEDs 
(!!). Ich denke, da hört die Diskussion über 16-Bit-Software-PWM und 
LED-Flackern wirklich auf. Der MBI5030 kostet bei neumüller.com in 
Musterstückzahlen 1,00€/Stück + 12,80€ einmalig für Mindermengenzuschlag 
und Versand, das ganze + MwSt.. Dafür z. B. 12 tiny2313 herzunehmen und 
einzeln zu proggen lohnt echt ned.

Sourcen für die Firmware sind im zip angehängt.
Viel Spaß damit, Fragen und Anregungen gerne. Aber bitte nicht: "Wozu is 
denn sowas gut ... wer braucht denn das überhaupt .." und ähnlichen 
Quatsch.

Wenn jemand die EAGLE Schaltplan- und Board-Files will -> PM an mich

Grüße Jürgen

von Freddy F. (Gast)


Lesenswert?

Jürgen Oelkoch schrieb:
> Wenn jemand die EAGLE Schaltplan- und Board-Files will -> PM an mich

Warum denn nicht öffentlich?

von kleiner hunger (Gast)


Lesenswert?

> Warum denn nicht öffentlich?
Warum denn?

von Bernhard M. (boregard)


Lesenswert?

kleiner hunger schrieb:
>> Warum denn nicht öffentlich?
> Warum denn?

Warum stellst Du es dann hier vor, wenn Du nicht alles veröffentlichen 
willst?

von Jürgen O. (__juergen)


Lesenswert?

Nun, in der Eingabeseite beim Thread anlegen steht, dass man keine 
EAGLE-Files einstellen darf. Ich hab mich d'ran gehalten.

Was ist so schlimm d'ran ? Traust dich nicht, mir eine Mail zu schreiben 
?

von Peter Z. (flexopete)


Lesenswert?

Hallo Jürgen,

ich hatte Dir vor einigen Tagen eine
mail geschickt, aber noch keine Antwort
bekommen. Hast Du die mail erhalten?

Gruss
Peter

von Jürgen O. (__juergen)


Lesenswert?

Hallo Peter

am 27.01. mailte mich ein anderer Gast an, seither nix erhalten.

Grüße Jürgen

von Peter Z. (flexopete)


Lesenswert?

Hallo Jürgen,

meine pn war vom 02.02.
Hier meine mail-Adresse:

Peter Punkt Zabel ät t-online.de

Gruss

Peter

von Peter F. (loempf)


Lesenswert?

Bekomme leider auch keine Antwort auf meine Mails.. der Schaltplan würde 
mir echt helfen.

von Peter F. (loempf)


Lesenswert?

Peter Fischer schrieb:
> Bekomme leider auch keine Antwort auf meine Mails.. der Schaltplan würde
> mir echt helfen.

Juergen hat meine PM auch nicht bekommen, aber aufgrund meines Posts 
hier direkt mit mir Kontakt aufgenommen. Super Sache :)

Vielleicht hat das Board ja ein Problem mit dem "__" im Benutzernamen

von Andreas K. (andyk)


Lesenswert?

Hallo Jürgen,

ich habe auch Interesse an dem Schaltplan und dem Board.
andy.kr-at-gmx.net

Danke
Andreas

von jppweber (Gast)


Lesenswert?

Moin,

ich habe Interesse an dem Layout.

Bitte via Email jpp-weber@web.de

Vielen Dank

von Andreas M. (paralunke)


Lesenswert?

Hallo!

Anscheinend wurde auch meine PM "geschluckt"... .

Ich bin auch an dem Schaltplan und am Layout interessiert!

der_halunke ät gmx.de

Vielen Dank!

von Yes, i`m a (Gast)


Lesenswert?

please can i have at
 o j e e  @  f o n i   .  n e t

von Frank (Gast)


Lesenswert?

Hallo Jürgen!

Ich möchte auch gern Schaltplan und Layout haben. Danke Dir schon mal,

Gruss Frank

beta-temp ät gmx.de

von NurEinGast (Gast)


Lesenswert?

Sagt mal - hat jemand von Euch eine Antwort vom OP bekommen, oder will 
hier jemand nur E-Mail Adressen sammeln.
Hab - wie viele andere auch - ne PM geschickt, aber keine Rekation.

von Jürgen O. (__juergen)


Lesenswert?

Hi Leute

Ich weiß nicht warum, aber es kommt nie eine PM bei mir an.

Daher vervollständige ich jetzt mal die Adressen-Sammlung um meine 
eigene: j.oe@gmx.de. Sonst wird der Thread wirklich noch zum 
Adressen-Grab. Und das ist ja nicht Sinn der Sache.

Also, wenn jemand die EAGLE-Files braucht oder Fragen zum Projekt hat, 
dann mailt mir.

Grüße und schönes WoEnde
Jürgen

von ledrive (Gast)


Lesenswert?

Den MBI5030 setze ich derzeit versuchsweise ein, um vom Software-PWM 
wegzukommen. Mit einem ATMEGA8@16MHz konnte ich zwar eine PWM-Frequenz 
von 250Hz gut erreichen. Allerdings wird es dabei insbesondere bei 
niedrigen Helligkeitswerten von der Taktrate her schon ziemlich eng. 
Außerdem will ich eine PWM-Frequenz oberhalb von 600Hz erzielen, um mit 
RGBW-LEDs eine ruhige Beleuchtung zu erreichen.
Um der Diskussion gleich vorzubeugen: nein, eine PWM-Frequenz von 100Hz 
reicht mir nicht, da ich das "Flackern" quasi aus dem Augenwinkel 
wahrnehmen kann, insbesondere bei Kopfbewegungen.

Der MBI5030 bietet dazu einige interessante Features an, aber der 
maximale Ausgangsstrom von 60mA reicht für Highpower-LEDs natürlich 
nicht.

Wie müsste ein entsprechender Booster für eine gepulste 
Konstantstromquelle  auf MOSFET-Basis aussehen, damit Highpower-LEDs 
damit angesteuert werden können?

Einige fiktive Anforderungen als Anhalt:
- Eingangsstrom für den Booster 5-60mA (MBI5030)
- Festlegung eines konstanten Ausgangsstroms (z.B. 700mA)
- Versorgungsspannung bis 48V (für Reihenschaltung von mehreren 
Highpower-LEDs)
- minimaler Energieverbrauch bei ausgeschalteten LEDs

von Hw-Noob (Gast)


Lesenswert?

ich würde auch sehr sehr gerne den Schaltplan und das Layout erhalten.. 
möchte aber meine e-Mail nicht posten und PM scheint ja nicht zu tun

von rudi (Gast)


Lesenswert?

Lieber Gott im Himmel, nun stell doch die zwei Files hier rein.
So ein Affentanz
Rudi

von Jürgen O. (__juergen)



Lesenswert?

rudi schrieb:
> Lieber Gott im Himmel, nun stell doch die zwei Files hier rein.
> So ein Affentanz
> Rudi

Nana, Rudi, mal kein Stress.

Ich häng die Files ja schon ran. Kann ja jeder haben.
Man darf's eigentlich nicht, drum hab ich's bisher gelassen.

Einen Leistungsteil dazu hab ich auch schon entworfen. Funktioniert von 
der Schaltung her mit den getakteten Konstantstromquellen bereits in 
einer anderen Anwendung. Mit dem 4-fach-Fader hab ich's noch nicht 
fertiggebaut und getestet. Grundsätzlich sind mit dem Emitterwiderstand 
im Leistungspfad beliebige Konstantströme einstellbar. 1,5 Ohm machen so 
ca. 320 mA.

Platine ist geätzt, Bauteile liegen daneben, weiter bin ich noch ned 
gekommen.

Grüße Jürgen

von Hä? (Gast)


Lesenswert?

Jürgen Oelkoch schrieb:
> Man darf's eigentlich nicht, drum hab ich's bisher gelassen.

Das hab ich hier schon öfters gelesen, aber wo steht das? In den 
Nutzungsbedingungen kann ich nichts finden. Und warum sollte man das 
nicht dürfen?

von Jürgen O. (__juergen)


Lesenswert?

Hä? schrieb:
> Jürgen Oelkoch schrieb:
>> Man darf's eigentlich nicht, drum hab ich's bisher gelassen.
>
> Das hab ich hier schon öfters gelesen, aber wo steht das? In den
> Nutzungsbedingungen kann ich nichts finden. Und warum sollte man das
> nicht dürfen?

Wenn man zu einem Beitrag 'n File hochlädt, dann kommt das als Hinweis 
in einem Popup-Window.

von Horst H. (horha)


Lesenswert?

Hallo,

Offtopic:
es geht doch mehr darum, der Platzverschwendung Einhalt zu gebieten.
.sch Dateien sind Text Dateien, die sich sehr gut komprimieren lassen.
LED_4fach_Fader_Pool.sch -> Zip 71 kB; 7z 51kB

von Hä? (Gast)


Lesenswert?

Jürgen Oelkoch schrieb:
> Hä? schrieb:
>> Jürgen Oelkoch schrieb:
>>> Man darf's eigentlich nicht, drum hab ich's bisher gelassen.
>>
>> Das hab ich hier schon öfters gelesen, aber wo steht das? In den
>> Nutzungsbedingungen kann ich nichts finden. Und warum sollte man das
>> nicht dürfen?
>
> Wenn man zu einem Beitrag 'n File hochlädt, dann kommt das als Hinweis
> in einem Popup-Window.

Hab das gerade mal mit einer Dummy-Datei (Endung passend, Inhalt nicht) 
getestet, bei mir kommt keine Meldung was vermutl. an Noscript liegen 
dürfte.

Aber egal, die Frage warum man das nicht darf bleibt... Wirklich nur um 
Platzverschwendung zu vermeiden?!?

von M. W. (hobbyloet)


Angehängte Dateien:

Lesenswert?

Ich habe die Eagle-Dateien mal gezippt.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Jürgen Oelkoch schrieb:
> Wenn man zu einem Beitrag 'n File hochlädt, dann kommt das als Hinweis
> in einem Popup-Window.
Nein! Es kommt ein Hinweis, das man für Bilder ein sinnvolles Format 
wälen soll:
Für Photos: JPEG
Für Schaltpläne und Zeichnungen: PNG
Das heißt aber nicht das man keine Schaltpläne (ob gezippt oder nicht) 
hochladen darf...

von Falk B. (falk)


Lesenswert?

Sags doch einfach kurz. Siehe Bildformate.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Falk Brunner schrieb:
> Sags doch einfach kurz. Siehe Bildformate.

Ich wollte mich aber auf den Inhalt der Nachrichtenbox beziehen wo es 
heißt:
1
'Bitte beachten, sonst wird der Beitrag gelöscht:
2
1. JPG-Dateien NUR für Fotos und Scans verwenden, Schaltpläne und Zeichnungen nur als PNG oder GIF.
3
2. sinnvolle Bildgröße wählen.
Die der TE wohl etwas zu streng ausgelegt hat ;)

von Jürgen O. (__juergen)


Lesenswert?

Naja stimmt, zippen hätt' ich se auch noch können - hab nicht 
d'rangedacht.
Aber nun habt ihr die Files verfügbar - und - jetzt baut mal los und 
habt Spass damit :)

Übrigens:
Das mit den getakteten Konstantstromquellen hab ich in einer selbst 
konstruierten Zimmerleuchte mit 24 1-W-LEDs in 4 Strängen á 6 LEDs 
laufen.
Schaltet sauber als Rechteck durch, ohne verlustreiche Flanken - auch 
mit nicht ultraschnellen bipolaren Kleinleistungstransistoren à la BD675 
o. ä. .

Dazu wird ein ATtiny2313 mit 14-Bit-PWM an OC1A betrieben. 14-bit 
deswegen, weil man so mit PWM-clock = CPU-clock, 8MHz intern und 
Fast-PWM auf ne flimmerfreie PWM-Frequenz kommt. Bei 16-bit werden's nur 
122 Hz - und das ist zu wenig. Selbst im 15-Bit-Modus mit 244 Hz sieht 
man noch leichtes flimmern, wenn man den Blickwinkel schnell 
vorbeigleiten lässt - hätt' ich ned gedacht. D'rum 14-bit mit 488 Hz, da 
is Ruhe.

Ansonsten wertet der AVR einen Digitaleingang mit Taster gegen GND aus, 
womit sich der AVR (fast) wie ein gewohnter Tastdimmer benimmt.
Also: kurz drücken = ein/aus, lang = auf/abdimmen - Ausnahme: Lang 
drücken bei ausgeschalteter Leuchte schaltet sofort auf volle Helligkeit 
ein. Hat mich nämlich bei den Tastdimmern genervt, wenn man da dunkel 
abgedimmt ausgeschaltet hat und nach dem einschalten erst aufs 
Hochdimmen warten muss, wenn man's hell will.

Grüße Jürgen

von Hä? (Gast)


Lesenswert?

Läubi .. schrieb:
> Das heißt aber nicht das man keine Schaltpläne (ob gezippt oder nicht)
> hochladen darf...

Danke, hab mich schon gewundert...

von Jens W. (eurocopeter)


Lesenswert?

Hallo,
hab ich´s übersehen oder ist das HEX file nicht mit dabei?
Wäre leichter wenn es auch hochgeladen werden würde. dann kann ichs 
gleich in den avr schreiben.
Danke schon mal

von Thomas Kiss (Gast)


Lesenswert?

Ich hätte auch interesse an HEX File !!

von Jürgen O. (__juergen)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Hier das hex-file.

Grüße Jürgen

von Pancio (Gast)


Lesenswert?

Cool project. Good job. Thanks to you I did my project in SMD version. I 
really like your code. You're a good programmer.

My version of Your project:
http://www.elektroda.pl/rtvforum/viewtopic.php?p=9395250#9395250

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.