Innholdsfortegnelse:

Digital voltmeter med CloudX: 6 trinn
Digital voltmeter med CloudX: 6 trinn

Video: Digital voltmeter med CloudX: 6 trinn

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

Batterier gir en renere form for likestrøm (likestrøm) når de brukes i kretser. Det lave støynivået gjør dem alltid til en perfekt passform for noen veldig følsomme kretser. Men til tider når spenningsnivået går ned under et bestemt terskelpunkt, kan kretsene - (som de er ment for å drive), gå inn i en uberegnelig oppførsel; spesielt når de ikke er godt designet for å håndtere det.

Derfor oppstår behovet for å regelmessig overvåke batterinivået for å veilede oss riktig når det er på tide for en total utskifting eller lading - i tilfelle et oppladbart batteri. Derfor, i denne DIY (Do It Yourself), skal vi designe en enkel batterispenningsmåler ved hjelp av CloudX - ved å bruke 7Segmentet som skjermen vår.

Trinn 1: Krav til maskinvare

CloudX mikrokontrollermodul

CloudX USB

SoftCard

7 Segmentvisning

Motstander

Strømforsyningsenhet

Brødbrett

Jumper (kobler) ledninger

Trinn 2: CloudX M633 mikrokontroller

CloudX M633 mikrokontroller
CloudX M633 mikrokontroller

CloudX mikrokontrollermodul

CloudX -modulen er et maskinvareverktøy for elektronisk design som gir deg en mye praktisk og enkel måte å koble til den fysiske verden via et enkelt mikrokontrollerbord. Hele plattformen er basert på en åpen kildekode fysisk databehandling. Dens enkelhet med et IDE (Integrated Development Environment) gjør det virkelig en perfekt passform for nybegynnere, men beholder nok funksjonalitet til at avanserte sluttbrukere kan navigere seg gjennom. I et nøtteskall gir CloudX en mye forenklet prosess for håndtering av mikrokontrolleren-ved å abstrahere bort de normale komplekse detaljene knyttet til den; samtidig som den tilbyr en veldig rik brukeropplevelsesplattform. Den finner brede applikasjoner som strekker seg over hele linjen: skoler, som et flott utdanningsverktøy; industrielle og kommersielle produkter; og som et flott verktøy i hendene på en hobbyist.

Trinn 3: Fest tilkoblinger

Pin -tilkoblinger
Pin -tilkoblinger

Pinnene med 7 segmenter: A, B, C, D, E, F, G, 1, 2 og 3 er koblet til CloudX-MCUs pin1, pin2, pin3, pin4, pin5, pin6, pin7, pin8, pin9, pin10 og pin11 henholdsvis.

Trinn 4: Kretsdiagram

Kretsdiagram
Kretsdiagram

Mikrokontrollermodulen, som er i sentrum her, kan slås på:

enten via Vin- og Gnd-punktene (dvs. å koble dem til henholdsvis +ve og –ve terminaler på din eksterne strømforsyningsenhet) på brettet;

eller via CloudX USB softcard -modulen

. Mer over, som det lett kan sees fra kretsdiagrammet ovenfor, er inngangsspenningen i grensesnittet til MCU -modulen (mikrokontroller) slik at –punktet til spenningsdelerenettverket (dannet av og) er koblet til A0 på MCU -pinnen.

og velges på en slik måte at:

begrense mengden strøm som strømmer gjennom nettverket;

grense innenfor et sikkert område på (0 - 5) V for MCU.

Ved å bruke formelen: VOUT = (R2/(R1+R2)) * VIN; og kan enkelt evalueres.

Voutmax = 5V

og for dette prosjektet velger vi: Vinmax = 50V;

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

Trinn 5: Driftsprinsipp

Når den målte inngangsspenningen leses via VOUT -punktet i spenningsdelernettverket, blir dataene videre behandlet i MCU for å evaluere til den endelige faktiske verdien som vises på segmentenheten. Den (systemdesignen) er en automatisk desimalpunktplassering, ved at den (desimalpunktet) faktisk skifter posisjon på selve displayenheten i samsvar med hva flyteverdien dikterer på et gitt tidspunkt. Deretter kobles hele maskinvarens 7-segmenters displayenhet til i multiplexmodus. Det er en spesiell ordning der den samme databussen (8-datapinner) fra MCUen mater de tre aktive 7-segmentene i displayenheten. Sende datamønster til hver av komponentdelene oppnås ved en prosess som kalles skanning. Skanning er en teknikk som innebærer å sende data over til hvert av komponentens 7-segmenter; og muliggjøre (dvs. slå på) dem raskt etter hverandre når deres respektive data kommer. Hastigheten til å adressere hver av dem er gjort slik at det lykkes å lure menneskesynet til å tro at alle (komponentdelene) er aktivert (adressert) samtidig. Den (skanning) bruker ganske enkelt et fenomen kjent som Persistence Of Vision.

Trinn 6: Programvaren

#inkludere

#inkludere

#inkludere

#define segment1 pin9

#define segment2 pin10

#define segment3 pin11

float batt_voltage;

int desimalPoint, batt;

/*matriser som lagrer segmentmønster for hvert gitt siffer*/

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;

vise() {

usignert char i;

hvis (desimalpunkt <10) {

disp0 = (int) batt_voltage /100; // henter MSD (mest signifikante siffer)

// å være den høyest vektede

/* henter det neste veide sifferet; og så videre */

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

disp2 = ((int) batt_voltage % 10);

}

annet {

disp0 = (int) batt_voltage /1000;

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

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

}

/*Mønstre helles ut for visning; og 0x80 tegn som legger til et desimaltegn

hvis den tilhørende tilstanden stemmer*/

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

pin9 = pin10 = pin11 = HIGH;

hvis (desimalpunkt <10)

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

else portWrite (1, CCathodeDisp [disp0]);

segment1 = LAVT;

segment2 = HØY;

segment3 = HØY;

forsinkelseMs (5);

pin9 = pin10 = pin11 = HIGH;

hvis ((desimalpunkt> = 10) && (desimalpunkt <100))

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

else portWrite (1, CCathodeDisp [disp1]);

segment1 = HØY;

segment2 = LAV;

segment3 = HØY;

forsinkelseMs (5);

pin9 = pin10 = pin11 = HIGH;

hvis (desimalpunkt> = 100)

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

else portWrite (1, CCathodeDisp [disp2]);

segment1 = HØY;

segment2 = HØY;

segment3 = LAV;

forsinkelseMs (5);

}

}

setup () {// oppsett her

analogSetting (); // analog port initialisert

portMode (1, OUTPUT); // Pinner 1 til 8 konfigurert som output pins

/ * skannepinner konfigurert som utgangspinner */

pin9Mode = UTGANG;

pin10Mode = UTGANG;

pin11Mode = UTGANG;

portWrite (1, LOW);

pin9 = pin10 = pin11 = HIGH; // skannepinner (som er aktive-lave)

// er deaktivert i starten

loop () {// Program her

batt_voltage = analogRead (A0); // tar inn måleverdien

batt_voltage = ((batt_voltage * 5000) / 1024); // konverteringsfaktor for 5Vin

batt_voltage = (batt_voltage * 50)/5000; // konverteringsfaktor for 50Vin

desimalpunkt = batt_voltage; // markerer der desimaltegnet vises i

// den opprinnelige verdien før datamanipulering

vise();

}

}

Anbefalt: