dimanche 24 novembre 2019

Thermomètre InfraRouge



Thermomètre Infrarouge


Lorsque j'ai acheté mon thermomètre infrarouge il y a quelques mois j'en étais très satisfait. Pour la modique somme de 23€ je pouvais enfin mesurer la température de composants et dissipateurs :

PEAKMETER PM6530C

1. Le besoin

Peu à peu, certains inconvénients se sont fait ressentir.

La mesure d'une température de composants ne se fait pas en cinq secondes et il est souvent nécessaire de procéder à différents tests sous diverses conditions afin de pouvoir juger si la température d'un composant se trouve dans une plage acceptable. Il est également intéressant de pouvoir apprécier le temps de montée ou de descente de la température.

Avec un thermomètre infrarouge classique l'obligation d'appuyer sur la gâchette pour effectuer la mesure n'est pas très pratique pour surveiller la température d'un composant pendant de longues minutes. Une possibilité de fixation sur un support serait également appréciée. Il n'y a pas non plus de sortie USB pour relever une courbe de température.

Pour résumer mon besoin se situe plus dans un thermomètre d'établi sur pied, connecté en USB, et éventuellement détachable (donc équipé d'une batterie) pour des mesures ponctuelles.

Entre acheter un thermomètre USB à 150€ et réaliser moi-même un thermomètre strictement adapté à mon besoin, le choix fut rapide.

J'avais déjà connaissance de ce composant, le MLX90614 :

MELEXIS MLX90614ESF-BAA

MELEXIS MLX90614ESF-ACF
C'est un composant thermomètre infrarouge I2C. Il permet de mesurer des températures entre -70 et +380°C.
Il existe en plusieurs versions :
  • tension d'alimentation 5V ou 3V
  • cône de vision étroit 10° ou large 30°
  • boîtier TO39 ou autre
En fonction du boîtier choisi il coûte entre 5€ et 20€.
J'ai choisi un MLX90614ESF-ACF (5V, 10°).

Je pense que l'on peut aussi utiliser un MLX90614ESF-BAA si on l'équipe d'un petit tube noir de ⌀8mm x 15mm afin de réduire son cône de vision, et d'un régulateur 3V ou 3.3V.
Le MLX90614ESF-BAA, moins cher, n'aura pas de possibilité de réglage d'émissivité, mais pour mesurer des températures de composants, généralement noirs, cela ne devrait pas poser de problème.

J'ai testé également ce module :
Module MLX90614ESF-BAA
Il est équipé d'un régulateur de tension 3V pour pouvoir l'alimenter en 5V, ainsi que de quelques composants nécessaires : résistances pullup I2C, condensateur de découplage.

2. Alimentation

2.1. Alimentation USB

Le montage peut être alimenté par le cordon USB de l'ARDUINO. Il consomme au maximum 40mA pendant la mesure.

2.2. Alimentation par batterie

Il est tout à fait envisageable d'alimenter le thermomètre par batterie ou alimentation externe. Un connecteur est prévu à cet effet.
L'alimentation par batterie doit fournir 5V. Plusieurs solutions sont possibles :
  • 1 batterie LITHIUM-ION + convertisseur stepup
  • 3 batteries NI-MH + convertisseur stepup
  • 1 bloc secteur
Une carte d'alimentation est prévue avec un batterie 18650 ou 16340 et un convertisseur stepup.
1 batterie 18650 de 2000mAH devrait avoir une autonomie de 60 heures, une batterie 16340 de 500mAH 4 fois moins.

Le mode LOW-POWER de l'ARDUINO est utilisé entre deux mesures afin de ne pas provoquer de surconsommation.

2.3. Chargeur

Un chargeur TP4056 peut être intégré à la carte alimentation pour une utilisation intensive. Pour une utilisation occasionnelle on rechargera la batterie sur un chargeur de table classique.

3. Le matériel

J'ai utilisé le matériel suivant :
  • Un ARDUINO NANO
  • un MLX90614ESF-ACF
  • un afficheur OLED SSD1306 0.96 pouces 128x64
  • un bouton-poussoir 12mm 
  • deux boutons-poussoir 6mm verticaux
  • une ou deux diodes laser 5V 5mW
  • une résistance de 100Ω 
  • un connecteur 6 broches femelle coudé au pas de 2.54mm
  • pour un choix du mode °C ou °F par cavalier :
    • un connecteur 3 broches coudé + un cavalier au pas de 2.54mm
  • ou
    • un interrupteur à glissière à 90°
  • ou
    • aucun des deux si l'on désire un affichage en °C uniquement
Pour une version alimentée par batterie ou alimentation externe (option) :
  • un connecteur 3 broches tulipe ou DUPONT au pas de 2.54mm
  • une résistance de 1MΩ film métallique 1%
  • une résistance de 330KΩ film métallique 1%
  • une diode 1N5817
Voici le modèle de connecteur 6 points que j'ai utilisé :
pin header 6 points coudé
La carte d'alimentation par batterie est équipée comme suit :
  • un boîtier de batterie 18650 ou 16340 
  • un interrupteur à glissière
  • un convertisseur stepup
    • MT3608 + inductance 1mH + condensateur 470µF
  • ou
    • POLULU U1V11F5 + résistance 100KΩ
  • option chargeur intégré
    • un chargeur TP4056
  • ou
    • une diode 1N5817 
    • un connecteur 3 broches mâle au pas de 2.54mm
Si l'on a choisi un connecteur d'alimentation 3 broches tulipe pour la carte thermomètre, les trois broches mâles de la carte alimentation pourront être de simples broches de faible diamètre (des pattes de LEDs par exemple).
Si on a choisi un connecteur DUPONT femelle, un connecteur DUPONT mâle sera plus adapté, mais l'écartement entre les deux cartes sera supérieur de 2mm.

Qu'il s'agisse de la carte thermomètre ou de la carte alimentation, on peut facilement acheter tous les composants chez AliExpress ou ailleurs.

4. Les Schémas

Les schémas sont réalisés à l'aide de KICAD.

Pour récupérer le projet voir plus bas :  11. Téléchargements.

4.1. Carte thermomètre

La carte thermomètre
Le connecteur P1 reçoit le capteur de température et la diode laser.

Le jumper et l'inverseur MODE jouent le même rôle : permettre l'affichage de la température en °C ou °F. On peut choisir l'une ou l'autre des solutions suivant que l'on souhaite changer souvent le mode d'affichage on non. Par défaut l'affichage se fait en °C (si l'entrée D5 est en l'air).

Le bouton-poussoir SHOOT active la diode laser en direct sans passer pas le microcontrôleur.

La diode D1 protège le montage en cas d'inversion de l'alimentation.
Le pont de résistances  R1 + R2 permet de mesurer la tension de la batterie.

4.2. Carte alimentation

La carte alimentation
Deux types de batterie sont prévus, ainsi que deux modèles de convertisseurs. Il faudra faire des choix en fonction de l'autonomie désirée et du prix (un convertisseur U1V11F5 est plus cher qu'un MT3608 mais offre une meilleure qualité de régulation).

Le convertisseur MT3608 est assez bruyant et je remarque que le montage est assez sensible à ce bruit. La sortie de ce convertisseur doit être filtrée (inductance L1 + condensateur C1). Le convertisseur POLULU U1V11F5 n'aura pas besoin de ces composants.
Voir cet article :  https://riton-duino.blogspot.com/2019/11/convertisseurs-stepup-stepdown.html

Dans le cas où un chargeur TP4056 est utilisé il n'y a pas de diode de protection contre l'inversion de polarité de la batterie, car il faudrait placer cette diode entre la batterie et le chargeur TP4056, ce qui empêcherait la charge de celle-ci.
Comme la batterie est censée rester en place, il suffit de la placer dans le bon sens lors du montage.

Si par contre si le chargeur TP4056 n'est pas implanté, comme la batterie est censée être démontée pour être rechargée, il serait dommage de la réintroduire accidentellement dans le mauvais sens.
Mettre en place la diode D1 1N5817 permet d'éviter les accidents (comme précisé sur le schéma ci-dessus).

4.3. Carte capteur

On peut ajouter une petite carte optionnelle regroupant le capteur et la ou les LEDs, venant s'enficher sur le connecteur 6 points de la carte thermomètre.
En fonction du capteur choisi (module MLX90614ESF-BAA ou MLX90614ESF-ACF) elle aura besoin de composants différents :
  • MLX90614ESF-ACF ou MLX90614ESF-BAA : deux résistances pullup
  • MLX90614ESF-BAA : régulateur 3.3V
  • module MLX90614ESF-BAA : rien

Carte MLX90614ESF-BAA ou MLX90614ESF-ACF

Carte pour module MLX90614ESF-BAA
Une ou deux diodes laser peuvent être implantées.

Je n'ai pas prévu de carte pour le MLX90614ESF-BAA seul, avec régulateur 3.3V, car le module MLX90614ESF-BAA est moins cher en général, et comporte déjà les composants nécessaires.

On peut se passer de cette carte si l'on préfère fixer le capteur et les diodes sur un support et faire le raccordement pas des fils. Dans ce cas il vaudra mieux éviter le métal, car le boîtier des diodes est relié au fil bleu, ou alors il faudra prévoir un isolant.

5. La réalisation

5.1. Version USB seul

Si le thermomètre doit être utilisé exclusivement sur USB, le connecteur P2 3 broches peut être omis, ainsi que la diode D1 et la résistance R1.

5.2. Version autonome

Si le thermomètre doit être autonome, la carte alimentation par batterie est nécessaire.
En fonction de la batterie choisie, souder un support de batterie 18650 ou 16340. Attention au sens (le pôle + est en haut si la carte est vue batterie à gauche : voir photos plus bas).

En fonction du convertisseur choisi :
  • MT3608 : ajouter l'inductance L1 de 1mH et le condensateur C1 de 470µF
  • U1V11F5 : ajouter la résistance R1 de 100KΩ et remplacer l'inductance L1 par un strap
Souder le connecteur P1 3 broches (j'ai utilisé 3 pattes de LEDs) à l'arrière de la carte, ainsi que le chargeur TP4056 s'il est nécessaire.

Si le chargeur TP4056 n'est pas implanté, on peut mettre en place la diode D1 1N5617 sur les pastilles prévues (voir photos plus bas).

5.3. Attention

Si le PCB est une réalisation maison (ce qui est mon cas), il est préférable de vérifier qu'il n'y ait pas de court-circuits entre pistes sur la carte alimentation, spécialement entre 3.7V et GND.
En cas de court-circuit une batterie LITHIUM-ION est tout à fait capable de faire fondre des pistes d'un millimètre de largeur, et même beaucoup plus.
Également, ne pas poser la carte équipée de sa batterie sur un bureau encombré. Fils, pattes de composants, trombones qui traînent, etc. doivent être tenus à distance.

5.4. Les diodes laser

Ces diodes sont des modèles bas de gamme amplement suffisantes pour l'application :
Elles sont composées d'un petit circuit imprimé pincé dans le boîtier. Le boîtier comporte un réglage de l'optique (les deux pièces de laiton sont vissées l'une dans l'autre).
Il est conseillé d'essayer ces diodes avant de les mettre en place, et après avoir éventuellement paufiné le réglage, il vaut mieux bloquer le filetage avec un point de colle. On peut aussi bloquer la petite carte dans le boîtier par le même moyen.

Les trous dans la carte capteur font 6mm. Il faudra coller les diodes une fois que celles-ci sont en place et que leur faisceau a été réglé. On peut effectuer le réglage facilement à l’œil, en visant une cible à quelques dizaines de centimètres.

6. IDE ARDUINO

Il vous faudra bien entendu installer les bibliothèques ARDUINO suivantes :

Dans l'IDE, dans le menu "Outils/Type de Carte" choisir "Arduino Nano". Dans le menu "Outils/Processeur" choisir "ATmega328p" ou "ATmega328p (old bootloader)".

7. Le code

Pour récupérer le projet voir plus bas : 11. Téléchargements.

Le code permet de choisir entre la librairie SparkFun et celle d'AdaFruit. La librairie AdaFruit ne permettra pas de régler l'émissivité.
Elle conviendra donc au capteur modèle MLX90614ESF-BAA.
L'option par défaut est : SPARKFUN

#define NO_SENSOR       0           // no sensor for test purpose only
#define ADAFRUIT           1           // use ADAFRUIT only when no emissivity tuning is required
#define SPARKFUN          2           // SPARKFUN : the best
#define SENSOR_LIBRARY          SPARKFUN


Il faut donc choisir ADAFRUIT si l'on utilise le capteur MLX90614ESF-BAA.

8. Utilisation

8.1. Réglage

ATTENTION : si l'on utilise la carte alimentation avec un convertisseur stepup MT3608, il faudra avant tout régler celui-ci sur 5V avant d'assembler les deux cartes.
La chute de tension de la diode de protection D1 de la carte thermomètre est négligeable (200mV).

8.2. Bouton

Le bouton SHOOT allume la diode laser. Il est utilisé uniquement pour la visée. Lorsqu'il est relâché, la mesure continue.

8.3. Émissivité

Les boutons PLUS et MINUS permettent de régler l'émissivité du matériau dont on va mesurer la température (voir ICI). Il faut maintenir le bouton appuyé pour effectuer le réglage : la valeur est incrémentée ou décrémentée toutes les 500ms.
Si le bouton est appuyé pendant plus de 5 secondes, le réglage d'émissivité passe en mode rapide : la valeur est incrémentée ou décrémentée toutes les 100ms.

L'émissivité par défaut est de 95%, ce qui correspond à la majeure partie des objets noirs que je mesure, composants électroniques en particulier.
La valeur d'émissivité choisie est stockée dans l'EEPROM de l'ARDUINO.

8.4. Mode °C °F

Le jumper ou l'inverseur MODE permet de sélectionner le mode d'affichage °C ou °F. Le petit OLED affiche la température ambiante, l'émissivité et la température de l'objet.

8.5. Indicateur de capacité

En haut à gauche de l'écran la capacité de la batterie est affichée sous forme d'un rectangle plein, plus ou moins haut (de 1 à 10 pixels). Si aucune batterie n'est présente, rien n'est affiché.

8.6. Sortie USB

La mesure est permanente et les informations sont remontées par le cordon USB vers le PC toutes les 500ms :

27.53,21.27
27.89,21.27
27.95,21.27
28.09,21.27
28.11,21.27
25.63,21.27


La première information est la température de l'objet mesuré, la deuxième est la température ambiante. Il est facile de récupérer ensuite ces valeurs avec un terminal (y compris le moniteur série ARDUINO) et de les stocker dans un fichier pour les exploiter avec un tableur ou un autre logiciel.

9. Photos

Voici quelques images du thermomètre :

En bas de droite à gauche : les deux boutons + / -, le bouton SHOOT, le connecteur MODE.
Le capteur est enfiché directement dans le connecteur, tout du moins provisoirement, pour la photo.

Comme on peut le voir, sans cavalier sur le connecteur 3 points il affiche la température en °C. Pour afficher en °F, il faudra placer un cavalier sur les deux bornes du bas.

La température ambiante est affichée sous le titre, suivie de l'émissivité, puis de la température de l'objet visé.

Vue de côté
Sur cette vue côté boutons, on voit l'afficheur fixé par deux fils rigides soudés.
On voit également en dessous le connecteur tulipe 3 points prêt à accueillir  les broches de la carte l'alimentation par batterie.
La NANO et l'afficheur sont montés sur support (ce n'est pas une obligation).

Voici la carte alimentation par batterie :

Vue de dessus
Le chargeur TP4056 est soudé en dessous.
Si l'on choisit de se passer de chargeur, souder la diode D1 1N5817 (l'emplacement est indiqué).
J'ai choisi le convertisseur POLULU U1V11F5 (l'inductance L1 est remplacée par un fil).
Si l'on choisit le MT3608 son emplacement est indiqué, ainsi que de celui de  l'inductance L1 et du condensateur C1.
Rappel : régler le MT3608 sur 5V avant de relier les deux cartes.

vue côté chargeur
Cette photo montre le chargeur TP4056, soudé sous la carte alimentation à l'aide de 6 broches (des fils rigides).
Je conseille de souder les broches sous la carte alimentation d'abord. Ensuite vérifier visuellement (ou avec un multimètre) l'absence de court-circuit à l'emplacement des soudures (il y a un plan de masse et il est facile de déborder). Mettre en place le chargeur sur les six broches et souder le module.

Vue de côté
Cette image montre la liaison entre les deux cartes : 3 broches (des pattes de LEDs) sont soudées sous la carte alimentation et viennent s'enficher dans le connecteur 3 boches de la carte thermomètre.
Attention : si le connecteur 3 boches de la carte thermomètre est du type tulipe, ne pas utiliser de broches du type connecteur DUPONT mâle, elles n'entreraient pas dans le connecteur tulipe. Si l'on utilise un connecteur femelle DUPONT ce sera plus facile.
Si la carte thermomètre est réalisée en simple couche (PCB maison, ce qui est mon cas), un connecteur DUPONT femelle sera difficile à souder sous la carte à moins de le surélever de 2mm ou 3mm. Avec un PCB industriel à trous métallisés ce sera plus facile (soudure côté composants).
Les 4 colonnettes sont des modèles 2.5mm x 10mm. Avec un connecteur 3 broches DUPONT des colonnettes de 12mm (PCB à trous métalisés) ou 15mm (PCB simple face) seront préférables.

La batterie en charge
Voici le TP4056 en action. La LED rouge est allumée, la bleue s'allumera en fin de charge.

La carte capteur MLX90614ESF-BAA + diodes laser :


La carte en place sur le connecteur 6 points :



10. Essais

Lorsque le capteur est dirigé vers ma jambe (photo N°1 ci-dessus) il est normal qu'il affiche seulement 28.67°C, je ne suis pas en short !

Si je place la paume de la main devant le capteur il affiche 29°. C'est normal aussi, les mains sont plus froides que le reste du corps.

Le thermomètre PEAKMETER PM6530C affiche les mêmes valeurs, à quelques dixièmes de degrés près.

11. Téléchargements

Pour télécharger le projet :
https://bitbucket.org/henri_bachetti/infrared-thermometer.git

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

12. Conclusion

Voici un petit thermomètre sur pied bien pratique pour faire des mesures précises. Il permet de surveiller la température d'un objet tout en conservant les mains libres, et éventuellement de faire des relevés de courbes.


Cordialement
Henri


13. Mises à jour

10/12/2019 :  5.4. Les diodes laser

mercredi 20 novembre 2019

Afficheur OLED SSD1306 : comparons



Afficheur OLED SSD1306 : comparons


Le but de cet article n'est pas de faire un nième tutorial sur les afficheurs OLED SSD1306, mais plutôt de faire une comparaison des différentes librairies existantes.

Comme vous l'avez peut-être remarqué la librairie AdaFruit occupe une place phénoménale en mémoire RAM. Il existe heureusement une alternative.

J'ai déjà parlé de ces petits afficheurs :
https://riton-duino.blogspot.com/2018/09/lcd-tft-et-arduino.html
Voir  4. Les petits afficheurs OLED

1. Câblage

Le câblage est simple (je ne vais pas vous faire un schéma) :
  • VCC sur 3.3V de l'ARDUINO
  • GND sur GND de l'ARDUINO
  • SDA sur A4 de l'ARDUINO
  • SCL sur A5 de l'ARDUINO
J'ai utilisé un afficheur I2C de 128x64 pixels, comme sur la photo ci-dessus.

Pour vérifier l'adresse I2C  de l'afficheur (en général 0x3C), il suffit d'utiliser ce sketch :
https://gist.github.com/tfeldmann/5411375

2. Les librairies

Dans ce comparatif nous allons essayer d'écrire une application affichant les objets suivants :
  • un titre centré en haut de l'écran
  • un texte justifié à gauche
  • un texte justifié à droite
  • un texte suivi d'une valeur, grande taille, justifié à gauche
  • un indicateur de capacité de batterie en haut à gauche
  • un logo en haut à droite
L'indicateur de capacité batterie est un rectangle de 14 ou 16 pixels de haut, 6 de large, plus ou moins plein. Si la capacité batterie est supérieure à 10%, l'affichage est fixe, sinon il clignote.


Quand ces applications seront écrites nous comparerons la facilité de mise en œuvre et l'occupation mémoire.

1.1. Librairie AdaFruit

Cette librairie peut être récupérée ici :
https://github.com/adafruit/Adafruit_SSD1306

Voici le sketch :

#define SSD1306_128_64

#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(-1);

void setup()
{
  Serial.begin(115200);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.setTextColor(WHITE);
}

void loop()
{
  display.clearDisplay();
  printCentered("SSD1306 TUTO", 0, 1);
  displayLogo(0, 100);
  printLeft("LEFT JUSTIFIED", 20, 1);
  printRight("RIGHT JUSTIFIED", 30, 1);
  printValue(100, 50, 2);
  displayBatteryLevel(0, 0, 0);
  displayLogo(112, 0);
  display.display();
  delay(500);
}

void printLeft(const char *s, int y, int size)
{
  display.setTextSize(size);
  display.setCursor(0, y);
  display.print(s);
}

void printRight(const char *s, int y, int size)
{
  int16_t x1, y1;
  uint16_t w, h;

  display.setTextSize(size);
  display.getTextBounds(s, 0, 0, &x1, &y1, &w, &h);
  display.setCursor(display.width() - w, y);
  display.print(s);
}

void printCentered(const char *s, int y, int size)
{
  int16_t x1, y1;
  uint16_t w, h;

  display.setTextSize(size);
  display.getTextBounds(s, 0, 0, &x1, &y1, &w, &h);
  display.setCursor((display.width() - w) / 2, y);
  display.print(s);
}

void printValue(int value, int y, int size)
{
  char s[20];
  int16_t x1, y1;
  uint16_t w, h;

  sprintf(s, "VALUE: %d", value);
  display.getTextBounds(s, 0, 0, &x1, &y1, &w, &h);
  display.setTextSize(size);
  display.setCursor(0, y);
  display.print(s);
}

static const unsigned char PROGMEM logo16_glcd_bmp[] =
{ B00000000, B11000000,
  B00000001, B11000000,
  B00000001, B11000000,
  B00000011, B11100000,
  B11110011, B11100000,
  B11111110, B11111000,
  B01111110, B11111111,
  B00110011, B10011111,
  B00011111, B11111100,
  B00001101, B01110000,
  B00011011, B10100000,
  B00111111, B11100000,
  B00111111, B11110000,
  B01111100, B11110000,
  B01110000, B01110000,
  B00000000, B00110000
};

void displayLogo(int x, int y)
{
  display.drawBitmap(x, y,  logo16_glcd_bmp, 16, 16, WHITE);
}

void displayBatteryLevel(int batteryLevel, int x, int y)
{
  static bool flash = false;
  if (flash || batteryLevel > 10) {
    display.drawRect(x, y, 6, 16, WHITE);
    display.fillRect(x, y + ((16 - batteryLevel / 6)), 6, batteryLevel / 6, WHITE);
  }
  flash = !flash;
}


1.2. Librairie Greiman

Cette librairie peut être récupérée ici :
https://github.com/greiman/SSD1306Ascii.git

Voici le sketch :

#include "SSD1306Ascii.h"
#include "SSD1306AsciiAvrI2c.h"

SSD1306AsciiAvrI2c display;

void setup()
{
  Serial.begin(115200);
  display.begin(&Adafruit128x64, 0x3C);
  display.setFont(System5x7);
}

void loop()
{
  printCentered("SSD1306 TUTO", 0, 1);
  displayLogo(0, 100);
  printLeft("LEFT JUSTIFIED", 2, 1);
  printRight("RIGHT JUSTIFIED", 3, 1);
  printValue(100, 6, 2);
  displayBatteryLevel(0, 0, 0);
  displayLogo(112, 0);
  delay(500);
}

void printLeft(const char *s, int y, int size)
{
  if (size == 1) {
    display.set1X();
  }
  else {
    display.set2X();
  }
  display.setCursor(0, y);
  display.print(s);
}

void printRight(const char *s, int y, int size)
{
  size_t w;

  if (size == 1) {
    display.set1X();
  }
  else {
    display.set2X();
  }
  w = display.strWidth(s);
  display.setCursor(display.displayWidth() - w, y);
  display.print(s);
}

void printCentered(const char *s, int y, int size)
{
  size_t w;

  if (size == 1) {
    display.set1X();
  }
  else {
    display.set2X();
  }
  w = display.strWidth(s);
  display.setCursor((display.displayWidth() - w) / 2, y);
  display.print(s);
}

void printValue(int value, int y, int size)
{
  char s[20];
  size_t w;

  sprintf(s, "VALUE: %d", value);
  w = display.strWidth(s);
  if (size == 1) {
    display.set1X();
  }
  else {
    display.set2X();
  }
  display.setCursor(0, y);
  display.print(s);
}

void displayLogo(int x, int y)
{
  //  rien ici pour l'instant
}

GLCDFONTDECL(Batt6x14) = {
  0x0, 0x0, // size of zero indicates fixed width font,
  6,     // width
  14,     // height
  0x20,
  7,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // space
  0xff, 0x01, 0x01, 0x01, 0x01, 0xff, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x3f,        // Battery Empty
  0xff, 0x01, 0x01, 0x01, 0x01, 0xff, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x3f,        // Battery 20%
  0xff, 0x01, 0x01, 0x01, 0x01, 0xff, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,             // Battery 40%
  0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xff, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,              // Battery 60%
  0xff, 0xf1, 0xf1, 0xf1, 0xf1, 0xff, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,                 // Battery 80%
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,                      // Battery 100%
};

void displayBatteryLevel(int batteryLevel, int x, int y)
{
  static bool flash = false;

  display.set1X();
  display.setCursor(x, y);
  if (flash || batteryLevel > 10) {
    display.setFont(Batt6x14);
    display.print((char)(' ' + 1 + round(batteryLevel / 20)));
    display.setFont(System5x7);
  }
  else {
    display.setFont(Batt6x14);
    display.print(' ');
    display.setFont(System5x7);
  }
  flash = !flash;
}


3. Comparaison

3.1. Occupation mémoire

Le résultat de la compilation avec la librairie AdaFruit :
Le croquis utilise 14222 octets (44%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 1544 octets (75%) de mémoire dynamique, ce qui laisse 504 octets pour les variables locales. Le maximum est de 2048 octets.
La mémoire disponible faible, des problèmes de stabilité pourraient survenir.


On sait déjà que l'application sera très limitée en taille mémoire dynamique (les variables globales).

Le résultat de la compilation avec la librairie Greiman :

Le croquis utilise 5852 octets (18%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 274 octets (13%) de mémoire dynamique, ce qui laisse 1774 octets pour les variables locales. Le maximum est de 2048 octets.


On remarque vite que l'application est beaucoup moins limitée en taille mémoire dynamique, et que l'on sera beaucoup plus à l'aise pour créer des variables globales.

D'un point de vue occupation mémoire FLASH (programme), la librairie AdaFruit n'est pas catastrophique, mais la quantité de mémoire RAM (données) qu'elle monopolise limite son utilisation à des applications utilisant peu de données globales ou statiques.

Le développement d'une application conséquente avec la librairie AdaFruit se fera donc de préférence sur une carte ARDUINO MEGA, alors que la librairie Greiman se contentera facilement d'un ATMEGA328.

3.2. Principe de fonctionnement

La librairie AdaFruit travaille avec un espace mémoire tampon interne à la librairie (ce qui explique la taille mémoire occupée en RAM).
- on efface la zone tampon avec clearDisplay()
- on écrit avec print(), drawRect(), fillRect(), etc.
- on affiche avec display()
La librairie ne met à jour que les pixels qui ont changé par rapport au dernier affichage.
Avec cette librairie on a donc tendance à ré-afficher la totalité de l'écran, car le rafraîchissement est invisible.

La librairie Greiman travaille différemment, en direct avec l'écran
- on n'efface pas
- on écrit avec print() et l'affichage se fait dans la foulée
Avec cette librairie on préfère afficher sans effacer la totalité de l'écran, car le rafraîchissement serait trop visible.

Une autre différence de taille (c'est le cas de le dire) est que la librairie AdaFruit est capable de positionner son curseur en absolu, en nombre de pixels X et Y.

Avec la librairie Greiman, si le positionnement se fait en absolu dans le sens X (colonnes), il se fait en nombre de lignes de texte (une ligne faisant 8 pixels) dans le sens Y (lignes). La librairie Greiman est tout de même capable de faire du scrolling sur l'axe X, en pixels.
En bref, la librairie Greiman favorise un travail en ligne de texte, la librairie AdaFruit favorise un travail en mode graphique pur.

La librairie Greiman n'oblige pas à effacer un message précédemment affiché avant de le remplacer par un autre, par contre si le nouveau message est plus court que le précédent, la fin du premier message subsistera. On peut combler (padding) avec des espaces avant ou après le message, suivant que l'on justifie à droite, à gauche ou au centre.

On peut aussi positionner le curseur avec la méthod setCursor(x, y) et effacer la ligne avec la méthode clearToEOL() avant de ré-afficher :

  display.setCursor(0, 2);
  display.clearToEOL();
  display.print("A LINE");
  display.setCursor(0, 3);
  display.clearToEOL();  display.print("ANOTHER LINE");

La méthode clear() permet d'effacer une zone. Dans cet exemple on affiche deux lignes avec un retour à la ligne '\n', après avoir effacé les lignes 2 à 3 :

  display.setCursor(0, 2);
  display.clear(0, display.displayWidth(), 2, 3);
  display.print("A LINE\nANOTHER LINE");


La méthode clearField permet aussi d'effacer une zone. Cet exemple fait la même chose que le précédent :

  display.setCursor(0, 2);
  display.clearField(0, display.displayWidth(), 2);
  display.print("A LINE\nANOTHER LINE");


Les trois méthodes produisent le même résultat.

3.3. Affichage d'un indicateur de capacité batterie

Dans le sketch de la version AdaFruit l'indicateur de niveau batterie est réalisé simplement en dessinant un cadre puis un rectangle plein à l'intérieur de ce cadre.
Pour effacer, l'indicateur, on se contente de ne pas l'afficher.

Dans le sketch de la version Greiman l'indicateur de niveau batterie est réalisé à l'aide d'une police de caractères spéciale (Batt6x14) que j'ai fabriqué moi-même.
Cette police possède 7 caractères dont le premier est 0x20 : un ESPACE.

Pour afficher l'indicateur 0%, 20%, 40%, 60%, 80%, 100% il suffit d'afficher le caractère ESPACE (' ' ou 0x20) + n (0x21, 0x22, 0x23, 0x24, 0x25, 0x26).

Le premier caractère ESPACE (0x20) sert à effacer le bitmap dans le cas où l'on veut faire clignoter l'indicateur, comme dans l'exemple ci-dessus.

3.4. Routines graphiques

La librairie AdaFruit possède un jeu de routines graphiques assez complet que la librairie Greiman ne possède pas.

AdaFruit propose en outre un outil Windows de création de bitmaps :
https://learn.adafruit.com/monochrome-oled-breakouts/arduino-library-and-examples
Je ne l'ai pas essayé, ne possédant pas de machine Windows et n'ayant pas du tout l'intention d'utiliser ce système d'exploitation dépassé (alergie profonde). Je vous laisse faire avec plaisir.

Avec la librairie Greiman, il n'y a pas de possibilité d'affichage de bitmaps, mais on pourrait en créer (avec plus ou moins de facilité) en utilisant la même méthode que pour l'indicateur de capacité batterie, comme vu précédemment.

4. Conclusion

Personnellement, depuis que j'ai découvert la librairie Greiman, je l'utilise en lieu et place de la librairie AdaFruit, trop gourmande. Avec un afficheur de 128x64 pixels, mon besoin n'est pas de créer des oeuvres d'art graphique.


Cordialement
Henri

vendredi 8 novembre 2019

Convertisseurs STEPUP & STEPDOWN


Convertisseurs STEPUP & STEPDOWN


Les convertisseurs à découpage STEPUP ou STEPDONW permettent respectivement d'élever ou d'abaisser une tension d'alimentation avec un minimum de pertes d'énergie.

J'ai cherché dans cet article à tester leurs performances dans le cadre d'une application économe en énergie.

Je n'ai pas cherché à les charger à leur limite pour vérifier leur capacité en courant maximal, ni leur protection thermique.

En premier lieu leur consommation propre m'intéresse, c'est à dire le courant qu'ils vont consommer sur leur entrée en l'absence de charge.

Un autre point important au sujet des convertisseurs STEPUP : leur plage de tension en entrée. A quoi bon en effet tester un convertisseur destiné être alimenté par une batterie LITHIUM-ION 3.7V si sa tension minimale en entrée est de 5V ?

Je n'ai donc testé aucun convertisseur STEPUP dont la tension minimale en entrée excède 3V, mis à part le XL6009.

J'ai mesuré leur bruit en sortie avec une charge de 500mA, et j'ai essayé de le réduire grâce à une cellule LC (voir paragraphe 3. Filtrage).

Un montage consomme parfois un courant conséquent mais pas de manière permanente. Il est intéressant de tester la réponse transitoire du convertisseur. A l'aide d'un MOSFET commandé par un ARDUINO j'ai essayé de simuler un circuit consommant périodiquement 500mA.

La dernière caractéristique qui m'intéresse est le temps de montée de la sortie de ces modules, à vide et en charge. Cette mesure est importante dans le cas où le convertisseur est destiné à servir d'alimentation de secours (UPS).

Chaque mesure de courant de repos est effectuée après quelques minutes de stabilisation.

1. Le courant d'entrée et de sortie

Rien ne se perd, rien ne se crée. La puissance en entrée et en sortie d'un régulateur à découpage obéit à cette règle.

Il faut savoir que la puissance consommée par l'entrée d'un régulateur est fonction de la puissance qu'il consomme sur sa sortie, et de son rendement :

Iin = Iout / Vin * Vout / Rendement

Par exemple un convertisseur élévateur 5V / 12V produisant un courant de 100mA sur sa sortie et ayant un rendement de 90% aura besoin d'un courant plus élevé sur son entrée :

Iin = 0.1A / 5V * 12V / 0.9 = 266mA

Un convertisseur abaisseur 12V / 5V produisant un courant de 100mA sur sa sortie et ayant un rendement de 90% aura besoin d'un courant plus faible sur son entrée :

Iin = 0.1A / 5V * 12V / 0.9 = 46mA

Il convient donc de choisir un régulateur ayant un courant de sortie adéquat pour son application, mais également une source d'alimentation capable de fournir le courant d'entrée nécessaire.

2. Convertisseurs STEPUP

2.1. Le POLULU U1V11F5

 

Je commence par le meilleur. Ce petit convertisseur stepup a les caractéristiques suivantes :

  • tension d'entrée : 0.5V - 5.5V
  • tension de sortie : 5V (+/-4%)
  • courant de sortie maximal : 1.2A
  • broche de shutdown
  • consommation propre : < 1mA et < 100µA en mode shutdown
  • taille 12mm × 15mm × 3mm

Sa tension d'entrée minimale de 0.5V est exceptionnellement basse. Une batterie NI-MH suffirait largement à le rendre heureux.

La broche SHDN doit être reliée à GND pour désactiver la sortie, à VIN sinon.

J'ai mesuré deux exemplaires 5V, avec une tension d'entrée de 3.7V.

2.1.1. Consommation à vide

La consommation propre de ce convertisseur est :

  • en mode nominal : 85µA
  • en mode shutdown : 25µA

C'est nettement en dessous de ce qui est annoncé dans la datasheet, ce qui est une bonne nouvelle. J'aime.

2.1.2. Bruit en charge

Avec une charge de 500mA le bruit en sortie est formé de pics positifs et négatifs d'environ 25mV, à 1.5MHz, ce qui est très honorable.

2.1.3. Temps de montée

A vide le temps de montée est de 80µs, et de 100µs avec une charge de 500mA.

2.1.4. Réponse transitoire

Réponse du convertisseur avec une charge commutée de 500mA :

2.1.5. Remarques

Il existe d'autres modèles (3.3V, 9V, 12V, etc) :

https://www.pololu.com/category/132/step-up-voltage-regulators

2.2. Le MT3608

Ce convertisseur stepup a les caractéristiques suivantes :

  • tension d'entrée : 2V - 24V
  • tension de sortie : maxi 28V
  • courant de sortie maximal : 2A
  • taille : 36mm x 17mm x 14mm

J'ai mesuré un exemplaire, avec une tension d'entrée de 3.7V et une tension de sortie de 5V.

2.2.1. Consommation à vide

La consommation propre de ce convertisseur est de 170µA.

Le MT3608  possède une broche de shutdown qui lui permettrait de consommer 1µA, malheureusement les modules du commerce ne la rendent pas disponible sur la carte.

2.2.2. Bruit en charge

Avec une charge de 500mA le bruit en sortie est formé de pics positifs et négatifs d'environ 700mV, très courts (20nS), à 1.5MHz.

Il n'est pas facile de réduire ce bruit. Avec une cellule LC 1mH+47µF, il sera de 200mV.

2.2.3. Temps de montée

A vide le temps de montée est de 60µs, et de 1.5ms avec une charge de 500mA.

2.2.4. Réponse transitoire

Réponse du convertisseur avec une charge commutée de 500mA :

2.2.5. Remarques

Le potentiomètre de réglage de tension fonctionne à l'envers. Cela surprend au premier réglage.

Le MT3608 n'est pas très à l'aise pour fournir du courant lorsque son entrée est aux alentours de 3V.

J'ai fait un essai avec 12V en sortie et un moteur consommant 200mA. La tension chute à 8V.

2.3. Le LM2577

Ce convertisseur stepup a les caractéristiques suivantes :

  • tension d'entrée : 3V - 35 V
  • tension de sortie : 1.25V - 30 V
  • courant de sortie maximal : 2A
  • taille : 48mm x 23mm x 14mm

J'ai mesuré un exemplaire, avec une tension d'entrée de 3.7V et une tension de sortie de 5V.

Le modèle ci-dessus a deux inductances et peut être utilisé en stepup ou stepdown. Ce ne sera pas le cas de celui-ci :

2.3.1. Consommation à vide

La consommation propre de ce convertisseur est de 7mA.

2.3.2. Bruit en charge

Avec une charge de 500mA le bruit en sortie est plutôt sinusoïdal d'environ 700mV crête à crête, d'une fréquence de 20KHz.

Il est facile de réduire ce bruit à 50mV avec une cellule LC 100µH+470µF.

2.3.3. Temps de montée

A vide le temps de montée est de 40ms, et de 50ms avec une charge de 500mA.

2.3.4. Réponse transitoire

Réponse du convertisseur avec une charge commutée de 500mA :

A noter : une forte chute de tension en charge.

2.3.5. Remarques

Le potentiomètre de réglage de tension fonctionne également à l'envers.

2.4. Le XL6009

Le module alimenté en 3.7V ne semble pas capable de maintenir une tension de 5V en sortie lorsqu'il est chargé. La tension chute énormément.

Certains site marchands annoncent une tension minimale de 3V, mais c'est faux, il suffit de lire la datasheet pour constater qu'elle est plutôt de 5V.

Ce convertisseur n'est pas adapté à une alimentation à partir d'une batterie LITHIUM-ION, autant opter pour le MT3608.

Ce convertisseur stepup a les caractéristiques suivantes :

  • tension d'entrée : 5V - 32V
  • tension de sortie : 5-35V
  • courant de sortie maximal : 4A
  • taille : 43mm x 21mm x 14mm

J'ai mesuré un exemplaire, avec une tension d'entrée de 3.7V et une tension de sortie de 5V.

2.4.1. Consommation à vide

La consommation propre de ce convertisseur est de 6mA.

2.4.2. Bruit en charge

Avec une charge de 500mA le bruit en sortie est formé de pics positifs d'environ 400mV durant 500ns, à 500KHz.

On peut réduire ce bruit à 40mV avec une cellule LC 100µH+470µF.

2.4.3. Temps de montée

A vide le temps de montée est de 1ms, et de 1.5ms avec une charge de 500mA.

2.4.4. Réponse transitoire

Réponse du convertisseur avec une charge commutée de 500mA :

Ceci ne fait que confirmer que les annonces des sites marchands sont fausses.

Ce convertisseur donnerait certainement un bien meilleur résultat alimenté en 5V ou 6V et une tension de sortie de 12V, mais ce n'est pas le but de cet article.

2.4.5. Remarques

Le potentiomètre de réglage de tension fonctionne à l'envers.

2.5. Le SX1308


Ce convertisseur stepup a les caractéristiques suivantes :

  • tension d'entrée : 2V - 24V
  • tension de sortie : 2V - 28V 
  • courant de sortie maximal : 2A
  • taille 22mm x 15mm x 15mm

J'ai mesuré un exemplaire, avec une tension d'entrée de 3.7V et une tension de sortie de 5V.

2.5.1. Consommation à vide

La consommation propre de ce convertisseur est de 1mA.

2.5.2. Bruit en charge

Avec une charge de 500mA le bruit en sortie est formé de pics négatifs d'environ 2V d'une durée de 1ms, d'une fréquence de 200Hz.

On peut réduire ce bruit à 200mV avec une cellule LC 100µH+470µF.

2.5.3. Temps de montée

A vide le temps de montée est de 1ms, et de 1ms avec une charge de 500mA.

2.5.4. Réponse transitoire

Réponse du convertisseur avec une charge commutée de 500mA :

2.5.5. Remarques

Le potentiomètre de réglage de tension fonctionne également à l'envers.

Comme le MT3608, le SX1308 n'est pas très à l'aise pour fournir du courant lorsque son entrée est aux alentours de 3V.

J'ai fait un essai avec 12V en sortie et un moteur consommant 200mA. La tension chute à 8V.

Ce document fournit un ensemble de mesures sur les modules du commerce :

2.6. Le FP6293

Ce convertisseur stepup a les caractéristiques suivantes :

  • tension d'entrée : 3V - 15V
  • tension de sortie : 5V, 6V, 9V, 12V
  • courant de sortie maximal : 2.6A
  • taille : 24mm x 16mm x 6.2mm

J'ai mesuré un exemplaire, avec une tension d'entrée de 3.7V et une tension de sortie de 5V.

2.6.1. Consommation à vide

La consommation propre de ce convertisseur est de 280µA.

2.6.2. Bruit en charge

Avec une charge de 500mA le bruit en sortie est plutôt triangulaire d'environ 500mV crête à crête, d'une fréquence de 4.5KHz.

On peut réduire ce bruit à 50mV avec une cellule LC 1mH+47µF.

2.6.3. Temps de montée

A vide le temps de montée est de 300µs, et de 500µs avec une charge de 500mA.

2.6.4. Réponse transitoire

Réponse du convertisseur avec une charge commutée de 500mA :

2.6.5. Remarques

Il existe d'autres modèles (6V, 9V, 12V).

2.7. Le E50D

Ce convertisseur stepup a les caractéristiques suivantes :

  • tension d'entrée : 1V - 5V
  • tension de sortie : 5V
  • courant de sortie maximal : 0.6A
  • taille : 17.5mm x 25mm x 6mm

J'ai mesuré un exemplaire, avec une tension d'entrée de 3.7V et une tension de sortie de 5V.

2.7.1. Consommation à vide

La consommation propre de ce convertisseur est de 2.7mA.

A noter : la présence d'une LED rouge consommant 1mA.

2.7.2. Bruit en charge

Avec une charge de 500mA le bruit en sortie est plutôt triangulaire d'environ 400mV crête à crête, d'une fréquence de 170KHz.

On peut réduire ce bruit à 50mV avec une cellule LC 100µH+470µF.

2.7.3. Temps de montée

A vide le temps de montée est de 50µs, et de 50µs avec une charge de 500mA.

2.7.4. Réponse transitoire

Réponse du convertisseur avec une charge commutée de 500mA :

2.8. Le XR2981

Ce convertisseur stepup a les caractéristiques suivantes :

  • tension d'entrée : 2.5V - 5V
  • tension de sortie : 5V
  • courant de sortie maximal : 2A
  • taille : 14mm x 22.5mm x 4.2mm

J'ai mesuré un exemplaire, avec une tension d'entrée de 3.7V et une tension de sortie de 5V.

2.8.1. Consommation à vide

La consommation propre de ce convertisseur est de 120µA.

2.8.2. Bruit en charge

Avec une charge de 500mA le bruit en sortie est formé de pics positifs et négatifs d'environ 1V crête à crête, d'une fréquence de 500KHz.

On peut réduire ce bruit à 500mV avec une cellule LC 100µH+470µF.

2.8.3. Temps de montée

A vide le temps de montée est de 3ms, et de 3ms avec une charge de 500mA.

2.8.4. Réponse transitoire

Réponse du convertisseur avec une charge commutée de 500mA :

2.9. Le SDB628

Ce convertisseur stepup a les caractéristiques suivantes :

  • tension d'entrée : 2.5V - 5V
  • tension de sortie : 5V
  • courant de sortie maximal : 2A
  • taille : 17mm x 13mm x 6mm

J'ai mesuré un exemplaire, avec une tension d'entrée de 3.7V et une tension de sortie de 5V.

2.9.1. Consommation à vide

La consommation propre de ce convertisseur est de 200µA.

2.9.2. Bruit en charge

Avec une charge de 500mA le bruit en sortie est plutôt rectangulaire, d'environ 2V crête à crête, d'une fréquence de 300Hz.

On peut réduire ce bruit à 100mV avec une cellule LC 1mH+47µF.

2.9.3. Temps de montée

A vide le temps de montée est de 3ms, et de 3ms avec une charge de 500mA.

2.9.4. Réponse transitoire

Réponse du convertisseur avec une charge commutée de 500mA :

    2.10. Le module 5V 3A

    Ce convertisseur stepup a les caractéristiques suivantes :

    • tension d'entrée : 3V - 5V
    • tension de sortie : 5V
    • courant de sortie maximal : 3A
    • taille : 29mm x 18mm x 8mm

    J'ai mesuré un exemplaire, avec une tension d'entrée de 3.7V et une tension de sortie de 5V.

    2.10.1. Consommation à vide

    La consommation propre de ce convertisseur est de 150µA.

    2.10.2. Bruit en charge

    Avec une charge de 500mA le bruit en sortie est formé de pics positifs et négatifs d'environ 500mV, à 50KHz.

    On peut réduire ce bruit à 20mV avec une cellule LC 1mH+47µF.

    2.10.3. Temps de montée

    A vide le temps de montée est de 3ms, et de 3ms avec une charge de 500mA.

    2.10.4. Réponse transitoire

    Réponse du convertisseur avec une charge commutée de 500mA :

    3. Convertisseurs STEPDOWN

    3.1. Le LM2596


    Ce convertisseur stepdown a les caractéristiques suivantes :

    • tension d'entrée : 4V - 40V
    • tension de sortie : 1.2V - 35V
    • courant de sortie maximal : 2A
    • taille 43.6mm x 21mm x 14mm

    J'ai mesuré un exemplaire, avec une tension d'entrée de 12V et une tension de sortie de 5V.

    3.1.1. Consommation à vide

    La consommation propre de ce convertisseur est de 7.5mA.

    Sans la LED POWER elle tombe à 5mA.

    Il est facile de faire sauter  le LED POWER d'un coup d'ongle, mais c'est assez peu efficace en terme de consommation.

    Le LM2596 possède une broche de shutdown qui lui permettrait de consommer 80µA, malheureusement les modules du commerce ne la rendent pas disponible sur la carte.

    3.1.2. Bruit en charge

    Avec une charge de 500mA le bruit en dents de scie d'environ 400mV crête à crête, d'une fréquence de 50KHz.

    Il est facile de réduire ce bruit à 10mV avec une cellule LC 100µH+470µF.

    3.1.3. Temps de montée

    A vide le temps de montée est de 300µs, et de 400µs avec une charge de 500mA.

    3.1.4. Réponse transitoire

    Réponse du convertisseur avec une charge commutée de 500mA :


    3.1.5. Remarques

    Le potentiomètre de réglage de tension fonctionne à l'endroit (une exception).

    3.2. Le MP1584

    Ce convertisseur stepdown a les caractéristiques suivantes :

    • tension d'entrée : 4.5V - 28V
    • tension de sortie : 0.8V - 20V 
    • courant de sortie maximal : 3A
    • taille 22mm x 17mm x 4mm

    J'ai mesuré deux exemplaires, avec une tension d'entrée de 12V et une tension de sortie de 5V.

    3.2.1. Consommation à vide

    La consommation propre de ce convertisseur est de 200µA.

    3.2.2. Bruit en charge

    Avec une charge de 500mA le bruit en sortie est formé de pics positifs d'environ 50mV, très courts (20nS), d'une fréquence de 1MHz.

    Avec une cellule LC 1mH+47µF, il sera divisé par deux.

    3.2.3. Temps de montée

    A vide le temps de montée est de 2.2ms, et de 1.5ms avec une charge de 500mA.

    3.2.4. Réponse transitoire

    Réponse du convertisseur avec une charge commutée de 500mA :

    3.2.5. Remarques

    Le potentiomètre de réglage de tension fonctionne également à l'envers. Ce potentiomètre est de piètre qualité. Le réglage est difficile sur certains exemplaires, et dans certaines positions on observe un bruit important en sortie.

    Certains modules, rares, possèdent un potentiomètre de meilleure qualité :

    On trouve également des modules MP1584 à tension de sortie fixe 3V, 3.3V, 3.7V, 5V, 6V, 7.5V, 9V ou 12V :

    3.3. Le MP2307

    Ce convertisseur stepdown a les caractéristiques suivantes :

    • tension d'entrée : 4.75V - 23V
    • tension de sortie : 1V - 17V
    • courant de sortie maximal : 1.8A
    • taille 22mm x 17mm x 4mm

    Le MP2307 possède une broche de shutdown qui lui permettrait de consommer 0.3µA, malheureusement les modules du commerce ne la rendent pas disponible sur la carte.

    En attente de réception pour test.

    3.3.1. Consommation à vide

    La consommation propre de ce convertisseur est de 1.3mA.

    3.3.2. Bruit en charge

    En attente de réception pour test.

    3.3.3. Temps de montée

    En attente de réception pour test.

    3.3.4. Réponse transitoire

    En attente de réception pour test.

    3.3.5. Remarques

    En attente de réception pour test.

    3.4. Le MP2315

    Ce convertisseur stepdown a les caractéristiques suivantes :

    • tension d'entrée : 4.5V - 24V
    • tension de sortie : 0.8-17 V ou 1.8V, 2.5V, 3.3V, 5V, 9V ou 12V
    • courant de sortie maximal : 3A
    • taille 20mm x 11mm x 5mm

    La broche SHDN doit être reliée à GND pour désactiver la sortie, à VIN sinon.

    Ce petit module est équipé de plots à souder sous la carte permettant la sélection de la tension de sortie, fixe ou réglable.

    En attente de réception pour test.

    3.4.1. Consommation à vide

    La consommation propre de ce convertisseur est de 180µA.

    3.4.2. Bruit en charge

    En attente de réception pour test.

    3.4.3. Temps de montée

    En attente de réception pour test.

    3.4.4. Réponse transitoire

    En attente de réception pour test.

    3.4.5. Remarques

    En attente de réception pour test.

    4. Filtrage

    Concernant le bruit en charge important de certains convertisseurs il est toujours possible d'ajouter un "ripple filter" composé d'une self et d'un condensateur, ou de deux cellules self + condensateur en cascade.

    Mais il faut pour cela connaître la fréquence du bruit et il vaut mieux mettre au point ce filtre avec un oscilloscope.

    Cela peut avoir une importance si l'on désire alimenter des amplificateurs opérationnels, mais n'en a aucune si le convertisseur est destiné à alimenter un relais ou un moteur.

    Ce que j'ai essayé avec un LM2596 :

    Après avoir vu cette vidéo, j'ai d'abord essayé un filtre avec inductance en mode commun (deux enroulements sur le même noyau de ferrite) de 10mH :


    Le résultat est éloquent. Sans filtrage l'ondulation est de 250mV crête à crête.

    Avec une inductance de 10mH et un condensateur de 470µF l'ondulation est réduite à moins de 20mV crête à crête.

    Il y a fort à parier qu'avec une inductance plus faible on obtienne un résultat équivalent, mais je n'avais que ce modèle en stock.

    J'ai ensuite essayé une simple cellule LC avec une simple inductance de 100µH :


    Avec l'inductance de 100µH et un condensateur de 470µF l'ondulation est réduite à 15mV crête à crête.

    Augmenter l'inductance à 1mH n'apporte rien.

    L'inductance en mode commun n'est pas vraiment une bonne idée. Elle est plus adaptée à du filtrage de tension secteur, ou à d'autres cas comme celui présenté dans la vidéo.

    Les mesures sont faites en débitant 350mA dans une résistance :

    LM2596 sans filtrage (50mV par division)

    LM2596 + 10mH + 47µF (20mV par division)

    LM2596 + 10mH + 470µF (20mV par division)

    LM2596 + 10mH + 2200µF (20mV par division)

    Je n'ai pas récupéré d'oscillogrammes de la version 100µH. Les signaux sont un peu plus faibles, mais ont le même aspect.

    Au delà de 470µF on ne gagne plus grand chose, mais peut-être qu'avec une charge de 2A l'amélioration serait plus conséquente.

    Il est à noter que la fréquence de coupure du filtre passe bas (100µH+470µF) est de :

    f = 1 / (2 x pi x √(LC)) = 1÷(2×3,14×√(0.0001×0.000470) = 730Hz.

    C'est un filtre du deuxième ordre : 12dB par octave.

    Il ne faut pas se contenter de filtrer juste en dessous de la fréquence du bruit du LM2596 (50KHz), ni même de diviser cette fréquence par 2 ou 4.

    Ici, nous sommes 65 fois en dessous de cette fréquence.

    Parlons du prix : l'inductance de 100µH peut se trouver pour 5 centimes sur AliExpress et le condensateur de 470µF coûte aux environs de 15 centimes.

    Cela ne coûte pas cher de transformer un LM2596 en champion du bruit.

    Le filtre entraînera forcément une chute de tension importante, en fonction de la résistance de l'inductance et du courant. Il serait préférable de n'alimenter que des circuits basse puissance en aval du filtre, et alimenter les circuits de puissance en amont du filtre.

    5. Conclusion

    Voici un petit tableau récapitulatif :

    Convertisseur
    STEPUP
    Courant
    maxi
    Courant
    de repos
    Broche de
    shutdown
    Temps de montée
    (0mA et 500mA)
    U1V11F5 1.2A 85µA
    shdn : 25µA
    OUI 80µs - 100µs
    MT3608 2A 170µA NON 60µs - 1.5ms
    LM2577 2A 7mA NON 40ms - 50ms
    XL6009 4A 6mA NON 1ms - 1.5ms
    SX1308 2A 1mA NON 1ms
    FP6293 2.6A 280µA NON 300µs - 500µs
    E50D 0.6A 2.7mA NON 50µs
    XR2981 2A 120µA NON 3ms
    SDB628 2A 200µA NON 3ms
    5V 3A 3A 150µA NON 3ms
    Convertisseur
    STEPDOWN




    LM2596 2A 7.5mA
    sans LED : 5mA
    NON 300µs - 400µs
    MP1584 3A 200µA NON 2.2ms - 1.5ms
    MP2307 1.8A 1.3mA NON
    MP2315 3A 180µA
    shdn : 1µA
    OUI

    Après cette petite séance de mesure nous voici en possession de quelques données que l'on trouve rarement dans les descriptions des modules.


    Cordialement

    Henri

    6. Mises à jour

    13/11/2019 : 2.*. Réponse transitoire
    08/12/2019 : 2.4. Convertisseur STEPUP XL-6009
    06/01/2020 : 2.5. Le SX1308
                         2.6. Le FP6293
                         2.7. Le E50D
                         2.8. Le XR2981
                         2.9. Le SDB628
                         2.10 Le module 5V 3A