8 kanaals RGB controller – auto kerstverlichting

 

 

 

 

1.             Inleiding

 

 

Dit apparaat is een 8-kanaals RGB controller uitgevoerd als kerstverlichting voor een kleine kerstboom (bv. voor gebruik in een auto of motorhome). Het voorziet in volledige controle over 8 RGB LED strips (elk bestaande uit maximum 9 RGB LEDs) d.w.z. kleur en intensiteit. Dit wordt mogelijk gemaakt dankzij 24 softwarematige PWM kanalen.

 

Deze schakeling is gebaseerd op de PIC24HJ128GP504 microcontroller. Deze chip is eigenlijk een kleine computer die in één enkele chip bevat is, inclusief RAM geheugen, EEPROM, I/O poorten, centrale verwerkingseenheid enz. Als je deze chip koopt, is hij uiteraard leeg en bevat geen enkel programma. Je moet de broncode (zie link onderaan) compileren en de resulterende machinecode naar de chip downloaden. Hierbij kun je gebruik maken van een kleine "programmer" die verbonden wordt met de PC en de chip. Voor meer in detail uitleg van dit soort dingen, kun je best eens naar volgende plaats surfen: Getting started with microcontrollers.

 

Terug naar boven

 

2.             Beschrijving

 

Om 8 RGB kanalen te besturen op intensiteit en kleur, heb je 24 PWM kanalen nodig. De PIC24HJ128GP504 heeft niet zoveel PWM kanalen. Daarom zullen we gewone I/O poorten gebruiken en de PWM functionaliteit voorzien door ze softwarematig te implementeren, gebruik makend van de Timer1 interrupt.

Het apparaat heeft 32 programma’s om het RGB patroon mee te selecteren

 

Terug naar boven

 

 

3.             Gebruik

 

 

Het apparaat wordt bediend met een enkele drukknop, om het programma te kiezen. Het gekozen programma nummer wordt getoond op een simpele binaire display bestaande uit 5 LEDs.

 

Bij inschakeling wordt programma 0 uitgevoerd. Druk op de knop om naar het volgende programma te gaan. Programma 31 is een willekeurige combinatie van programma 0 tot programma 30.

 

Dit is wat op het “display” getoond wordt:

 

            _ _ _ _ _      programma 0

            _ _ _ _ X      programma 1

            _ _ _ X _      programma 2

            _ _ _ X X      programma 3

            _ _ X _ _      programma 4

            _ _ X _ X      programma 5

            _ _ X X _      programma 6

            _ _ X X X      programma 7

            _ X _ _ _      programma 8

            _ X _ _ X      programma 9

            _ X _ X _      programma 10

            _ X _ X X      programma 11

            _ X X _ _      programma 12

            _ X X _ X      programma 13

            _ X X X _      programma 14

            _ X X X X      programma 15

            X _ _ _ _      programma 16

            X _ _ _ X      programma 17

            X _ _ X _      programma 18

            X _ _ X X      programma 19

            X _ X _ _      programma 20

            X _ X _ X      programma 21

            X _ X X _      programma 22

            X _ X X X      programma 23

            X X _ _ _      programma 24

            X X _ _ X      programma 25

            X X _ X _      programma 26

            X X _ X X      programma 27

            X X X _ _      programma 28

            X X X _ X      programma 29

            X X X X _      programma 30

            X X X X X      programma 31

 

 

 

 

 

Terug naar boven

 

 

4.             Aansluiting

 

Verbind de 8 RGB LED strips met de print, en verbind een 12V DC voiding met de DC-in connector:

 

 

 

Hieronder een foto van 1 LED strip, als spiraal gewikkeld rond een stukje PVC pijp van 16mm diameter:

 

 

 

Merk op dat voor het verbinden van een LED strip met de print ik mijn eigen type connector gemaakt heb. Langs LED zijde is dit een L-vormige combinatie van 3 mannelijke en één vrouwelijke header, langs printzijde is dit een L-vormige combinatie van 3 vrouwelijke en één mannelijke header.

 

 

Terug naar boven

 

 

5.             Schema

 

Het hoofdschema:

 

 

Componentenlijst

 

Link naar Eagle schema

 

 

Onderstaand schema is een blokschema dat toont hoe de 8 RGB LED strips, de drukknop, 5-LED display en voiding worden verbonden:

 

 

 

Link naar Eagle schema

 

 

 

Onderstaand schema is de user interface (drukknop en LED display, slechts 1 van de 2 knoppen is nodig):

 

 

 

Link naar Eagle schema

 

 

 

 

Terug naar boven

 

6.             Uitleg van het schema

 

(Zie het hoofdschema hierboven).

 

Two voltage regulators are used: one to produce a stable 12V for the LED strips, the other to produce 3.3V for the PIC.

The schematic shows 24 resistors and 24 transistors which drive the LEDs (8 channels x 3 for red, green, blue = 24 ports in total).

An ICSP (In Circuit Serial Programming) interface is provided by means of PAD35-36-37.

The 5-LED binary display connects to PAD40-41-42-44-45.

PAD39 is for future extension.

PAD43 connects to the pushbutton.

Terug naar boven

 

 

7.             De gedrukte schakeling

 

Hoofd print

 

De print is ontworpen voor SMD componenten.

Ze is dubbelzijdig uitgevoerd en ontworpen met Eagle (van Cadsoft).

De PADs voor de LED strips kunnen gebruikt worden om headers op te solderen (er kan al dan niet een gaatje worden geboord).

Merk op dat er geen plaats is voor de ICSP connector, deze moet los van de print voorzien worden (header) en met 5 draden met de correcte PADs op de print verbonden worden.

 

 

 

PDF bestand (bovenkant, gespiegeld) om aft e drukken op een transparant: Print-layout

PDF bestand (onderkant) om aft e drukken op een transparant: Print-layout

 

Link naar Eagle bestand brd bestand met de print.

 

 

 

LED display print

 

Dit is een kleine print om de 5 LEDs voor de binaire display en de drukknop onder te brengen. Ze is ontworpen voor SMD componenten en enkelzijdig uitgevoerd.

 

 

 

PDF bestand (gespiegeld) om aft e drukken op een transparant: Print-layout

 

Link naar Eagle bestand brd bestand met de print.

 

 

 

Connectoren print

 

Dit is een hulpje om de connectoren voor de LED strips meet e maken, het bevat 8x 4 paden die geboord moeten worden en voorzien worden van headers. Deze print is enkelzijdig, niet-SMD.

 

 

PDF bestand om af te drukken op een transparant: Print-layout

 

Link naar Eagle bestand brd bestand met de print.

 

 

 

 

Terug naar boven

 

 

8.             Het uiteindelijke apparaat

 

 

Hieronder enkele foto’s van het uiteindelijke apparaat.

 

De eerste versie van de print bevatte een paar fouten, en er moesten verbeteringen op worden aangebracht. Vandaar het wat slordige uitzicht:

 

 

 

 

De print wordt in de bloempot geplaatst die bij de kerstboom hoort:

 

 

 

De gebruikers interface, voor de behuizing heb ik gebruik gemaakt van een plastic SD-kaart doosje:

 

 

 

De kerstboom met de LED strips:

 

 

 

Terug naar boven

 

 

 

9.             Programmeren

 

 

De software is volledig in C geschreven (gebruik makend van de C30 compiler van Microchip).

 

De functies voor de LED programma’s noemen “program0()” tot “program31()”. Je kunt je eigen versies van deze functies schrijven om aan je eigen noden te voldoen.

Een “programXX()” functie beschrijft één iteratie van een LED programma. De hoofdlus zorgt voor herhaling dus dat moet je niet zelf doen.

 

Als je je eigen “programXX()” functies wil schrijven heb je volgende functies nodig:

 

-       SetPwm(poort, intensiteit) – stelt de intensiteit in van een poort (0..23 waar 0 = LED1 rood, 1 = LED1 groen, 2 = LED1 blauw, 3 = LED2 rood enz.) op een bepaalde waarde (0..63 waar 0 = 0% en 63 = 100%)

-       SetColor(ledNummer, kleur) – stelt de kleur in van een LED (1..8) op een bepaalde RGB waarde (0xRRGGBB waar RR, GG en BB hexadecimale waardes zijn tussen 0..0xff)

 

Je hebt ook de delay_ms() functie nodig. Gebruik deze functie om een bepaald aantal milliseconden te wachten. Deze functie keert onmiddellijk terug als de knop ingedrukt wordt. Het is aan te raden regelmatig te controleren of de knop wordt ingedrukt binnen je “programXX()” functie, zeker na een delay_ms(), zodat onmiddellijk kan teruggekeerd worden naar de hoofdlus voor knopverwerking. Dit kan gedaan worden met “if (PUSHBUTTON == 0) return 0;”.

 

Voor het programmeren heb je de Microchip MPLAB X IDE en de C30 compiler nodig. Beide kunnen gratis gedownload worden van de MPLAB X IDE site. Je hebt ook een stuk hardware nodig: de Microchip PICkit3 programmer.

 

Zip bestand dat alle source code, header bestanden en project bestanden bevat: Link naar MPLAB project.

 

Verbinding met een PIC programmer.

PADen  35-36-37, massa en +3V3 moeten (tijdens het programmeren) verbonden worden met de PICkit3 programmer (zie de datasheets van de PICkit3 en de PIC24HJ128GP504 voor de juiste aansluitgegevens).

 

Terug naar boven

 

 

 

 

Home                         Terug naar Electronica projecten