0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何構建基于Arduino的電壓指示器

454398 ? 來源:工程師吳畏 ? 2019-07-30 11:44 ? 次閱讀

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

您是否經歷過建設電池供電項目,然后突然無法工作,因為需要收費?

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

需要的材料

Arduino Uno

16 x 2 LCD顯示器

LED條形圖/10個LED燈泡

Arduino IDE

4 x 1.2V電池

電池座

什么是LED條形圖?

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

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

該項目如何測量電池電量?

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

Arduino的模擬引腳充當一個簡單的電壓表,可以檢索電壓值。然后,我們可以使用ADC轉換公式將模擬值轉換為數字電壓值。

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

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

項目示意圖

下面是構建的原理圖。

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

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

#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)建一個數組,用于將引腳分配給LED條形圖。連接LED的引腳編號數組。

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和模擬引腳設置為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”);

}

接下來,我們創(chuàng)建一個函數, 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);

}

}

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

// 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)建一些條件來控制LED條形圖,相對于我們從模擬引腳讀取的輸入電壓值A4。

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);

}

在上圖中,您可以看到我們得到一個幾乎完全充電的電池讀數,相當于大約3.84V。

完整項目代碼

#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);

}

}

現在您不必擔心電池意外運行不足。希望這有助于您的下一個電池供電項目!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 指示器
    +關注

    關注

    0

    文章

    251

    瀏覽量

    38396
  • Arduino
    +關注

    關注

    188

    文章

    6477

    瀏覽量

    188114
收藏 0人收藏

    評論

    相關推薦

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

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

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

    線路故障指示器變成紅色,通常是因為檢測到了線路中的特定電氣量變化,這些變化與線路故障緊密相關。具體來說,以下是一些導致線路故障指示器變紅的主要原因: 1. 短路或接地故障 短路故障 :當線路中發(fā)
    的頭像 發(fā)表于 09-24 11:04 ?621次閱讀

    線路故障指示器如何復位

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

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

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

    線路故障指示器怎么判斷故障點

    線路故障指示器在判斷故障點時,主要通過檢測線路中的電氣量變化來實現。以下是一些具體的判斷方法和步驟: 一、工作原理 線路故障指示器一般具備電流采集、電場測量和無線通信功能。當線路出現短路或接地故障
    的頭像 發(fā)表于 09-24 10:52 ?1090次閱讀

    在現代系統(tǒng)設計中啟用LED和LCD指示器應用簡介

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

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

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

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

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

    利用Arduino的數字水位指示器電路設計

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

    VL53L8CX TOF開發(fā)(4)----運動指示器

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

    內置超級電容模塊的故障指示器有哪些特性?

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

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

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

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

    使用 555 IC 的項目相序變化指示器用于指示蜂鳴器或 LED是否發(fā)生相序變化。我們都知道,在三相電機中,相序很重要,因為相序的變化可能會給機器帶來麻煩。
    的頭像 發(fā)表于 02-25 16:25 ?680次閱讀
    使用IC555的相序變化<b class='flag-5'>指示器</b>電路解析

    汽車制動失效指示器電路分享

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

    水位指示器電路圖分享

    水位指示器是一種用于測量和顯示容器內水位高度的裝置。它廣泛應用于各種場合,如工業(yè)生產、電力系統(tǒng)、水處理工程、農業(yè)灌溉等領域。
    的頭像 發(fā)表于 02-20 15:25 ?5270次閱讀
    水位<b class='flag-5'>指示器</b>電路圖分享

    電子發(fā)燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品