OVPinergy

Fonctions de la carte

OVPinergy Logo

La carte possède plusieurs fonctions utiles pour la gestion d’énergie de sa maison.

Voici le schéma de la carte:

OVPinergy Schema

Détail des fonctions

Pour l’implémentation de toutes ces fonctions, il faut avoir en tête les caractéristiques du GPIO du Raspberry Pi. Les E/S fonctionnent en 3,3V. Pour nos besoins, le courant ne devra pas dépasser 10mA par pins.

Affichage état

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).

Lecture téléinfo

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:Io=Uo-UdRo=5V-1,65V1kΩ=3,35mA

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.

fc=12πRC

C=12πRfc

C=4,8nF

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.

Commande fil pilote

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.

fil_pilote_commande_opto

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.

OrdreU11/U13/U15U12/U14/U16
Confort00
Éco11
Hors gel01
Arrêt10

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.

Réception fil pilote

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 (P=UI). Le mieux est donc d’utiliser un optocoupleur SFH617A-4. C’est celui de cette famille qui conduit le mieux à 1mA de courant.

fil_pilote_reception

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 (P=325×[1..10]·10-3). Si on considère que la résistance ne doit pas dissiper plus de 1W (et en se prenant une marge).

I=PU

I=1325=3,08mA

On supposera donc un courant de 3mA, ce qui suffi pour l’optocoupleur.

R=UI=3253·10-3=108kΩ

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.

Mesure ampèremétrique (pince)

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 (VDD + 0,3V). On peut donc en théorie avoir une gamme de mesure de 0 à 3,6V sans endommager le composant.

R=UI=3,650·2·10-3=51

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.

mesure_amp

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)

τ=RC=51×1·10-3=51ms=19,6Hz

Commande contacteur

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éalisation

RéférenceValeurDescription
C14.7 nFCondensateur tantal
C311000 µFCondensateur polarisé
C321000 µFCondensateur polarisé
C331000 µFCondensateur polarisé
C3410 µFCondensateur polarisé
C3510N nFCondensateur plastique
D11N4007Diode redressement
D21N4007Diode redressement
D111N4007Diode redressement
D121N4007Diode redressement
D131N4007Diode redressement
D141N4007Diode redressement
D151N4007Diode redressement
D161N4007Diode redressement
D211N4007Diode redressement
D221N4007Diode redressement
D231N4007Diode redressement
D241N4007Diode redressement
D251N4007Diode redressement
D261N4007Diode redressement
D311N4148Diode de signal
D321N4148Diode de signal
D331N4148Diode de signal
J0RPi GPIOConnecteur Raspberry Pi
J1BornierBornier 2 pôles
J10BornierBornier 5 pôles
J30JumperJumper
J31JackConnecteur Jack
J32JackConnecteur Jack
J33JackConnecteur Jack
J41BornierBornier 5 pôles
JP41JumperJumper
R11 kΩRésistance traversante
R210 kΩRésistance CMS 2010
R11180 ΩRésistance CMS 2010
R12180 ΩRésistance CMS 2010
R13180 ΩRésistance CMS 2010
R14180 ΩRésistance CMS 2010
R15180 ΩRésistance CMS 2010
R16180 ΩRésistance CMS 2010
R2156 kΩRésistance de puissance traversante
R2256 kΩRésistance de puissance traversante
R2356 kΩRésistance de puissance traversante
R2456 kΩRésistance de puissance traversante
R2556 kΩRésistance de puissance traversante
R2656 kΩRésistance de puissance traversante
R3147 ΩRésistance traversante
R3247 ΩRésistance traversante
R3347 ΩRésistance traversante
R41180 ΩRésistance CMS 2010
R42180 ΩRésistance CMS 2010
Rb1180 ΩRésistance CMS 2010
Rb2180 ΩRésistance CMS 2010
Rg1180 ΩRésistance CMS 2010
Rg2180 ΩRésistance CMS 2010
Rp2110 kΩRésistance CMS 2010
Rp2210 kΩRésistance CMS 2010
Rp2310 kΩRésistance CMS 2010
Rp2410 kΩRésistance CMS 2010
Rp2510 kΩRésistance CMS 2010
Rp2610 kΩRésistance CMS 2010
Rr1180 ΩRésistance CMS 2010
Rr2180 ΩRésistance CMS 2010
U1SFH620A-3Optocoupleur, Phototransistor Output, AC Input
U11MOC3043MOptocoupleur, Sortie Triac, Crossing Nul
U12MOC3043MOptocoupleur, Sortie Triac, Crossing Nul
U13MOC3043MOptocoupleur, Sortie Triac, Crossing Nul
U14MOC3043MOptocoupleur, Sortie Triac, Crossing Nul
U15MOC3043MOptocoupleur, Sortie Triac, Crossing Nul
U16MOC3043MOptocoupleur, Sortie Triac, Crossing Nul
U21SFH617A-4optocoupleur, Phototransistor Output
U22SFH617A-4Optocoupleur, Phototransistor Output
U23SFH617A-4Optocoupleur, Phototransistor Output
U24SFH617A-4Optocoupleur, Phototransistor Output
U25SFH617A-4Optocoupleur, Phototransistor Output
U26SFH617A-4Optocoupleur, Phototransistor Output
U30MCP3424ADC 18 bits, I²C Interface
U41MOC3043MOptocoupleur, Sortie Triac, Crossing Nul
U42MOC3043MOptocoupleur, 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.

board

Voici un schéma de la carte pour spécifier le montage de la carte.

schema_board
Par Jérémy HERGAULT, le .