mardi 4 février 2025

UPS : Le super-condensateur



UPS : Le super-condensateur


Dans cet article nous allons évaluer la possibilité d'utiliser un super-condensateur comme solution d'alimentation de secours (UPS : Uninterruptible Power Supply).

Les super-condensateur sont des condensateurs de très forte capacité. Celle-ci peut dépasser le millier de Farads ! Ces composants sont principalement utilisés comme réserve d'énergie dans les systèmes d'alimentation de secours, y compris dans certains onduleurs UPS du commerce.

1. Batterie vs super-condensateur

Quelles sont les principales différences entre une batterie et un super-condensateur ?

1.1. Tension

La tension de service d'une batterie dépend de sa technologie : 

  • plomb : 2V par élément
  • NI-MH : 1.2V par élément
  • LITHIUM-ION ou LIPO : 3.7V par élément

Il existe une grande diversité de super-condensateurs et leur tension de service peut varier de 2.7V à plus de 48V. Les super-condensateurs ayant une tension de service élevée sont en fait des assemblages de super-condensateur 2.7V en série.

1.2. Recharge

Le super-condensateur se charge comme un condensateur, c'est à dire instantanément, ou presque, et ceci sans chargeur, à l'aide d'une simple alimentation. La seule limitation est la capacité de l'alimentation à fournir l'ampérage nécessaire, qui peut dépasser plusieurs ampères ou dizaines d'ampères.

Comparativement, la recharge d'une batterie prend beaucoup plus de temps, au minimum 30 minutes pour celles qui sont capables de supporter un courant de charge important.

1.3. Décharge

La courbe de décharge d'un super-condensateur a la forme classique de celle d'un condensateur :

La décharge d'une batterie LITHIUM-ION est beaucoup plus plate :

2. Utilisation du super-condensateur

On pourrait penser que la décharge d'un super-condensateur est trop rapide pour que la solution puisse être exploitable pour alimenter un microcontrôleur. Mais il faut tenir compte de la capacité, qui est énorme.

Un microcontrôleur 5V par exemple peut continuer à fonctionner jusqu'à environ 3.8V. Si nous utilisons un super-condensateurs de 5.5V nous allons pouvoir alimenter une carte ARDUINO sans problème pendant un certain temps.

Pour rappel une NANO consomme environ 25mA et sa LED consomme 5mA. Cela correspond à une résistance de 200Ω sous 5V.

Dans un article précédent j'avais déterminé que la NANO allait fonctionner jusqu'à 85% de la tension d'alimentation. La tension va donc pouvoir chuter de 15%.

Considérons un condensateur de 5 Farads :

T = C * R * 0.15 = 5F * 200Ω * 0.15 = 150s = 2 minutes 30s

J'ai réalisé un petit montage d'essai avec une carte ARDUINO NANO chargée avec un programme blink.

En parallèle sur l'alimentation 5V j'ai placé deux super-condensateurs 10F / 2.7V en série. Deux résistances de 100KΩ en parallèle sur chaque condensateur permettent d'équilibrer la charge / décharge :

Comme deux condensateurs de 10F en série sont équivalents à un condensateur de 5F. Nous devrions donc obtenir le temps de fonctionnement prévu.

Lorsque je coupe l'alimentation 5V le montage continue à fonctionner durant pratiquement 3 minutes. La NANO que j'ai utilisé cesse donc de fonctionner un peu plus tard que prévu. Plusieurs raisons sont possibles :

  • elle a une plage de fonctionnement en tension plus large
  • elle consomme moins que prévu
  • les super-condensateurs ont une capacité réelle plus élevée

Le résultat est donc très satisfaisant.

Si l'on alimentait une carte ARDUINO PRO MINI modifiée, en utilisant la veille profonde, l'autonomie serait très largement supérieure.

2.1. Tension de service

Le montage précédent est il sérieusement envisageable ?

Je dirais que non. En effet, équilibrer la charge / décharge de deux super-condensateurs à l'aide de simples résistances peut paraître illusoire, et l'est probablement. Pour que la solution soit efficace il faudrait appairer les super-condensateurs pour que leurs capacités soient très voisines, ou alors utiliser des résistances de plus faible valeur, ce qui réduirait l'autonomie.

Par contre il existe des super-condensateurs ayant une tension de service de 5.5V, qui à mon avis seraient certainement plus adaptés.

On pourrait aussi envisager l'utilisation d'un convertisseur STEP-UP spécialisé du type MAX38889, qui à partir d'un seul super-condensateur de 2.7V sera capable de fournir une tension de 5V.

2.2. Temps de charge

Le montage précédent est branché sur une alimentation 5V capable de débiter 3A. En le mettant sous tension, avec des super-condensateurs préalablement vidés, le programme met environ 10 secondes à démarrer, ce qui est assez conséquent.

2.3. Alimentation par l'USB

L'alimentation d'un tel montage par le cordon USB est à proscrire. Le courant demandé à la mise sous tension est trop important.

S'il s'agit d'un port USB classique, limité à 500mA, il y a un risque pour le port USB du PC, si celui-ci n'est pas suffisamment bien protégé.

S'il s'agit d'un port USB C, limité à 3A ou 5A, la diode de protection de la NANO, située entre le 5V USB et le 5V du microcontrôleur, serait détruite.

3. Conclusion

Un super-condensateur Viking 5.5V 15F coûte environ 5€, ce qui me paraît très raisonnable pour bâtir une solution UPS simple et économique. Avec ce modèle on obtiendrait un temps de fonctionnement 3 fois supérieur, soit 9 minutes. On peut bien entendu en placer plusieurs en parallèle pour obtenir plus d'autonomie.

On peut également combiner cette solution avec une sauvegarde automatique des données sensibles en cas de coupure de courant trop longue.


Cordialement

Henri


Janvier 2025 : Actualité des Blogs du Mois

 


Actualité des Blogs du Mois


Sur  Framboise 314 :

Sur  MCHobby :

Sur Anacorp :

Sur IDEHack :


Cordialement

Henri 

 

dimanche 10 novembre 2024

DOMOTICZ : quelques méthodes de dépannage



DOMOTICZ : quelques méthodes de dépannage

 

Cela fait maintenant plus de 6 ans que j'utilise un serveur domotique nommé DOMOTICZ, et j'en suis assez fan, mais il arrive que des ennuis surviennent. Je vais les décrire dans cet article.

Mon système domotique est constitué de différents composants :

  • serveur DOMOTICZ hébergé sur une RASPBERRY PI
  • passerelle série MYSENSORS
  • capteurs développés à l'aide de cartes ARDUINO NANO, PRO MINI
  • un écran TFT piloté par un ESP8266
  • un répéteur MYSENSORS pour les capteurs éloignés

1. Panne de passerelle série

La passerelle série (serial gateway) permet de communiquer avec mes objets connectés équipés de NRF24L01 (capteurs de température, prises, relais, etc.) développés à l'aide de la librairie MYSENSORS.

Récemment, sur la page d'accueil de mon serveur, certains capteurs sont affichés en rouge, et ils n'ont pas communiqué depuis plusieurs jours :

J'ai deux types de dispositifs :

  • dispositifs ARDUINO + NRF24L01
  • dispositifs ESP8266

Apparemment seuls les dispositifs ARDUINO sont concernés. Comme il serait tout à fait étonnant que plusieurs capteurs aient le même problème simultanément, je soupçonne donc un problème sur la gateway. Après avoir branché celle-ci sur un port USB de mon PC, je lance le Moniteur Série de l'IDE ARDUINO, et les informations de DEBUG sont affichées :

0;255;3;0;9;MCO:BGN:INIT GW,CP=RNNGA--,VER=2.1.1
0;255;3;0;9;TSM:INIT
0;255;3;0;9;TSF:WUR:MS=0
0;255;3;0;9;TSM:INIT:TSP OK
0;255;3;0;9;TSM:INIT:GW MODE
0;255;3;0;9;TSM:READY:ID=0,PAR=0,DIS=0
0;255;3;0;9;MCO:REG:NOT NEEDED
0;255;3;0;14;Gateway startup complete.
0;255;0;0;18;2.1.1
MYSENSORS Gateway Serial
0;255;3;0;9;MCO:BGN:STP
0;255;3;0;9;MCO:BGN:INIT OK,TSP=1

Cela me semble un peu court. Par précaution je recharge le code de l'application gateway :

0;255;3;0;9;0 MCO:BGN:INIT GW,CP=RNNGA---,FQ=16,REL=255,VER=2.3.2
0;255;3;0;9;5 TSM:INIT
0;255;3;0;9;7 TSF:WUR:MS=0
0;255;3;0;9;15 TSM:INIT:TSP OK
0;255;3;0;9;18 TSM:INIT:GW MODE
0;255;3;0;9;21 TSM:READY:ID=0,PAR=0,DIS=0
0;255;3;0;9;24 MCO:REG:NOT NEEDED
0;255;3;0;14;Gateway startup complete.
0;255;0;0;18;2.3.2
MYSENSORS Gateway Serial
0;255;3;0;9;30 MCO:BGN:STP
0;255;3;0;9;37 MCO:BGN:INIT OK,TSP=1
0;255;3;0;9;40 TSM:READY:NWD REQ
0;255;3;0;9;47 ?TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:

On voit bien deux lignes supplémentaires.

Je rebranche la gateway sur la RASPBERRY PI et au bout de quelques minutes tout rentre dans l'ordre.

2. Panne de répéteur

Il arrive que certains capteurs soient affichés en rouge, mais seulement les capteurs éloignés sont concernés. La communication avec ceux-ci passe par un répéteur. Ce n'est pas la première fois que cela arrive, et ici également, en cas de problème je recharge le code de l'application répéteur et tout rentre dans l'ordre.

3. Qualité du réseau

Il peut arriver qu'un capteur ne parvienne pas à envoyer ou recevoir des informations, ou que la communication passe par intermittence.

Il est nécessaire de vérifier que le réseau 2.4GHz passe bien à l'endroit où est situé le capteur.

Pour ce faire j'utilise la carte de test MYSENSORS, alimentée par batterie, développée il y a quelques années :

J'équipe cette carte de deux LEDs, une rouge et une verte, câblées chacune avec une résistance de 1KΩ en série, entre les sorties 2 et 3 de la carte PRO MINI et GND.

On peut parfaitement réaliser cette carte à l'aide d'une plaquette à pastilles. On peut même utiliser une UNO ou une NANO, sachant que l'autonomie sera beaucoup plus faible.

Voici le code utilisé :

//#define MY_DEBUG

#define MY_RADIO_RF24
//#define MY_RADIO_RFM69

#define MY_RF24_CE_PIN        7
#define MY_RF24_CS_PIN        8

#define RLED                  2
#define GLED                  3

#define SLEEP_TIME            5000L
#define VREF                  1.099

#include <MySensors.h>  

#define CHILD_ID_TEMP         0

void before()
{
  Serial.print("MYSENSORS test sensor: ");
  Serial.println("OK");
}

void setup()  
  Serial.begin(115200);
  Serial.print("Setup");
  pinMode(RLED, OUTPUT);
  pinMode(GLED, OUTPUT);
  Serial.println(" OK");
}

void presentation() {
  Serial.print("Presentation");
  // Send the sketch version information to the gateway and Controller
  sendSketchInfo("test sensor", "1.1");
  // Present all sensors to controller
  present(CHILD_ID_TEMP, S_TEMP);
  Serial.println(" OK");
}

void sendTemp(void)
{
  MyMessage tempMsg(0,V_TEMP);

  Serial.println("sendTemp");

  float temperature = 20.00;

  if (send(tempMsg.setSensor(CHILD_ID_TEMP).set(temperature, 1)) == true) {
    digitalWrite(GLED, HIGH);
    digitalWrite(RLED, LOW);
    delay(500);
    digitalWrite(GLED, LOW);
    digitalWrite(RLED, LOW);
  }
  else {
    digitalWrite(GLED, LOW);
    digitalWrite(RLED, HIGH);
    delay(500);
    digitalWrite(GLED, LOW);
    digitalWrite(RLED, LOW);
  }
}

void loop()     
{
  sendTemp();
  sleep(SLEEP_TIME);
}

Toutes les cinq secondes, un test d'envoi d'une température fictive est effectué. Si la communication passe bien, la LED verte est allumée pendant 500ms, sinon la LED rouge est allumée.

Ce dispositif ne permet cependant pas de quantifier la qualité du réseau, comme on pourrait le faire en WIFI (RSSI).

En baladant cette carte un peu partout à l'extérieur de la maison, je constate qu'il y a des zones où le réseau n'est pas accessible. Il s'agit principalement de zones où la maison, dont les murs de pierre ont 50cm d'épaisseur, fait obstacle. Par contre, je ne m'attendais pas à ce que mon répéteur ait une portée de plus de 20 mètres à certains endroits.

Tester son environnement avec ce genre de dispositif avant la mise en place d'un capteur peut s'avérer très intéressant, et peut éviter des déboires.

4. conclusion

Ma gateway et mon répéteur sont bâtis autour de cartes ARDUINO NANO. Ce n'est pas la première fois que je suis obligé de recharger le code sur ce type de carte.

Je soupçonne un problème de fuses, car ce genre de problème peut survenir lorsque l'on coupe l'alimentation d'un ATMEGA328, et la mémoire FLASH est partiellement corrompue. Mes cartes PRO MINI n'ont pas ce genre de problème, mais cela ne veut pas dire grand chose étant donné qu'elles sont alimentées par batterie, et que par conséquent leur alimentation n'est jamais coupée.

J'envisage sérieusement de remplacer certains ARDUINOs par des modules ESP8266 ou ESP32. Malheureusement cette opération n'est pas possible sur tous les capteurs. En effet, le temps de réveil d'un ESP8266 ou d'un ESP32 est énorme, car il redémarre en partant de ZÉRO, ce qui implique une reconnexion au réseau WIFI, qui peut être longue. Sur un capteur du type détecteur de présence ou bouton-poussoir, la latence serait inacceptable.

Autre possibilité : utiliser des STM32 ? Malheureusement, les STM32 ne sont pas supportés par la librairie MYSENSORS.

Il va falloir vivre encore un moment avec ces défauts répétitifs. Pour info, le code de la gateway a été rechargé une seule fois, celui du répéteur 4 à 5 fois.

5. A lire également

Pour ceux qui ne connaissent pas DOMOTICZ ou MYSENSORS :


Cordialement

Henri


Octobre 2024 : Actualité des Blogs du Mois

     


Actualité des Blogs du Mois


Sur  Framboise 314 :

Sur  MCHobby :

Sur TutoDuino :

Sur ArduiBlog :


Cordialement

Henri