Electronique > Réalisations > Télérupteur 002

Dernière mise à jour : 18/07/2010

Présentation

Le circuit présenté ici permet de couper et d'allumer une lampe (ou autre circuit) à la façon d'une bascule. Un premier appui pour allumage, et un second appui pour extinction. Cette version fait appel à un composant programmable de type PIC 12F675, mais pour ceux qui ne veulent pas entendre parler de ce genre de composant, voir la page Télérupteur 001 basé sur l'emploi d'une bascule CMOS de type CD4013. Intérêt d'un composant programmable pour une fonction aussi simple qu'un marche / arrêt ? La possibilité d'ajouter facilement un peu d'intelligence : surveillance lumière ambiante, minuterie avec préavis d'extinction, par exemple. Mais en l'état actuel, ce circuit n'assure que la fonction marche / arrêt, et m'a gentiment été demandé par un internaute qui avait en stock dix mille PIC 12F675 dont il ne savait que faire. Puis par la suite, ajout de sorties impulsionnelles en plus des sorties permanentes.

Schéma

Difficile de savoir par quel bout prendre ce schéma.

telerupteur_002

Rôle donné aux broches d'entrée / sortie du PIC
- Broche GP1 : configurée en entrée (In_Cmd), c'est elle qui reçoit la commande de mode marche / arrêt via bouton poussoir SW1.
- Broche GP0 : configurée en sortie (Out_1), cette broche est positionnée à l'état logique bas à la mise sous tension du système et passe à l'état logique haut dès appui sur SW1. Un nouvel appui sur SW1 fait repasser cette sortie à l'état logique bas.
- Broche GP2 : configurée en sortie (Out_2), cette broche est positionnée à l'état logique haut à la mise sous tension du système et passe à l'état logique bas dès appui sur SW1. Un nouvel appui sur SW1 fait repasser cette sortie à l'état logique haut.
- Broche GP4 : configurée en sortie (Out_3), cette broche délivre une impulsion d'une durée de 200 ms au moment où la broche GP0 (sortie Out_1) passe à l'état logique haut.
- Broche GP5 : configurée en sortie (Out_4), cette broche délivre une impulsion d'une durée de 200 ms au moment où la broche GP0 (sortie Out_1) passe à l'état logique bas.

Remarque : pour un usage standard, seule la sortie Out_1 (GP0) est requise. C'est d'ailleurs la seule que l'on voit exploitée sur le schéma. Les autres sorties sont mises à disposition pour des usages autres et variés.

Fonction bascule
Assurée de façon logicielle, pas grand chose à en dire. La ligne GP1, configurée en entrée, reçoit une impulsion "négative" quand le bouton poussoir SW1 est actionné. Au repos, cette entrée est à l'état logique haut grace à la fonction pullup du PIC qui est ici activée et qui évite de rajouter une résistance de rappel externe. A chaque fois que le poussoir est enfoncé, la ligne GP0, configurée en sortie, change d'état logique. Il en est de même de la ligne GP2 dont l'état est complémentaire (inverse) de l'état de la ligne GP0. Le code logiciel consiste donc simplement à regarder en permanence si le bouton poussoir SW1 M/A (On / Off) est activé, et si c'est le cas, à modifier l'état logique de la sortie GP0 pour lui donner l'état inverse de l'état en cours (idem pour GP2).

var
bToggle, bPushed: boolean;
In_Cmd: sbit at GP1_bit;
Out_1: sbit at GP0_bit;
Out_2: sbit at GP2_bit;
Out_3: sbit at GP4_bit;
Out_4: sbit at GP5_bit;

begin
{ Main program }
while true do
begin
if Button(GPIO, 1, 100, 0) and (bPushed = false) then
begin
bPushed := true;
if bToggle then
begin
Out_1 := 0; // désactivation sortie Out1
Out_2 := 1; // activation sortie Out2
Out_4 := 1; // début impulsion sur sortie Out4
Delay_ms(200);
Out_4 := 0; // fin impulsion sur sortie Out4
bToggle := false;
end
else
begin
Out_1 := 1; // activation sortie Out1
Out_2 := 0; // désactivation sortie Out2
Out_3 := 1; // début impulsion sur sortie Out3
Delay_ms(200);
Out_3 := 0; // fin impulsion sur sortie Out3
bToggle := true;
end;
end;
if In_Cmd = 1 then
bPushed := false;
end;
end;


La routine "Button" intégrée dans l'environnement MikroPascal, est utilisée ici avec un temps minimum d'activation de 100 ms :

if Button(GPIO, 1, 100, 0) and (bPushed = false) then


Si une impulsion de durée inférieure parvient à l'entrée GP1, elle est tout bonnement ignorée, ce qui garantit une grande immunité aux parasites et un excellent système anti-rebonds.

Interface de puissance 230 V
Un optocoupleur de type optotriac modèle MOC3041, associé à un triac et une résistance, il n'en faut pas plus pour obtenir une interface secteur isolée et ne produisant aucun parasite lors des commutations arrêt / marche. Pas belle, la vie ?

Alimentation
L'alimentation du PIC doit être comprise entre 3,3 V et +5 V, vous avez le choix des armes.

Logiciel du PIC

Code source (format MikroPascal Pro V2.50) et fichier binaire compilé *.hex disponible dans l'archive suivante.
Télérupteur 002 - 12F675 (18/07/2010)
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuit imprimé

Non réalisé.

Corrections et remarques

18/07/2010
- Ajout sortie complémentée Out2, qui présente un état logique inverse de la sortie principale Out1.
- Ajout sortie impulsionnelle Out3, qui fournit une impulsion de 200 ms au moment où la sortie Out1 s'active.
- Ajout sortie impulsionnelle Out4, qui fournit une impulsion de 200 ms au moment où la sortie Out1 se désactive.