Lezione 98-9: Misuratore di livello di tensione a LED con Arduino o luce scorrevole con potenziometro
Questo progetto ti mostra come costruire un voltmetro a barra che utilizza cinque LED come display a barra, pilotato interamente da un Arduino e da un singolo potenziometro. Ruotando la manopola, l'Arduino legge la tensione variabile su un pin analogico e accende un LED per ogni volt, così la fila di luci letteralmente "cammina" su e giù con la manopola. È uno dei modi più chiari per comprendere l'ingresso analogico, perché puoi vedere la conversione analogico-digitale avvenire in tempo reale sotto forma di una barra luminosa fisica.
Il valore pratico qui va ben oltre uno spettacolo di luci. Una volta compreso come mappare una tensione misurata su un insieme di uscite, puoi riutilizzare esattamente lo stesso schema per strumentazione reale. Ad esempio, potresti costruire:
- Un indicatore di carica della batteria che mostra la capacità residua di una batteria da 12 V o di un power bank USB come una fila di LED.
- Un indicatore di livello di un serbatoio d'acqua, dove un sensore a galleggiante emette una tensione proporzionale alla profondità.
- Un display a barra per la temperatura utilizzando un sensore di temperatura analogico come l'LM35.
- Un misuratore di intensità del segnale o del livello audio per un ricevitore radio o un amplificatore.
- Una semplice lettura del sensore per qualsiasi trasduttore analogico da 0–5 V (pressione, luce, posizione).
- Una sonda di tensione da banco per verificare i rail di alimentazione senza lo schermo di un multimetro.
Poiché le soglie sono calcolate come percentuali della tensione della scheda, lo stesso codice funziona su schede a 5 V come l'Uno e la Mega e su schede a 3,3 V con una sola riga di modifica.
Hardware e componenti
La lista dei componenti è volutamente minimale, e tutto è spiegato nella prima parte del video (nel video a 01:54). Avrai bisogno di:
- Una scheda Arduino (Uno, Nano o Mega).
- Cinque LED, idealmente di un unico colore così la barra si legge chiaramente, anche se colori misti funzionano bene.
- Cinque resistori limitatori di corrente. Il tutorial utilizza resistori da 1 kΩ, ma qualsiasi valore da circa 300 Ω a 1 kΩ funzionerà; valori più alti rendono semplicemente i LED più deboli (nel video a 05:33).
- Un potenziometro. Sono dimostrati sia il tipo a manopola rotante che quello a slitta (nel video a 02:19).
- Una breadboard e fili jumper.
Una breve nota sul LED stesso, poiché è importante per il cablaggio: un LED è un diodo, quindi conduce solo in un verso. Il lato piatto del corpo in plastica, e il piedino più corto, è il catodo (negativo). Il piedino più lungo è l'anodo (positivo). Il tutorial illustra questo simbolo e la forma fisica in dettaglio (nel video a 02:39).
Il valore del resistore non è arbitrario. Un LED ha una caduta di circa 2 V, e i tipi piccoli da 3 mm e 5 mm assorbono circa 10 mA. Con un'alimentazione a 5 V, i restanti 3 V devono cadere ai capi del resistore, quindi la legge di Ohm dà R = 3 V / 0,01 A = 300 Ω. Questo è il valore per la massima luminosità; usare 1 kΩ è una scelta sicura e leggermente più tenue (nel video a 04:41).
Guida al cablaggio
La sezione dei LED del cablaggio è identica al precedente progetto della luce a inseguimento: ogni anodo dei LED si collega al proprio pin digitale, e ogni catodo passa attraverso un resistore a un rail di massa comune. Nel tutorial i LED sono collegati ai pin 7, 6, 5, 4 e 3 (nel video a 43:04).
Il potenziometro è l'unico componente nuovo. I suoi due pin esterni vanno ai due rail di alimentazione — un pin esterno a massa e l'altro a 5 V (o 3,3 V se stai misurando un sistema a 3,3 V). Il pin centrale, chiamato cursore, è l'uscita e deve collegarsi al pin analogico A0 (nel video a 43:30). Il cursore è ciò che produce la tensione variabile: ruotando la manopola, il cursore scorre lungo una pista resistiva e la tensione che presenta cambia dolcemente tra i due rail.
Un dettaglio importante: se rimuovi il potenziometro mentre il circuito è in funzione, il pin analogico rimane fluttuante e i LED lampeggeranno in modo casuale. Questo comportamento è dimostrato nel video (nel video a 48:52) ed è un buon promemoria del fatto che un ingresso analogico necessita sempre di una sorgente di tensione definita.
Spiegazione del codice
Il codice è breve e la maggior parte è semplice, quindi questa sezione si concentra solo sulle parti che vorrai modificare. Tutte queste impostazioni si trovano all'inizio dello sketch.
Definizioni dei pin. Queste indicano all'Arduino a quali pin sono collegati i LED e il potenziometro. Se hai cablato i LED diversamente, cambia questi numeri di conseguenza — l'ordine è importante, perché LED1 è la soglia più bassa e LED5 la più alta.
const int potPin = A0;//define a pin to connect potentiometer
const int LED1 = 7;
const int LED2 = 6;
const int LED3 = 5;
const int LED4 = 4;
const int LED5 = 3;Tensione della scheda. Questo è il valore singolo più importante da impostare correttamente. È il riferimento rispetto al quale viene calcolata ogni soglia. Impostalo a 5.0 per un Uno o Mega, e a 3.3 per un Nano a 3,3 V o una scheda simile. Se lo lasci sbagliato, ogni LED si attiverà alla tensione errata (nel video a 44:19).
float boardVoltage= 5.0;//for UNO and MEGA 5.0V for Nano either 5V or 3.3V
Visualizzazione della tensione seriale. Imposta questo a true per stampare la tensione misurata sul Monitor Seriale a 9600 baud, il che è estremamente utile durante la calibrazione. Impostalo a false per silenziare l'output una volta che tutto funziona.
boolean showVoltage = true;//true or false to read voltage in serial monitor
Come funziona la conversione. Il convertitore analogico-digitale dell'Arduino restituisce un numero da 0 a 1023, perché è un convertitore a 10 bit (210 = 1024 passi). Il codice scala quel numero grezzo in una tensione reale usando la tensione della scheda come riferimento. Questa è la riga da ricordare se mai passi a una scheda a 12 bit come la Due, dove divideresti per 4095 invece.
int sensorValue = analogRead(A0);
float voltage = sensorValue * (boardVoltage / 1023.0);
La logica delle soglie. Invece di codificare direttamente le tensioni, ogni passo è espresso come percentuale della tensione della scheda. Al 95% o superiore, tutti e cinque i LED si accendono; sopra l'80% solo quattro; e così via fino al 20%, dove si accende un singolo LED. Questo approccio percentuale è ciò che rende lo sketch portabile tra schede a 5 V e 3,3 V senza riscrivere i confronti.
if (voltage >= boardVoltage*0.95)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
}
Poiché il codice usa else if, viene eseguito esattamente un ramo per ogni passaggio nel loop, quindi solo il numero corretto di LED è acceso alla volta. Il ritardo di 50 ms alla fine di ogni loop evita che il display sfarfallii.
Progetto dal vivo e dimostrazione
Con lo sketch caricato, apri il Monitor Seriale a 9600 baud e gira la manopola lentamente. La tensione stampata e la barra LED si seguono da vicino: a circa 1 V un LED è acceso, a 2 V due sono accesi, e così via fino a circa 4,8 V dove tutti e cinque sono accesi (nel video a 47:37). Le letture si attestano entro pochi centesimi di volt dal valore atteso, il che è eccellente per un convertitore a 10 bit.
Se i passi sembrano leggermente irregolari, di solito sono le resistenze piuttosto che il codice. Il tutorial osserva che le resistenze standard a film di carbonio hanno una tolleranza del 10%, mentre i tipi a film metallico blu sono tipicamente all'1% e danno passi notevolmente più stretti e accurati (nel video a 48:18).
Puoi anche sostituire il potenziometro rotativo con un potenziometro a slitta e ottenere lo stesso comportamento con una sensazione lineare, che è una bella opzione se prevedi di montare il misuratore in un pannello (nel video a 49:07).
Se vuoi spostare la luce manualmente invece che con una manopola, questo è trattato nella Lezione 98-8: Luce camminante con pulsante e LED con Arduino. E se vuoi semplicemente che i LED camminino con il proprio timer, vedi la Lezione 98-7: Luce camminante usando Arduino e 5 LED.
Progetti correlati da questo video
- Lezione 98-1: Come accendere e spegnere un LED con Arduino
- Lezione 98-2: Come accendere e spegnere un LED usando un pulsante con Arduino
- Lezione 98-3: Come accendere/spegnere un LED a interruttore usando un pulsante con Arduino
- Lezione 98-4: Dissolvenza di un LED usando Arduino: Controllo della luminosità
- Lezione 98-5: Dissolvenza della luce quando viene premuto un pulsante usando Arduino
- Lezione 98-6: Gioco LED altalena con Arduino
- Lezione 98-7: Luce camminante usando Arduino e 5 LED
- Lezione 98-8: Luce camminante con pulsante e LED con Arduino
- Lezione 98-10: Semaforo con Arduino
Capitoli
- [00:00] Panoramica dei 10 progetti LED
- [02:29] Nozioni di base sui LED, simboli e calcolo delle resistenze
- [42:25] Introduzione al misuratore di livello di tensione a LED
- [43:04] Cablaggio dei LED e del potenziometro
- [43:54] Spiegazione del codice della barra di tensione
- [44:19] Impostazione del riferimento di tensione della scheda
- [46:00] Logica delle soglie e passi percentuali
- [47:14] Dimostrazione: lettura della tensione con la barra LED
- [48:18] Tolleranza delle resistenze e precisione
- [49:07] Uso di un potenziometro a slitta
This code has not been parsed yet. Please return to the admin panel to parse it.
Cose di cui potresti avere bisogno
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Risorse e riferimenti
-
DocumentazioneDocumentazione per il kit di apprendimento SunFounder 3 in 1 IoT/Smart Car.docs.sunfounder.com
-
Esterno
-
Esterno
-
Esterno
File📁
Librerie Arduino (zip)
-
Codice sorgente del kit di apprendimento Smart Car 3-in-1 di SunFounder
3in1-kit-main-v2.zip12.80 MB
Manuale dell'utente
-
Manuale di assemblaggio SunFounder 3-in-1 Arduino Smart CarQuesto documento mostra l'assemblaggio passo dopo passo della SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB