Compteur horaire LCD & Radio avec PIhoracont_0C 12F629

1 Les principes
1.1 La base
1.2 Les anciens modèles électromécaniques
1.3 Modèle radio (433.92 Mhz)
2 Schéma général
2.1 Les caractéristiques de courants
2.2 Les constantes de temps
3 Les alimentations et le basculement
3.1 Les condensateurs chimiques
3.2 Les mystères des faibles courants
4 Le display
5 La radio
6 Le PIC et son programme assembleur
7 Conclusions

Si vous arrivez directement sur cette page par un moteur de recherche, vous pouvez avoir accès à la table des matières et à chaque article, en page d'accueil.    L'accès se fait par l'un des deux liens en tête de colonne de droite ----->

Les questions correctes en fin d'un article recevront toujours une réponse, mais pas les questions par "CONTACTER L'AUTEUR" qui n'auront pas de REPONSE (car je suis obligé de répondre par mail).

A voir aussi  en colonne de droite (lien direct) ------> les articles "BONJOUR" ainsi que "INFOS rapides"...
Il est déconseillé d'indiquer dans les commentaires ses coordonnées (mail, adresse ou téléphone).
Ce blog est modéré et vous pouvez demander simplement en tête de question à ce que vos informations restent confidentielles si nécessaire. Rien ne sera publié, mais ma réponse sera faite sur l'article correspondant (et non par mail).


Avant propos

Cet article décrit un compteur horaire électronique à base d'un petit PIC12F 629. Un compteur horaire traditionnel enregistre les temps de fonctionnement d'équipements, et principalement celui des moteurs.

Cet article fait suite aux deux autres articles déjà publiés et consacrés au PIC12F629 et aux petites tracasseries rencontrées. (Fuite des Chimiques et SLEEP mode PIC 12F629)

(L'utilisation d'un autre PIC que le 12F629 est naturellement possible, mais pourrait poser des problèmes de consommation sur la petite pile de sauvegarde des données.
Cet article fait aussi référence à l'article sur une alimentation sans transformateur, mais également à l'article sur un display série, sur le Bug du fichier de LINK du PIC 12F629, ainsi qu'à l'article sur les condensateurs chimiques déjà cité.

Le PIC 12F629 est un tout petit PIC 8 broches très bon marché.
(Pour aborder l'aspect prix de revient, le LCD utilisé est celui de mon fax qui avait pris un coup de foudre mais dont le LCD CM160211 de DATA IMAGE affichait encore correctement. Il a été modifié en mode série et la seule difficulté a été de connecter le câble plat d'origine avec un micro connecteur au pas de 1mm. C'est très fin surtout pour le démontage du connecteur, mais aussi pour souder et faire le CI, mais c'est possible !)
(Dans un cas général n'importe quel LCD 2 lignes conviendra)

L'électronique apportera en plus du temps de fonctionnement qui est la fonction de base, le nombre de démarrages, ainsi que le calcul d'une moyenne glissante sur 255 démarrages au maximum, mais la nouveauté de l'émission radio des données à 2400 bps .

Le challenge est donc de faire un affichage sur LCD, mais surtout de faire une émission radio des données, d'avoir un switch (Pour sauvegarde exceptionnelle à la demande dans la zone EEPROM et recharger à partir de l'EEPROM). Une sauvegarde standard est en place tous les x démarrages.

Le switch permettra aussi le paramétrage de la remise à zéro, de l'adresse radio et du nombre de démarrages pour le calcul de la moyenne glissante.
C'est beaucoup de choses pour seulement 6 I/O mais c'est possible avec quelques fonctions doubles entrées/sorties avec seulement 1K mémoire programme.

On conviendra seulement que les temps seront issus de l'horloge interne (avec OSCAL) et que la précision est suffisante, car ce qui compte dans ces appareils, ce sont les temps de fonctionnement pour la maintenance préventive, notamment les graissages mais aussi le nombre de démarrages qui pourra être utilisé en complément pour les changements de roulements, et également pour indiquer une fréquence de mise en marche/arrêt anormale (Cas d'un surpresseur par exemple).

Cette réalisation n'est pas très conséquente en termes de matériel et de logiciel, mais fait appel à des éléments très différents de ceux utilisés jusqu'à présent,  notamment l'aspect faible énergie et alternance de type d'alimentation pile ou secteur. Le projet a été voulu avec une petite pile CR2032 et le principe en dépend complètement.

Un ensemble de deux piles R6 sans alimentation secteur aurait été possible avec une émission radio seulement toutes les 8 ou 16 secondes pour une douzaine d'années. Mais il fallait de toutes façons la présence du secteur pour compter le temps de la mise sous tension... Alors pourquoi s'en priver ? Ce sont des choix ! Dans cette hypothèse le LCD n'aurait pas pu être alimenté en permanence !
Alors que faire d'un montage alimenté en permanence en 230V et d'une autre entrée 230 V  représentant la donnée à comptabilser ? Ce serait un peu bizare !

1 Les principes

1.1 La base

Les compteurs horaires servent à mesurer le temps de fonctionnement des moteurs ou installations diverses, n'étant sous tension que le même temps que l'appareillage lui même.
Ils mesurent donc le temps de mise sous tension d'un appareil ou équipement quelconque. (Le courant ou la puissance ne sont pas pris en compte). C'est un simple cumul du temps qui va permettre d'assurer une maintenance préventive pour éviter des problèmes en cours de fonctionnement, ou de détecter des anomalies dans la fréquence d'utilisation d'un moteur.

En général ces appareils sont prévus pour les moteurs dont la puissance est toujours parfaitement connue et la charge assez constante (Pompes par exemple).
Cependant, il est tout à fait intéressant de placer cet appareil sur la chaudière, pour comptabiliser le fuel consommé (prendre l'information sur l'électrovanne) son "frigo" ou congélateur (Attention cependant aux courants permanents pour le chauffage des joints !!!)

La règle est réellement présence ou absence du secteur. Il n'y a pashoracont_2 de discrimination au niveau du courant. C'est à vous de placer judicieusement l'appareil. En général ces appareils se placent après un contacteur électromécanique.
(Attention aux relais "statiques" dont les fuites pourraient suffire à alimenter un tel appareil. Mesure effectuée sur le modèle en photo =7 mA !!!).
Vérification de dernière seconde...7mA de fuite sont suffisants pour que l'appareil fonctionne parfaitement !!!

Le dispositif peut être monté dans une prise mâle / femelle, dans le cas ou c'est une prise standard 230V alimentée par intermittence (Cas d'un petit groupe électropompe avec prise, comme dans le cas de ma réalisation).
Tout montage en armoire est naturellement plus conventionnel, et seul le 230V de présence ou absence est nécessaire. Une petite pile CR2016 ou 2032 assurera le maintien des informations durant l'absence du secteur !

Des essais à 127V confirment l'énergie suffisante pou rl'alimenter. A 50V il y a encore assez d'énergie, mais le display devient très pâle et les temps d'établissement de la visu sont allongés.

1.2 Les anciens modèles électromécanihoracont_1ques

Initialement c'était un petit moteur asynchrone qui actionnait un totalisateur.
Suivant les fréquences réseau, les modèles sont différents puisqu'ils sont le plus souvent en 50 Hz ou 60 Hz. C'est donc deux références à gérer tant en fabrication que dans les usines où il y a parfois les deux réseaux (Fabricants de matériels pour les États-Unis par exemple) !
Il faut donc passer pour relever visuellement ces équipements et noter.
Le principe est fiable (aux erreurs de lecture près) mais il faut se déplacer pour effectuer les relevés. Le plus souvent ces relevés se réalisent à la semaine ou mensuellement, mais c'est assez pénible à gérer.

Ces modèles sont le plus souvent mono tension 24, 48, 110, 230 (Parfois 400V, utile pour les moteurs montés en triangle sans neutre sorti).

1.3 Modèle radio (433.92 Mhz)

Ces modèles radio n'existent pas encore (à ma connaissance !), mais c'est l'occasion d'y penser…

La partie réception récupèrera les données en série type RS232 à 2400 bps pour une porteuse à 433.92 MHz.

Naturellement un des gros problèmes attachés à cette nouvelle fonctionnalité est le protocole retenu qui différera d'un fabricant à un autre…
C'est l'éternelle protection industrielle qui prend le dessus au détriment des utilisateurs.

Alors en ce qui me concerne, je crois qu'il faut choisir le plus simple qui est toujours le meilleur.
Ainsi j'ai choisi depuis longtemps un protocole simple qui est le suivant :

SYN, STX, ADR, dhoracon7onnées, CR,LF

Ces données peuvent être lues par n'importe quel appareil RS232, ou adaptations pour les PC portables ou peut-être des convertisseurs USB/BLUETOOTH ?

Un modèle radio présente des avantages indéniables, même si je considère que les anciens modèles ont pourtant fait leurs preuves !

Cet appareil est utile pour les statistiques au niveau familial, car il donne plus d'éléments utiles comme le nombre de démarrages et une moyenne glissante. (La partie radio n'est pas obligatoire et peut être omise sans poser le moindre problème au niveau programme)
 
Mais il serait encore plus intéressant en industrie qui trouvera là un moyen simple et rapide de collecte d'informations complètes.
Dans les avantages ont peut citer naturellement l'envoi par radio des informations de temps de mise sous tension. Outre cette valeur incontournable, on ajoutera le nombre de démarrages cumulés.
Des valeurs de moyennes glissantes sont également calculées et affichées, mais l'affichage est "tassé" à cause du peu de place sur le LCD et ces trois valeurs principales sont permanentes et à la fois visualisées et transmises par radio.
L'inconvénient majeur est la nécessité d'être en fonctionnement pour avoir les informations.

Chaque appareil peut être configuré pour environ 140 adresses différentes (Affichables sur 1 caractère ASCII, et transmises aussi par radio toutes les 4 secondes, ce qui permet de gérer un parc complet de moteurs).

Les valeurs mesurées sont gardées en RAM et sauvées systématiquement toutes les 50 mises sous tension (MST) en EEPROM (Nombre Paramétrable). Une opération ponctuelle de sauvegarde est également possible en cours de fonctionnement pour faire un point zéro.
Ces valeurs peuvent être ainsi rechargées si on retire la pile pour son échange et que l'on réinitialise l'appareil.

Les compteurs horaires électromécaniques ont habituellement 4 digits.

Dans notre cas ce sera 6 digits pour le temps cumulé en heures, avec en plus les minutes et les secondes.

(Les secondes sont surtout là pour indiquer le bon fonctionnement, mais participent tout de même par les reports aux calculs des temps cumulés, mais pas pour le calcul des moyennes).

La visualisation du nombre de démarrages sur 6 digits également ainsi que la moyenne en heures (maxi 99 heures) minutes et secondes.

Nota :
L'adresse utilisée est également affichée sur 1 caractère ASCII en tête de ligne 1 du display.
La valeur du paramètre de nombre de démarrages utilisé pour le calcul de la moyenne glissante est également affichée (sur 1 octet : valeur binaire +0x31) juste après l'adresse radio.

2 Schéma généHORACON1ral

Ce schéma qui parait un peu touffu à cause de vieux programmes est relativement simple.

Le PIC est toujours alimenté par C3 chargé à la tension régulée moins 0.4V  soit 4.6 V, ou  par celle de la pile moins 0.4V soit 2.6V.

Tous les courants passent par des diodes pour éviter tous les retours (et consommations parasites).

Le display série a besoin de 4 signaux seulement (Mode commande ou data : DIS/RS, Validation : ENB, CLOCK et DATA série).
Voir l'article sur la modification d'un display // en display série.

Toutes les sorties de commandes display sont fixées en potentiel à la masse par 4.7 M, c'est assez élevé mais nécessaire pour le passage en mode SLEEP.

 (Toutes les sorties sont commutées en entrées tri-state juste avant le passage en SLEEP, et doivent être fixées en potentiel pour éviter les surconsommations).

Au niveau de la tension de détection secteur, c'est la diode D6 qui véhicule l'information de "présence tension".
Cette tension est filtrée au srict minimum (C2 de 1µF imposé par le régulateur) et simplemeHORACON2nt divisée par un pont 47K 470K à la masse. Un condensateur plus important retarderait beaucoup trop l'arrivée du signal "absence secteur".
(En basculement sur pile c'est R5 de 470K qui fixera le potentiel à la masse).

La dernière I/O GPIO1, concerne le switch associé à la commande radio. Cette sortie GPIO1 du signal de commande pour la radio est commutée en entrée toutes les secondes lors du fonctionnement pour tester un appui éventuel sur le switch.
(Cet appui devra durer au pire 1 seconde pour être certain de la prise en compte)

Même si il y avait appui sur le switch, le programme utilise cette sortie GPIO1 pour générer le signal radio RS232 à 2400 bps sans perturbations.
C'est la diode D2 qui dérive la partie de courant à ces utilisations qui ont toujours lieu seulement lorsque l'appareil est sous la tension secteur.

J'avais prévu de gérer la tension V0 du LCD sur le display lui-même, mais pour que tout le monde puisse s'y retrouver (Voir Article sur le display Série), je l'ai réalisé sur le circuit général d'autant que cela assure le back up en cas de problème sur ce display.
(Les composants ne seront donc à monter que sur l'un ou l'autre des montages et de préférence celui-ci)

Le condensateur C8 permet de terminer "proprement" l'affichage et la transmission radio à un caractère entier. Cependant les valeurs de tous les condensateurs chimiques sont importantes, car un excès conditionne aussi l'opposé, lors des mises sous tension en retardant la montée effective des tensions mais aussi en "arrondissant" la montée de celles-ci.
Tous les condensateurs ont une action réciproque dans le partage de l'énergie, et c'est certainement ce point qui parait le moins évident.

Par précaution d'énergie, la dernière trame et le dernier affichage seront systématiquement abortés si nécessaire, pour garantir le passage rapide dans la boucle d'analyse "présence secteur" et la mise en SLEEP impérieuse du processeur.

Ce passage en mode SLEEP est réellement un enjeu important pour la pérennité du montage, et ne peut souffrir le risque d'être manqué.

Une particularité importante a été découverte un peu par hasard, qui est le maintien extraordinaire de la tension sur le PIC (en mode SLEEP) en l'absence de Pile. (Bien entendu aucun voltmètre ne doit être installé sous peine de modifier fortement les consommations).
J'ai ainsi procédé par étapes successives en regardant si les valeurs au displaC2_C3_100_F_horacont1y changeaient par rapport à la dernière coupure. J'ai pu voir qu'après environ 1 heure sans énergie, le PIC avait gardé les données !
Ce point s'est manifesté par le loupé systématique de la première mise sous tension.

En corrollaire, une mauvaise mise hors tension peut provoquer d'autres problèmes ci contre (courbe rouge)  On voit ici que tous "les gros consommateurs" de courant n'ont pas terminé leur travail et que la pile est en train de perdre son âme...en fournissant un courant qu'elle ne peut assumer pleinement. (Pour les essais c'est une pile CR2016 seulement)
Ce point est capital car la tension baisse en dessous de 2 Volts à cause de la résistance interne de la pile, et un plantage du CPU est possible avec ou sans perte des données.

Il est donc nécessaire avant chaque remise sous tension initiale de retirer le strap S4 puis de court-circuiter C3. Celui-ci sera replacé dès la Mise Sous Tension (MST) réalisée et devra être remis en place lorsque l'appareil aura été déconnecté du secteur, car on a plusieurs dizaines de minutes d'autonomie .

Pour confirmation du principe, ce montage est alimenté en permanence, soit par le secteur, soit par pile. La cause profonde est qu'il est impossible en l'absence du nombre potentiel de MST d'écrire les données en EEPROM car celle-ci est limitée en nombre de cycles (1 millions de cycles maxi). Les données sont donc stockées en RAM et cumulées pour un nombre paramétrable, avant d'être écrites en EEPROM.

Ce fonctionnement à courants très faibles est réellement très particulier car tout peut intervenir pour troubler le bon ordre.
C'est une autre façon de raisonner et les voltmètres ou entrées d'oscilloscopes ne sont plus véritablement utiles car ils perturbent beaucoup trop le fonctionnement. La seule règle est la vérification des courants ou la mesure ponctuelle très rapide des tensions.

La partie radio est alimentée avec self et condensateur de découplage pour éviter toute interférence. Il serait peut être possible de l'alimenter directement en 12V non régulé pour gagner un peu en puissance, mais le 12V reste assez mal filtré et …c'est à voir, car il faudrait alors le tamponner avec diode et condensateur !

On citera l'importance cruciale du cavalier double J3, qui permet la mise au point sans risquer la mort par électrocution !
ATTENTION au 230 V . Ce montage peut être dangereux pour les non initiés aussi bien que pour les professionnels. Alors prudence !

Une LED interne rouge témoigne de la présence du secteur.
Une autre LED logée sur le circuit de sérialisation du Display témoigne à distance du bon fonctionnement lors de l'alimentation secteur par des flashes toutes les secondes. C'est simplement le signal DATA du display qui est utilisé à cette fin avec 4.7K (Résistance sur le CI Display) qui donnera un faible courant suffisant pour une LED haut rendement.

L'allumage est bref mais suffisant et n'est actif qu'en présence du secteur (puisque le fonctionnement est rattaché au display)

Cette LED témoigne simplement du bon fonctionnement du processeur. Elle indique également par une variation différente toutes les 4 secondes la modification du temps par l'envoi des deux demi trames radio.

(La transmission radio est réalisée en 2 temps faute de buffer de taille suffisante pour envoyer au total 36 caractères).

La radio émet donc seulement toutes les 4 secondes 2 trames rapprochées. Cela économise un peu l'énergie secteur, mais cela permet surtout à plusieurs équipements identiques de ne pas faire d'interférences et d'avoir une fenêtre d'émission sans un autre appareil en brouillage.

2.1 Les caractéristiques de courants

Sur le circuit imprimé, plusieurs straps ont été prévus pour permettre la mesure des différents courants, car ceux-ci conditionnent la durée de la pile. Vous pouvez au besoin en supprimer les 3/4, mais ils m'étaient nécessaires pour m'assurer du bon déroulement de la mise en sommeil et mesurer également pour les calculs au niveau énergie.

I_S1 courant total demandé avant régulateur et fourni par l'alimentation secteur =1.55mA
I_S2 courant fournit au display =0.720mA sous  4.6V environ (à comparer au courant sous 5V de 1mA)
I_S3 courant à l'usage exclusif du processeur PIC =0.594mA (en mode normal de calcul à 4 MHz INTOSC, mais sous 4.6V)

I_S4 courant fournit par la pile. Ce strap est à conserver car il permet la mise en place de la pile sans aléas de contacts.

Ces courants sont tous des courants "moyens".

On notera les résistances de 4.7 Mégohms (initialement connectées au +VDD), mais qui avaient le gros désavantage de "fabriquer" des consommations en SLEEP.
Elles ont été rattachées à la masse simplement pour fixer le potentiel lors du passage des sorties en mode haute impédance, juste avant de passer en SLEEP. (C'est un peu en contradiction avec le datasheet du PIC mais c'est ainsi que je passe le cap de consommation  < 10nA)
Il n'y a pas de consommation supplémentaire et j'arrive ainsi à moins de 10 nA (Je n'ai pas la possibilité de mesurer le nA !)

La résistance R6 de seulement 100K est une "charge" pour l'alimentation uniquement lorsque le PIC est en mode actif.
(Elle est "déconnectée" par la diode D2 lorsque l'on passe sur pile et l'énergie est issue du condensateur C2 de seulement 1µF, ce qui assure rapidement la détection d'absence secteur).

Son utilité est assortie au switch SW1 qui est "consulté" à chaque boucle. Pour ce faire la sortie est repassée en entrée, et son niveau en l'absence d'appui est donc de "VCC display" soit 4.6V environ. A l'appui ce niveau chute à 0.4 V ce qui sera vu comme un 0 logique.

Une action sur ce switch en cours de dialogue display ou radio n'aura aucune action perturbatrice, et seul le PIC aura à compenser cette légère charge complémentaire si sa sortie est à zéro. Ce système est fait pour compenser le nombre réduit d' I/O et donne satisfaction. Par contre si l'action se prolonge, cela correspondra à l'ordre d'écriture en EEPROM.

NOTA :
Lors du fonctionnement en SLEEP, cette résistance R6 fixe le potentiel à la masse de GPIO1 par les retours de courant au travers du display et de l'émetteur radio alors sans alimentation VCC/VDD.

2.2 Les constantes de temps

Les condensateurs chimiques ont donné beaucoup de soucis par leurs courants de fuite. Cet aspect m'a incité à écrire un article spécifique .

Initialement j'avais pensé vérifier les alternances secteur et en déduire la présence ou non du secteur. C'est un peu plus compliqué que de contrôler un simple niveau, mais comme la place mémoirC2_C3_100_F_horacont1e programme n'est pas "fantastique", j'y ai renoncé.

Pour le fonctionnement il y a lieu de comprendre la méthode de détection d'absence secteur. Celle-ci est assurée par la chute rapide de la tension en sortie de régulateur au niveau de C2.
Ainsi que déjà évoqué, le condensateur C2 de 1µF est "taillé" juste à la limite pour que le régulateur n'oscille pas. (Rappel de l'oscillogramme avec courbe noire cette fois)

On notera tout de suite une contradiction au niveau alimentation, puisque celle-ci devra cesser rapidement pour que la sortie du régulateur baisse rapidement et donne l'information d'absence secteur sur l'entrée GPIO3. (GPIO3 Input only)
Mais il faut aussi que cette alimentation puisse donner l'énergie au processeur, le temps qu'il fasse ses derniers calculs ou envois de données, puisque cela arrivera à n'importe quel instant de la boucle de surveillance.

Pour régler ce problème, c'est par le biais des diodes et condensateurs que cela sera possible. Aussi, il est nécessaire d'adopter les valeurs des condensateurs indiquées et notamment C4, C2 et C3.

Ces valeurs peuvent paraître un peu "étranges" mais répondent parfaitement aux contraintes fonctionnelles citées.
Il faut environ 30 mS pour détecter l'absence secteur depuis l'instant ou la sortie du régulateur commence à descendre jusqu'à 2V. (2 Volts sont considérés comme tension limite pour que le PIC conserve ses capacités fonctionnelles avec certitude).

(J'ai lu, je ne sais plus où, que la RAM aurait seulement besoin de 1.5V pour ne pas perdre la tête ??? à vérifier !)

Il faut relativiser car le secteur n'est plus présent depuis un peu plus longtemps, mais pas beaucoup plus, car le condensateur C4 de l'alimentation secteur initialement prévu à 47 µF a dû être fortement diminué à 4.7µF justement pour permettre d'alimenter "tout le monde" (Comprendre le PIC, le display et la radio) tout en ayant peu de réserve d'énergie (en sortie immédiate du régulateur).

Cependant la réserve d'énergie est tout de même réalisée de façon importante, UNIQUEMENT pour le PIC avec un condensateur C3 de 100µF pour assurer la "roue libre" du programme en cours juste avant de passer en mode veille (SLEEP)
Ce passage en SLEEP est hyper important, car sans cela, la pile pourrait se vider très rapidement, et les tensions pourraient sortir des limites suite à une pilhoracont_down_C8e faible. (Courbe rouge ci-dessus)

Au niveau Display et radio, pour compenser l'absence d'énergie un condensateur de 68 µF a été placé pour que le micro programme du display "se termine proprement", et que la radio finisse correctement également au caractère éventuellement en cours. La durée de transmission radio minimale est d'environ 180 ms à 2400 bps.

La vitesse de transmission est obligatoirement fixe à 2400 bps car celle-ci est générée par programme et non par un registre de sérialisation (interne ou externe sans générateur de bauds)
La courbe ci contre représente la tension aux bornes de C8 dont la constante de temps est d'environ 0.2 Secondes.

La détection d'absence secteur par disparition de la tension reste plus simple que de contrôler en permanence les alternances du secteur, car il faudrait alors décider à partir de combien d'alternances manquantes il faudrait déclarer le secteur disparu ! Une micro coupure serait-elle comptabilisée  ?

D'autre part, travailler en interrupt sur les alternances nécessite aussi une mise en forme de ces signaux, et cela avait été envisagé lors de l'article sur les alimentations sans transformateur, et n'aurait pas coûté beaucoup plus, mais ça aurait été certainement un peu plus compliqué, et le gain en précision de détection par une meilleure anticipation reste très hypothétique.

De toutes façons il faut terminer les travaux en cours, voire les aborter, pour placer au plus vite le processeur en SLEEP, car sans cela la pile serait rapidement "à plat". Pour les calculs réellement impérieux, il n'y a que la comptabilisation des démarrages,  ainsi que le calcul de la moyenne si c'est nécessaire
(le temps se calcule tout seul par les interrupts du timer 0)

Dans l'ordre des valeurs de chimiques, C4 devra être le plus faible possible pour garder 12V avec une ondulation acceptable et pouvoir assurer une charge efficace sur C3 principalement, mais de fait aussi sur C8 pour display et radio.

3 Les alimentations et le basculement

J'ai choisi une alimentation sans transformateur que j'envisageais il y a quelques semaines. (Voir l'article)

Cette alimentation fournit du 12 volts continus.
Le montage se prête particulièrement bien à ce genre de montage car les puissances sont très faibles. Le display consomme 1 mA environ et le PIC en mode actif à 4 MHz un peu moins !
La radio consomme 3 à 4 mA en commande à 1 logique, durant 180 ms millisecondes. C'est donc aussi le condensateur de 68µF qui assure le petit supplément instantané de courant.

Le dispositif d'alimentation sans transformateur se prête particulièrement bien à des adaptations pour des alimentations soit en courant continu soit en alternatif, et pour bien des valeurs.
Il suffira de jouer sur le condensateur ou de le remplacer par une résistance suivant la nature du courant et sa puissance, en jouant également sur la résistance de limitation R1.
(Ainsi le montage décrit fonctionne aussi bien en 127V qu'en 230 V)

Peut-on utiliser du 400V ? Je pense que oui à la condition de mettre deux condensateurs de classe X2 en série avec résistance d'équilibrage de  4.7 Mohms environ, (Même si les résistances de fuite sont très élevées et sans comparaison avec les fuites d'un chimique. Voir l'article sur les fuites des condensateurs).

3.1 Les condensateurs chimiques

Ces condensateurs du fait de la double alimentation pile et batterie nécessitent d'avoir des fuites très faibles. Voir pour cela l'article qui leur a été consacré.

Ce sont des éléments un peu particuliers, qui évoluent au gré de l'application d'une tension. Ils refabriquent alors leur isolant et réduisent leurs fuites.
Ils participent activement à la bonne gestion de l'alimentation tantôt pile, tantôt sur secteur.

On verra que l'on peut rester plus d'une heure à alimenter le PIC en mode SLEEP simplement sur un 100µF.

Il faut tout de même souligner que si le PIC n'est pas dans ce mode de très basse consommation, les choses tournent vite au désastre par la mise à plat du chimique (et de la pile éventuelle) à raison de 500 à 700µA, alors qu'en mode SLEEP, le courant est en dessous de 10 nA (Je ne peux pas mesurer en dessous de cette valeur, mais théoriquement 1 nA !)

3.2 Les mystères des faibles courants

Ce montage m'a confirmé toute l'importance dans les faibles courants, de la charge et décharge des condensateurs des alimentations. Il y a beaucoup de cas très délicats et certains sont assez "tordus" pour que l'on finisse par se poser des questions…
(La décharge d'un condensateur est pratiquement toujours une perte d'énergie !)

Je ne comprenais pas toujours pourquoi en ayant oublié de remettre le strap de  la pile, à la prochaine MST on retrouvait souvent toutes les valeurs…

Pourquoi également le display restait avec une ligne noire, mais le programme tournait correctement avec pour preuve la prochaine MST correcte, avec les bonnes valeurs…

Pour expliquer tous ces points particuliers, le plus simple est de commenter les différents oscillogrammes en divers points.

Tension aux bornes de C4 et sur la cathode de D1 (Alim PIhoracont_KD1_C4C)

Ce sont les 2 courbes ci-contre : On voit parfaitement sur la courbe rouge que l'on suit au départ la tension d'une alternance 230V en bleu (maxi à 12V).
Dès les différents petits seuils de diodes atteints, un courant prend naissance et le 12V monte alors en même temps que le VCC avec la même pente.
Dès le régulateur en fonction (stabilisation de VCC), le courant diminue car tous les condensateurs sont pratiquement chargés, et la tension (bleue) "grimpe" très rapidement jusqu'à 12 volts puisque le courant d'appel est très faible.

On constate une forte ondulation qui est normale au vu du condensateur C4 de faible valeur (4.7µF).
Son rôle est double puisqu'il ne doit pas maintenir de tension trop longtemps en absence du secteur, mais il doit aussi permettre  un fonctionnement correct du régulateur et assurer la charge des gros condensateurs C3 et C8.
(C2 de 1µF dont la valeur a déjà été expliquée "comptant pour du beurre", dans cet aspect énergie)

Shutdown tension PIC =horacont_UC_SLEEP_downf(C4) SLEEP

On voit la décroissance  normale de la tension du PIC jusqu'à la valeur de la tension de la pile. L'échelle utilisée montre seulement le temps nécessaire pour atteindre la tension pile.

On ne peut pas évaluer ici le temps mis pour détecter l'absence de tension.

L'information la plus importante étant qu'il faut 0.3 secondes environ pour atteindre la tension de pile.
Il n'y a plus le creux négatif sous la tension nominale de la pile, ce qui indique que le processeur est en SLEEP avant ces 0.3 secondes, et donc qu'il n'y a pas de risque d'épuisement prématuré de la pile.

Coupure Tension secteur vue aux bornes de C8 display et radio
horacont_down_C8

On peut évaluer la constante de temps de la décroissance à 0.2 secondes. Ceci étant, on peut la comparer aux 180 ms de l'envoi d'une trame radio complète. Cela pourrait laisser penser que ça conviendrait ?

En réalité il n'en est rien, car suivant l'instant où le secteur s'arrête relativement à la transmission. Il faut tout de même comprendre que cette radio ne devrait plus fonctionner à une tension trop faible (ou fonctionnerait mal).

Cela est encore beaucoup plus critique avec le display qui est un processeur et beaucoup plus sensible à la baisse de tension.

N'ayant aucune spécification de limite de tension de ces équipements annexes (display et radio), le programme répond au plus urgent  en arrêtant (abort) tout affichage et toute émission au caractère près, dès la détection de manque secteur. Le programme abandonne également immédiatement une interrupt horloge en cours pour également gagner du temps.

Ainsi que déjà indiqué, cette façon de procéder permet de garantir que l'énergie ne sera pas "volée" à la pile, avec le risque de planter le PIC en cas chute de tension trop importante.

Mise sous tension secteur vue auhoracont_up_C8x bornes de C8 (display et radio)

Cette montée est presque linéaire et dure environ 100 ms. Ceci implique que dès la première seconde sous tension, le display est en mesure d'afficher.

Pour la radio, cela attendra la 4 ème seconde depuis la MST. Les secondes sont reprises là où elles en étaient lors de la coupure, mais l'affichage n'aura lieu que 4 secondes plus tard.
(Inutile de préciser qu'au bout de ce temps, la première émission radio se sera accomplie sans problème.)

Le courant d'alimentation avant régulateur (II_S1_Alim_HORACONT1_S1)

Une des dernières mesures a consisté à visualiser le courant d'alimentation juste avant le régulateur (I_S1)
Pour une question d'échelle et pouvoir apprécier les temps de montée et descente, j'ai réalisé une très courte MST d'un peu plus d'une demi seconde, et on constate la même forme que la tension, ce qui confirme la charge des condensateurs, puis la phase de régulation avec un palier qui durera jusqu'à la coupure.

4 Le displahoracon3y

C'est un modèle CM160211 de "Data Image" récupéré sur mon vieux fax Olivetti ayant eu un coup de foudre !

On peut voir que le display lui même est fixé avec du ruban adhésif, ainsi que le câble plat blanc qui fait partie du display.
Sur le circuit, un petit connecteur CMS de démontage a été placé côté cuivre du CI d'adaptation avec le CD4015.
L'autre câble plat bleu va sur le circuit principal et comporte outre les tensions d'alimentation, les 4 signaux utiles pour le fonctionnement en série synchrone.

Pour éviter toute pièce métallique, la colle bi composants a été largement utilisée aussi bien pour les colonnettes support que pour le polycarbonate transparent devant le display.
(Je n'ai pas osé coller le verre du display de peur de l'étalemhoracon4ent par capillarité sur la fenêtre de lecture).

Les commandes sont identiques aux displays traditionnels et ce modèle a été transformé en mode série suivant le schéma déjà diffusé.  (Le "pinning" est seulement différents au niveau de la pin 1 et 14 pour les alimentations).
(Pour ceux qui souhaitent le plan de ce petit CI, il suffira de le demander. Le schéma est identique à quelques broches près  à celui déjà publié).

La LED située sur le CI utilise les broches du rétro éclairage prévues à l'origine sur le connecteur 2x5 broches.
 
La seule difficulté pratique a été de dessouder proprement ce petit connecteur CMS au pas métrique de 1 mm, puis de le ressouder côté cuivre du CI monocouche.

Aucune particularité si ce n'est que dans le cas où la détectiohoracon5n d'absence secteur est avérée, la séquence est abortée sans affichage pour ne pas perdre de temps et rejoindre au plus vite la boucle de mise en SLEEP. (Le temps est compté pour ne pas tirer sur la pile)

La consommation display reste moyenne et de l'ordre de 1 mA et on a le temps de terminer correctement un caractère (commande ou data) sans laisser celui-ci dans un état incertain.

Ceci pouvant affecter la visualisation lors d'un redémarrage très rapproché, lorsque le condensateur C8 n'a pas eu le temps de se décharger totalement, ce qui est le principal risque. (Décharge complète en 0.6 secondes (courbe plus avant)).

Même si un redémarrage du display arrivait à être mauvais sur une mise sous tension rapprochée, le display reprendrait sa synchronisation normale à la prochaine remise sous tension secteur. Le programme du PIC n'est pas affecté et c'est l'essentiel.

Le temps entre un redémarrage et le suivant doit être au moins d'une seconde, pour le display, alors que pour la radio, ce sera 4 secondes pour une première émission.

Le display reçoit les 2x16 caractères, et la radio ajoute seulement 2 caractères en début et 2 caractères en fin. (Voir ci-avant le schéma d'une trame)

5 La radihoracon6o

C'est l'avantage mis en avant pour ce dispositif qui permet des relevés automatiques par radio. Les trames sont envoyées systématiquement à 2400 bps sans autre possibilité de vitesse, car la sérialisation est assurée par programme et non par le hard qui ne possède pas de sérialisateur sur ce petit modèle de PIC.

Attention cependant, car au niveau énergie, il est nécessaire que le secteur soit présent pour émettre (C'est un inconvénient). Il faut donc une surveillance radio en réception pour capter le dernier instant de MST qui aura donné lieu à des émissions. La fréquence des émissions est calée toutes les 4 secondes.
Cela permet à d'autres émetteurs de se "faufiler" dans les absences d'émission, mais surtout d'assurer l'intelligibilité de la trame sans intermodulation de plusieurs émetteurs.

NOTA: La précision de vitesse de transmission n'est pas donnée par le timer0 mais par la fréquence de 4Mhz du processeur. Les marges d'intelligibilité mesurées vont de 2250 à 2500 bds pour 2400.

6 Le PIC et son programme assembleur

C'est un petit programme de 1K "un peu juste" en taille puisqu'il ne reste que 28 octets à ce jour, mais ce sont aussi les variables en RAM qui sont "un peu serrées". L'ensemble tient tout juste !

L'incrémentation du temps de fonctionnement est assurée automatiquement par interrupt avec le comptage du timer 0. (La précision du temps est ajustée par une petite boucle avant réécriture du registre TMR0 à -195).

L'incrémentation du nombre de démarrages est assurée en début de boucle de surveillance.

Au niveau affichage au display des valeurs, celui-ci est rafraîchit seulement toutes les secondes pour éviter les phénomènes de scintillement et cette fréquence est très suffisante. Cette façon de procéder permet aussi de limiter le temps d'occupation du processeur et d'avoir une meilleure réactivité sans abort de fonctions lors de la détection de manque de tension (Signal ALIM en interrupt sur GPIO3). GPIO3 est un port en Entrée seule.

En fonctionnement standard, tous les 50 démarrages (paramétrable), une moyenne glissante des temps de fonctionnement est calculée et permet de voir si il y a des évolutions significatives.

Tous les 50 démarrages les valeurs de temps, et de nombre de démarrages sont sauvées en EEPROM. Durant cette "opération des 50", on réalise aussi le calcul de la moyenne glissante des temps pour les 50 derniers démarrages.
(Les 50 affichages suivants reprennent simplement le résultat de cette dernière valeur calculée sans aucun nouveau calcul).

En d'autres termes, les moyennes référencent les 50 dernières valeurs COMPLÈTES et non jusqu'à la valeur en cours (pas de moyenne glissante immédiate car elle serait trop peu significative)

Les calculs sont réalisés en heures et minutes seulement, (sans les secondes), mais les secondes apparaissent dans la moyenne par le biais de la division par le nombre de démarrages.
(Cela évite de calculer en 32 bits et la précision reste tout à fait acceptable, voire honorable)

En corollaire, il est également possible de forcer à la fois la sauvegarde des dernières valeurs en EEPROM et de forcer le calcul d'une moyenne des derniers démarrages (inférieurs à 50) par appui sur le switch durant la présence secteur.
Ce cas se présente pour obtenir une moyenne instantanée mais aussi pour changer la pile et assurer la reprise des dernières valeurs. (Le processeur maintient en permanence ses données en RAM sauf si la pile est retirée…et encore …!)

Pour assurer le changement de pile, il faut démarrer sans rien faire. Cela a pour effet de reprendre les valeurs de l'EEPROM et de charger la RAM ainsi.
(On peut au besoin faire un appui préalable pour forcer une sauvegarde des 50 dernières valeurs).

Si par opposition on maintien le switch appuyé lors de la MST, alors tous les paramètres sont accessibles : RAZ, adresse radio et nombre de démarrage pour le calcul de la moyenne.
(C'est uniquement au cours de cette séquence initiale avec switch appuyé que les paramètres peuvent être modifiés)

Une partie importante "d'abort" des fonctions longues (conversions BCD, émission radio, affichage display…) est réalisée dès que l'on détecte l'absence secteur. On abandonne alors ces opérations pour les reprendre lors de la prochaine MST.

Cette façon de faire est réalisée pour que l'on puisse atteindre rapidement la mise en SLEEP du PIC. Il ne faut pas oublier que ce PIC est en permanence sous tension, et que pour que la pile puisse durer 12/15 ans, il ne faut pas qu'il y ait de puissance importante "volée" à la pile en absence du secteur. Ceci est impératif !

Dès l'absence secteur le but est de passer au plus vite en mode SLEEP (durant la décharge encore efficace des condensateurs). On dispose environ de 250ms sur C3 pour passer en mode SLEEP.

Le paramétrage des nombres de démarrages pour le calcul de moyenne se réalise par progression de 10 en 10. Le fait de ne pas gérer les reports permet des instants de départs à 10, puis 4, 8, 2, 6 (après dépassement à 255) et retour à 10. Cela n'a pas beaucoup d'intérêt, mais c'est ainsi et devait être indiqué, tout en sachant par exemple qu'après 4 ce sera 4+10 soit 14. C'est un peu comme un offset de départ différent !

Suite à une demande, vous pouvez télécharger le .HEX du fichier. télécharger horacont.Hex

7 Conclusions

C'est un premier montage pile/secteur où il est possible de mesurer toutes les difficultés de travailler avec des courants très faibles, ainsi que les incidences sur les alimentations en très basse consommation.

Pour l'aspect opérabilité et calculs divers, on voit tout de suite qu'avec 1K et seulement 64 octets de RAM, on reste un peu limité.
Il ne faut pas oublier non plus que plus le PIC est petit (et récent) moins il consomme. En confirmation de ce postulat, le traditionnel PIC 16F628 à un courant de 1µA en SLEEP, soit 1000 fois plus que le PIC 12F629.

Mais c'est un bon exercice que de s'entraîner aux faibles consommations !
Je crois que le fait de compter les alternances n'aurait pas été possible (avec les tailles programme et RAM imposés, car c'est un peu plus long pour assurer une détection fiable d'absence secteur.
A ce sujet je remarque souvent le soir des micro-coupures du secteur, mais je n'ai encore jamais pu les visualiser. Il est certain que l'ennemi majeur de ce genre de montage est une coupure brève qui pourrait perturber principalement le display, mais pas foncièrement le PIC à cause du chimique de 100µF.
Les perturbations au niveau radio passeront inaperçues et noyées dans les parasites. La trame suivante sera probablement correcte...

Je prendrai l'exemple de la TNT, télévision numérique qui donne des pixels lors du passage d'une "pétrolette" et spécialement d'une machine sans pot d'échappement. C'est identique pour la radio 433.92 !

Encore une petite indication concernant la précision…Naturellement les temps de redémarrage depuis le mode SLEEP ne sont pas comptabilisés, car c'est totalement hors sujet ! Cela représente normalement 1024 cycles soit dans notre cas 1 ms de perdue à chaque MST.
Par rapport à un entretien de moteur, je ne pense pas que cette milliseconde soit d'une importance capitale, alors on oublie vite cela !

Dans les autres points à rappeler, il y a effectivement la présence du secteur qui représente un VÉRITABLE DANGER.
Il ne faut pas oublier l'antenne qui est au potentiel du secteur également. Si vous devez sortir cette antenne du boîtier, vous devrez insérer un petit condensateur céramique isolé à 350 V sur la sortie d'antenne. Je n'en ai pas placé, car j'ai préféré replier l'antenne à l'intérieur du boîtier.
(Une antenne hélicoïdale peut aussi donner de bons résultats avec moins de développement linéaire)

Dans la suite de cet aspect "secteur", aucune pièce métallique ne devrait dépasser. Cela est vrai pour le display aussi qui sera isolé par un plastique transparent, pour qu'un "petit doigt malin" n'aille pas faire une grosse erreur ! C'est vrai aussi pour le switch doublement isolé.

Le danger est toujours présent notamment lors du changement de la pile qui devra être réalisé appareil non branché au secteur, et il y a lieu de ne pas s'affoler ainsi qu'il a été dit, car le condensateur C3 est capable de maintenir le PIC en SLEEP plusieurs dizaines de minutes sans pile (Strap S4)

L'utilisation en 400V n'est pas recommandée, mais toutes fois possible en ajoutant un deuxième condensateur en série suivant le schéma indiqué dans l'article sur les condensateurs chimiques. (Doubles résistances en // sur chaque condensateur, mais attention 2 condensateurs identiques en série, divisent la capacité par 2 !)

En résumé restez très prudents avec ces montages que l'on appelait par le passé "Tous courants", car le secteur rôde ! (C'est à l'époque où il y avait à la fois du 110V et du 220V !)

Ce montage a été conçu à l'origine pour mesurer les temps de marche d'une chaudière fuel (à placer sur la commande d'électrovanne pour éviter le cycle de balayage des gaz). Connaissant le débit du gicleur du brûleur, il est tout à fait possible de connaître sa consommation de fuel au jour le jour, et de surveiller ainsi ce poste très coûteux aujourd'hui.

Ce montage peut également servir à surveiller la mise en marche d'un moteur de pompe de surpresseur.
Pour les particuliers, l'appareil peut aussi permettre de surveiller un congélateur ou un "frigo" en ayant soin de se brancher directement sur le compresseur pour éviter le courant permanent du chauffage des joints caoutchouc de porte.

Il peut aussi être d'un usage tout à fait général pour tout équipement industriel ou spécifique.
Le relevé radio peut s'effectuer avec un ordi portable ou fixe suivant les distances avec l'excellent programme "TERMINAL.EXE" de Bray++.
(Une structure avec concentrateurs est également tout à fait envisgeable dans les grandes unités de production)
(Des possibilités associées à un convertisseur USB/RS232 existent mais je ne les connais pas).

En résumé, ce montage reste ouvert à toute application particulière. J'insiste sur l'aspect sécurité car tel que décrit, il est au potentiel du secteur et reste dangereux lors de toute intervention en cours de fonctionnement.
(Le strap J3 permet de travailler en sécurité avec une alimentation isolée).

Si des applications nécessitent plus de sécurité, alors une alimentation standard avec transformateur est totalement possible sans aucun inconvénient (hormis la particularité de très peu filtrer la tension redressée).

Il est évident que d'autres principes de base peuvent être utilisés, mais ils nécessitent une intervention manuelle sur un poussoir pour valider l'affichage et/ou la radio.
En effet il n'est pas possible au vu des consommations display et radio de maintenir la permanence de fonctionnement sur des années sans utiliser ce principe, ou tout au moins de réduire considérablement les périodes d'affichage et d'émission.
Il est toutes fois possible de réduire les consommations en supprimant ou le display, ou la radio, mais pas les deux !

Une dernière information résultant seulement d'une réflexion, qui est certainement la nécessité de rappeler un entête de trame avec l'adresse pour la deuxième 1/2 trame, car les valeurs pouraient très bien être confondues avec celles d'un autre compteur horaire. Cela c'est pour la partie industrielle...

C'est à chacun de voir ce qui l'intéresse pour sa propre utilisation.

_____ ( retour en début d'article ) ____

 _____ ( retour accueil lokistagnepas ) ____
_____ ( retour accueil bricolsec ) ____