Innehållsförteckning:

Digital voltmeter med CloudX: 6 steg
Digital voltmeter med CloudX: 6 steg

Video: Digital voltmeter med CloudX: 6 steg

Video: Digital voltmeter med CloudX: 6 steg
Video: DFCCIL EXECUTIVE OPERATING (STATION CONTROLLER) 2018 2024, November
Anonim
Digital voltmeter med CloudX
Digital voltmeter med CloudX

Batterier ger en renare form av likström (likström) när de används i kretsar. Deras låga ljudnivå gör dem alltid perfekta för vissa mycket känsliga kretsar. Men ibland när deras spänningsnivå sjunker under en viss tröskelpunkt kan kretsarna - (som de är avsedda att driva) komma in i ett oregelbundet beteende; särskilt när de inte är väl utformade för att hantera det.

Därför uppstår behovet av att regelbundet övervaka batteriets effektnivå för att korrekt vägleda oss när det är dags för en total byte eller laddning - om ett laddningsbart batteri. Därför ska vi i denna DIY (Do It Yourself) designa en enkel batterispänningsmätare med CloudX - med hjälp av 7Segmentet som vår display.

Steg 1: Hårdvarukrav

CloudX Microcontroller -modul

CloudX USB

SoftCard

7 Segmentvisning

Motstånd

Nätaggregat

Bakbord

Bygel (anslutande) ledningar

Steg 2: CloudX M633 mikrokontroller

CloudX M633 mikrokontroller
CloudX M633 mikrokontroller

CloudX Microcontroller -modul

CloudX -modulen är ett hårdvaruverktyg för elektronikdesign som ger dig ett mycket bekvämt och enkelt sätt att interagera med den fysiska världen via ett enkelt mikrokontrollerkort. Hela plattformen är baserad på en öppen källkod. Dess enkelhet med en IDE (Integrerad utvecklingsmiljö) gör den verkligen perfekt för nybörjare, men behåller tillräckligt med funktionalitet för att avancerade slutanvändare ska kunna navigera sig igenom. I ett nötskal tillhandahåller CloudX en mycket förenklad process för hantering av mikrokontrollen-genom att ta bort de normala komplexa detaljerna som är förknippade med den; samtidigt som den erbjuder en mycket rik plattform för användarupplevelse. Det hittar breda tillämpningar som går över hela linjen: skolor, som ett bra utbildningsverktyg; industriella och kommersiella produkter; och som ett bra verktyg i händerna på en hobbyist.

Steg 3: Stiftanslutningar

Stiftanslutningar
Stiftanslutningar

7-segmentstiften: A, B, C, D, E, F, G, 1, 2 och 3 är anslutna till CloudX-MCU: s pin1, pin2, pin3, pin4, pin5, pin6, pin7, pin8, pin9, pin10 respektive pin11.

Steg 4: Kretsdiagram

Kretsdiagram
Kretsdiagram

Mikrokontrollmodulen, som är i centrum här, kan slås på:

antingen via Vin- och Gnd-punkterna (dvs. att ansluta dem till din externa nätaggregatets +ve respektive –ve terminaler) på kortet;

eller via din CloudX USB softcard -modul

. Mer över, som lätt kan ses från kretsschemat ovan, är ingångsbatteriets spänning ansluten till MCU (mikrokontroller) modulen så att –punkten för spänningsdelarenätet (bildat av och) är ansluten till A0 på MCU -stiftet.

och väljs på ett sådant sätt att:

begränsa mängden ström som flödar genom nätverket;

gräns inom ett säkert intervall på (0 - 5) V för MCU.

Med hjälp av formeln: VOUT = (R2/(R1+R2)) * VIN; och kan enkelt utvärderas.

Voutmax = 5V

och för detta projekt väljer vi: Vinmax = 50V;

5 = (R2/(R1+R2)) * 50 R1 = 45/5 * R2 Tar R2 = 10kΩ till exempel; R1 = 45/5 * 10 = 90kΩ

Steg 5: Princip för drift

När den ingående uppmätta spänningen läses via spänningsdelarnätets VOUT -punkt, bearbetas data ytterligare i MCU för att utvärdera det slutliga faktiska värdet som visas på segmentenheten. Det (systemdesignen) är en automatisk decimalpunktsplacering, genom att den (decimalpunkten) faktiskt skiftar position på själva displayenheten i enlighet med vad flottörvärdet dikterar vid en given tidpunkt. Därefter kopplas hela maskinvarans 7-segment-displayenhet upp i multiplexläget. Det är ett speciellt arrangemang där samma databuss (8-datapinnar) från MCU matar de tre aktiva 7-segmenten i displayenheten. Att skicka datamönster till var och en av komponentdelarna uppnås genom en process som kallas skanning. Skanning är en teknik som innefattar att skicka data till vart och ett av de 7-segmentiga komponenterna; och aktivera (dvs. slå på) dem snabbt efter varandra när deras respektive data kommer. Hastigheten att ta itu med var och en av dem görs så att den lyckas lura den mänskliga visionen att tro att de alla (komponentdelarna) är aktiverade (adresserade) samtidigt. Det (skanning) använder helt enkelt ett fenomen som kallas Persistence Of Vision.

Steg 6: Programvaran

#omfatta

#omfatta

#omfatta

#define segment1 pin9

#define segment2 pin10

#define segment3 pin11

float batt_voltage;

int decimalPoint, batt;

/*matriser som lagrar segmentmönster för varje given siffra*/

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

osignerad char i;

if (decimalPoint <10) {

disp0 = (int) batt_voltage /100; // hämtar MSD (mest signifikanta siffra)

// vara den högsta viktade

/* hämtar nästa vägda siffra; och så vidare */

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

disp2 = ((int) batt_voltage % 10);

}

annat {

disp0 = (int) batt_voltage /1000;

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

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

}

/*Mönster hälls ut för visning; och 0x80 tecken som lägger till en decimal

om det associerade villkoret stämmer*/

för (i = 0; i <50; i ++) {

pin9 = pin10 = pin11 = HIGH;

if (decimalPoint <10)

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

annars portWrite (1, CCathodeDisp [disp0]);

segment1 = LÅGT;

segment2 = HÖG;

segment3 = HÖG;

delayMs (5);

pin9 = pin10 = pin11 = HIGH;

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

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

annars portWrite (1, CCathodeDisp [disp1]);

segment1 = HÖG;

segment2 = LÅGT;

segment3 = HÖG;

delayMs (5);

pin9 = pin10 = pin11 = HIGH;

if (decimalPoint> = 100)

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

annars portWrite (1, CCathodeDisp [disp2]);

segment1 = HÖG;

segment2 = HÖG;

segment3 = LÅG;

delayMs (5);

}

}

setup () {// setup här

analogSetting (); // analog port initierad

portMode (1, OUTPUT); // Stift 1 till 8 konfigureras som utgångsstiften

/ * scan pins konfigurerade som output pins */

pin9Mode = UTGÅNG;

pin10Mode = UTGÅNG;

pin11Mode = UTGÅNG;

portWrite (1, LÅG);

pin9 = pin10 = pin11 = HIGH; // scan-pins (som är aktiva-låga)

// är inaktiverade i början

loop () {// Program här

batt_voltage = analogRead (A0); // tar in det uppmätta värdet

batt_voltage = ((batt_voltage * 5000) / 1024); // omvandlingsfaktor för 5Vin

batt_voltage = (batt_voltage * 50)/5000; // omvandlingsfaktor för 50Vin

decimalPoint = batt_voltage; // markerar där decimalpunkten visas i

// det ursprungliga värdet före datamanipulering

visa();

}

}

Rekommenderad: