Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

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.

Composants requis

Logiciel : Arduino IDE Nightly ou Atmel Studio 6.2

Schéma de circuit d'alimentation variable

Avant d'entrer dans le projet, sachons quelques choses.

Construire une alimentation variable avec Arduino UNO – Circuit et code étape par étape

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.

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.

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é.

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.

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.

É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
VSSBroche Masse
VCC+5V alimentation
VEEBroche pour changer contraste LCD
RSSélection Registre : Mode Données ou Commande
RWMode Lecture ou Écriture
EEnable LCD
DB0-DB7Données et commandes via ces broches
LED+Anode LED rétroéclairage
LED-Cathode LED rétroéclairage

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()

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.

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.

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

  1. L'IA détecte la traite d'êtres humains et d'animaux sauvages dans les chaînes d'approvisionnement mondiales
  2. Construire un décodeur DTMF avec un Arduino seul – Aucun CI supplémentaire nécessaire
  3. Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
  4. Serveur Web Arduino Uno WiFi : Commander une LED via Navigateur
  5. Contrôle Arduino UNO depuis Python 3 – Communication Série et Démo LED
  6. Construire une Radio FM Compacte avec Arduino Nano et RDA5807M
  7. Maîtriser le courant, la puissance et le couple dans les variateurs de vitesse
  8. Alimentation duale ±12 VDC depuis 230 VAC – Schéma de circuit & guide
  9. Alimentations sans transformateur : une solution éprouvée pour réduire les coûts et l'encombrement