Dans ce projet, nous allons interfacer un relais avec le microcontrôleur PIC PIC16F877A. Le relais est un dispositif mécanique permettant de contrôler les appareils à haute tension et à courant élevé « ON » ou « OFF » à partir de niveaux de tension inférieurs. Relais assure l' isolation entre les deux niveaux de tension et il est généralement utiliser pour commander des appareils à courant alternatif. Des relais mécaniques aux relais statiques, il existe différents types de relais disponibles en électronique. Dans ce projet, nous utiliserons un relais mécanique.
Dans ce projet, nous ferons les choses suivantes:
- Nous allons interfacer un commutateur pour l'entrée de l'utilisateur.
- Contrôlez une ampoule 220V AC avec relais 5V.
- Pour contrôler le relais, nous utiliserons le transistor BC547 NPN et le transistor sera contrôlé à partir du PIC16F877A. Une led notifiera la condition du relais ON ou OFF.
Si vous êtes nouveau sur PIC Microcontroller, commencez par Getting Started with PIC Microcontroller.
Composant requis:
- PIC16F877A
- Cristal 20Mhz
- 2 pièces 33pF en céramique
- 3 résistances 4.7k
- Résistance 1k
- 1 LED
- Transistor BC547
- Diode 1N4007
- Relais cubique 5V
- Ampoule AC
- Planche à pain
- Fils pour connecter les pièces.
- Adaptateur 5V ou toute source d'alimentation 5V avec des capacités de courant d'au moins 200mA.
Relais et son fonctionnement:
Le relais fonctionne de la même manière que le commutateur typique. Les relais mécaniques utilisent un aimant temporaire fabriqué à partir d'une bobine électromagnétique. Lorsque nous fournissons suffisamment de courant à travers cette bobine, elle est devenue sous tension et tire un bras. Pour cette raison, le circuit connecté à travers le relais peut être fermé ou ouvert. L'entrée et la sortie n'ont pas de connexions électriques et isolent donc l' entrée et la sortie. En savoir plus sur le relais et ses constructions ici.
Les relais peuvent être trouvés dans différentes plages de tension comme 5V, 6V, 12V, 18V, etc. Dans ce projet, nous utiliserons un relais 5V car notre tension de fonctionnement est de 5 Volts ici. Ce relais cubique 5V est capable de commuter une charge de 7A à 240VAC ou une charge de 10A à 110VAC. Cependant, au lieu de cette charge énorme, nous utiliserons une ampoule 220VAC et la commutons à l'aide du relais.
C'est le relais 5V que nous utilisons dans ce projet. Le courant nominal est clairement spécifié pour deux niveaux de tension, 10A à 120VAC et 7A à 240VAC. Nous devons connecter une charge à travers le relais inférieure à la valeur spécifiée.
Ce relais a 5 broches. Si nous voyons le brochage, nous pouvons voir-
Les L1 et L2 sont la broche de la bobine électromagnétique interne. Nous devons contrôler ces deux broches pour tourner le relais « ON » ou « OFF ». Les trois broches suivantes sont POLE, NO et NC. Le pôle est connecté à la plaque métallique interne qui change sa connexion lorsque le relais s'allume. Dans des conditions normales, POLE est court-circuité avec NC. NC signifie normalement connecté. Lorsque le relais s'allume, le pôle change de position et se connecte au NO. NO signifie normalement ouvert.
Dans notre circuit, nous avons fait la connexion de relais avec transistor et diode. Le relais avec transistor et diode est disponible sur le marché en tant que module de relais, donc lorsque vous utilisez le module de relais, vous n'avez pas besoin de connecter son circuit de pilotage (transistor et diode).
Le relais est utilisé dans tous les projets domotiques pour contrôler les appareils électroménagers AC.
Schéma:
Le circuit complet pour connecter le relais avec le microcontrôleur PIC est donné ci-dessous:
Dans le schéma ci-dessus pic16F877A est utilisé, où sur le port B la LED et le transistor sont connectés, qui sont en outre contrôlés en utilisant le commutateur TAC à RBO. Le R1 fournit un courant de polarisation au transistor. R2 est une résistance pull-down, utilisée à travers un interrupteur tactile. Il fournira la logique 0 lorsque l'interrupteur n'est pas enfoncé. La 1N4007 est une diode à pince, utilisée pour la bobine électromagnétique du relais. Lorsque le relais s'éteint, il y a des chances pour des pointes de haute tensionet la diode le supprimera. Le transistor est nécessaire pour piloter le relais car il nécessite plus de 50 mA de courant, que le microcontrôleur est incapable de fournir. Nous pouvons également utiliser ULN2003 à la place du transistor, c'est un choix plus judicieux si plus de deux ou trois relais sont nécessaires pour l'application, vérifiez le circuit du module de relais. Le voyant à travers le port RB2 notifiera «le relais est activé ».
Le circuit final ressemblera à ceci-
Vous pouvez apprendre à contrôler le relais avec Arduino ici, et si vous êtes vraiment intéressé par le relais, vérifiez tous les circuits de relais ici.
Explication du code:
Au début du fichier main.c, nous avons ajouté les lignes de configuration pour pic16F877A et défini les noms de broches sur PORTB.
Comme toujours, nous devons d'abord définir les bits de configuration dans le microcontrôleur pic, définir certaines macros, y compris les bibliothèques et la fréquence du cristal. Vous pouvez vérifier le code pour tous ceux dans le code complet donné à la fin. Nous avons fait RB0 comme entrée. Dans cette broche, le commutateur est connecté.
#comprendre
Après cela, nous avons appelé la fonction system_init () où nous avons initialisé la direction des broches et également configuré l'état par défaut des broches.
Dans la fonction system_init (), nous verrons
void system_init (void) { TRISBbits.TRISB0 = 1; // Définition de Sw comme entrée TRISBbits.TRISB1 = 0; // réglage de la LED comme sortie TRISBbits.TRISB2 = 0; // réglage de la broche du relais comme LED de sortie = 0; RELAIS = 0; }
Dans la fonction principale , nous vérifions constamment la pression de l'interrupteur, si nous détectons la pression de l'interrupteur en détectant la logique haute à travers RB0; nous attendons un certain temps et voyons si l'interrupteur est toujours enfoncé ou non, si l'interrupteur est toujours enfoncé, nous inverserons l'état de la broche RELAY et LED.
void main (void) { system_init (); // Le système se prépare while (1) { if (SW == 1) {// commutateur est enfoncé __delay_ms (50); // délai anti-rebond si (SW == 1) {// commutateur est toujours enfoncé LED =! LED; // inverser l'état de la broche. RELAIS =! RELAIS; } } } retour; }
Le code complet et la vidéo de démonstration pour cette interface de relais sont donnés ci-dessous.