簡介
這實(shí)際上不是任何產(chǎn)品或公共項(xiàng)目(?。?它是我設(shè)計(jì)用來幫助我評(píng)估太陽能電池板以及它們?cè)诤螘r(shí)工作的方式的給電池充電。通常,這需要大量的萬用表,如果您必須不斷更換面板,這會(huì)有些麻煩。因此,我決定建立一個(gè)可以幫助我的專業(yè)工具。這就是我想要的!
可攜帶!很難測試內(nèi)部的太陽能電池板
能夠登錄到SD卡進(jìn)行長期數(shù)據(jù)分析(稍后添加)
保持太陽能電池板電壓的跟蹤
》
保持電池電壓
保持流經(jīng)面板到充電器的電流量
我想過是否必須構(gòu)建此電池,有人可能會(huì)覺得我的筆記有用。但是,本文檔的主要目的是演示如何使用adafruit商店中隨附的機(jī)柜。
此設(shè)計(jì)適用于?6V面板,單個(gè)鋰聚合物電池和充電器。它可以很容易地適應(yīng)任何類型的面板和充電器,您只需要調(diào)整電阻分壓器等等!
請(qǐng)注意,該項(xiàng)目不是太陽能數(shù)據(jù)記錄器。您確實(shí)需要使用電池為它供電,這僅用于分析面板!
零件列表
Arduino,外殼和顯示器:
Adafruit Metro 328P(與Arduino Uno兼容)
Arduino的外殼
16x2 LCD
0.1“接頭和電位計(jì)與LCD配套使用,如果您從Adafruit商店購買,則包括在內(nèi)
數(shù)據(jù)記錄屏蔽或原型屏蔽(在本教程中我們實(shí)際上并未進(jìn)行任何數(shù)據(jù)記錄,因此,如果您只想查看而不跟蹤,則原型屏蔽就可以了。)
高級(jí)母跳線(您也可以只需使用普通線,但我們希望能夠輕松拆卸LCD。)
模擬電子設(shè)備!
3 x 10K電阻器
1 x 47K電阻
1 x 15K電阻
1 x 1.0K電阻
3 x 3.5mm接線端子
0.1 ohm(電流檢測)電阻器
8引腳DIP雙軌至軌輸入/輸出運(yùn)算放大器(TS922正常工作)
用于運(yùn)算放大器的8引腳DIP插座
3 x單聲道3.5毫米唱機(jī)插孔
3 x單聲道3.5毫米唱機(jī)插頭
然后,當(dāng)然是要記錄的東西。您可以替代其他類型的電池和充電器。
6V 1W太陽能電池板
Lipoly充電器
鋰聚合物電池
如果要將它帶到外面,則需要便攜式電源,我們喜歡AA的電源,但是如果不打算長時(shí)間使用,也可以使用9V。
6 x AA電池座
帶開關(guān)的9V座
9V電池夾
模擬物
有一些模擬的東西。最容易理解的兩個(gè)部分是由 R1 和 R2 和 R3 和 R4 制成的分壓器。 R1 和 R2 取6V太陽能電池板電壓并將其除以2(只需使R1 = R2),以使模擬轉(zhuǎn)換器的輸入低于3.3V。同樣, R3 和 R4 采用高達(dá)4.2V的限制電壓并將其除以3/5,以使其降至3.3V以下,因此我們可以跟蹤該電壓
更復(fù)雜的部分是用于測量電流消耗的運(yùn)算放大器。我們?cè)谔柲茈姵匕宓呢?fù)極線和地面之間插入一個(gè)0.1歐姆的電阻,這樣我們就可以通過測量跨過電阻的電流來測量流過電池板的電流。 1 A的電流變?yōu)?00mV(我們的面板的電流不能超過300mA,也就是30mV)。足夠低,不會(huì)影響太陽能電池板的充電能力。但是,30mV確實(shí)很低,這是我們期望的面板最大值。我們使用同相放大器將電壓放大到更大且更易于管理。特別是。該放大器將電壓乘以 1 + R6/R7 = 48x!這會(huì)將我們的30mV最大信號(hào)變?yōu)?.5V。我們不進(jìn)行更多放大的原因是,我希望能夠使用更大的面板,該面板可以提供500mA或更高的電流,因此會(huì)有一些裕量。
通常,我使用的電阻器在我的桌子上(0.1歐姆除外,這個(gè)值很重要),因此請(qǐng)隨時(shí)調(diào)整這些值。
如果我今天要構(gòu)建此項(xiàng)目,則應(yīng)使用合適的高端電流傳感器,例如精確的INA219,可以測量高壓,并且易于使用!
可悲的是,當(dāng)我最初設(shè)計(jì)此項(xiàng)目時(shí),它并不在手邊
現(xiàn)在可以使用烙鐵了!這實(shí)際上是最煩人的部分。如果您不需要數(shù)據(jù)記錄-僅需LCD反饋,則將其焊接到Protoshield上會(huì)感到更加高興,因?yàn)橛懈嗟目臻g。單擊圖片以放大照片。要進(jìn)行焊接,我們?cè)趯?dǎo)線上彎曲并在鉗夾之前仔細(xì)焊接在一起。有時(shí)很難遵循,所以要慢慢檢查每一步的工作。
請(qǐng)注意,我們將 ARef 綁定到3.3v以獲得更穩(wěn)定的模擬讀數(shù)-特別是在使用電池時(shí)動(dòng)力的便攜式記錄儀!
套管
我將從準(zhǔn)備案件開始。對(duì)于底部,將部件咬合起來以覆蓋兩個(gè)孔。
放置Arduino,使其與安裝孔對(duì)齊。
附加!使用兩個(gè)螺釘,第三個(gè)螺釘不合適,因?yàn)锳rduino鉆頭太小。
LCD
從包裝中取出LCD。您將需要某種10K電位器。我們將使用一些插頭和高級(jí)插座跳線,但您可以跳過該部分而僅焊接直接導(dǎo)線。
將標(biāo)頭焊接進(jìn)去,然后裁剪未使用的數(shù)據(jù)引腳以避免混淆。
將LED背光燈線連接到LCD邏輯電源線。
接地RW引腳(未使用)。
并除去該引腳以及引腳#1和#2(它們靠近安裝柱,因此我們將進(jìn)行連接而不是針腳#15和#16)。
將10K電位器連接到5V,引腳3和接地。
和固定銷3。
現(xiàn)在,我們有從左到右使用的8個(gè)引腳:接地,電源,D7至D4,RS和EN。連接套接字。
并剪裁
LCD連接和測試
從接通電源開始,紅色變?yōu)? 5V,黑色變?yōu)榻拥亍T贚CD教程中執(zhí)行測試以驗(yàn)證對(duì)比度電位計(jì)是否正常工作。
這樣連接其余電線:
EN→數(shù)字#2
RS→數(shù)字#3
D4→數(shù)字#4
D5→數(shù)字#5
D6→數(shù)字#6
D7→數(shù)字#7
然后嘗試通過上傳草圖將其顯示出來。即使它什么也不顯示,您也應(yīng)該使LCD正常工作。
下載:Project Zip 或 solartrack.ino | 在Github上查看
復(fù)制代碼
/*
Portable solar panel efficiency tracker. For testing out solar panels!
See https://learn.adafruit.com/portable-solar-charging-tracker for more information
Code is public domain, MIT License by Limor “Ladyada” Fried
*/
// include the library code:
#include
#include
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(2, 3, 4, 5, 6, 7 );
#define aref_voltage 3.3 // we tie 3.3V to ARef and measure it with a multimeter!
int lipoPin = 3; // the battery
float lipoMult = 1.666; // how much to multiply to get the original voltage
int PVPin = 2; // the cell
float PVMult = 2; // how much to multiply to get the original voltage
int currentPin = 1;
float currentMult = 208; // how much to multiply to get the original current draw
void setup(void) {
// We‘ll send debugging information via the Serial monitor
Serial.begin(9600);
// set up the LCD’s number of rows and columns:
lcd.begin(16, 2);
lcd.clear();
// Print a message to the LCD.
lcd.print(“Solar logger”);
delay(2000);
lcd.clear();
// If you want to set the aref to something other than 5v
analogReference(EXTERNAL);
byte delta[8] = {
B00000,
B00100,
B00100,
B01010,
B01010,
B10001,
B11111,
B00000
};
lcd.createChar(0, delta);
}
void loop(void) {
adcreading = analogRead(lipoPin);
Serial.println(adcreading);
float lipoV = adcreading;
lipoV *= aref_voltage;
lipoV /= 1024;
lipoV *= lipoMult;
lcd.clear();
Serial.print(“LiPo voltage = ”);
Serial.println(lipoV); // the raw analog reading
lcd.setCursor(0, 0);
lcd.print(“LiPo=”);
lcd.print(lipoV);
lcd.print(‘ ’);
lcd.write((uint8_t)0);
adcreading = analogRead(PVPin);
float PVV = adcreading;
PVV *= aref_voltage;
PVV /= 1024;
PVV *= PVMult;
lcd.print((int)((PVV-lipoV) * 1000), DEC); // in mV
lcd.print(“mV”);
Serial.print(“PV voltage = ”);
Serial.println(PVV); // the raw analog reading
lcd.setCursor(0, 1);
lcd.print(“PV=”);
lcd.print(PVV);
adcreading = analogRead(currentPin);
float currentI = adcreading;
currentI *= aref_voltage;
currentI /= 1024;
currentI *= currentMult;
Serial.print(“Current (mA) = ”);
Serial.println(currentI); // the raw analog reading
lcd.print(“ I=”);
lcd.print((int)currentI);
lcd.print(“mA”);
delay(1000);
}
/*
Portable solar panel efficiency tracker. For testing out solar panels!
See https://learn.adafruit.com/portable-solar-charging-tracker for more information
Code is public domain, MIT License by Limor “Ladyada” Fried
*/
// include the library code:
#include
#include
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(2, 3, 4, 5, 6, 7 );
#define aref_voltage 3.3 // we tie 3.3V to ARef and measure it with a multimeter!
int lipoPin = 3; // the battery
float lipoMult = 1.666; // how much to multiply to get the original voltage
int PVPin = 2; // the cell
float PVMult = 2; // how much to multiply to get the original voltage
int currentPin = 1;
float currentMult = 208; // how much to multiply to get the original current draw
void setup(void) {
// We‘ll send debugging information via the Serial monitor
Serial.begin(9600);
// set up the LCD’s number of rows and columns:
lcd.begin(16, 2);
lcd.clear();
// Print a message to the LCD.
lcd.print(“Solar logger”);
delay(2000);
lcd.clear();
// If you want to set the aref to something other than 5v
analogReference(EXTERNAL);
byte delta[8] = {
B00000,
B00100,
B00100,
B01010,
B01010,
B10001,
B11111,
B00000
};
lcd.createChar(0, delta);
}
void loop(void) {
int adcreading;
adcreading = analogRead(lipoPin);
Serial.println(adcreading);
float lipoV = adcreading;
lipoV *= aref_voltage;
lipoV /= 1024;
lipoV *= lipoMult;
lcd.clear();
Serial.print(“LiPo voltage = ”);
Serial.println(lipoV); // the raw analog reading
lcd.setCursor(0, 0);
lcd.print(“LiPo=”);
lcd.print(lipoV);
lcd.print(‘ ’);
lcd.write((uint8_t)0);
adcreading = analogRead(PVPin);
float PVV = adcreading;
PVV *= aref_voltage;
PVV /= 1024;
PVV *= PVMult;
lcd.print((int)((PVV-lipoV) * 1000), DEC); // in mV
lcd.print(“mV”);
Serial.print(“PV voltage = ”);
Serial.println(PVV); // the raw analog reading
lcd.setCursor(0, 1);
lcd.print(“PV=”);
lcd.print(PVV);
adcreading = analogRead(currentPin);
float currentI = adcreading;
currentI *= aref_voltage;
currentI /= 1024;
currentI *= currentMult;
Serial.print(“Current (mA) = ”);
Serial.println(currentI); // the raw analog reading
lcd.print(“ I=”);
lcd.print((int)currentI);
lcd.print(“mA”);
delay(1000);
}
現(xiàn)在可以連接外部面板和電池等。接線端子還可以,但不是很優(yōu)雅。相反,我將使用可插拔連接器。音頻連接器在這里可以很好地工作,每個(gè)連接只需要2個(gè)引腳(接地和信號(hào)),因此3.5毫米單聲道耳機(jī)插頭和插孔是一種廉價(jià)且易于獲得的解決方案。一定要獲得面板安裝插孔!
從連接充電器輸出的JST電纜開始(以測量脂質(zhì))。松開插頭,穿過電線,然后將每個(gè)引腳焊接到壓接處。通常,您應(yīng)始終使“套管”或“環(huán)”接地,并向“尖端”發(fā)出正信號(hào)。保持事物易于跟蹤!
壓接,確保不使電線短路。這可能有點(diǎn)挑戰(zhàn),因此請(qǐng)使用萬用表進(jìn)行測試!
下一步,剝?nèi)iniB usb電纜,并拔出紅色和黑色電線。我們還使用一些熱縮來保護(hù)電纜的末端。
壓接
熱縮!
接下來是千斤頂。如圖所示,將任何絞合線連接到套管和末端連接。
我們喜歡熱收縮!
將插孔連接到端子塊。
在完成所有步驟之前,現(xiàn)在是測試的好時(shí)機(jī)!確認(rèn)從面板和鋰聚合物電池獲得了合理的電壓。如果您可以靠近窗戶,請(qǐng)查看是否可以給電池充電。
完成
當(dāng)然,我們希望將面板安裝插孔安裝在面板上。抓住盒子的末端。它是由ABS制成的。
意味著它們非常容易鉆孔或加工!
我們有一個(gè)標(biāo)簽制造商,所以我們做了漂亮的小標(biāo)簽!
另一個(gè)一側(cè)獲得了覆蓋Arduino電源和編程插槽的預(yù)切盒。
準(zhǔn)備出發(fā)!在這里,我展示了如何通過連接鱷魚皮來嘗試不同的面板。脂質(zhì)輸入來自充電器上的直通連接。當(dāng)面板為電池充電時(shí),我可以跟蹤電壓和電流。
責(zé)任編輯:wv
-
太陽能
+關(guān)注
關(guān)注
37文章
3420瀏覽量
114334 -
追蹤器
+關(guān)注
關(guān)注
0文章
171瀏覽量
25729
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論