Pour la sortie de puissance nous avons mis en place un schéma traditionnel optocoupleur/triac qui permet d'isoler la carte du 220volt du secteur. (voir rubrique AddOn pour le schéma)

Pour le contrôle de luminosité: nous avons décidé d'utiliser un kit de contrôle de luminosité de chez Velleman, le K8064, présenté lui aussi dans la rubrique AddOn et disponible pour environ 20€ dans tous les bons commerces d'électronique. Le tout est à présent de générer une tension variant de 0 à 10 volt depuis le microcontrôleur. Celui-ci n'ayant que des sorties logiques, il va nous falloir utiliser un convertisseur numérique vers analogique. Notre choix est d'utiliser un tlv5620 qui permet d'établir une tension suivant un référentiel sur une résolution de 8bits. Cette tension sera suivie d'une amplification par 2 via un lm324.

adc

La routine

Le tlv5620 est contrôler via un entrée série. Il faut ainsi pour le contrôler créer une routine qui permet d'envoyé les 8 bits ainsi que les bits définissants quelle sortie on veut diriger.

lightcontrol ; Permet de controller la luminosité
; movlw lamp* [1-4];
; movwf lamp;
; movlw luminosité (Valeur au choix);
; movwf lum;

bsf PORTB, load;
bcf PORTB, dat;
bcf PORTB, clock
btfsc lamp, 1;
bsf PORTB, dat;
bsf PORTB, clock;
call wait
bcf PORTB, clock;
bcf PORTB, dat;
btfsc lamp, 0;
bsf PORTB, dat;
bsf PORTB, clock;
call wait
bcf PORTB, clock
bcf PORTB, dat;
bsf PORTB, clock;
call wait
bcf PORTB, clock;
movlw H'00'
movwf loop;

beginlooplight; sous routine

movlw h'08' ;
subwf loop, 0;
btfss STATUS, C ;
goto inlooplight;
bcf PORTB, load;
call wait
bsf PORTB, load;
return

inlooplight; sous routine

btfsc lum, 7;
bsf PORTB, dat;
bsf PORTB, clock;
call wait
bcf PORTB, clock;
bcf PORTB, dat;
rlf lum, 1;
incf loop, f;
goto beginlooplight;

wait; sous routine

nop
nop
nop
nop
return; 

Cette routine nécessite deux paramètres, lamp et lum. Lamp prendra une valeur entre 1 et 4 et permettra de déterminer quelle sortie doit être contrôlée. Les lignes de code jusqu'à la boucle envoient la porte à diriger. La boucle envoie en série les 8 bits donnant la tension à appliquer. La sous routine créée arbitrairement permet d'être sur que le bit envoyé est bien pris en compte par la puce. La fréquence du clock étant de maximum 1Mhz, nous avons choisi d'être en dessous de cette fréquence afin de mettre toute la sécurité de notre coté.