Mundarija:

CloudX bilan raqamli voltmetr: 6 qadam
CloudX bilan raqamli voltmetr: 6 qadam

Video: CloudX bilan raqamli voltmetr: 6 qadam

Video: CloudX bilan raqamli voltmetr: 6 qadam
Video: Ремонт на балконе Ошибки монтажа теплого пола. #37 2024, Noyabr
Anonim
CloudX bilan raqamli voltmetr
CloudX bilan raqamli voltmetr

Batareyalar kontaktlarning zanglashiga olib kelganda, toza (doimiy) tok kuchini beradi. Ularning past shovqin darajasi ularni har doim juda sezgir davrlarga moslashtiradi. Biroq, ba'zida ularning kuchlanish darajasi ma'lum bir chegaradan pastga tushganda, davralar (ular quvvat uchun mo'ljallangan) tartibsiz xatti -harakatlarga kirishishi mumkin; ayniqsa, ular bu vazifani bajarish uchun yaxshi ishlab chiqilmagan bo'lsa.

Shunday qilib, batareya quvvati darajasini doimiy ravishda kuzatib borish zarurati tug'iladi, bu esa bizni to'liq zaryadlash yoki qayta zaryadlanuvchi batareyani zaryad qilish kerak bo'lganda to'g'ri yo'l -yo'riq beradi. Shuning uchun, bu DIY -da (O'zing qil), biz 7X segmentini displey sifatida ishlatib, CloudX yordamida oddiy batareya kuchlanish o'lchagichini ishlab chiqishimiz kerak.

1 -qadam: Uskuna talablari

CloudX mikrokontroller moduli

CloudX USB

SoftCard

7 segmentli displey

Rezistorlar

Elektr ta'minoti birligi

Non paneli

O'tish simlari

2 -qadam: CloudX M633 mikrokontroller

CloudX M633 mikrokontroller
CloudX M633 mikrokontroller

CloudX mikrokontroller moduli

CloudX moduli - bu elektron konstruktiv apparat vositasi bo'lib, u sizga oddiy mikrokontroldorlar paneli orqali jismoniy dunyo bilan aloqa qilishning juda qulay va oson usulini beradi. Butun platforma ochiq manbali jismoniy hisoblashlarga asoslangan. IDE (Integrated Development Environment) ning soddaligi uni yangi boshlanuvchilar uchun juda mos qiladi, lekin ilg'or oxirgi foydalanuvchilarga o'z yo'llarini bosib o'tishlari uchun etarli funktsiyalarni saqlab qoladi. Yong'oq qobig'ida CloudX mikrokontroller bilan ishlashning soddalashtirilgan jarayonini ta'minlaydi-u bilan bog'liq bo'lgan oddiy murakkab detallarni chiqarib tashlash; bir vaqtning o'zida juda boy foydalanuvchi tajribasi platformasini taklif qiladi. U keng ko'lamli dasturlarni topadi: maktablar, ajoyib o'quv vositasi; sanoat va tijorat mahsulotlari; va sevimli mashg'ulot qo'lida ajoyib yordamchi vosita sifatida.

3 -qadam: Ulanishlarni ulash

Ulanishlar
Ulanishlar

7 segmentli pinlar: A, B, C, D, E, F, G, 1, 2 va 3 CloudX-MCU pin1, pin2, pin3, pin4, pin5, pin6, pin7, pin8, pin9, pin10 va pin11 mos ravishda.

4 -qadam: O'chirish diagrammasi

O'chirish diagrammasi
O'chirish diagrammasi

Bu erda markaziy bosqichda bo'lgan mikrokontroller moduli yoqilishi mumkin:

bortdagi Vin va Gnd nuqtalari orqali (ya'ni, ularni mos ravishda tashqi quvvat manbaining +ve va -ve terminallariga ulash);

yoki CloudX USB karta moduli orqali

. Yuqorida ko'rsatilgan sxemadan ko'rinib turibdiki, batareyaning kirish voltaji MCU (mikrokontroller) moduli bilan bog'langan, shuning uchun kuchlanish bo'luvchi tarmoqning nuqtasi (va undan hosil bo'lgan) MCU pinining A0 ga ulangan..

va ular quyidagicha tanlanadi:

tarmoq orqali o'tadigan oqim miqdorini cheklash;

MCU uchun xavfsiz oraliq chegarasi (0 - 5) V.

Formuladan foydalanib: VOUT = (R2/(R1+R2)) * VIN; va oson baholanishi mumkin.

Voutmax = 5V

va bu loyiha uchun biz tanlaymiz: Vinmax = 50V;

5 = (R2/(R1+R2)) * 50 R1 = 45/5 * R2 Masalan, R2 = 10kΩ ni olish; R1 = 45/5 * 10 = 90kΩ

5 -qadam: ishlash printsipi

Kirish o'lchanadigan kuchlanish kuchlanish taqsimlash tarmog'ining VOUT nuqtasi orqali o'qilganda, ma'lumotlar segmentda ko'rsatiladigan yakuniy haqiqiy qiymatni baholash uchun MCUda qayta ishlanadi. Bu (tizim dizayni) avtomatik kasrli joylashtiruvchi, chunki u (o'nlik nuqta) ko'rsatgich birligidagi pozitsiyani ma'lum bir vaqtda float qiymati belgilaganiga mos ravishda o'zgartiradi. Keyin, 7-segmentli uskunaning butun displeyi multipleks rejimida ulanadi. Bu maxsus kelishuv bo'lib, MCU bir xil ma'lumotlar shinasi (8 ta ma'lumotlar pinlari) displey blokidagi uchta faol 7 segmentni oziqlantiradi. Har bir tarkibiy qismga ma'lumotlar naqshini yuborish skanerlash deb ataladigan jarayon yordamida amalga oshiriladi. Skanerlash-bu 7-segmentli komponentlarning har biriga ma'lumotlarni uzatishni o'z ichiga olgan usul; va tegishli ma'lumotlar kelganda ularni ketma -ket yoqish (ya'ni. yoqish). Ularning har biriga murojaat qilish tezligi shunday bo'ladiki, u bir vaqtning o'zida hammasi (tarkibiy qismlari) yoqilgan (ko'rib chiqilgan), deb ishonib, odamlarning tasavvurini aldashga muvaffaq bo'ladi. Bu (skanerlash), aslida, ko'rishning doimiyligi deb nomlanuvchi hodisadan foydalanadi.

6 -qadam: Dasturiy ta'minot dasturi

#qo'shing

#qo'shing

#qo'shing

#segmentni belgilang1 pin9

#segmentni belgilang 2 pin10

#segmentni belgilang3 pin11

float batt_voltage;

int decimalPoint, batt;

/*har bir berilgan raqam uchun segment naqshini saqlaydigan massivlar*/

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;

ko'rsatish () {

imzosiz char i;

if (decimalPoint <10) {

disp0 = (int) batt_voltage /100; // MSD (eng muhim raqam) ni oladi

// eng yuqori vaznli

/* keyingi og'irlikdagi raqamni oladi; va hokazo */

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

disp2 = ((int) batt_voltage % 10);

}

boshqa {

disp0 = (int) batt_voltage /1000;

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

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

}

/*Namunalar ko'rsatish uchun quyiladi; va 0x80 belgi kasr nuqtasini qo'shadi

agar bog'liq shart to'g'ri bo'lsa*/

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

pin9 = pin10 = pin11 = YUQORI;

if (decimalPoint <10)

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

else portWrite (1, CCathodeDisp [disp0]);

segment1 = LOW;

segment2 = YUQORI;

segment3 = YUQORI;

kechiktirishlar (5);

pin9 = pin10 = pin11 = YUQORI;

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

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

else portWrite (1, CCathodeDisp [disp1]);

segment1 = YUQORI;

segment2 = LOW;

segment3 = YUQORI;

kechiktirishlar (5);

pin9 = pin10 = pin11 = YUQORI;

agar (decimalPoint> = 100)

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

else portWrite (1, CCathodeDisp [disp2]);

segment1 = YUQORI;

segment2 = YUQORI;

segment3 = LOW;

kechiktirishlar (5);

}

}

setup () {// bu erda sozlash

analog sozlash (); // analog port ishga tushirildi

portMod (1, OUTPUT); // 1 dan 8 gacha pinlar chiqish pinlari sifatida sozlangan

/ * chiqish pinlari sifatida sozlangan skanerlar */

pin9Mode = Chiqish;

pin10Mode = Chiqish;

pin11Mode = Chiqish;

portWrite (1, LOW);

pin9 = pin10 = pin11 = YUQORI; // skanerlar (faol-past)

// boshida o'chirilgan

loop () {// Dastur bu erda

batt_voltage = analogRead (A0); // o'lchangan qiymatni oladi

batt_voltage = ((batt_voltage * 5000) / 1024); // 5Vin uchun konvertatsiya koeffitsienti

batt_voltage = (batt_voltage * 50)/5000; // 50V uchun konvertatsiya koeffitsienti

decimalPoint = batt_voltage; // kasr nuqtasi qaerda paydo bo'lishini belgilaydi

// ma'lumotlar manipulyatsiyasidan oldingi asl qiymat

ko'rsatish ();

}

}

Tavsiya: