GPIO du Raspberry Pi. Les E/S fonctionnent en 3,3V. Pour nos besoins, le courant ne devra pas dépasser 10mA par pins.
La carte est prévue pour aller dans un boitier DIN Raspberry pi. Une petite vitre est prévu en façade de ce boitier. Idéal pour mettre un afficheur. Mais pour rester simple, la carte n’aura que 2 LEDs RVB.
Les LEDs RVB sont à cathode commune pour qu’elle s’allume à l’état haut des sorties du Raspberry Pi. Pour s’allumer les LEDs demandant moins de 20mA de courant chacune, 3 résistances de 180 ohms ont été utilisées (1 par couleur).
Sur les compteurs électriques récents on trouve une sortie téléinfo. Cette sortie est utilisée pour brancher des délesteurs, par exemple pour un chauffe-eau. Mais l’avantage de la téléinfo est qu’elle donne accès à plein d’informations, tel que la consommation instantanée, Intensité souscrite…
La documentation Enedis présente la téléinfo comme un signal série de 9600 Bauds. Donc il peut être facilement traité sur l’entrée Rx du Raspberry Pi. Il faut néanmoins adapter le signal.
Lorsque l’on regarde la caractéristique du signal, on voit que le signal est globalement très bruité. Les niveaux sont très variables et dans le pire des cas l’entrée doit supporter le branchement du 230V (par accident).
Pour protéger l’entrée du Raspberry Pi, le mieux est d’utiliser un Optocoupleur avec une entrée AC (pas de sens de branchement). L’optocoupleur SFH620A est tout adapté. Sa tension d’isolement est de 5300V, donc il pourra aisément protéger le Raspberry Pi.
Pour la liaison de la téléinfo, la documentation d’Enedis conseille d’avoir une impédance comprise entre 500Ω et 2kΩ. L’objectif étant de commuter le mieux à bas courant, le SFH620A-3 est l’optocoupleur qui conduit le plus vers les 1mA. Donc en mettant une résistance de 1kΩ, on aura:
Ce courant sera suffisant pour commander l’optocoupleur et éviter d’avoir trop de parasites sur la ligne. De plus, si un deuxième récepteur est branché avec lui aussi une résistance de 1kΩ, on aura une résistance vue par le compteur de 500Ω. Ce qui est toujours correct du point de vue de la documentation d’Enedis.
Si néanmoins ce n’est pas suffisant (longueur du câble de téléinfo trop long), ou s’il y a trop de parasite sur la ligne. La valeur de la résistance pourra être diminuée. Et inversement si on souhaite moins consommer de courant on peut augmenter la résistance jusqu’à 2kΩ. Mais dans ce cas, il y a un risque de louper des trames de Téléinfo.
Dans l’objectif de diminuer les parasites, l’ajout d’un condensateur en parallèle va permettre de couper les hautes fréquences. Ce condensateur est accessoire. Donc pour calculer grossièrement sa valeur. Le signal étant de 9600 bauds (environ 1,2kHz) on rend la coupure négligeable en calculant une fréquence de coupure à 10kHz.
On prendra donc un condensateur de 4,7nF (normalisé).
Pour la connexion de l’optocoupleur au Raspberry Pi, on utilise une résistance Pull-Up de 10k.
Le fil pilote est un système permettant de commander un système de chauffage. Plusieurs modes sont définis pour différents scénarios selon la météo et votre présence. Toutes les tensions sont en 230V~, soit 325V pour les alternances positives et -325V pour les alternances négatives.
Afin de proposer plus de flexibilité, certain radiateur/thermostat étende les ordres que l’on peut avoir.
Pour donner des ordres sur le fil pilote, il faut pouvoir envoyer des alternances positive, et des alternances négative séparément. Le fil pilote gérant des tensions de 230V~ l’utilisation d’un optocoupleur est nécessaire pour éviter d’endommager le Raspberry Pi.
L’optocoupleur MOC3043M associé à une diode 1N4007 est un bon choix pour commander une partie de l’alternance du 230V~. La diode 1N4007 (1kV) est surdimensionné dans notre cas. Une diode 1N4004 (400V) aurait suffi.
Avec 2 optocoupleurs, il est donc possible de créer une sinusoïde complète, à la tension de seuil prêt des triacs de l’optocoupleur, et des diodes de redressement. Les triacs en sortie des optocoupleurs se comportent comme des interrupteurs. Les diodes de redressement elles servent à envoyer uniquement l’alternance positive ou négative.
Si on se réfère au schéma. Les optocoupleurs U11, U13, et U15 commanderont l’alternance positive. C’est-à-dire l’alternance A sur le graphique. À l’inverse, les optocoupleurs U12, U14, et U16 commanderont l’alternance négative, représenté par l’alternance B sur le graphique.
Ordre | U11/U13/U15 | U12/U14/U16 |
---|---|---|
Confort | 0 | 0 |
Éco | 1 | 1 |
Hors gel | 0 | 1 |
Arrêt | 1 | 0 |
Le tableau est un exemple de commande pour le fil pilote 1. Seules les 4 commandes standard sont définis.
Pour les commandes étendues, il suffit de temporiser la commande de U11 et U12. Donc commander pendant 3 ou 7 secondes les deux optocoupleurs à 1, par période de 5 minutes.
Le fil pilote n’a pas vraiment de spécification, mais plus des bonnes pratiques entre constructeurs. Dans notre montage, il faudra s’assurer que l’optocoupleur puisse supporter le courant consommé par les récepteurs du fil pilote. Par précaution, un fusible de 800mA est présent pour éviter de détruire les optocoupleurs.
Pour être commandé, l’optocoupleur MOC3043M a besoin d’un courant de 5mA. Alors que les optocoupleurs MOC3041M/MOC3042M ont besoin de plus de courant (et donc consomme plus). Pour le courant nominal, il faut une résistance de 680 ohms.
La réception du fil pilote a été le plus compliqué à cause de la tension de 230V~. Cela donne en effet des alternances positives ou négatives de valeur absolue max de 325V.
À cause de la demi-alternance, il n’est pas possible de mettre un transformateur pour adapter le signal. La solution la plus simple est de commander encore une fois un optocoupleur (dû à la tension) avec une simple résistance. Le seul problème sera que la résistance devra dissiper un peu de puissance et qui se traduit donc par une perte.
C’est à ce moment où il faut choisir un optocoupleur consommant très peu de courant en entrée, pour limiter la puissance (). Le mieux est donc d’utiliser un optocoupleur SFH617A-4. C’est celui de cette famille qui conduit le mieux à 1mA de courant.
Le Raspberry Pi recevra donc des impulsions lorsqu’une alternance sera reçue. Ces impulsions doivent être assez longues pour être détectées.
L’optocoupleur conduisant de 1 à 10mA, on peut en déduire la plage de puissance nécessaire pour la résistance (). Si on considère que la résistance ne doit pas dissiper plus de 1W (et en se prenant une marge).
On supposera donc un courant de 3mA, ce qui suffi pour l’optocoupleur.
En prenant la valeur normalisée et en reprenant une marge on tombe sur une résistance de 120kΩ en 1W.
Pour connecter l’optocoupleur au Raspberry Pi, on utilise une résistance Pull-Up de 10k. C’est ce qui donne le signal de 3,3V constant, et lorsque qu’une alternance du fil pilote est reçu l’optocoupleur conduit et donne une tension nulle. Au niveau du Raspberry Pi, il suffit de détecter ces changements de fronts.
Cette fonction permet de mesurer n’importe quel courant alternatif passant pas un câble. Elle est idéale pour mesurer le courant d’entrée au niveau d’un compteur électrique ou de panneaux solaires, et ainsi calculer la puissance consommée.
Pour mesurer le courant, on utilise des pinces ampèremétriques SCT-013-000 prévu pour mesurer 100A max. Cette pince mesure de 0 à 100A en entrée et 0 à 50mA en sortie.
Communément, on trouve beaucoup de montage de cette pince sur Arduino. Elle est principalement utilisée pour analyser la sinusoïde. Pour cette fonction nous voulons avoir une mesure ponctuelle. C’est-à-dire sans demander au Raspberry Pi de capturer la totalité de la sinusoïde pour l’analyser. Cela demanderait au Raspberry Pi trop de mesure. Il n’est pas fait pour cela. Un Arduino dans ce cas-là est plus adapté.
Pour ne pas à avoir à se soucier de la sinusoïde, il faut donc mesurer une tension continue avec un CAN. C’est pour cela que le MCP3424 est présent. Il permettra de mesurer 4 tensions continues. Afin de ne pas avoir à adapter le niveau du signal I2C, le composant est alimenté en 3,3V au lieu de 5V. Cela contraindra les tensions à mesurer de ne pas dépasser 3,6V (3,3V + une marge de 0,3V donnée par le composant).
Mais il faut convertir le courant fourni par la pince ampèremétrique en tension continue exploitable. La raison d’avoir choisi une pince qui fourni un courant et non une tension est que la tension que l’on mesure est ajustable. En effet, une pince qui fournit une tension a une gamme de mesure fixe de 0 à 1V. Alors qu’avec la pince de courant, les résistances R31, R32 et R33 permettent d’obtenir une gamme de mesure de 0 à 3,3V.
Pour nos besoins, nous ne mesurerons pas jusqu’à 100A avec une pince. On peut donc augmenter la gamme de mesure pour obtenir plus de précision. Mais au cas où la pince mesurerait 100A, il ne faut pas détruire l’optocoupleur. Si l’on regarde sa documentation, on voit qu’il accepte une surtension ( + 0,3V). On peut donc en théorie avoir une gamme de mesure de 0 à 3,6V sans endommager le composant.
Donc en prenant une résistance de 51Ω, on obtient une gamme de mesure de 0 à 3,6V. Cette augmentation permettra d’améliorer la précision de la mesure.
Pour obtenir une tension continue, le plus simple est de redresser le signal et de le filtrer. En sortie des diodes de redressements (D31, D32, et D33), le signal obtenu est une simple alternance positive (représenté par le courant sur le schéma). On aurait pu obtenir une double alternance positive avec un pont de diode. Mais dans notre cas, la simple alternance suffit. Même si la double alternance permet d’obtenir une meilleure précision de mesure.
Une fois le signal redressé, il faut le filtrer pour obtenir un signal continu. C’est le rôle des condensateurs (C31, C32, et C33). Ils vont se charger lors des alternances positives, et se décharger avec l’impédance du CAN. (courbe de tension sur le schéma). Grace à la diode, ils ne se déchargeront pas dans la pince de courant.
Pour connaitre l’oscillation entre Umin et Umax, il faut calculer τ (constante de temps du circuit)
En vu de contrôler d’autres éléments, 2 optocoupleurs MOC3043M sont présents pour commander d’éventuel relais. Les relais qui pourront être connectés, ne devront pas dépasser les limites de l’optocoupleur. La tension de contact de relais étant généralement inférieur à 250V, l’optocoupleur MOC3043M (400V) peut être remplacé par son équivalent 250V MOC3031M. La datasheet indique que l’optocoupleur ne peut supporter que des pics de courant d’1A.
Référence | Valeur | Description |
---|---|---|
C1 | 4.7 nF | Condensateur tantal |
C31 | 1000 µF | Condensateur polarisé |
C32 | 1000 µF | Condensateur polarisé |
C33 | 1000 µF | Condensateur polarisé |
C34 | 10 µF | Condensateur polarisé |
C35 | 10N nF | Condensateur plastique |
D1 | 1N4007 | Diode redressement |
D2 | 1N4007 | Diode redressement |
D11 | 1N4007 | Diode redressement |
D12 | 1N4007 | Diode redressement |
D13 | 1N4007 | Diode redressement |
D14 | 1N4007 | Diode redressement |
D15 | 1N4007 | Diode redressement |
D16 | 1N4007 | Diode redressement |
D21 | 1N4007 | Diode redressement |
D22 | 1N4007 | Diode redressement |
D23 | 1N4007 | Diode redressement |
D24 | 1N4007 | Diode redressement |
D25 | 1N4007 | Diode redressement |
D26 | 1N4007 | Diode redressement |
D31 | 1N4148 | Diode de signal |
D32 | 1N4148 | Diode de signal |
D33 | 1N4148 | Diode de signal |
J0 | RPi GPIO | Connecteur Raspberry Pi |
J1 | Bornier | Bornier 2 pôles |
J10 | Bornier | Bornier 5 pôles |
J30 | Jumper | Jumper |
J31 | Jack | Connecteur Jack |
J32 | Jack | Connecteur Jack |
J33 | Jack | Connecteur Jack |
J41 | Bornier | Bornier 5 pôles |
JP41 | Jumper | Jumper |
R1 | 1 kΩ | Résistance traversante |
R2 | 10 kΩ | Résistance CMS 2010 |
R11 | 180 Ω | Résistance CMS 2010 |
R12 | 180 Ω | Résistance CMS 2010 |
R13 | 180 Ω | Résistance CMS 2010 |
R14 | 180 Ω | Résistance CMS 2010 |
R15 | 180 Ω | Résistance CMS 2010 |
R16 | 180 Ω | Résistance CMS 2010 |
R21 | 56 kΩ | Résistance de puissance traversante |
R22 | 56 kΩ | Résistance de puissance traversante |
R23 | 56 kΩ | Résistance de puissance traversante |
R24 | 56 kΩ | Résistance de puissance traversante |
R25 | 56 kΩ | Résistance de puissance traversante |
R26 | 56 kΩ | Résistance de puissance traversante |
R31 | 47 Ω | Résistance traversante |
R32 | 47 Ω | Résistance traversante |
R33 | 47 Ω | Résistance traversante |
R41 | 180 Ω | Résistance CMS 2010 |
R42 | 180 Ω | Résistance CMS 2010 |
Rb1 | 180 Ω | Résistance CMS 2010 |
Rb2 | 180 Ω | Résistance CMS 2010 |
Rg1 | 180 Ω | Résistance CMS 2010 |
Rg2 | 180 Ω | Résistance CMS 2010 |
Rp21 | 10 kΩ | Résistance CMS 2010 |
Rp22 | 10 kΩ | Résistance CMS 2010 |
Rp23 | 10 kΩ | Résistance CMS 2010 |
Rp24 | 10 kΩ | Résistance CMS 2010 |
Rp25 | 10 kΩ | Résistance CMS 2010 |
Rp26 | 10 kΩ | Résistance CMS 2010 |
Rr1 | 180 Ω | Résistance CMS 2010 |
Rr2 | 180 Ω | Résistance CMS 2010 |
U1 | SFH620A-3 | Optocoupleur, Phototransistor Output, AC Input |
U11 | MOC3043M | Optocoupleur, Sortie Triac, Crossing Nul |
U12 | MOC3043M | Optocoupleur, Sortie Triac, Crossing Nul |
U13 | MOC3043M | Optocoupleur, Sortie Triac, Crossing Nul |
U14 | MOC3043M | Optocoupleur, Sortie Triac, Crossing Nul |
U15 | MOC3043M | Optocoupleur, Sortie Triac, Crossing Nul |
U16 | MOC3043M | Optocoupleur, Sortie Triac, Crossing Nul |
U21 | SFH617A-4 | optocoupleur, Phototransistor Output |
U22 | SFH617A-4 | Optocoupleur, Phototransistor Output |
U23 | SFH617A-4 | Optocoupleur, Phototransistor Output |
U24 | SFH617A-4 | Optocoupleur, Phototransistor Output |
U25 | SFH617A-4 | Optocoupleur, Phototransistor Output |
U26 | SFH617A-4 | Optocoupleur, Phototransistor Output |
U30 | MCP3424 | ADC 18 bits, I²C Interface |
U41 | MOC3043M | Optocoupleur, Sortie Triac, Crossing Nul |
U42 | MOC3043M | Optocoupleur, Sortie Triac, Crossing Nul |
Comme on peut le voir sur le typon, le nombre de fonctions de la carte a été limité par la place sur la carte.
Voici un schéma de la carte pour spécifier le montage de la carte.