Digitalni voltmetar sa CloudX -om: 6 koraka
Digitalni voltmetar sa CloudX -om: 6 koraka
Anonim
Digitalni voltmetar sa CloudX -om
Digitalni voltmetar sa CloudX -om

Baterije pružaju čistiji oblik istosmjerne (istosmjerne) energije kada se koriste u krugovima. Njihova niska razina buke uvijek ih čini savršenim za neka vrlo osjetljiva kola. Međutim, u trenucima kada im naponski nivo padne ispod određene granične vrijednosti, krugovi - (za koje se misli da ih napajaju) mogu ući u nestabilno ponašanje; pogotovo ako nisu dobro dizajnirani za to.

Stoga se javlja potreba za redovitim praćenjem snage baterije kako bi nas pravilno usmjerili kada treba dovršiti potpunu zamjenu ili punjenje - u slučaju punjive baterije. Stoga ćemo u ovom „Uradi sam“(Uradi sam) dizajnirati jednostavan mjerač napona baterije koristeći CloudX - koristeći 7Segment kao svoj zaslon.

Korak 1: Hardverski zahtjevi

Modul mikrokontrolera CloudX

CloudX USB

SoftCard

7Segmentni prikaz

Otpornici

Jedinica za napajanje

Breadboard

Kratkospojne (spojne) žice

Korak 2: CloudX M633 mikrokontroler

Mikrokontroler CloudX M633
Mikrokontroler CloudX M633

Modul mikrokontrolera CloudX

CloudX modul je hardverski alat za dizajn elektronike koji vam omogućuje mnogo zgodan i jednostavan način povezivanja sa fizičkim svijetom putem jednostavne ploče mikrokontrolera. Cijela platforma zasnovana je na fizičkom računarstvu otvorenog koda. Njegova jednostavnost IDE-a (Integrirano razvojno okruženje) zaista ga čini savršenim za početnike, a ipak zadržava dovoljno funkcionalnosti da omogući naprednim krajnjim korisnicima da se snađu. U ljusci ljuske, CloudX pruža mnogo pojednostavljen proces rukovanja mikrokontrolerom-apstrahiranjem uobičajenih složenih detalja povezanih s njim; dok u isto vrijeme nudi vrlo bogatu platformu za korisničko iskustvo. Nalazi široku primjenu u svim oblastima: škole, kao odlično obrazovno oruđe; industrijski i komercijalni proizvodi; i kao odlično pomoćno oruđe u rukama hobista.

Korak 3: Pin veze

Pin veze
Pin veze

Igle od 7 segmenata: A, B, C, D, E, F, G, 1, 2 i 3 povezane su sa pin1, pin2, pin3, pin4, pin4, pin5, pin6, pin7, pin8, pin9 pin10 i pin11 respektivno.

Korak 4: Dijagram kola

Dijagram kola
Dijagram kola

Modul mikrokontrolera, koji je ovdje u središtu, može se uključiti:

bilo putem točaka Vin i Gnd (tj. povezivanjem s +ve i –ve priključcima vaše vanjske jedinice za napajanje) na ploči;

ili putem vašeg CloudX USB modula meke kartice

. Štaviše, kao što se lako moglo vidjeti iz gornjeg dijagrama kruga, ulazni napon baterije je povezan s modulom MCU (mikrokontroler) tako da je –točka mreže razdjelnika napona (koju čine i) spojena na A0 MCU pina.

i biraju se na način da:

ograničiti količinu struje koja protiče kroz mrežu;

granica unutar sigurnog raspona (0 - 5) V za MCU.

Koristeći formulu: VOUT = (R2/(R1+R2)) * VIN; i lako se može ocijeniti.

Voutmax = 5V

a za ovaj projekt biramo: Vinmax = 50V;

5 = (R2/(R1+R2)) * 50 R1 = 45/5 * R2 Uzmimo za primjer R2 = 10 kΩ; R1 = 45/5 * 10 = 90 kΩ

Korak 5: Princip rada

Kada se očitani ulazni izmjereni napon očita preko VOUT točke mrežnog razdjelnika napona, podaci se dalje obrađuju u MCU -u radi procjene do konačne stvarne vrijednosti koja se prikazuje na segmentnoj jedinici. On (dizajn sistema) je automatski postavljač decimalnih zareza, po tome što (decimalni zarez) zapravo pomiče položaj na samoj jedinici prikaza u skladu sa onim što float vrijednost diktira u bilo kojem datom trenutku. Zatim se cijela hardverska 7-segmentna jedinica prikaza povezuje u multipleksnom načinu rada. To je poseban raspored prema kojem ista sabirnica podataka (8 pinova podataka) iz MCU-a napaja tri aktivna 7-segmenta u jedinici prikaza. Slanje uzorka podataka u svaki od sastavnih dijelova postiže se procesom koji se naziva Skeniranje. Skeniranje je tehnika koja uključuje slanje podataka u svaki od 7-segmenata komponente; i omogućavanje (tj. uključivanje) njih brzo uzastopno po dolasku odgovarajućih podataka. Brzina obraćanja svakom od njih učinjena je tako da uspije prevariti ljudsku viziju da vjeruje da su svi oni (sastavni dijelovi) omogućeni (adresirani) u isto vrijeme. On (skeniranje) jednostavno, u stvari, koristi fenomen poznat kao Persistence Of Vision.

Korak 6: Softverski program

#include

#include

#include

#define segment1 pin9

#define segment2 pin10

#define segment3 pin11

float batt_voltage;

int decimalPoint, batt;

/*nizovi koji skladište uzorak segmenta za svaku datu znamenku*/

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;

display () {

nepotpisani char i;

if (decimalna točka <10) {

disp0 = (int) batt_voltage /100; // preuzima MSD (najznačajnija znamenka)

// s najvećom težinom

/* dohvaća sljedeću ponderiranu znamenku; i tako dalje */

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

disp2 = ((int) batt_voltage % 10);

}

else {

disp0 = (int) batt_voltage /1000;

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

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

}

/*Uzorci se izlijevaju za prikaz; i 0x80 znak koji dodaje decimalni zarez

ako pridruženi uvjet vrijedi*/

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

pin9 = pin10 = pin11 = HIGH;

if (decimalna točka <10)

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

else portWrite (1, CCathodeDisp [disp0]);

segment1 = NISKO;

segment2 = HIGH;

segment3 = HIGH;

delayMs (5);

pin9 = pin10 = pin11 = HIGH;

if ((decimalna točka> = 10) && (decimalna točka <100))

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

else portWrite (1, CCathodeDisp [disp1]);

segment1 = HIGH;

segment2 = LOW;

segment3 = HIGH;

delayMs (5);

pin9 = pin10 = pin11 = HIGH;

if (decimalna točka> = 100)

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

else portWrite (1, CCathodeDisp [disp2]);

segment1 = HIGH;

segment2 = HIGH;

segment3 = LOW;

delayMs (5);

}

}

setup () {// postavljanje ovdje

analogSetting (); // analogni port inicijaliziran

portMode (1, OUTPUT); // Igle od 1 do 8 konfigurirane kao izlazi

/ * pinovi za skeniranje konfigurirani kao izlazni pinovi */

pin9Mode = OUTPUT;

pin10Mode = OUTPUT;

pin11Mode = OUTPUT;

portWrite (1, LOW);

pin9 = pin10 = pin11 = HIGH; // iglice za skeniranje (koje su aktivne-niske)

// onemogućeni su na početku

loop () {// Program ovdje

batt_voltage = analogRead (A0); // uzima izmjerenu vrijednost

batt_voltage = ((batt_voltage * 5000) / 1024); // faktor konverzije za 5Vin

batt_voltage = (batt_voltage * 50)/5000; // faktor konverzije za 50Vin

decimalPoint = batt_voltage; // označava gdje se pojavljuje decimalna točka

// izvorna vrijednost prije manipulacije podacima

display ();

}

}

Preporučuje se: