lundi 22 février 2021

STM8S : Premier Contact

 

STM8S : Premier Contact

 

Aujourd'hui nous allons essayer de programmer un petit microcontrôleur 8 bits : le STM8S de chez ST Microelectronics.

Pour cela j'ai investi dans une petite carte équipée d'un STM8S105K4T6 :

  • fréquence d'horloge : 16MHz
  • mémoire FLASH : 16 Kbytes
  • mémoire RAM : 2 Kbytes
  • mémoire EEPROM : 1 Kbyte
  • communication : UART, I2C, SPI
  • ADC : 10 bits 
  • 30 broches, mais plus large qu'une carte ARDUINO NANO

Pour de petits projets d'autres cartes existent :

STM8S103F3P6

  • fréquence d'horloge : 16MHz
  • mémoire FLASH : 8 Kbytes
  • mémoire RAM : 1 Kbyte
  • mémoire EEPROM : 640 bytes
  • communication : UART, I2C, SPI
  • ADC : 10 bits 
  • 20 broches, même largeur qu'une carte ARDUINO PRO MINI, et plus courte

Il est à noter que ces cartes sont moins chères qu'une carte ARDUINO PRO MINI, spécialement la STM8S103K3T6 : 0.68€.

La quantité de mémoire FLASH est moins importante que sur un ATMEGA328P (32 Kbytes), ce qui n'est pas un handicap pour la majeure partie des projets.

La carte officielle ST (STM8S Discovery) à base de STM8S105C6T6 a une quantité de FLASH de 32Kbytes, comme un ARDUINO, mais son prix est largement supérieur.

Ces cartes peuvent être alimentées entre 2.95V et 5.5V.

Elles possèdent un port µUSB mais apparemment ce connecteur ne peut servir qu'à l'alimentation de la carte. Il faudra donc ajouter un convertisseur USB / série pour bénéficier du terminal (moniteur série), comme sur une carte ARDUINO PRO MINI.

Les cartes STM8S ont une consommation de 10µA en veille. Il existe une série STM8L, ayant des performances plus intéressantes : 0.35 µA en veille ! Je n'ai pas connaissance de cartes STM8L accessibles au grand public. Cela viendra.

1. Le matériel

Pour programmer un STM8S, il est indispensable de se procurer un programmateur STLINK-V2, que l'on trouve pour moins de 2€ sur AliExpress :

4 fils suffisent pour programmer la carte :

  • 3.3V
  • GND
  • RST
  • SWIM

Ces 4 broches sont situées en bout de carte.

2. L'IDE ARDUINO

Nous allons utiliser une librairie core nommée SDUINO :

https://tenbaht.github.io/sduino/

Comme dit sur la page d’accueil, il faut d'abord ajouter la ligne suivante à notre liste de cartes supplémentaires :

https://github.com/tenbaht/sduino/raw/master/package_sduino_stm8_index.json

Pour cela il faut ouvrir la boîte de dialogue préférences : menu "Fichier / Préférences", et ajouter l'URL à la ligne "URL Gestionnaire de cartes supplémentaires". Si cette ligne n'est pas vide, utiliser une virgule comme séparateur :

https://dl.espressif.com/dl/package_esp32_index.json,http://arduino.esp8266.com/stable/package_esp8266com_index.json,https://downloads.arduino.cc/packages/package_avr_3.6.0_index.json,https://github.com/tenbaht/sduino/raw/master/package_sduino_stm8_index.json

Ensuite, ouvrir le gestionnaire de cartes : menu "Outils / Type de carte / Gestionnaire de cartes.

Rechercher sduino, choisir une version, et cliquer sur installer.

Personnellement j'ai installé la version 0.4.0 

Les cartes supportées sont les suivantes :

STM8S103F3P6


STM8S Discovery (la carte officielle ST)

STM8S105K4T6

SDUINO UNO

La librairie STM32DUINO possède elle aussi un support STM8, mais uniquement pour les cartes STM8 officielles :

STM8S208RB Nucleo

Le format de ces cartes (UNO) me parait inadapté à la réalisation de projets de dimensions raisonnables.

3. Premier sketch

Après avoir chargé le sketch exemple Blink (menu Fichier / Exemples / 01.Basics / Blink), il suffit de cliquer sur l'icône téléverser :

Le croquis utilise 2622 octets (16%) de l'espace de stockage de programmes. Le maximum est de 16384 octets.
Les variables globales utilisent 70 octets (3%) de mémoire dynamique, ce qui laisse 1978 octets pour les variables locales. Le maximum est de 2048 octets.
/home/riton/.arduino15/packages/sduino/tools/STM8Tools/2018.12.07/linux/stm8flash -cstlinkv2 -pstm8s105?4 -s flash -w /tmp/arduino_build_582971/Blink.ino.hex
Determine FLASH area
Due to its file extension (or lack thereof), "/tmp/arduino_build_582971/Blink.ino.hex" is considered as INTEL HEX format!
2757 bytes at 0x8000... OK
Bytes written: 2757

La LED bleue de la carte clignote.

On peut modifier les temps pour accélérer le clignotement :

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);                       // wait for 100ms
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(100);                       // wait for 100ms
}

4. Débloquer la FLASH

Vu sa taille réduite la petite carte bleue STM8S103F3P6 est celle qui m'intéresse le plus. Par contre elle refuse toute programmation et l'IDE affiche un message "Tries exceeded". Après quelques recherches, j'ai trouvé ceci : il faut débloquer la mémoire FLASH.

Télécharger ce petit fichier :

https://github.com/vdudouyt/stm8flash/files/372158/optdefault.bin.txt

Ensuite il faut le charger sur la carte avec stm8flash.

Les chemins cités ci-après peuvent changer en fonction des versions, en particulier la date 2018.12.07.

4.1. Sous Linux

Retirer l'extension .txt et le déplacer dans le répertoire .arduino15/packages/sduino/tools/STM8Tools/2018.12.07/linux, où se trouve l'utilitaire stm8flash.

Ensuite entrer les commandes suivantes dans un terminal :

cd .arduino15/packages/sduino/tools/STM8Tools/2018.12.07/linux
./stm8flash -c stlinkv2 -p stm8s103f3 -s opt -w optdefault.bin

4.2. Sous Windows

Sous Windows ce répertoire sera situé ici :

C:\Users\username\AppData\Local\Arduino15

Retirer l'extension .txt et le déplacer dans le répertoire C:\Users\username\AppData\Local\Arduino15\packages\sduino\tools\STM8Tools\2018.12.07\win, où se trouve l'utilitaire stm8flash.exe

Comme les utilisateurs Windows ont peu l'habitude de la ligne de commande, pour ouvrir un terminal sous Windows, cliquer sur le menu Démarrer et choisissez “Exécuter”. Tapez ensuite le texte cmd :

Ensuite entrer les commandes suivantes dans un terminal :

cd C:\Users\username\AppData\Local\Arduino15\packages\sduino\tools\STM8Tools\2018.12.07\win
stm8flash -c stlinkv2 -p stm8s103f3 -s opt -w optdefault.bin

4.3. Sur Mac

Sur Mac : 

Sur Mac ce répertoire sera situé ici :

/Users/username/Library/Arduino15

Le mode opératoire ressemble à celui de Linux.

4.4. Le résultat

Determine OPT area
Due to its file extension (or lack thereof), "optdefault.bin" is considered as RAW BINARY format!
64 bytes at 0x4800... OK
Bytes written: 64

Ensuite le sketch Blink se téléverse sans problème.

5. Librairies

Un certain nombre de librairies sont livrées avec le package SDUINO :

  • EEPROM
  • I2C
  • LCD_BTHQ21605V
  • LiquidCrystal
  • LiquidCrystal_I2C
  • LiquidCrystal_pcf2119
  • Mini_SSD1306
  • PCD8544
  • Servo
  • Stepper
  • Wire

6. Conclusion

Voici de petits microcontrôleurs bien sympathiques au premier abord. Bien entendu ce n'est qu'un premier contact, il va falloir leur consacrer un peu de temps pour explorer plus en profondeur.


Cordialement

Henri


jeudi 18 février 2021

Audio : Amplificateur mono TAS5630 classe D 150W

 


Audio : Amplificateur mono TAS5630

classe D 150W

 

Dans un article précédent j'ai décrit la réalisation d'un amplificateur classe D 2.1 à base de circuit TPA3116. J'y évoque également le remplacement futur de la carte ampli 2.1 TPA3116 par un filtre actif Linkwitz-Riley à 24dB / octave, suivi de deux amplificateurs, un STA508 stéréo, et un TAS5630 mono, pour une réalisation plus haut de gamme.

Voici le deuxième ampli : le TAS5630 mono.

1. L'amplificateur TAS5630

Le TAS5630 est un circuit avec lequel on peut réaliser différents amplificateurs de très bonne qualité :

  • 4 voies (4x30W)
  • stéréo (2x125W)
  • stéréo + voie grave 2.1 (2x75W + 150W)
  • mono en pont (150W)

Ces puissances sont celles obtenues avec une charge de 8Ω. Avec une charge de 4Ω elles seront doublées.

L'amplificateur que je compte fabriquer est destiné à alimenter un caisson de basses unique. il sera donc monophonique.

La carte provient de chez AliExpress Shop910726154 Store.

Cette carte est équipée d'un étage de pré-amplification réalisée à l'aide d'un amplificateur opérationnel très performant, l'OPA1632.

1.1. Attention

Certaines de ces cartes, comme celle-ci, spécialement prévues pour alimenter un caisson de basses, sont filtrées à 60Hz et ne conviendront pas à tous les usages. La carte est équipée d'un connecteur d'entrée stéréo. Elle conviendra pour la réalisation d'un caisson de basses dont l'entrée sera branchée en parallèle sur l'entrée d'un ampli stéréo, afin de renforcer les graves d'un paire d'enceintes un peu faibles en dessous de 60Hz.
Le vendeur donne cependant le choix entre deux versions : filtrée à 60Hz ou full-range. En version full-range il faudra un filtre actif en amont.

Mon projet étant basé sur un filtre actif ayant une fréquence de coupure située aux alentours de 80Hz, il me faut donc une carte sans filtrage.

2. La mise en boîte

J'ai choisi un boîtier HIFI 2000 Galaxy GX288, aux dimensions de 80x230x280mm, disponible ici : audiophonics.fr

2.1. L'alimentation

Il s'agit d'une alimentation à découpage 48V 200W achetée chez TME.

MeanWell RSP-200-48

 

On peut alimenter la carte amplificateur avec une tension allant de 25V jusqu'à 52V. Une tension de 48V permettra d'atteindre une puissance de 150W sur 8Ω.

2.2. Les borniers

Ceux-ci sont les mêmes que ceux utilisés sur l'amplificateur 2.1.

L'entrée mono sur la carte nécessite d'approvisionner un connecteur JST XH 2 points (pas de 2.56mm), mais on peut aussi dessouder le connecteur femelle et le remplacer, ou souder directement les fils sous la carte.

Le connecteur d'alimentation et la sortie haut-parleur sont des JST VH 2 broches (pas de 3.96mm).

La tension secteur est amenée à l'alimentation à l'aide d'une embase IEC sans filtre anti-parasites, car l'alimentation possède déjà le sien.

Un porte fusible est également nécessaire, ainsi qu'un interrupteur marche / arrêt et une LED.

2.3. La carte anti ploc

Le bruit à la mise sous tension et à la coupure est faible, la carte anti-ploc n'est pas urgente. Elle sera développée plus tard, avec seulement 1 canal, donc un seul relais.

2.4. Le prix

Cet amplificateur revient à environ 120€.

3. Le montage

L'article décrivant l'amplificateur stéréo LM3886 2x40W peut aider à la réalisation de ce modèle :

Amplificateur stéréo LM3886

4. Photos

Voici quelques photos de la réalisation :

Face avant
 
La LED est reliée à l'alimentation 48V à travers une résistance de 10KΩ. Elle se trouve dans la gaine thermorétractable, comme sur l'ampli 2.1 :

Interrupteur et LED
 
Vue de dessus

Face arrière

5. Téléchargements

Le projet de carte anti-ploc n'est pas essentiel pour l'instant, il sera disponible dans quelques mois.

6. Sécurité

Il faut être prudent lorsque l'on manipule un montage alimenté par le secteur, et toute intervention doit être faite cordon secteur débranché.

7. Conclusion

Cet amplificateur pour caisson de basses fonctionne parfaitement. Je ne peux en dire plus pour l'instant, car son écoute sur le caisson de basses devra attendre, ma solution de filtrage actif étant en cours d'étude.


Cordialement

Henri


mardi 9 février 2021

TCA9548A : multiplexer le bus I2C

 


TCA9548A : multiplexer le bus I2C

 

Comme vous le savez probablement le bus I2C permet de dialoguer avec des composants à l'aide de seulement deux fils et on peut théoriquement en brancher un bon nombre :

Sur ce schéma que j'ai déjà publié sur ce blog je compare 7 capteurs météo. Le composant avec lequel on désire dialoguer est sélectionné par le logiciel.

Les composants I2C possèdent souvent une ou plusieurs broches de sélection d'adresse. Par exemple le capteur de température et humidité HDC2080 possède une broche ADD que l'on peut relier au 3.3V pour changer son adresse I2C (0x41 au lieu de 0x40 si elle est reliée à GND).

Mais certains composants ne disposent que d'une seule adresse (HTU21D, SI7021, afficheurs OLED I2C, etc.).

Le cas doit se produire plutôt rarement, mais que faire lorsque l'on est dans l'obligation d'utiliser deux composants I2C ayant la même adresse ?

Un autre cas peut se produire : certains composants mal conçus cohabitent  difficilement avec d'autres sur le bus.

Le TCA9548 permet de multiplexer 8 bus I2C. Il a les caractéristiques suivantes :

  • 8 bus esclaves
  • alimentation 1.65V - 5.5V
  • 3 broches de sélection d'adresse

C'est un circuit CMS 24 pins, mais il est facile de trouver des modules "breakboard" équipés de ce circuit (voir image ci-dessus).

1. Le schéma

Sur ce schéma le TCA9548 est alimenté sous 5V (une alimentation sous 3.3V serait parfaitement possible) et il contrôle deux modules I2C également alimentés sous 5V.

Les deux modules I2C sont branchés sur les ports I2C 2 et 3 du TCA9548.

Les broches d'adresse A0, A1 et A2 sont reliées à GND. L'adresse I2C du TCA9548 sera donc 0x70. D'autres choix sont possibles, entre 0x70 et 0x77.

2. La librairie

Il existe quelques librairies. Celle que je vais utiliser est la suivante :

https://github.com/sparkfun/SparkFun_I2C_Mux_Arduino_Library

Elle est installable depuis l'IDE ARDUINO.

3. Le code

3.1. Capteurs SHT31D

J'ai câblé un petit montage avec une carte ARDUINO NANO, le TCA9548 et 2 capteurs SHT31D A et B. L'alimentation des 3 modules est en 3.3V. Cela fonctionnerait de la même façon sous 5V, le SHT31D supportant de 2.4V à 5.5V. 

La librairie Adafruit_SHT31 est nécessaire (installable depuis l'IDE). 

Voici le code :

#include <Wire.h>
#include <SparkFun_I2C_Mux_Arduino_Library.h>
#include <Adafruit_SHT31.h>

QWIICMUX myMux;
Adafruit_SHT31 sht31A = Adafruit_SHT31();
Adafruit_SHT31 sht31B = Adafruit_SHT31();

void setup()
{
  Serial.begin(115200);
  Wire.begin();

  if (myMux.begin() == false) {
    Serial.println("Mux not detected. Freezing...");
    while (1);
  }
  Serial.println("Mux detected");

  byte currentPortNumber = myMux.getPort();
  Serial.print("CurrentPort: ");
  Serial.println(currentPortNumber);

   // initialisation SHT31 A
  myMux.setPort(2);
  if (!sht31A.begin(0x44)) {
    Serial.println("Couldn't find sensor A");
    while (1) delay(1);
  }
  // initialisation SHT31 B
  myMux.setPort(3);
  if (!sht31B.begin(0x44)) {
    Serial.println("Couldn't find sensor B");
    while (1) delay(1);
  }
}


void loop()
{
  myMux.setPort(2);
  float temp = sht31A.readTemperature();
  float hum = sht31A.readHumidity();
  Serial.print("SHT31 A temperature = ");
  Serial.print(temp);
  Serial.println(" *C");
  Serial.print("SHT31 A humidity = ");
  Serial.print(hum);
  Serial.println(" %\n");
  myMux.setPort(3);
  temp = sht31B.readTemperature();
  hum = sht31B.readHumidity();
  Serial.print("SHT31 B temperature = ");
  Serial.print(temp);
  Serial.println(" *C");
  Serial.print("SHT31 B humidity = ");
  Serial.print(hum);
  Serial.println(" %\n");
  delay(10000);
}

Mon doigt est posé sur le capteur A. Voici ce qu'affiche le sketch :

Mux detected
CurrentPort: 255
SHT31 A temperature = 30.34 *C
SHT31 A humidity = 69.97 %
 
SHT31 B temperature = 22.81 *C
SHT31 B humidity = 41.96 %

Les deux modules SHT31 A et B sont branchés sur les ports I2C 2 et 3 du TCA9548.

A chaque fois que l'on veut communiquer avec le module A il suffit d'appeler :

  myMux.setPort(2);

A chaque fois que l'on veut communiquer avec le module B il suffit d'appeler :

  myMux.setPort(3);

3.2. Afficheurs OLED

On peut aisément faire la même chose avec 2 petits afficheurs OLED SSD1306, pour afficher des informations sur l'un ou sur l'autre.

Ici encore l'alimentation du TCA9548 et des écrans est en 3.3V.

La librairie de Bill Greiman SSD1306Ascii est nécessaire (installable depuis l'IDE).

Voici le code :

#include <Wire.h>
#include <SparkFun_I2C_Mux_Arduino_Library.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiAvrI2c.h"

QWIICMUX myMux;
SSD1306AsciiAvrI2c displayA;
SSD1306AsciiAvrI2c displayB;

void setup()
{
  Serial.begin(115200);
  Wire.begin();
  pinMode(13, OUTPUT);

  if (myMux.begin() == false) {
    Serial.println("Mux not detected. Freezing...");
    while (1);
  }
  Serial.println("Mux detected");

  byte currentPortNumber = myMux.getPort();
  Serial.print("CurrentPort: ");
  Serial.println(currentPortNumber);

  delay(2000); // nécessaire à la mise sous tension


  // initialisation OLED A
  myMux.setPort(2);
  Serial.println("initialisation OLED A");
  displayA.begin(&Adafruit128x32, 0x3C);
  displayA.setFont(System5x7);
  displayA.set1X();
  displayA.setCursor(0, 0);
  displayA.clearToEOL();
  displayA.print("INITIALIZED");
  // initialisation OLED B
  myMux.setPort(3);
  Serial.println("initialisation OLED B");
  displayB.begin(&Adafruit128x32, 0x3C);
  displayB.setFont(System5x7);
  displayB.set1X();
  displayB.setCursor(0, 0);
  displayB.clearToEOL();
  displayB.print("INITIALIZED");
  delay(500);
  displayA.set2X();
  displayB.set2X();
  digitalWrite(13, HIGH);
}

void loop()
{
  static int toggle = -1;

  myMux.setPort(2);
  displayA.setCursor(0, 0);
  displayA.clearToEOL();
  if (toggle != HIGH) {
    displayA.print("SCREEEN A");
  }
  myMux.setPort(3);
  displayB.setCursor(0, 0);
  displayB.clearToEOL();
  if (toggle != LOW) {
    displayB.print("SCREEEN B");
  }
  delay(1000);
  toggle = toggle == LOW ? HIGH : LOW;
}

Un délai d'au moins une seconde est nécessaire entre l'initialisation du TCA9548 et celle des écrans, si l'on met sous tension le montage. Lors d'un reset ce délai n'est pas utile. Je n'ai pas d'explication.

3.3. Adresse du TCA9548

A noter : si l'on désire utiliser une adresse alternative du TCA9548 il suffit de passer cette adresse à la méthode begin() :

  if (myMux.begin(0x71) == false) {
    Serial.println("Mux not detected. Freezing...");
    while (1);
  }

Dans ce cas (0x71) il faudra relier la broche A0 au +5V, ou 3.3V, suivant le cas.

4. Conclusion

Voici un petit composant bien pratique lorsque l'on est confronté à une situation de conflit sur un bus I2C.


Cordialement

Henri


dimanche 17 janvier 2021

Audio : Alimentation 5V faible bruit

 


Audio : Alimentation 5V faible bruit


Cette étude a pour but de construire une alimentation pour un convertisseur numérique / analogique audio, autrement dit un DAC.

Le DAC en question, un Topping E30, doit être alimenté sous 5V et consomme 130mA. Il est alimenté via un JACK 5.5x2.1.

Un câble adaptateur USB / JACK est fourni. On peut donc l'alimenter directement depuis un port USB du PC ou de la RASPBERRY PI.

Un convertisseur numérique / analogique comporte forcément des circuits analogique en sortie. La qualité de la sortie peut-elle être influencée par la qualité de l'alimentation, comme un préamplificateur ? rien n'interdit de le penser.

Un bon nombre de DACs du commerce sont équipés d'alimentations très haut de gamme. Cela ne me semble pas sans intérêt étant donné que l'étage de sortie est analogique et donc sensible à la qualité de l'alimentation.
J'ajoute également que certains modules amplificateurs classe D sont également équipés de régulateurs très faible bruit (pas pour les étages de puissance bien sûr), ce n'est peut-être pas sans raison ?

Je compte évaluer 3 solutions :

  • le câble USB
  • un bloc secteur 5V 3A à découpage
  • une alimentation linéaire

1. Mesures

Commençons par mesurer la tension et le bruit généré par ces solutions, en leur faisant débiter 130mA.

1.1. L'USB

Le port USB du PC fournit 4.97V sous 500mA, ce qui est amplement suffisant. Le bruit mesuré est de 30mV crête à crête.

1.2. Le bloc secteur

Le bloc secteur 5V fournit 5.1V. Le bruit mesuré est de 20mV crête à crête.

Il a été sélectionné parmi ceux dont je disposais, dont certains modèles ont des performances assez pitoyables : pour le plus mauvais une tension de sortie de 4.75V et du bruit allant jusqu'à 400mV crête à crête.

1.3. L'alimentation linéaire

Pour l'occasion je compte fabriquer une alimentation 5V à l'aide d'un module équipé d'un régulateur LT3045 acheté sur AliExpress :

Ce module est capable de fournir 1A. Il est assez cher (environ 25€) mais il est équipé d'un dissipateur et les câbles d'entrée et sortie sont fournis.

Il existe différentes versions : 5V, 9V, 12V, 15V

Y compris symétriques (LT3045 + LT3094) : +/-5V, +/-9V, +/-12V, +/-15V

Il s'agit d'un régulateur très récent :

  • bruit extrêmement faible : 0.8µV
  • taux de réjection de l'ondulation à 120Hz : 117dB

Comme on le voit il y a moyen de réaliser des alimentations très haut de gamme avec ce régulateur.

Pour comparaison voici les performances d'un LM317 :

  • bruit : 150µV (pour 5V en sortie)
  • taux de réjection de l'ondulation à 120Hz : 64dB

Un transformateur 8V / 1,3A, suivi d'une alimentation filtrée fourniront à ce régulateur environ 11V :

Pourquoi utiliser un filtrage aussi important, 13200µF ? Tout simplement pour obtenir une ondulation faible, environ 500mV pour 500mA débités. Cette ondulation sera éliminée par le régulateur, mais plus elle sera faible en entrée de celui-ci, meilleur sera le résultat en sortie.

Sur l'entrée P1 de cette alimentation sera branché le secondaire d'un transformateur toroïdal de 8V / 10VA. Un modèle 9V conviendrait aussi. J'ai choisi un BREVE TUFVASSONS TTS10/Z230/8V. 

Le boîtier choisi est un KRADEX Z40 :

Le coût de cette alimentation est inférieur à 50€ :

  • transformateur : 12€
  • diodes : 0.80€
  • condensateurs : 3.70€
  • régulateur : 25.90€
  • boîtier : 2.80€
  • cordon secteur : 1€
  • fiche JACK 5.5x2.1 : 0.20€

2. Photos

Voici quelques photos :


On voit le module régulateur au premier plan, suivi de la carte de redressement / filtrage, puis le transformateur. Le câble de sortie est branché directement sur le module régulateur. J'ai utilisé un connecteur XH 2 broches en ma possession, mais on peut aussi raccourcir le câble livré, souder au bout les deux fils du câble de sortie, et protéger à l'aide de deux petites gaines thermorétractables.

J'ai quand même ajouté un interrupteur du type rocker récupéré sur une vieille alimentation de PC.

3. Téléchargement

Pour télécharger le projet : https://bitbucket.org/henri_bachetti/power-supply-5v

Cette page vous donne toutes les informations nécessaires :
https://riton-duino.blogspot.com/p/migration-sous-bitbucket.html

4. Test en aveugle

J'ai réalisé un petit montage avec un Arduino NANO, un récepteur IR, deux relais, une télécommande IR (celle de mon ampli).
touche 1 : coupure de l'alimentation du DAC
touche 2 : mise sous tension (relais choisi au hasard par le logiciel)
touche 3 : commutation (changement d'alimentation)
Le montage est derrière le meuble, invisible du fauteuil, mais l'infrarouge arrive à passer.

J'écoute chaque morceau d'abord sur l'alimentation 1 puis une deuxième fois avec l'alimentation 2. Ensuite je vais voir quelle alimentation est sélectionnée : X ou Y. Ensuite je sélectionne à nouveau une alimentation au hasard et je recommence.

Une photo du montage :

 

5. Lien utiles

Un test de blocs secteur :

https://lygte-info.dk/info/indexUSB%20UK.html

6. Conclusion

J'ai acheté ce DAC Topping E30 pour remplacer une carte son ESI Juli@.

La différence par rapport à mon ancienne carte son PCI ESI Juli@ n'est pas si évidente. Sur des enregistrements rock & blues (Keb' Mo', Ben Harper) la différence n'est pas flagrante. Il faut dire que la Juli@ possédait déjà un DAC AKM AK4358 plutôt performant pour l'époque (2004).

Il m'a fallu faire une comparaison sur un très bon enregistrement baroque (Vivica Genaux, Arias for Farinelli). La voix est effectivement mieux détachée des instruments avec le E30. Sur le morceau "Concerto a 4 en ut mineur : II Allegro" la Julia@ est assez brouillonne sur les passage forte. Le E30 s'en sort beaucoup mieux. 

Le but que je recherche est ultra-simple : atteindre avec Deezer HIFI le niveau de qualité que j'obtiens avec mon lecteur CD TECHNICS SL-G700E, but que je n'ai pas encore atteint, jusqu'à ce jour.

J'ai d'abord écouté deux albums de Beth Hart. Je suis en pleine découverte de cette artiste et j'avoue que son inspiration en tant que compositrice est tout simplement énorme. Beaucoup d'émotion, elle est topissime. Sa voix est beaucoup plus chaleureuse avec cette alimentation.

J'ai ensuite écouté Rinaldo, mon opéra préféré de Haendel. L'écoute a tout simplement été sublime, la voix de Vivica Genaux magnifique, contrairement aux précédentes écoutes avec un bloc secteur de base. J'atteins enfin la qualité de mes précédentes écoutes avec mon SL-G700E, qui reste ma référence.

L'écoute du DAC est transformée grâce à cette alimentation. Voix et instruments sonnent plus clair, la caisse claire a plus d'impact, les sons des violons et violoncelles sont plus vrais, se rapprochent de ceux que j'écoute en live. En bref je constate les mêmes améliorations que lorsque j'ai comparé le E30 et la Juli@, en plus prononcé.

Avec cette alimentation on a envie de pousser un peu le bouton de volume. Avec un bloc secteur classique on a plutôt envie de faire le contraire.

Il est très difficile de comparer deux DACs. Même une comparaison en aveugle entre un modèle haut de gamme et un modèle bas de gamme peut laisser perplexe. Après tout ils sont tous à peu de chose près au même niveau technique et le choix est souvent déterminé par l'aspect marketting. On trouve des DACs à 4000€. Le fantasme audiophile fait le reste.

Le Topping E30 est un modèle de bureau, il est dépourvu d'alimentation, ce qui explique son petit prix de 130€. Par contre il est équipé d'un DAC AK4493 32bit/768kHz et il est parfaitement capable de lire des fichiers DSD512, comme ses camarades beaucoup plus chers. Il suffit de bien l'alimenter pour qu'il s'exprime pleinement, avec chaleur et brio.


Cordialement

Henri


dimanche 10 janvier 2021

Alimentation par bloc secteur


Alimentation par bloc secteur


J'aimerais faire le point dans ce article sur quelques alimentations secteur que j'ai utilisé pour mes montages.

1. RASPBERRY PI

Une RASPBERRY PI consomme un courant assez important, de l'ordre de 700mA pour un modèle RPI 3. On pourrait penser qu'un petit bloc secteur peut suffire.

Voici ceux que j'ai utilisé :

Goobay 43652 2A

Acheté fin décembre 2015, décédé début mai 2020.

Il est assez étrange de constater que ce bloc n'est pas complètement détruit. Il continue à fonctionner, si on lui demande 50mA maximum.


Aukru-bs-530 3A

Ce modèle 5V / 3A a fonctionné quelques mois.

Comme pour le précédent, il fonctionne en dessous de 100mA.

J'estime qu'une RASPBERRY PI mérite d'être alimentée avec un bloc de meilleure qualité que ces blocs secteur bas de gamme.

Il vaut mieux choisir une alimentation plus sérieuse :
 
MeanWell RS-15-5 3A

Pour un montage sur rail DIN j'utilise ceci :
 
MeanWell HDR-15-5 2.4A

Si l'on compare les prix :
  • Goobay 43652 2A : 10€
  • Aukru-bs-530 3A : 13€
Le prix de le qualité n'est finalement pas si élevé :
  • MeanWell RS-15-5 3A : 8.50€
  • MeanWell HDR-15-5 2.4A : 12€
  • MeanWell HDR-30-5 3A : 15€

2. ESP8266, ESP32

On pourrait penser qu'un petit chargeur 5V pourrait suffire pour un ESP8266 qui consomme moins de 100mA au repos.

Sur un montage ESP8266 + écran TFT (consommation 130mA) j'ai perdu tour à tour 2 alimentations :

Eleaf 5V 1A

 Ce chargeur de vapoteuse a tenu quelques semaines.

Samsung 5V 700mA

Ce chargeur de téléphone a tenu quelques jours.

On peut facilement en tirer une conclusion : un chargeur de téléphone n'est pas capable d'assurer une alimentation permanente 24H/24, même si le courant débité est bien en dessous de ce qu'il est sensé fournir.

MeanWell IRM-05-5

Cette alimentation MeanWell 5V 1A est en service sur un montage à base d'ESP8266 + relais depuis plus de 4 ans.

Ce n'est pas la seule alimentation de ce type en service dans la maison. Et je dois reconnaître que la qualité est au rendez-vous.

Je viens de recevoir quelques blocs secteur MeanWell :

MeanWell SGA12E05-USB 5V 2.4A

L'un d'entre eux alimente déjà mon montage ESP8266 + écran TFT. Il va falloir attendre pour juger de la fiabilité.

Les prix sont les suivants (chez TME) :

  • MeanWell IRM-05-5 : 7.30€
  • MeanWell SGA12E05-USB : 11€

3. Arduino

Frecom 5V 1A

Cette petite alimentation est sous tension depuis 2016. Elle alimente un ARDUINO NANO en veille permanente : 7.5mA. La NANO se réveille toutes les 30s pour faire une mesure de température.

Il semblerait que lorsque la consommation est très faible les petits blocs secteur tiennent bien.

4. Lien utiles

Un test de blocs secteur :

https://lygte-info.dk/info/indexUSB%20UK.html

5. Conclusion

Cet article n'est pas une publicité en faveur de MeanWell, il y a certainement d'autres marques tout aussi valables, mais l'offre MeanWell en matière d'alimentation est très étendue et la qualité est là.

L'erreur à ne pas commettre est surtout d'utiliser un chargeur (téléphone mobile, vapoteuse, tablette), sauf apparemment si la consommation est de l'ordre de quelques dizaines de mA.


Cordialement

Henri


lundi 4 janvier 2021

Décembre 2020 : Actualité des Blogs du Mois

 


Actualité des Blogs du Mois


Sur le blog d'Yves Pelletier :
Sur  Framboise 314 :
Sur  MCHobby :
Sur Papsoid :

Sur ArduiBlog

 

Cordialement
Henri 

 

jeudi 17 décembre 2020

Alimentation par batterie + panneaux solaires

 

Alimentation par batterie + panneaux solaires

 

Dans un article précédent j'ai présenté une porte de poulailler automatisée, alimentée par une batterie :

https://riton-duino.blogspot.com/2020/04/porte-motorisee-de-poulailler-1ere.html

Dans celui-ci je vais exposer uniquement la partie alimentation solaire, en tentant d'expliquer une méthode de mise en œuvre.

Il ne s'agit pas ici d'étudier un montage à très basse consommation (quelques µA ou dizaines de µA) que l'on peut recharger tous les 6, 12 ou 18 mois à l'aide d'un chargeur ou par remplacement de la batterie, bien que cela soit possible, à condition que le montage soit à l'extérieur.
C'est uniquement une question de budget. Vaut-il mieux alimenter en solaire ou changer une batterie régulièrement ?

Il s'agit plutôt d'alimenter un montage ayant une consommation journalière relativement élevée, cette consommation étant due souvent à l'utilisation d'un organe mécanique (moteur, pompe, actionneur, gâche électrique) dont on ne peut réduire la consommation car toute action mécanique nécessite de la force, et donc de l'énergie.

1. Tension d'alimentation

Tout montage a besoin d'une tension d'alimentation principale, celle qui va alimenter le microcontrôleur, généralement sous 3.3V ou 5V.

On peut avoir également besoin d'une tension supplémentaire pour alimenter un moteur, un vérin, un actionneur ou un module quelconque en 5V, 6V, 12V ou autre.

La première idée qui vient à l'esprit est d'utiliser une batterie 6V ou 12V adaptée au moteur, vérin, ou actionneur, et d'abaisser cette tension à 3.3V ou 5V pour alimenter le microcontrôleur, à l'aide d'un régulateur linéaire de bonne qualité.
En choisissant cette solution un problème se pose lors du choix du chargeur. En effet les chargeurs du commerce sont généralement prévus pour de grosses batteries 12V ou 24V, ce qui élève fortement le budget.
Certaines solutions bon marché existent toutefois : voir en fin de document.

Nous allons donc partir du principe que l'on peut parfaitement alimenter un montage à l'aide d'une seule batterie LITHIUM-ION 3.7V (ou de plusieurs en parallèle), et recharger celle-ci avec un petit chargeur automatique très bon marché : le TP4056.

La démarche sera la même si l'on a décidé d'utiliser une batterie 6V ou 12V au plomb, mis à part qu'il faudra utiliser un chargeur dédié. Cette solution sera de toutes façons beaucoup plus chère et encombrante. La batterie plomb est la seule toutefois à pouvoir fonctionner à très basse température. Une batterie LITHIUM-ION verra sa capacité diminuer de moitié à -20°C. De plus il faudra éviter de la recharger si sa température est inférieure à 0°C.

Remarque : 3V est la limite basse pour une batterie LITHIUM-ION. En dessous de cette tension, la durée de vie de la batterie sera réduite. Il convient donc de calculer son chargeur de façon précise.

1.1. Alimentation 3.3V

L'étude d'une solution d'alimentation par batterie et recharge solaire ne se fait pas sans avoir une connaissance parfaite de la carte ARDUINO, ESP8266 ou ESP32 :

  • quel régulateur 3.3V équipe la carte ?
  • quelle est sa consommation en veille ?

1.1.1. Composants

Certains circuits ne supporteraient pas une tension batterie de 3.7V, c'est le cas du module radio NRF24L01 par exemple.

Dans ce cas il conviendra de prévoir un régulateur linéaire 3.3V. Ce régulateur pourra également alimenter le microcontrôleur, une carte ARDUINO PRO MINI 8MHz par exemple, un ESP8266, ou un ESP32.

1.1.2. Arduino

Un ARDUINO PRO MINI 8MHz 3.3V, si l'on désire un régulateur plus performant que celui implanté sur la carte, peut se contenter d'un régulateur HT7533-1 (100mA).

1.1.3. ESP8266 et ESP32 (module nu)

ESP-WROOM32

Le module ESP8266 ou ESP32 nu est la solution basse consommation idéale :

  • 5µA pour un ESP32 en veille
  • 20µA pour un ESP8266 en veille

Pour un ESP8266, ou un ESP32 il faudra prévoir un régulateur 500mA, un ME6211 ou un RT9013 par exemple. Ces deux régulateurs ont une consommation propre de 40µA et 25µA.

Ces deux régulateurs ont une tension de déchet (drop-out) de 120mV et 170mV, la tension de la batterie pourra donc chuter jusqu'à 3.2V sans problème, il restera encore au moins 3V en sortie. Attention toutefois à la connexion au WIFI, qui va consommer au moins 400mA et faire chuter encore plus la tension de la batterie.

3V est la limite de fonctionnement d'un ESP8266. Un ESP32 sera capable de fonctionner jusqu'à 2.2V, un ARDUINO PRO MINI 8MHz jusqu'à 2.7V. 

Mais dans tous les cas, 3V est la limite basse pour une batterie LITHIUM-ION.

1.1.4. ESP8266 et ESP32 (cartes)

Une carte consomme en général plus qu'un module nu. Il faudra connaître sa consommation en veille afin de faire un bilan de consommation. Quelques exemples :

Consommation d'une carte ARDUINO, ESP8266 ou ESP32

Une carte ESP8266 ou ESP32 est forcément équipée d'un régulateur 3.3V :

ESP8266 WEMOS D1 MINI

Le schéma de cette carte montre un régulateur ME6211 placé entre la broche 5V et la broche 3.3V. Comme vu précédemment, un ME6211 a une tension de déchet de 120mV, et pourra donc être alimenté directement à l'aide d'une batterie LITHIUM-ION ou LIPO, et ceci par la broche 5V.


ESP32 DevKit-C

Le schéma de l'ESP32 DevKit-C montre qu'elle est équipée d'un régulateur AMS1117. Un AMS1117 a une tension de déchet trop importante (1.1V) pour être alimenté à l'aide d'une batterie LITHIUM-ION ou LIPO.

Mais on peut très bien l'alimenter par sa broche 3.3V à l'aide d'un régulateur ME6211 et d'une batterie, quitte à retirer l'AMS1117 pour qu'il ne consomme pas de courant sur la batterie.

Pour ces deux cartes, on n'aura donc plus qu'à ajouter un chargeur en parallèle sur la batterie (voir plus loin).

Certaines cartes sont également équipées d'un connecteur pour batterie LITHIUM-ION ou LIPO, comme la LOLIN D32 :

 

Le schéma de la LOLIN D32 montre deux choses :

  • un régulateur ME6211
  • un chargeur de batterie TP4054

Le TP4054 est connecté entre le 5V USB (VBUS) et la batterie. On pourra parfaitement connecter un panneau solaire entre les broches VBUS et GND. Attention à la tension à vide du panneau solaire qui ne devra pas dépasser 9V en plein soleil.

1.2. Alimentation 5V

Si le microcontrôleur ou tout autre module (un servomoteur par exemple) doit être alimenté sous 5V, on peut parfaitement élever la tension de la batterie avec un convertisseur STEP-UP, un XR2981 par exemple :

Il consommera très peu sur la batterie, 120µA, et pourra éventuellement fournir un courant de 2A.

1.3. Alimentation 12V ou autre

Si l'on doit piloter un moteur 12V ou plus, il faut d'abord se poser la question du circuit de pilotage.

La partie logique d'un L293D ou un L298 devra être alimentée sous 5V et consommera un courant non négligeable sur la batterie, une dizaine de mA.
Mon projet utilise un L293D pour des raisons de disponibilité immédiate, mais deux MOSFETs sont nécessaires pour couper ses alimentations. Cela fait ajouter un peu d'électronique :

https://riton-duino.blogspot.com/2020/04/porte-motorisee-de-poulailler-1ere.html

Si l'on préfère utiliser un microcontrôleur 3.3V, il est préférable également de choisir un autre circuit de pilotage, un TB6612FNG (15V, 1.2A) ou un VNH7070BAS (38V, 15A). Ces deux circuits accepteront d'être commandés avec une tension de 3V et possèdent une broche de standby, ce qui permettra de réduire fortement leur consommation au repos (1µA).

En bref il faut fouiller chez les revendeurs de composants électroniques pour dénicher le pilote adapté à son microcontrôleur, et de préférence choisir un composant moderne, permettant d'économiser l'énergie.

A partir de la tension de la batterie, il sera possible de fabriquer une tension de 12V ou autre avec un convertisseur STEP-UP, un MT1308 par exemple :

Il consommera 170µA sur la batterie, et pourra fournir un courant de 2A.

1.4. Batterie au plomb

Si l'on a opté pour une alimentation par batterie au plomb, il est nécessaire d'éclaircir un point.

Beaucoup d'amateurs pensent qu'il suffit d'appliquer à la batterie une tension de 14V pour la recharger, et qu'en fin de charge, comme la tension de la batterie va atteindre cette tension de 14V, le courant de charge va s'annuler.

C'est vrai en partie. A une température de 25° cela va fonctionner, mais la tension de fin de charge varie en fonction de la température. Pour du 12v / 6 éléments :

  • 14.6V à -10°C
  • 13.6V à +25°C
  • 13.2V à +40°C

L'utilisation  d'un chargeur régulé en température est absolument nécessaire.

Je vous renvoie à cet article :

https://ni-cd.net/wpnicd/index.php/la-charge-des-batteries-au-plomb/

2. Bilan de consommation

Après avoir fait ses choix techniques la première chose à faire est un bilan de consommation électrique.

Il faut tout d'abord connaître les limites de l'utilisation du système. Si par exemple un moteur doit être actionné, le temps de rotation du moteur doit être connu, et le nombre de fois où ce moteur doit être actionné dans la journée également. Connaissant la consommation du moteur, il est facile d'en déduire l'énergie qu'il consommera dans une journée.

Le premier problème est de savoir quel sera le courant consommé pour un couple donné. Il est rare que la datasheet d'un moteur ou d'une pompe soit suffisamment précise. En général seul le courant maximal et le couple maximal sont précisés. Il faut souvent réaliser un essai, charger mécaniquement le moteur et mesurer le courant. Pour une pompe il faudra aussi se rapprocher au maximum des conditions réelles (hauteur de liquide à relever par exemple).

Pour une gâche électrique ou un actionneur ce sera plus facile.

2.1. Exemple

Prenons comme exemple imaginaire un moteur 12V qui doit tourner en moyenne 10 fois par jour pendant 2 minutes (donc 20 minutes en tout). Il consomme 100mA. Il est contrôlé par un ESP8266 et un pilote TB6612FNG. Un capteur de luminosité BH1750 est présent, car les actions sont réalisées uniquement pendant le jour.

Un ME6211 permet d'alimenter l'ESP8266 et le BH1750.

L'ESP8266 est en mode veille, sauf pendant les périodes de rotation du moteur.

Il est à noter que le TB6612FNG et le BH1750 sont choisis pour leur aptitude à fonctionner sous 3.3V et leur faible consommation.

On pourrait facilement adapter cette méthode de calcul pour n'importe quel montage, mais il faut retenir une chose : on doit absolument connaître les caractéristiques du matériel utilisé, et pour cela il faut aller à la pêche au renseignements (datasheets, WEB, etc.).

L'exemple choisi est volontairement complexe, afin d'attirer l'attention du lecteur sur les différents types de consommation :

  • consommation permanente
    • microcontrôleur en mode veille
    • convertisseur
    • etc.
  • consommation intermittente 
    • moteur, pompe
    • microcontrôleur en mode éveillé
    • connexion WIFI
    • etc.
Toutes ces consommations se calculent en mAH (milliampère heure) par jour et s'ajoutent au final.

2.2.1. Consommation permanente

La consommation permanente de l'électronique sera la suivante :

  • ME6211 : 40µA
  • convertisseur MT1308 : 170µA
  • ESP8266 type NodeMCU en mode veille : 100µA
  • TB6612FNG : 1µA
  • BH1750 : 190µA

Soit un total de 500µA, donc 0.5mA. Cette consommation est permanente, donc il faut la multiplier par 24H, ce qui donne 12mAH.

2.2.2. Consommation intermittente

La consommation journalière (20 minutes) du moteur sera de :

C = 100mA / 60 * 20 = 33mAH

En admettant que l'ESP8266 reste éveillé pendant que le moteur tourne il consommera environ 70mA pendant également 20 minutes :

C = 70mA / 60 * 20 = 23mAH

On peut également ajouter un petit peu d'énergie pour la phase de connexion au WIFI (400mA). Une durée de 10 secondes est un maximum, et comme il y a 10 réveils par jour, il faut multiplier par 10 :

C  = 400mA / 3600 * 10 * 10 = 11mAH

Si l'on utilise un ESP8266 c'est qu'il y a des données à transmettre ou recevoir. Pendant les phases de communications l'ESP8266 consommera environ 200mA. Admettons que nous communiquons pendant 2 secondes après chaque mouvement du moteur :

C  = 200mA / 3600 * 2 * 10 = 1mAH

2.2.3. Consommation totale

Nous obtenons un total de :

12mAH + 33mAH + 23mAH + 11mAH + 1mAH= 80mAH

Cela veut dire que la batterie devra fournir cette énergie quotidiennement et le panneau solaire également.

Il serait bien entendu inenvisageable d'alimenter ce montage à l'aide d'une batterie rechargée manuellement, sachant qu'une batterie de 2500mAH aura une autonomie de :

2500mAH / 80mAH = 31 heures

Notre bilan de consommation est terminé. Il va falloir s'occuper maintenant de la partie alimentation.

3. Choix de la batterie et du panneau solaire

3.1. Courant maximal

Une batterie ne se choisit pas simplement par rapport à sa capacité. Il faut tenir compte du courant qu'elle est capable de fournir.

Dans l'exemple précédent la consommation maximale instantanée est de 400mA (connexion au WIFI). La batterie devra donc être capable de fournir ce courant sans chute de tension excessive. Si l'on a besoin d'un courant très important on il existe des batteries pouvant fournir 20A ou 30A (MXJO par exemple).

A moins d'avoir des contraintes d'encombrement importantes, la batterie 18650 reste un bon choix, car elle a le meilleur rapport capacité / prix. Sinon, une 16340 ou une petite LIPO feront l'affaire.

Pour augmenter le courant disponible et la capacité, on peut accoupler plusieurs batteries 18650 en parallèle, à condition qu'elles soient du même type, même âge, et qu'elles soient correctement chargées au départ. 

Pour les projets à base d'ESP8266 ou ESP32 une batterie LIFEPO4 (3.6V à pleine charge) est idéale.

3.2. Capacité

Comment calculer la capacité nécessaire ?

Plusieurs facteurs sont à prendre en compte :

  • la quantité d'énergie nécessaire
  • la météo de la région dans laquelle le système est installé
  • l'exposition par rapport au soleil

Par temps couvert un panneau solaire fournira un peu d'énergie, environ 1% à 2% de son maximum. Cela peut être suffisant pour la recharge, ou pas.

Par exemple un panneau de 12V / 1W en plein soleil peut avoir un courant de court-circuit de 250mA, et par temps couvert ce courant tombe à 4mA.

Dans notre exemple précédent l'énergie quotidienne nécessaire est de 80mAH. En été et en plein soleil cette recharge serait effectuée en :

T = 80mAH / 250mA = 0.32 heures soit un peu plus de 19 minutes

Dans notre exemple précédent la consommation permanente est de 500µA, ce qui veut dire que 4mA sont amplement suffisants pour recharger la batterie, sauf quand le moteur tournera, mais cela va prendre du temps. Nous avons calculé que nous avons besoin de 80mAH par jour :

T = 80mAH / 4mA = 20 heures

On voit tout de suite que la recharge sera insuffisante par temps couvert, car le soleil se sera couché bien avant l'heure prévue. Si l'on considère que, l'hiver, on aura 8 heures de luminosité par jour, la recharge fournira seulement 4mA x 8 = 32mAH, soit 40% des besoins.

La solution peut être d'adopter un panneau fournissant 2.5 à 3 fois plus d'énergie, ainsi on n'aura même pas à se préoccuper de la météo. Cette solution est envisageable pour une installation de faible puissance (quelques watts), car pour un panneau de taille supérieure le prix sera prohibitif.

Une exposition au sud aura de meilleures chances de provoquer une recharge plus rapide de la batterie, par temps ensoleillé.
Par contre par temps couvert l'exposition a peu d'importance. Le courant sera le même, que le panneau soit bien exposé ou pas.

Si l'on tient compte de la météo et de l'exposition, une marge plus ou moins importante de capacité batterie est nécessaire. Dans certaines régions il est possible d'avoir plusieurs jours de temps couvert consécutifs.

Dans tous les cas il faut avoir quelques informations en main :

La consommation journalière du montage en mAH, ce que nous avons donc calculé dans l'exemple précédent.

La quantité d'énergie que peut fournir le panneau par temps couvert et en hiver. Si l'on veut estimer cette quantité d'énergie avant d'acheter le panneau, on peut faire une approximation en prenant 1% du courant de court circuit, et multiplier par le nombre d'heures d'ensoleillement par jour en hiver (environ 8H).
Il est bien entendu déconseillé d'acheter un panneau dont on ne connaît pas le courant de court-circuit.

La quantité d'énergie que peut fournir le panneau au soleil et en hiver. Il est assez proche du courant de court-circuit pour un panneau 12V, plus faible pour un panneau 5V ou 6V.
Cette donnée est essentielle. En effet si l'énergie fournie quotidiennement en plein soleil est inférieure à l'énergie consommée par le montage, il faudra envisager l'achat d'un panneau fournissant plus d'énergie, ou de réduire la consommation du montage.

Le nombre de jours de temps couvert consécutifs. Cette information va directement conditionner le choix de la capacité de la batterie.

Dans l'exemple précédent l'énergie quotidienne nécessaire est de 80mAH. Avec un petit panneau de 1W capable de fournir 32mAH par temps couvert, on a un déficit de :

D = 80mAH - 32mAH = 48mAH

Une semaine de temps couvert, donc d'autonomie complète, conduira au choix d'une batterie de 48mAH x 7 jours = 340mAH.

Attention tout de même. Il faut tenir compte du fait que lorsque la batterie sera presque vide, sa tension va chuter à 3V et elle ne sera peut-être plus capable de fournir un courant suffisamment important pour notre montage. Lorsque l'on regarde la courbe de décharge d'une batterie LITHIUM-ION, on voit que la tension chute fortement à partir de 25% de capacité restante. Il vaut mieux donc adopter une batterie ayant 25% de capacité de plus, soit 420mAH.

Enfin, le nombre d'heures d'ensoleillement annuel dans la région où le système est installé peut aider à faire ses choix :

https://www.meteopassion.com/ensoleillement-annuel.php

3.3. Climats extrêmes

Si l'on considère que les périodes de temps couvert peuvent durer plus d'une semaine, il suffit de refaire le calcul.

Si le montage est destiné à fonctionner dans une région très froide, il vaut mieux doubler la capacité (une batterie LITHIUM-ION verra sa capacité diminuer de moitié à -20°C). Dans certains cas extrêmes, la seule solution sera d'adopter une batterie au plomb.

REMARQUE IMPORTANTE : il est déconseillé de recharger une batterie LITHIUM-ION lorsque sa température descend en dessous de 0°C. Le chargeur devra donc être coupé. On peut le faire simplement avec un MOSFET (voir schéma plus bas).

Seule la température de la batterie est concernée, pas celle du panneau. Si la batterie est située dans un local hors gel, cette précaution est inutile.

3.4. Le chargeur TP4056

Cette carte TP4056 à 0.50€ est idéale. Elle est capable de fournir 1A :


Elle est équipée de deux LEDs :

  • rouge quand la charge est en cours
  • bleue quand la charge est terminée

Quand le panneau ne fournit plus de courant, les deux LEDs sont éteintes.

On peut brancher un chargeur USB (il existe des modèles mini ou µUSB) ou alors utiliser les deux pastilles marquées IN+ et IN- pour y brancher un panneau solaire 5V ou 6V. Si la tension du panneau est supérieure il faudra l'abaisser (voir plus loin).

Elle accepte jusqu'à 8V sur son entrée. Elle a une consommation très faible (typiquement 2.5µA) sur la batterie lorsque son entrée est débranchée ou que le panneau ne fournit pas d'énergie.

Une batterie 16340 ayant une capacité de 650mAH ou une petite LIPO ne supportera pas un courant de 1A. On ne devra pas dépasser un courant de C/2, c'est à dire 325mA pour une batterie de 650mAH. Si le panneau est trop puissant, on peut diminuer le courant de charge si nécessaire en remplaçant une résistance : 

Mais on peut bien évidemment diminuer ce courant en adoptant un panneau bien dimensionné, qui ne pourra jamais fournir un courant supérieur à C/2, ce qui est plus rationnel.

3.4.1. Panneau solaire 5V ou 6V

Il existe des panneaux 5V ou 6V. Un panneau de ce type pourra être utilisé directement.

Il est par contre impératif de mesurer sa tension à vide en plein soleil afin de vérifier qu'elle ne dépasse pas 8V. 

3.4.2. Panneau solaire 12V ou plus 

Un essai de charge d'une batterie 18650 avec un TP4056 et un petit panneau de 12V / 4W m'a permis de constater qu'en début de charge la tension du panneau est de 3.7V pour un courant de 300mA. C'est parfaitement normal, la tension chute fortement en sortie de panneau si le courant demandé est important.

Par contre, en fin de charge, le TP4056 coupera le courant et la tension du panneau risque d'augmenter fortement, jusqu'à atteindre sa tension à vide (12V, 20V suivant le cas), ce qui serait destructeur pour le TP4056.

Il est indispensable d'abaisser la tension à moins de 8V pour que le TP4056 ne soit pas endommagé. Un convertisseur à découpage MP1584 5V effectuera ce travail :

Un LM2596 ferait également l'affaire :

Pour des raisons de fiabilité je préfère les régulateurs à tension de sortie fixe.

L'utilisation d'un régulateur linéaire (LM7805, LM317) est déconseillée, car le courant fourni par le panneau sera égal au courant de charge. Imaginons un panneau capable de fournir 1A sous 12V. La dissipation sera élevée :

P = (12V - 5V) * 1A = 7W

Il est dommage de gaspiller 7W alors que l'on a besoin de 5W pour la charge. Le rendement se situerait aux alentours de 40%.

De plus pour dissiper une pareille puissance il faudra un dissipateur assez conséquent, probablement un modèle en dessous de 5°C/W :

Dissipateur 42x38x25

Avec un régulateur à découpage le courant consommé sur le panneau sera plus faible :

I = 1A / (12V/5V) = 0.41A

Et la dissipation sera plus faible également (exemple avec un convertisseur ayant 90% de rendement) :

P = 5V * 1A * 10% = 0.5W

Lorsque l'on utilise un régulateur réglable il faut de préférence choisir un modèle à potentiomètre étanche comme sur le LM2596 ci-dessus.

Ces régulateurs à potentiomètres miniatures sont à proscrire :

MP1584 réglable

Schéma du chargeur

Ce chargeur, couplé avec un panneau solaire 12V / 4W est capable de fournir 450mA en début de charge. Il sera donc capable de charger une batterie de 2500mAH en 5H30.

Schéma du chargeur avec MOSFET de coupure du panneau

Comme je le disais plus haut : il est déconseillé de recharger une batterie LITHIUM-ION lorsque sa température descend en dessous de 0°C. Le chargeur devra donc être coupé.

La broche ENABLE commande un transistor 2N3904 qui permet de rendre passant un MOSFET canal P (AOI403) et ainsi d'autoriser la recharge de la batterie.

Ce MOSFET a deux utilités :

  • couper le panneau dans le cas où l'on désirerait mesurer sa tension (VPANEL)
  • couper le panneau si la température descend en dessous de 0°C

La broche ENABLE peut être directement commandée par une sortie du microcontrôleur. On appliquera un niveau haut pour autoriser la charge, un niveau bas pour la couper.

Il faudra bien entendu ajouter un capteur de température au montage.

3.5. Le chargeur TP5000

Pour les projets à base d'ESP8266 ou ESP32 un TP5000 pourra charger une batterie LIFEPO4 si l'on a fait ce choix.

On trouve deux types de cartes :

  • cartes dédiées LIFEPO4 
  • cartes LITHIUM-ION ou LIFEPO4

Un pont de soudure permet en général de faire le choix. Voir ici :

https://lygte-info.dk/review/Review%20Charger%20TP5000%204.2-3.6V%20module%20UK.html

3.6. Autres chargeurs

Il existe d'autres solutions si l'on a besoin d'un courant de recharge plus important, celle-ci par exemple :

Ce chargeur 3A est disponible ici pour 7€ :

https://fr.aliexpress.com/item/32287069409.html?spm=a2g0s.9042311.0.0.27426c375ZQrSJ

Il est capable de gérer divers types de batterie (NIMH, Plomb, LI-ION, LIFEPO4) et plusieurs configurations sont possibles :

  • 1 à 3 batteries LITHIUM-ION en série
  • 1 à 4 batteries LIFEPO4 en série
  • 1 batterie 12V plomb

Il existe certainement d'autre modèles, et pour les puissances plus importantes il est toujours possible de s'orienter vers les solutions d'alimentation solaire domestique, en sachant toutefois que ce sont des solutions fonctionnant à partir de batteries 12V ou 24V, et le budget ne sera pas le même.

4. Mesures

Voici mon projet de porte de poulailler :

https://riton-duino.blogspot.com/2020/04/porte-motorisee-de-poulailler-1ere.html 

Les données de recharge de la batterie LITHIUM-ION sont remontées vers un serveur DOMOTICZ grâce à un module radio NRF24L01.

Voici un relevé datant du 15 décembre par beau temps :


Le graphique du haut représente la tension du panneau. A 10H50 elle augmente à 16V. Cela veut dire que la batterie est pleine, le TP4056 a coupé la charge. Le panneau ne débite plus de courant.

Le graphique du bas montre la puissance débitée, 0.3W entre 10H40 et 10H50. Avant 10H40 elle est inférieure à 0.1W, mais la recharge se fait quand même, à faible courant, panneau à l'ombre.

Aujourd'hui 17 décembre, par temps très couvert, la recharge n'est toujours pas terminée et il est 16 heures !

Aujourd'hui 18 décembre, une brève apparition du soleil entre 12H50 et 12H55 et donc une petite pointe de puissance de 0.3W a permis d'atteindre la pleine charge. Il ne manquait donc pas grand chose.

5. Conclusion

J'espère avoir un peu débroussaillé le sujet pour ceux qui souhaiteraient débuter dans ce domaine.

6. Liens utiles

ARDUINO : l'alimentation (VCC, VIN, etc.)

Consommation d'une carte ARDUINO, ESP8266 ou ESP32

Alimenter un ARDUINO sur Pile ou Batterie

ESP8266 et ESP32 sur batterie

ARDUINO PRO MINI & basse consommation

Convertisseurs STEPUP & STEPDOWN

Les régulateurs LDO


Cordialement

Henri