一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

如何利用Arduino構(gòu)建一個(gè)功率計(jì)

科技觀(guān)察員 ? 來(lái)源:八色木 ? 作者:八色木 ? 2022-04-12 16:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作為電子愛(ài)好者,我們常常依靠一些儀表或儀器來(lái)測(cè)量和分析電路。從簡(jiǎn)單的萬(wàn)用表到復(fù)雜的功率分析儀或DSOs,所有的儀表都有它們自己獨(dú)特的用途。這些儀表的大部分都有成品,我們可以根據(jù)特定的需要來(lái)購(gòu)買(mǎi)。有時(shí)我們可能會(huì)想自己制作一個(gè)儀表。例如,當(dāng)我們準(zhǔn)備做一個(gè)太陽(yáng)能光伏項(xiàng)目時(shí),我們想計(jì)算負(fù)載的功耗,在這種情況下,我們就可以用一個(gè)像Arduino這樣的微控制器平臺(tái)來(lái)構(gòu)建我們自己的功率計(jì)了。

pYYBAGJVNrKAWcQgAAgM650SDEg747.png

構(gòu)建自己的功率計(jì)不僅可以降低成本,還可以為我們提供更深入了解開(kāi)發(fā)測(cè)試功能的途徑。例如,使用Arduino的功率計(jì)可以很容易地調(diào)整串口監(jiān)視器上的監(jiān)控結(jié)果,可以在串口上繪制圖形,可以添加SD卡在預(yù)定義的時(shí)間內(nèi)自動(dòng)記錄電壓、電流和功率的數(shù)值。

功率計(jì)材料清單

Arduino Nano

LM358運(yùn)放

7805

LCD1602

0.22歐姆2瓦電阻

10k可調(diào)電阻

10k,20k,2.2k,1k電阻

0.1uF電容

測(cè)試負(fù)載

面包板

功率計(jì)電路圖

下面是arduino功率計(jì)項(xiàng)目的完整電路圖:

poYBAGJVNriAVo3jAALe0sBaDUI609.png

為了便于理解,我們把a(bǔ)rduino功率計(jì)電路被分為兩個(gè)部分。電路的上半部分是測(cè)量單元,電路的下半部分是計(jì)算和顯示單元。該電路測(cè)量范圍適合于0-24V,考慮到太陽(yáng)能光伏電池的規(guī)格,電流為0-1A。電路的基本原理是通過(guò)測(cè)量負(fù)載的電流和電壓,從而計(jì)算出負(fù)載所消耗的能量,并將測(cè)量值顯示在1602顯示器上。

下面,我們?cè)侔央娐贩殖啥鄠€(gè)功能塊進(jìn)行介紹,這樣我們就能更清楚地了解電路是如何工作的。

測(cè)量單元

測(cè)量單元包含一個(gè)分壓器可以幫助我們測(cè)量電壓;一個(gè)非反向的運(yùn)算放大器幫助我們測(cè)量通過(guò)電路的電流。上述電路的分壓部分如下所示:

poYBAGJVNr2AICbpAAAihGVDlWg110.png

這里輸入電壓是由Vcc表示的,就像前面說(shuō)的,我們正在設(shè)計(jì)從0到24V的電壓范圍的電路。但是像Arduino這樣的微控制器無(wú)法測(cè)量如此高的電壓值,它只能測(cè)量0-5v的電壓。因此,我們必須將0-24v的電壓(轉(zhuǎn)換)到0-5v。這因此我們通過(guò)使用一個(gè)分壓電路來(lái)實(shí)現(xiàn),如下所示。10k和2.2k電阻形成了分壓電路,用下面的公式可計(jì)算出分壓器的輸出電壓。

Vout = (Vin × R2) / (R1 + R2)

電路圖中標(biāo)記為Voltage的電壓可以從兩個(gè)電阻中間獲得,這個(gè)轉(zhuǎn)換后的電壓就可以被輸入到Arduino的模擬針中。接下來(lái)就是電流測(cè)量單元,我們知道微控制器只能讀取模擬電壓,所以我們需要將電流的值轉(zhuǎn)換成電壓。這時(shí),可以通過(guò)在電路中添加一個(gè)電阻(并聯(lián))來(lái)實(shí)現(xiàn),根據(jù)歐姆定律,它會(huì)降低電壓值,這與流過(guò)它的電流成正比。這樣獲得的值會(huì)非常小,所以我們用一個(gè)運(yùn)算放大器來(lái)放大它。電路如下所示:

poYBAGJVNsKAQVFoAABuq9Zvf2U253.png

分流電阻(SR1)的值是0.22歐姆。就像之前說(shuō)的,我們?cè)O(shè)計(jì)的是0-1A的測(cè)量電路,基于歐姆定律,我們可以計(jì)算出這個(gè)電阻的電壓降,當(dāng)最大的1A電流通過(guò)負(fù)載時(shí),它的電壓會(huì)在0.2V左右。這個(gè)電壓對(duì)于微控制器來(lái)說(shuō)是非常小的,我們使用一個(gè)運(yùn)算放大器來(lái)將電壓從0.2V放大到到更高。這個(gè)放大器的增益是21,所以0.2*21=4.2v。計(jì)算運(yùn)算放大器增益的公式如下所示:

Gain = Vout / Vin = 1 + (Rf / Rin)

在例子中,Rf的值是20k而Rin的值是1k,這樣我們就能獲得21的增益值。然后,將放大器的放大電壓輸入到一個(gè)由電阻1k和電容0.1uf組成的的RC濾波電路,過(guò)濾掉耦合噪聲。最后,將得到的電壓輸入到Arduino模擬針上。

測(cè)量單元最后的部分是電壓調(diào)節(jié)電路。由于實(shí)際輸入的電壓可能是可變的,而Arduino和運(yùn)算放大器需要一個(gè)穩(wěn)定的+5V來(lái)保證正常工作,因此我們用7805穩(wěn)壓模塊并添加一個(gè)噪聲電容來(lái)進(jìn)行電壓調(diào)節(jié)。電路如下:

pYYBAGJVNsmASG_JAAAlt4JQjAw622.png

計(jì)算和顯示單元

在測(cè)量單元中,我們將電壓和電流參數(shù)轉(zhuǎn)換成了0-5v,使之可以用在Arduino模擬輸入上?,F(xiàn)在,我們需要將這些電壓信號(hào)與Arduino連接起來(lái),并將1602液晶顯示器連接到Arduino上,這樣我們就可以查看最終結(jié)果了。

pYYBAGJVNs6Aeh5iAADaIVLZcE8175.png

如上圖所示,Voltage針與Arduino模擬針A3相連,而Current針連接到Arduino模擬針A4,1602液晶顯示器的電源來(lái)自于7805輸出的+5 V,同時(shí)將1602其它信號(hào)針與Arduino的數(shù)字?jǐn)?shù)字針相連,以4-bit模式工作,同時(shí)我們使用了一個(gè)電位計(jì)(10 k)連接到1602的 Con 針用來(lái)調(diào)節(jié)LCD的對(duì)比度。

Arduino編程部分

硬件部分討論結(jié)束后,現(xiàn)在輪到軟件部分了。軟件部分代碼的基本思路是讀取A3和A4上的模擬電壓,并計(jì)算電壓、電流和功率值,最后將其顯示在LCD屏幕上。下面我們將代碼分割成小段來(lái)解釋。和所有Arduino程序一樣,開(kāi)始都是定義使用的引腳。在本例中,A3和A4針?lè)謩e用于測(cè)量電壓和電流,數(shù)字針3,4,8,9,10和11用于與Arduino進(jìn)行交互。

int Read_Voltage = A3;

int Read_Current = A4;

const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; //1602 LCD 連接針

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

included一個(gè)名為“l(fā)iquid crystal”的頭文件。然后setup 函數(shù)中,初始化LCD顯示屏,并將串口顯示文本設(shè)置為“Arduino Wattmeter”,然后等待兩秒鐘。代碼如下所示:

void setup() {

lcd.begin(16, 2); //Initialise 16*2 LCD

lcd.print(“ Arduino Wattmeter”);

lcd.setCursor(0, 1);

lcd.print(“-Circuitdigest”);

delay(2000);

lcd.clear();

}

在主循環(huán)函數(shù)中,我們使用analogread函數(shù)來(lái)讀取A3和A4的電壓值。我們知道Arduino ADC的輸出值是0-1203,因?yàn)樗幸粋€(gè)10位的ADC,這個(gè)值必須被轉(zhuǎn)換成0-5v,可以通過(guò)乘以(5/1023)來(lái)完成。在硬件介紹部分,我們已經(jīng)完成從0-24v到0-5v的電壓轉(zhuǎn)換,以及0-1a到0-5v的轉(zhuǎn)換。所以現(xiàn)在我們要用一個(gè)乘數(shù)把這些值恢復(fù)到實(shí)際值??梢酝ㄟ^(guò)將其與乘數(shù)值相乘來(lái)完成。乘數(shù)的值可以用硬件部分提供的公式來(lái)計(jì)算,或者如果你已知電壓和電流值,你可以實(shí)際計(jì)算它。本例遵循了后一種選擇,因?yàn)樗诂F(xiàn)實(shí)中往往更準(zhǔn)確。所以乘數(shù)的值是6.46和0.239。因此,代碼如下所示:

float Voltage_Value = analogRead(Read_Voltage);

float Current_Value = analogRead(Read_Current);

Voltage_Value = Voltage_Value * (5.0/1023.0) * 6.46;

Current_Value = Current_Value * (5.0/1023.0) * 0.239;

如何提高測(cè)量精度?

上述計(jì)算實(shí)際電壓和電流值的方法可以很好地工作。但是也有一個(gè)缺點(diǎn),那就是測(cè)量的ADC電壓和實(shí)際電壓之間的關(guān)系不是線(xiàn)性的,因此得到的結(jié)果不會(huì)非常精確。為了提高精確度,我們可以用已知的一組值來(lái)建立測(cè)量的ADC值的集合,然后利用這些數(shù)據(jù),使用線(xiàn)性回歸方法推導(dǎo)出乘數(shù)方程。一旦我們計(jì)算出了實(shí)際電壓和實(shí)際電流值,我們就可以用公式計(jì)算出功率(P=V*I)。然后使用下面的代碼在LCD上顯示這三個(gè)值。

lcd.setCursor(0, 0);

lcd.print(“V=”); lcd.print(Voltage_Value);

lcd.print(“ ”);

lcd.print(“I=”);lcd.print(Current_Value);

float Power_Value = Voltage_Value * Current_Value;

lcd.setCursor(0, 1);

lcd.print(“Power=”); lcd.print(Power_Value);

完整測(cè)試代碼

poYBAGJVNwWAchosAAWDO1I3Ta0450.png

/*

 * Wattmeter for Solar PV using Arduino
 * Dated: 2-10-2018
 * Website: www.basemu.com
 * Translation to:circuitdigest.com
 * Power LCD and circuitry from the +5V pin of Arduino whcih is powered via 7805
 * LCD RS -> pin 2
 * LCD EN -> pin 3
 * LCD D4 -> pin 8
 * LCD D5 -> pin 9
 * LCD D6 -> pin 10
 * LCD D7 -> pin 11
 * Potetnital divider to measure voltage -> A3
 * Op-Amp output to measure current -> A4
 */

#include    

int Read_Voltage  = A3;
int Read_Current  = A4;
const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; 
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  lcd.begin(16, 2); 
  lcd.print(" Arduino Wattmeter"); 
  lcd.setCursor(0, 1);
  lcd.print("  With Arduino  "); 
  delay(2000);
  lcd.clear();
}
void loop() { 
 float Voltage_Value = analogRead(Read_Voltage);
 float Current_Value = analogRead(Read_Current);
 Voltage_Value = Voltage_Value * (5.0/1023.0) * 6.46;
 Current_Value = Current_Value * (5.0/1023.0) * 0.239;
 lcd.setCursor(0, 0);
 lcd.print("V="); lcd.print(Voltage_Value); 
 lcd.print("  "); 
 lcd.print("I=");lcd.print(Current_Value);
 float Power_Value = Voltage_Value * Current_Value;
 lcd.setCursor(0, 1);
 lcd.print("Power="); lcd.print(Power_Value); 
delay(200);
}

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

    關(guān)注

    2

    文章

    233

    瀏覽量

    30674
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6498

    瀏覽量

    192267
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何使用8051微控制器構(gòu)建個(gè)簡(jiǎn)單的數(shù)字溫度計(jì)

    有時(shí),由于波動(dòng),人們發(fā)現(xiàn)很難從模擬溫度計(jì)讀取溫度。因此,在這里我們將使用8051微控制器構(gòu)建個(gè)簡(jiǎn)單的數(shù)字溫度計(jì),其中LM35傳感器用于測(cè)量
    的頭像 發(fā)表于 11-21 16:38 ?3907次閱讀
    如何使用8051微控制器<b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>簡(jiǎn)單的數(shù)字溫度<b class='flag-5'>計(jì)</b>

    請(qǐng)問(wèn)下怎樣去設(shè)計(jì)種基于Arduino功率計(jì)?

    怎樣去設(shè)計(jì)種基于Arduino功率計(jì)?怎樣去設(shè)計(jì)Arduino功率
    發(fā)表于 07-26 06:18

    Arduino功率計(jì)電路是如何工作的

    怎樣去設(shè)計(jì)Arduino功率計(jì)的完整電路?Arduino功率計(jì)電路是如何工作的?
    發(fā)表于 09-29 08:46

    使用Arduino構(gòu)建個(gè)數(shù)字羅盤(pán)

    描述幾個(gè)人用機(jī)器人技術(shù)開(kāi)發(fā)項(xiàng)目,其中個(gè)大問(wèn)題是確定他們的導(dǎo)航方向。換句話(huà)說(shuō),機(jī)器人在環(huán)境中移動(dòng),但系統(tǒng)不知道它的確切方向,這意味著它的導(dǎo)航過(guò)程。作為種解決方案,許多人采用GPS設(shè)備來(lái)輔助確定方向
    發(fā)表于 08-25 06:11

    利用IC構(gòu)建簡(jiǎn)單的溫度計(jì)式電壓指示

    利用IC構(gòu)建簡(jiǎn)單的溫度計(jì)式電壓指示 本應(yīng)用筆記介紹了個(gè)產(chǎn)生溫度計(jì)式電壓指示的電路。該電路可以
    發(fā)表于 04-25 10:44 ?1063次閱讀
    <b class='flag-5'>利用</b>IC<b class='flag-5'>構(gòu)建</b>簡(jiǎn)單的溫度<b class='flag-5'>計(jì)</b>式電壓指示

    如何使用Arduino構(gòu)建個(gè)電子動(dòng)畫(huà)眼睛

    在這個(gè)項(xiàng)目中,我們將使用 Arduino 構(gòu)建個(gè)動(dòng)畫(huà)眼睛。在網(wǎng)上尋找新的項(xiàng)目創(chuàng)意時(shí),我萌生了制作動(dòng)畫(huà)眼睛的想法,這個(gè)項(xiàng)目立即引起了我的注意。
    的頭像 發(fā)表于 07-10 09:52 ?3328次閱讀
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>電子動(dòng)畫(huà)眼睛

    使用Arduino設(shè)計(jì)個(gè)壁掛式紅外溫度計(jì)

    在這個(gè)項(xiàng)目中,我們將使用 Arduino 設(shè)計(jì)個(gè)壁掛式紅外溫度計(jì),可以簡(jiǎn)單地固定在墻上并保持開(kāi)啟狀態(tài)。
    發(fā)表于 08-09 16:54 ?3238次閱讀
    使用<b class='flag-5'>Arduino</b>設(shè)計(jì)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>壁掛式紅外溫度<b class='flag-5'>計(jì)</b>

    如何使用Arduino和OLED設(shè)計(jì)個(gè)GPS車(chē)速表

     在這個(gè)項(xiàng)目中,我們將使用帶有 OLED 顯示屏的 NEO6M GPS 模塊 構(gòu)建個(gè)Arduino GPS 速度計(jì)。
    發(fā)表于 08-09 17:01 ?6453次閱讀
    如何使用<b class='flag-5'>Arduino</b>和OLED設(shè)計(jì)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>GPS車(chē)速表

    如何制作個(gè)Arduino pH計(jì)

     在這個(gè)項(xiàng)目中,我們將制作個(gè)Arduino pH 計(jì),并學(xué)習(xí)如何使用重力 pH 傳感器和 Arduino 測(cè)量液體溶液的 pH 值。16x
    發(fā)表于 08-12 16:39 ?6106次閱讀
    如何制作<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>Arduino</b> pH<b class='flag-5'>計(jì)</b>

    使用RDA5807構(gòu)建個(gè)Arduino FM收音機(jī)

    在本教程中,我們將構(gòu)建個(gè)Arduino FM 接收器,并將其添加到我們的項(xiàng)目庫(kù)中。我們將使用帶有 Arduino 的 RDA5807 FM
    發(fā)表于 08-19 14:50 ?2.4w次閱讀
    使用RDA5807<b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>Arduino</b> FM收音機(jī)

    使用Arduino和加速度計(jì)構(gòu)建個(gè)簡(jiǎn)單且便宜的計(jì)步器

    在本教程中,我們將使用 Arduino 和加速度計(jì)構(gòu)建個(gè)簡(jiǎn)單且便宜的 DIY 計(jì)步器。該計(jì)步器將計(jì)算腳步的數(shù)量并將其顯示在16x2 LCD
    的頭像 發(fā)表于 08-19 15:15 ?5436次閱讀
    使用<b class='flag-5'>Arduino</b>和加速度<b class='flag-5'>計(jì)</b><b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>簡(jiǎn)單且便宜的計(jì)步器

    如何使用Arduino構(gòu)建個(gè)無(wú)線(xiàn)門(mén)鈴

     在這個(gè)項(xiàng)目中,我們將使用 Arduino 構(gòu)建個(gè)無(wú)線(xiàn)門(mén)鈴。我們將有個(gè)按鈕,按下該按鈕將無(wú)線(xiàn)
    發(fā)表于 08-19 15:57 ?2131次閱讀
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>無(wú)線(xiàn)門(mén)鈴

    如何使用MPU6050和Arduino構(gòu)建個(gè)數(shù)字量角器

    MPU6050是款 集成 了 IC 3 軸加速度計(jì)和 3 軸陀螺儀的 單元。它還包含個(gè)溫度傳感器和
    發(fā)表于 08-31 15:42 ?6153次閱讀
    如何使用MPU6050和<b class='flag-5'>Arduino</b><b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>數(shù)字量角器

    構(gòu)建個(gè)Arduino交通燈模塊

    電子發(fā)燒友網(wǎng)站提供《構(gòu)建個(gè)Arduino交通燈模塊.zip》資料免費(fèi)下載
    發(fā)表于 12-13 10:39 ?0次下載
    <b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>Arduino</b>交通燈模塊

    如何使用加速度計(jì)構(gòu)建個(gè)基于Arduino的地震探測(cè)器

    采取預(yù)防措施。在這里,我們使用加速度計(jì)ADXL335來(lái)檢測(cè)地震前的振動(dòng)。加速度計(jì)ADXL335對(duì)所有三個(gè)軸的振動(dòng)和振動(dòng)都非常敏感。在這里,我們正在 使用加速度計(jì)
    的頭像 發(fā)表于 01-25 15:57 ?2150次閱讀
    如何使用加速度<b class='flag-5'>計(jì)</b><b class='flag-5'>構(gòu)建</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>基于<b class='flag-5'>Arduino</b>的地震探測(cè)器