Construire une alimentation variable avec Arduino UNO – Circuit et code étape par étape
Comment réaliser une alimentation variable avec Arduino UNO ?
Une alimentation est une exigence de base pour les équipements et circuits électroniques et électriques. Il existe divers types de circuits, donc leurs besoins en alimentation diffèrent. Par exemple, modules Wi-Fi, relais, moteurs, etc. nécessitent différentes tensions. Sur le marché, on ne trouve pas d'alimentations différentes pour chaque circuit, donc on génère sa propre alimentation spécifique par diverses méthodes. La solution simple est d'utiliser des batteries.
Les batteries sont généralement utilisées pour alimenter les circuits et projets électroniques, car facilement disponibles et faciles à connecter. Mais elles se déchargent vite, ne peuvent pas fournir de fort courant pour moteurs puissants, chauffent lors d'utilisation prolongée et leur durée de vie diminue. Pour surmonter cela, nous présentons une solution meilleure et efficace utilisable dans tout circuit. Dans ce projet, nous montrons comment générer une alimentation variable depuis Arduino UNO.
Avec ce projet, vous obtiendrez une alimentation variable selon vos équipements sans vous soucier de charge, décharge, chauffe, etc. Il existe de nombreuses méthodes mais c'est la plus facile avec des composants bon marché et disponibles. Regardons les composants requis.
- Article connexe : Sonnette automatique avec détection d'objet par Arduino
Composants requis
- Arduino UNO
- Écran LCD 16×2
- Condensateurs 100 μF
- Résistances 1k Ω
- Fils de liaison
- Alimentation 5 Volts
- Transistor 2N2222
Logiciel : Arduino IDE Nightly ou Atmel Studio 6.2
- Article connexe : Mesure de distance utilisant Arduino et capteur ultrasonique
Schéma de circuit d'alimentation variable
Avant d'entrer dans le projet, sachons quelques choses.

Arduino UNO
Arduino UNO est une plateforme open source pour développer des projets électroniques. Programmable, effaçable, reprogrammable à tout instant. Plusieurs cartes disponibles : UNO, Nano, Mega, LilyPad, etc. avec spécifications différentes. Nous utilisons Arduino UNO pour contrôler des appareils domestiques automatiquement. Il a un microcontrôleur ATmega328 à 16MHz. Puissant, supporte USART, I2C, SPI.
- Article connexe : Lampe de nuit automatique utilisant Arduino
Programmé via Arduino IDE par câble micro USB. ATmega328 a un bootloader préprogrammé facilitant le téléversement sans matériel externe. Vaste application dans projets/produits électroniques. Langages C/C++ faciles à apprendre. Arduino IDE sépare le code en void setup() (exécuté une fois, initialisation) et void loop() (exécuté en continu).
Ce modèle a 6 entrées analogiques et 14 broches GPIO numériques (6 avec sortie PWM) utilisables via pinMode(), digitalWrite(), digitalRead(), analogRead(). 6 canaux analogiques A0-A5, résolution 10 bits. Alimentation par USB (5V) ou jack DC (7-20V). Régulateur intégré 3,3V pour dispositifs faible puissance. Broches communication : 0(Rx)/1(Tx) USART, SDA(A4)/SCL(A5) I2C, SS(10)/MOSI(11)/MISO(12)/SCK(13) SPI.
- Article connexe : Communication série par Arduino
ADC sur Arduino UNO
Arduino UNO a 6 canaux ADC intégrés pour lire des signaux analogiques 0-5V. Quand on interface des capteurs, ils génèrent des valeurs analogiques qu'Arduino lit en numérique. L'ADC convertit les valeurs capteur en analogique pour le microcontrôleur. Applications : détection température, mesure distance, vitesse, et capteurs générant valeurs analogiques.
Arduino UNO a ADC 10-bit : valeurs 0-1023. C'est la résolution = nombre de valeurs discrètes sur la plage analogique. Tension max ADC 5V, donc chaque pas ≈ 5mV (5/1024). 6 canaux ADC A0-A5 = interface 6 dispositifs analogiques simultanément.
Arduino IDE fournit la fonction intégrée analogRead(pin) pour lire les valeurs analogiques. Donnez le numéro de broche A0-A5 où le dispositif est connecté.
- Article connexe : Qu'est-ce qu'un circuit Crowbar ? Conception et Fonctionnement
PWM sur Arduino UNO
La modulation de largeur d'impulsion (PWM) génère des signaux analogiques à partir d'une source numérique en variant la largeur d'impulsion fréquence constante. Deux paramètres définissent le PWM : cycle de travail (duty cycle) et fréquence.
Cycle de travail d'un signal :
Fraction pendant laquelle le signal est ON dans une période complète = Duty Cycle.
Duty Cycle = 100 × Ton / (Ton + Toff)
Utilisé pour contrôler la puissance délivrée à la charge en allumant/éteignant le signal. Exemple : intensité lumière ou vitesse moteur. Après appel analogWrite(), la broche génère une onde carrée stable du duty cycle spécifié jusqu'au prochain appel analogWrite() ou digitalRead()/digitalWrite() sur la même broche.
- Article connexe : Circuit interrupteur tactile simple utilisant Timer 555 & Transistor BC547
Fréquence d'un signal :
La fréquence indique la rapidité avec laquelle un signal complète son cycle. En faisant cela à un duty cycle particulier, la sortie se comporte comme une tension analogique constante. Fréquence PWM ~490 Hz sur la plupart broches. Sur Uno, broches 5 et 6 ≈ 980 Hz. Broches 3 et 11 sur Leonardo ≈ 980 Hz.
Arduino UNO a 6 canaux PWM 8-bit (symbole ~). On obtient tension analogique par analogWrite() :
analogWrite (broche, Duty cycle)
Broche : broche Arduino pour générer sortie analogique.
Duty Cycle : valeur 0 (min) à 255 (max) pour changer le duty cycle.
- Article connexe : Circuit de protection contre les surtensions simple utilisant diode Zener
Écran LCD 16×2
Générer des caractères personnalisés sur LCD n'est pas très difficile. Nécessite connaissance de la mémoire CG-RAM et du contrôleur LCD. Ici, interfacer Arduino UNO avec module LCD JHD162A 16×2. JHD162A basé sur pilote HD44780 de Hitachi. 16 broches, mode 4-bit (4 lignes données) ou 8-bit (8 lignes). Nous utilisons le mode 4-bit pour moins de fils.
Description broches module LCD 16×2 :
| Broche LCD | Description |
|---|---|
| VSS | Broche Masse |
| VCC | +5V alimentation |
| VEE | Broche pour changer contraste LCD |
| RS | Sélection Registre : Mode Données ou Commande |
| RW | Mode Lecture ou Écriture |
| E | Enable LCD |
| DB0-DB7 | Données et commandes via ces broches |
| LED+ | Anode LED rétroéclairage |
| LED- | Cathode LED rétroéclairage |
- Article connexe : Interrupteur lumière salle de bain automatique
Ce LCD n'a pas sa propre lumière, une LED derrière l'écran fait office de rétroéclairage. L'interfaçage avec Arduino UNO est facile grâce à la bibliothèque LiquidCrystal d'Arduino IDE avec fonctions intégrées pour initialiser et afficher. Fonctions LCD utilisées dans ce projet :
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
lcd.begin()
lcd.clear()
lcd.print()
- Article connexe : Convertisseur 12V vers 5V
Fonctionnement de l'alimentation variable avec Arduino
Connectez les fils selon le schéma. Dans ce projet, nous prenons la tension à la borne de sortie et la donnons en entrée à un canal ADC. L'ADC donne la valeur numérique affichée sur le LCD 16×2. Les boutons pour incrémenter/décrémenter la tension sont connectés aux broches 4 et 5 d'Arduino UNO. Arduino UNO a résolution 10-bit (0-1023), tension max ADC 5V, donc 1 bit ≈ 4,9 mV (5/1024). En incrémentant/décrémentant, la valeur numérique varie 0-1023.
Nous lisons la valeur ADC au canal A0 via analogRead(A0). Broche 3 pour PWM. analogWrite(3, duty_cycle) génère la tension de sortie désirée. En appuyant sur les boutons, on change le duty cycle PWM ce qui change la tension de sortie. Un bouton incrémente, l'autre décrémente. PWM Arduino Uno varie 0-255 (0V à 5V). Broche 3 alimente un transistor NPN qui fournit tension variable à son émetteur comme dispositif de commutation.
La base du transistor a un PWM à duty ratio variable, donc tension variable à la borne. Comme la tension n'est pas linéaire, on connecte des condensateurs pour filtrer le bruit.
- Article connexe : Contrôle feu tricolore électronique utilisant CI 4017 & Timer 555
Explication du code
Inclusion des bibliothèques :
#include <LiquidCrystal.h>
Bibliothèque intégrée pour LCD, fonctions faciles pour afficher caractères.
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
int ref_volt = 125;
float flag = 0;
lcd prend les numéros de broches pour données, RS, RW, E. Tension de référence 2,5V = duty cycle 50% → ref_volt = 125.
pinMode(3, OUTPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
Broche 3 = sortie PWM, broches 4 et 5 = entrées pour incrément/décrément tension.
lcd.begin(16, 2);
delay(100);
lcd.setCursor(1, 0);
lcd.print("Tension Variable");
lcd.clear();
delay(1000);
lcd.begin définit le nombre de caractères. Affichage initial "Tension Variable".
float value = (analogRead(A0));
value = (value * 5) / 1024;
analogWrite(3, ref_volt);
value lit la valeur numérique du canal ADC A0 et la convertit en tension. analogWrite fournit PWM broche 3.
if (digitalRead(4) == LOW)
{
if (ref_volt < 250)
{
ref_volt = ref_volt + 1;
delay(100);
}
}
Vérifie si bouton incrément pressé. Si oui, augmente ref_volt.
if (digitalRead(5) == LOW)
{
if (ref_volt > 0)
{
ref_volt = ref_volt - 1;
delay(100);
}
}
Vérifie si bouton décrément pressé. Si oui, diminue ref_volt.
- Article connexe : Circuit interrupteur par applaudissement utilisant Timer 555 & Sans Timer
Ainsi, vous pouvez générer une alimentation variable 5 volts avec Arduino UNO sans vous soucier des batteries et du volume du circuit.
Technologie industrielle
- L'IA détecte la traite d'êtres humains et d'animaux sauvages dans les chaînes d'approvisionnement mondiales
- Construire un décodeur DTMF avec un Arduino seul – Aucun CI supplémentaire nécessaire
- Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
- Serveur Web Arduino Uno WiFi : Commander une LED via Navigateur
- Contrôle Arduino UNO depuis Python 3 – Communication Série et Démo LED
- Construire une Radio FM Compacte avec Arduino Nano et RDA5807M
- Maîtriser le courant, la puissance et le couple dans les variateurs de vitesse
- Alimentation duale ±12 VDC depuis 230 VAC – Schéma de circuit & guide
- Alimentations sans transformateur : une solution éprouvée pour réduire les coûts et l'encombrement