Sommario:

Voltmetro digitale con CloudX: 6 passaggi
Voltmetro digitale con CloudX: 6 passaggi

Video: Voltmetro digitale con CloudX: 6 passaggi

Video: Voltmetro digitale con CloudX: 6 passaggi
Video: TEST Cafego Volt/Amperometro - Wattmetro Shaw4u con Induttore su Amazon 2024, Dicembre
Anonim
Voltmetro digitale con CloudX
Voltmetro digitale con CloudX

Le batterie forniscono una forma più pura di alimentazione CC (corrente continua) quando vengono impiegate nei circuiti. Il loro basso livello di rumore li rende sempre perfetti per alcuni circuiti molto sensibili. Tuttavia, a volte quando il loro livello di tensione scende al di sotto di un certo punto di soglia, i circuiti - (che sono destinati ad alimentare), potrebbero assumere un comportamento irregolare; soprattutto quando non sono ben progettati per gestirlo.

Quindi, sorge la necessità di monitorare regolarmente il livello di carica della batteria per guidarci correttamente su quando è necessaria una sostituzione totale, o la ricarica, nel caso di una batteria ricaricabile. Pertanto, in questo fai-da-te (fai da te), dobbiamo progettare un semplice misuratore di tensione della batteria utilizzando CloudX, utilizzando il 7Segment come display.

Passaggio 1: requisiti hardware

Modulo Microcontrollore CloudX

CloudX USB

SoftCard

Visualizzazione a 7 segmenti

resistori

Alimentatore

tagliere

Cavi del ponticello (collegamento)

Passaggio 2: microcontrollore CloudX M633

Microcontrollore CloudX M633
Microcontrollore CloudX M633

Modulo Microcontrollore CloudX

Il modulo CloudX è uno strumento hardware di progettazione elettronica che ti consente un modo molto comodo e semplice di interfacciarti con il mondo fisico tramite una semplice scheda microcontrollore. L'intera piattaforma è basata su un calcolo fisico open source. La sua semplicità di un IDE (Integrated Development Environment) lo rende davvero perfetto per i principianti, pur mantenendo una funzionalità sufficiente per consentire agli utenti finali avanzati di navigare. In poche parole, CloudX fornisce un processo molto semplificato di gestione del microcontrollore, astraendo i normali dettagli complessi ad esso associati; offrendo allo stesso tempo una piattaforma di esperienza utente molto ricca. Trova ampie applicazioni trasversali: scuole, come ottimo strumento didattico; prodotti industriali e commerciali; e come grande strumento di utilità nelle mani di un hobbista.

Passaggio 3: connessioni pin

Connessioni pin
Connessioni pin

I pin a 7 segmenti: A, B, C, D, E, F, G, 1, 2 e 3 sono collegati ai pin1, pin2, pin3, pin4, pin5, pin6, pin7, pin8, pin9 del CloudX-MCU, pin10 e pin11 rispettivamente.

Passaggio 4: diagramma del circuito

Schema elettrico
Schema elettrico

Il modulo microcontrollore, essendo qui al centro della scena, può essere acceso:

o tramite i punti Vin e Gnd (cioè collegandoli rispettivamente ai terminali +ve e –ve dell'alimentatore esterno) sulla scheda;

o tramite il modulo softcard USB CloudX

. Inoltre, come si può facilmente vedere dallo schema circuitale sopra riportato, la tensione della batteria in ingresso è interfacciata con il modulo MCU (microcontrollore) in modo tale che il -point della rete divisore di tensione (formato da e) sia connesso ad A0 del pin MCU.

e sono scelti in modo tale da:

limitare la quantità di corrente che scorre attraverso la rete;

limite entro un intervallo di sicurezza di (0 – 5)V per l'MCU.

Usando la formula: VOUT = (R2/(R1+R2)) * VIN; e può essere facilmente valutato.

Voutmax = 5V

e per questo progetto scegliamo: Vinmax = 50V;

5 = (R2/(R1+R2)) * 50 R1 = 45/5 * R2 Prendendo ad esempio R2 = 10kΩ; R1 = 45/5 * 10 = 90 kΩ

Passaggio 5: Principio di funzionamento

Quando la tensione misurata in ingresso viene letta tramite il punto VOUT della rete del partitore di tensione, i dati vengono ulteriormente elaborati nell'MCU per valutare il valore effettivo finale visualizzato sull'unità del segmento. It (il design del sistema) è un posizionatore automatico del punto decimale, in quanto (punto decimale) effettivamente sposta la posizione sull'unità di visualizzazione stessa in base a ciò che il valore float impone in un dato momento. Quindi, l'intero display hardware a 7 segmenti viene cablato in modalità multiplex. È una disposizione speciale per cui lo stesso bus dati (8 pin dati) dall'MCU alimenta i tre 7 segmenti attivi nell'unità display. L'invio del modello di dati in ciascuna delle parti componenti viene ottenuto mediante un processo denominato Scansione. La scansione è una tecnica che prevede l'invio di dati a ciascuno dei 7 segmenti componenti; e abilitarli (cioè accenderli) in rapida successione all'arrivo dei rispettivi dati. La velocità di indirizzamento a ciascuno di essi è tale da riuscire a ingannare la visione umana facendo credere che tutti loro (le parti componenti) siano abilitati (indirizzati) allo stesso tempo. (scansione) semplicemente, in effetti, utilizza un fenomeno noto come Persistence Of Vision.

Passaggio 6: il programma software

#includere

#includere

#includere

#define segmento1 pin9

#define segmento2 pin10

#define segmento3 pin11

float batt_voltage;

int punto decimale, batt;

/*array che memorizzano il modello di segmento per ogni cifra data*/

char CCathodeDisp = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

char CAnodeDisp = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

int disp0, disp1, disp2;

Schermo() {

carattere non firmato i;

if(Puntodecimale < 10) {

disp0 = (int)batt_voltage /100; // recupera l'MSD (cifra più significativa)

//essendo il più ponderato

/* recupera la cifra pesata successiva; e così via */

disp1 = ((int)batt_voltage % 100)/10;

disp2 = ((int)batt_voltage % 10);

}

altro {

disp0 = (int)batt_voltage /1000;

disp1 = ((int)batt_voltage % 1000)/100;

disp2 = ((int)batt_voltage % 100)/10;

}

/*I modelli vengono versati per la visualizzazione; e 0x80 carattere aggiungendo un punto decimale

se la condizione associata è vera*/

for(i=0; i<50; i++) {

pin9 = pin10 = pin11 = ALTO;

if(Puntodecimale < 10)

portWrite(1, CCathodeDisp[disp0] | 0x80);

else portWrite(1, CCathodeDisp[disp0]);

segmento1 = BASSO;

segmento2 = ALTO;

segmento3 = ALTO;

ritardoMs(5);

pin9 = pin10 = pin11 = ALTO;

if((Puntodecimale >= 10) && (Puntodecimale < 100))

portWrite(1, CCathodeDisp[disp1] | 0x80);

else portWrite(1, CCathodeDisp[disp1]);

segmento1 = ALTO;

segmento2 = BASSO;

segmento3 = ALTO;

ritardoMs(5);

pin9 = pin10 = pin11 = ALTO;

if (puntodecimale >= 100)

portWrite(1, CCathodeDisp[disp2] | 0x80);

else portWrite(1, CCathodeDisp[disp2]);

segmento1 = ALTO;

segmento2 = ALTO;

segmento3 = BASSO;

ritardoMs(5);

}

}

setup(){ //imposta qui

analogSetting(); //porta analogica inizializzata

portMode(1, OUTPUT); //Pin da 1 a 8 configurati come pin di uscita

/* scansiona i pin configurati come pin di output */

pin9Mode = USCITA;

pin10Mode = USCITA;

pin11Mode = USCITA;

portWrite(1, LOW);

pin9 = pin10 = pin11 = ALTO; //scan pin (che sono active-low)

//sono disabilitati all'inizio

loop(){ //Programma qui

batt_voltage = analogRead(A0); //prende il valore misurato

batt_voltage = ((batt_voltage * 5000) / 1024); //fattore di conversione per 5Vin

batt_voltage = (batt_voltage * 50)/5000; //fattore di conversione per 50Vin

decimalPoint = batt_voltage; //indica dove compare il punto decimale

//il valore originale prima della manipolazione dei dati

Schermo();

}

}

Consigliato: