Blinkenlichten RGB LED controller
Home > Elektronik > Blinkenlichten RGB LED controller  
 

[Apr. 2011] 1-Wire RGB LED controller

Auf der Suche nach einer einfachen und günstigen RGB Steuerung stieß ich, neben dem Fnordlicht, auf das Blinkenlichten RGB LED Controller Projekt. Der Ansatz beider Projekte ist verschieden, aber mit ein paar Änderungen kann man den minimalistischen Ansatz des "Blinkenlichten" erweitern. Hier liegt der Vorteil ganz klar auf dem 1-Wire Bus (Drei Leitungen für je Spannungsversorgung, Daten und Masse) und dem verwendeten extrem günstigen Mikrocontroller. Welches leider wiederum den Nachteil einer relativ groben Farbabstufung aufgrund des begrenzten Speichers mit sich bringt. (7 verschiedene Helligkeitswerte pro Farbe)

Geflasht mit dem PIC programmer Brenner 5 von Sprut für den PIC 10F204 und als Testprojekt der PIC based dice.

top Schaltplan

Die ursprüngliche Schaltung sah die Ansteuerung einer RGB LED direkt über den Mikrocontroller vor. Da hier aber mehr Licht gewünscht war, wurde jeder Farbe ein Transistor spendiert.

Die passenden Vorwiderstände für die LEDs wurden anhand der im Datenblatt angegebenen Vorwärtsspannung ermittelt und im Fall der blauen LEDs durch eine Parallelschaltung erreicht.

Die Diode (D1) entkoppelt die Versorgungsspannung der Schaltung von der Versorgungsspannung vom Brenner. So kann der PIC im spannungslosen Zustand gebrannt werden ohne das die LEDs die Spannung vom Brenner auffressen oder durchbrennen.

Den kompletten Schaltplan gibt es weiter unten.

 

 

top Nachbau

Verbaut habe ich einen PIC 10F204, im original war es ein 10F200. Dies hatte ein paar Änderungen im Programmcode zur Folge. Programmiert über den ICSP Anschluss des Brenner 5.

Kein XXL Reiskorn oder Streichholz, der Chip ist nur 3mm Lang. Bei einem Pitch (Pin Mitte zu Mitte Abstand) von 0,95mm aber noch einfach zu Löten.

Die langen Drähte rechts im Bild sind für den ICSP Anschluss. In der fertigen Version wurden sie gekürzt und passen dann für eine 5-polige Buchse (1/2 Rastermaß, 1,27mm). Wie man auch sehen kann, ist die Platine beim Wenden leider ein wenig verrutscht, so das die Bohrungen nicht mehr zentrisch sind.

Erste Tests mit dem Arduino als Buscontroller. Praktischer weise gibt es bereits fertige Funktionen zum Ansteuern der Blinkenlichten.
Damit das ganze ohne PC eingestellt werden kann, sind nebenbei auch ein LCD Display, ein paar Taster und später noch ein Infrarot Empfänger am Arduino angeschlossen.

Ein paar Bilder der Fertigen Platinen.

 

Auf der Oberseite ist neben den LEDs auch der ICSP Anschluss zu erreichen.

Auf der Unterseite sitzt der Elko huckepack.
Alles findet in einem MR16 Halogen Reflektor platz. Angeschlossen über einen 3-Poligen Molex Stecker.

Alle Bilder.

top ASM Programm Anpassungen

Programm Änderungen für den PIC 10F204 in der "main.asm" fett hervorgehoben.

Config bits können von der Brenner Software ausgelesen werden (manuelles Einstellen entfällt):

; Config bits: WDT ON, MCLR as GP3, CodeProtect OFF.
__CONFIG _CP_OFF & _WDT_ON & _IntRC_OSC & _MCLRE_OFF


Änderung der Anschlussbelegung für mein Layout:

#define COMM_ANODE 0x00 ; If indicator is common-anode, polarity of output drive and idle are inverted

RED equ 0 ; Change to GPIO pin the red LED is connected to.
GREEN equ 1 ; Change to GPIO pin the green LED is connected to.
BLUE equ 2 ; Change to GPIO pin the blue LED is connected to.


Anpassen der include dateien:

list p=10f204
include "p10f204.inc"


Komparator deaktivieren:

movlw B'00000000' ; set all pins as output which can be
TRIS GPIO ; ...

bcf CMCON0,CMPON ; comparator off for 10F204/206

 

Jeder Chip muss, damit er einzeln angesteuert werden kann, eine eigene Adresse bekommen. D.h. es ist etwas Arbeit für eine größere Anzahl den Code jeweils neu zu kompilieren. Beim Brennen sollte man dann auch darauf achten jeweils immer wieder eine neue Datei zu laden.

 

top Steuerung per Arduino

Noch in der Entstehung...

 

top Schaltpläne/Layout

 

Geänderte Schaltung als PDF, Originale und PIC Software auf Tims Blog.