在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何構(gòu)建基于Arduino的電壓指示器

454398 ? 來(lái)源:工程師吳畏 ? 2019-07-30 11:44 ? 次閱讀

為什么電池電量監(jiān)控很重要

您是否經(jīng)歷過(guò)建設(shè)電池供電項(xiàng)目,然后突然無(wú)法工作,因?yàn)樾枰召M(fèi)?

我們都知道電池有一定的電壓限制。超過(guò)或完全失去電池電壓可能導(dǎo)致很多挫折,元件損壞或數(shù)據(jù)丟失。因此,能夠監(jiān)控電池電量以便您決定是否需要充電或更換電池不是很好嗎?這就是本讀者將為您做的事情!

需要的材料

Arduino Uno

16 x 2 LCD顯示器

LED條形圖/10個(gè)LED燈泡

Arduino IDE

4 x 1.2V電池

電池座

什么是LED條形圖?

LED條形圖是一個(gè)由10個(gè)獨(dú)立LED組成的LED陣列,帶有10個(gè)輸出引腳。它有各種應(yīng)用,包括音頻設(shè)備和工業(yè)控制面板。

在我們的項(xiàng)目中,我們將其用作電池電量指示器。與任何其他LED一樣,當(dāng)將LED條連接到微控制器時(shí),必須使用端到地的電阻將陽(yáng)極引腳連接到正極和陰極引腳。

該項(xiàng)目如何測(cè)量電池電量?

很高興理解電池具有我們稱之為電量的電池。它可以理解為電池中包含的電壓量。

Arduino的模擬引腳充當(dāng)一個(gè)簡(jiǎn)單的電壓表,可以檢索電壓值。然后,我們可以使用ADC轉(zhuǎn)換公式將模擬值轉(zhuǎn)換為數(shù)字電壓值。

我們轉(zhuǎn)換的值將顯示在LED條形圖上,它可以投射強(qiáng)度。因此,如果所有十個(gè)LED都點(diǎn)亮,則電池處于全強(qiáng)度狀態(tài)。如果只有五個(gè)LED亮,則電池的強(qiáng)度為一半。

Arduino Uno ADC的分辨率為10位。 ADC轉(zhuǎn)換器將0到5伏之間的輸入電壓映射到0到1023之間的整數(shù)值。因此,如果我們將輸入analogValue乘以(5/1024),那么我們得到輸入電壓的數(shù)字值。

項(xiàng)目示意圖

下面是構(gòu)建的原理圖。

電池電量監(jiān)控代碼演練

首先,我們需要定義LCD庫(kù)并指定我們將與Arduino一起使用的引腳。我們將模擬引腳A4分配為用于檢查電池電壓的模擬引腳。這些值在float中設(shè)置,因此我們可以得到最多兩位小數(shù)的電壓值。

#include

const int rs = 12, en = 13, d0 = A0, d1 = A1, d2 = A2, d3 = A3;

const int analogPin = A4;

LiquidCrystal lcd(rs, en, d0, d1, d2, d3);

float analogValue;

float input_voltage;

然后,我們創(chuàng)建一個(gè)數(shù)組,用于將引腳分配給LED條形圖。連接LED的引腳編號(hào)數(shù)組。

int ledPins[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; // The LEDs attach to this array of pin numbers

int pinCount = 10; // the number of pins

我們將LCD和模擬引腳設(shè)置為OUTPUT引腳。

void setup()

{

Serial.begin(9600); // opens serial port, sets data rate to 9600 bps

lcd.begin(16, 2); //// set up the LCD‘s number of columns and rows:

pinMode(A0,OUTPUT);

pinMode(A1,OUTPUT);

pinMode(A2,OUTPUT);

pinMode(A3,OUTPUT);

pinMode(A4,INPUT);

lcd.print(“Voltage Level”);

}

接下來(lái),我們創(chuàng)建一個(gè)函數(shù), LED_function ,用于使用LED條形圖。

void LED_function(int stage)

{

for (int j=2; j《=11; j++)

{

digitalWrite(j,LOW);

}

for (int i=1, l=2; i《=stage; i++,l++)

{

digitalWrite(l,HIGH); //delay(30);

}

}

一旦我們有了這個(gè)功能,我們需要一種方法將模擬值轉(zhuǎn)換成數(shù)字電壓值。通過(guò)使用Arduino的內(nèi)置模數(shù)轉(zhuǎn)換器和ADC轉(zhuǎn)換公式,我們將能夠輕松轉(zhuǎn)換這些值。我們還希望在LCD顯示屏上顯示這些轉(zhuǎn)換值。

// Conversion formula for voltage

analogValue = analogRead (A4);

Serial.println(analogValue);

delay (1000);

input_voltage = (analogValue * 5.0) / 1024.0;

lcd.setCursor(0, 1);

lcd.print(“Voltage= ”);

lcd.print(input_voltage);

Serial.println(input_voltage);

delay(100);

然后我們創(chuàng)建一些條件來(lái)控制LED條形圖,相對(duì)于我們從模擬引腳讀取的輸入電壓值A(chǔ)4。

if (input_voltage 《 0.50 && input_voltage 》= 0.00 )

{

digitalWrite(2, HIGH);

delay (30);

digitalWrite(2, LOW);

delay (30);

}

else if (input_voltage 《 1.00 && input_voltage 》= 0.50)

{

LED_function(2);

}

else if (input_voltage 《 1.50 && input_voltage 》= 1.00)

{

LED_function(3);

}

else if (input_voltage 《 2.00 && input_voltage 》= 1.50)

{

LED_function(4);

}

else if (input_voltage 《 2.50 && input_voltage 》= 2.00)

{

LED_function(5);

}

else if (input_voltage 《 3.00 && input_voltage 》= 2.50)

{

LED_function(6);

}

else if (input_voltage 《 3.50 && input_voltage 》= 3.00)

{

LED_function(7);

}

else if (input_voltage 《 4.00 && input_voltage 》= 3.50)

{

LED_function(8);

}

else if (input_voltage 《 4.50 && input_voltage 》= 4.00)

{

LED_function(9);

}

else if (input_voltage 《 5.00 && input_voltage 》= 4.50)

{

LED_function(10);

}

在上圖中,您可以看到我們得到一個(gè)幾乎完全充電的電池讀數(shù),相當(dāng)于大約3.84V。

完整項(xiàng)目代碼

#include

const int rs = 12, en = 13, d0 = A0, d1 = A1, d2 = A2, d3 = A3;

const int analogPin = A4;

LiquidCrystal lcd(rs, en, d0, d1, d2, d3);

float analogValue;

float input_voltage;

int ledPins[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; // an array of pin numbers to which LEDs are attached

int pinCount = 10; // the number of pins (i.e. the length of the array)

void setup()

{

Serial.begin(9600); // opens serial port, sets data rate to 9600 bps

lcd.begin(16, 2); //// set up the LCD’s number of columns and rows:

pinMode(A0,OUTPUT);

pinMode(A1,OUTPUT);

pinMode(A2,OUTPUT);

pinMode(A3,OUTPUT);

pinMode(A4,INPUT);

lcd.print(“Voltage Level”);

}

void LED_function(int stage)

{

for (int j=2; j《=11; j++)

{

digitalWrite(j,LOW);

}

for (int i=1, l=2; i《=stage; i++,l++)

{

digitalWrite(l,HIGH); //delay(30);

}

}

void loop()

{

// Conversion formula for voltage

analogValue = analogRead (A4);

Serial.println(analogValue);

delay (1000);

input_voltage = (analogValue * 5.0) / 1024.0;

lcd.setCursor(0, 1);

lcd.print(“Voltage= ”);

lcd.print(input_voltage);

Serial.println(input_voltage);

delay(100);

if (input_voltage 《 0.50 && input_voltage 》= 0.00 )

{

digitalWrite(2, HIGH);

delay (30);

digitalWrite(2, LOW);

delay (30);

}

else if (input_voltage 《 1.00 && input_voltage 》= 0.50)

{

LED_function(2);

}

else if (input_voltage 《 1.50 && input_voltage 》= 1.00)

{

LED_function(3);

}

else if (input_voltage 《 2.00 && input_voltage 》= 1.50)

{

LED_function(4);

}

else if (input_voltage 《 2.50 && input_voltage 》= 2.00)

{

LED_function(5);

}

else if (input_voltage 《 3.00 && input_voltage 》= 2.50)

{

LED_function(6);

}

else if (input_voltage 《 3.50 && input_voltage 》= 3.00)

{

LED_function(7);

}

else if (input_voltage 《 4.00 && input_voltage 》= 3.50)

{

LED_function(8);

}

else if (input_voltage 《 4.50 && input_voltage 》= 4.00)

{

LED_function(9);

}

else if (input_voltage 《 5.00 && input_voltage 》= 4.50)

{

LED_function(10);

}

}

現(xiàn)在您不必?fù)?dān)心電池意外運(yùn)行不足。希望這有助于您的下一個(gè)電池供電項(xiàng)目!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 指示器
    +關(guān)注

    關(guān)注

    0

    文章

    251

    瀏覽量

    38419
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6478

    瀏覽量

    188295
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    淺談架空暫態(tài)特征型遠(yuǎn)傳故障指示器

    新品—架空暫態(tài)特征型遠(yuǎn)傳故障指示器—深圳鼎信生產(chǎn)廠家 型號(hào):JY -DX 一、背景 隨著電力系統(tǒng)的不斷發(fā)展,對(duì)架空線路的安全運(yùn)行和故障快速定位的要求越來(lái)越高。傳統(tǒng)的故障指示器大多只能提供就地指示
    的頭像 發(fā)表于 12-04 16:35 ?235次閱讀

    線路故障指示器為什么變成紅色

    線路故障指示器變成紅色,通常是因?yàn)闄z測(cè)到了線路中的特定電氣量變化,這些變化與線路故障緊密相關(guān)。具體來(lái)說(shuō),以下是一些導(dǎo)致線路故障指示器變紅的主要原因: 1. 短路或接地故障 短路故障 :當(dāng)線路中發(fā)
    的頭像 發(fā)表于 09-24 11:04 ?635次閱讀

    線路故障指示器如何復(fù)位

    是關(guān)于線路故障指示器復(fù)位的指南: 1. 了解線路故障指示器 線路故障指示器通常包括電流互感、電壓互感器、故障檢測(cè)電路、
    的頭像 發(fā)表于 09-24 11:01 ?496次閱讀

    線路故障指示器工作原理是什么

    線路故障指示器是一種用于檢測(cè)和定位電力系統(tǒng)中故障的設(shè)備,它能夠幫助電力維護(hù)人員快速準(zhǔn)確地找到故障點(diǎn),從而提高電力系統(tǒng)的可靠性和安全性。 線路故障指示器的工作原理概述 1. 基本概念 線路故障指示器
    的頭像 發(fā)表于 09-24 10:54 ?2085次閱讀

    線路故障指示器怎么判斷故障點(diǎn)

    線路故障指示器在判斷故障點(diǎn)時(shí),主要通過(guò)檢測(cè)線路中的電氣量變化來(lái)實(shí)現(xiàn)。以下是一些具體的判斷方法和步驟: 一、工作原理 線路故障指示器一般具備電流采集、電場(chǎng)測(cè)量和無(wú)線通信功能。當(dāng)線路出現(xiàn)短路或接地故障
    的頭像 發(fā)表于 09-24 10:52 ?1133次閱讀

    在現(xiàn)代系統(tǒng)設(shè)計(jì)中啟用LED和LCD指示器應(yīng)用簡(jiǎn)介

    電子發(fā)燒友網(wǎng)站提供《在現(xiàn)代系統(tǒng)設(shè)計(jì)中啟用LED和LCD指示器應(yīng)用簡(jiǎn)介.pdf》資料免費(fèi)下載
    發(fā)表于 09-11 09:22 ?0次下載
    在現(xiàn)代系統(tǒng)設(shè)計(jì)中啟用LED和LCD<b class='flag-5'>指示器</b>應(yīng)用簡(jiǎn)介

    使用電源正常狀態(tài)指示器實(shí)現(xiàn)輸出放電功能

    電子發(fā)燒友網(wǎng)站提供《使用電源正常狀態(tài)指示器實(shí)現(xiàn)輸出放電功能.pdf》資料免費(fèi)下載
    發(fā)表于 08-29 09:45 ?0次下載
    使用電源正常狀態(tài)<b class='flag-5'>指示器</b>實(shí)現(xiàn)輸出放電功能

    L60系列0.230英寸(5.9毫米)防水面板安裝指示器

    電子發(fā)燒友網(wǎng)站提供《L60系列0.230英寸(5.9毫米)防水面板安裝指示器.pdf》資料免費(fèi)下載
    發(fā)表于 07-24 12:26 ?0次下載

    利用Arduino的數(shù)字水位指示器電路設(shè)計(jì)

    隨著科技的不斷發(fā)展,數(shù)字化技術(shù)在各個(gè)領(lǐng)域的應(yīng)用越來(lái)越廣泛。在液位監(jiān)測(cè)領(lǐng)域,數(shù)字水位指示器作為一種先進(jìn)的監(jiān)測(cè)設(shè)備,因其高精度、高可靠性和智能化等特點(diǎn),受到了廣泛的關(guān)注和應(yīng)用。
    的頭像 發(fā)表于 06-22 17:48 ?1149次閱讀
    利用<b class='flag-5'>Arduino</b>的數(shù)字水位<b class='flag-5'>指示器</b>電路設(shè)計(jì)

    VL53L8CX TOF開發(fā)(4)----運(yùn)動(dòng)指示器

    VL53L8CX傳感內(nèi)置了一個(gè)固件功能,可以檢測(cè)場(chǎng)景中的運(yùn)動(dòng)。這個(gè)運(yùn)動(dòng)指示器是基于連續(xù)幀之間來(lái)計(jì)算的。使用插件vl53l8cx_plugin_motion_indicator可以使用這個(gè)選項(xiàng)
    的頭像 發(fā)表于 06-19 10:43 ?1520次閱讀
    VL53L8CX TOF開發(fā)(4)----運(yùn)動(dòng)<b class='flag-5'>指示器</b>

    內(nèi)置超級(jí)電容模塊的故障指示器有哪些特性?

    內(nèi)置超級(jí)電容模塊的故障指示器有哪些特性?安裝在輸配電線路、電力電纜及開關(guān)柜進(jìn)出線上的故障指示器在電流流通的線路中起著非常重要的作用,一旦線路發(fā)生故障,巡線人員可以利用指示燈的報(bào)警顯示快速的確定故障
    的頭像 發(fā)表于 06-04 09:39 ?546次閱讀
    內(nèi)置超級(jí)電容模塊的故障<b class='flag-5'>指示器</b>有哪些特性?

    電力電纜故障指示器|誤差探討|行波故障定位的選項(xiàng)

    以往電力電纜故障指示器誤差過(guò)大的原因可能有以下幾點(diǎn):? 1. 設(shè)備自身問(wèn)題:故障指示器設(shè)備本身可能存在制造或設(shè)計(jì)上的缺陷,導(dǎo)致其指示精度不夠。 2. 安裝環(huán)境影響:故障指示器可能受到安
    的頭像 發(fā)表于 03-28 10:49 ?1024次閱讀

    使用IC555的相序變化指示器電路解析

    使用 555 IC 的項(xiàng)目相序變化指示器用于指示蜂鳴器或 LED是否發(fā)生相序變化。我們都知道,在三相電機(jī)中,相序很重要,因?yàn)橄嘈虻淖兓赡軙?huì)給機(jī)器帶來(lái)麻煩。
    的頭像 發(fā)表于 02-25 16:25 ?694次閱讀
    使用IC555的相序變化<b class='flag-5'>指示器</b>電路解析

    汽車制動(dòng)失效指示器電路分享

    幾乎 40%的事故是由于制動(dòng)故障問(wèn)題而發(fā)生的。通過(guò)及早發(fā)現(xiàn)這種情況,我們可以降低事故率?!捌囍苿?dòng)失效指示器”項(xiàng)目是解決這一全球性問(wèn)題的方法。
    的頭像 發(fā)表于 02-25 16:02 ?1207次閱讀
    汽車制動(dòng)失效<b class='flag-5'>指示器</b>電路分享

    熔斷保險(xiǎn)絲指示器的電路分析

    在這種情況下,這里描述的那種熔斷保險(xiǎn)絲指示電路提供了理想的解決方案。它通過(guò)產(chǎn)生音頻警報(bào)和 LED 發(fā)光來(lái)指示保險(xiǎn)絲是好還是熔斷。
    的頭像 發(fā)表于 02-25 15:34 ?1250次閱讀
    熔斷保險(xiǎn)絲<b class='flag-5'>指示器</b>的電路分析
    主站蜘蛛池模板: 色天使美国 | 亚洲国产成人精彩精品 | 在线免费黄| 国产嫩草影院精品免费网址 | 精品国产理论在线观看不卡 | 日本网站免费观看 | 色涩网站在线观看 | 色片免费网站 | 免费国产小视频 | 国产成人精品日本亚洲直接 | 天天插天天射天天干 | 久久免费国产视频 | 色偷偷人人 | 日本一区二区三区视频在线 | 色视频在线网站 | 丁香六月在线 | 日日躁夜夜躁狠狠天天 | 日本午夜视频 | 国产一级特黄的片子 | 亚洲色图激情 | 亚洲综合免费 | 日本大片免aaa费观看视频 | 久热国产精品 | 成人网在线视频 | 在线日本人观看成本人视频 | 国产免费播放一区二区三区 | 艹久久 | 久久婷婷久久一区二区三区 | 午夜影院免费在线观看 | 国产三级免费观看 | 日本高清免费aaaaa大片视频 | 色网站在线 | 欧美三级一区二区三区 | 日韩午夜r电影在线观看 | 国产在线精品美女观看 | 一级做a爰片久久毛片图片 一级做a爰片久久毛片鸭王 | 午夜高清福利 | 午夜小视频男女在线观看 | 久久精品国产亚洲片 | 狠狠操天天操夜夜操 | 天天色综合天天 |