Агуулгын хүснэгт:

ARDUINO ENERGY METER: 10 алхам (зурагтай)
ARDUINO ENERGY METER: 10 алхам (зурагтай)

Видео: ARDUINO ENERGY METER: 10 алхам (зурагтай)

Видео: ARDUINO ENERGY METER: 10 алхам (зурагтай)
Видео: Автомобильный генератор для генератора с самовозбуждением с использованием ДИОДА 2024, Долдугаар сарын
Anonim
Image
Image
ARDUINO ENERGY METER
ARDUINO ENERGY METER
ARDUINO ENERGY METER
ARDUINO ENERGY METER

[Видео тоглуулах]

Би Энэтхэгийн Одиша тосгонд харьяалагддаг бөгөөд тэнд цахилгаан тасрах нь элбэг байдаг. Энэ нь хүн бүрийн амьдралд саад болдог. Бага байхдаа үдшийн бүрий болсны дараа үргэлжлүүлэн суралцах нь үнэхээр хэцүү ажил байсан. Энэ асуудлын улмаас би гэртээ нарны системийг туршилтын үндсэн дээр зохион бүтээсэн. Би цөөн хэдэн тод LED гэрэлтүүлэхийн тулд 10 Вт, 6V нарны хавтан ашигласан. Маш их бэрхшээлтэй тулгарсны дараа төсөл амжилттай хэрэгжсэн. Дараа нь би системийн хүчдэл, гүйдэл, хүч, энергийг хянахаар шийдсэн. Энэ нь ЭРЧИМ ХҮЧНИЙ тоолуур зохион бүтээх санааг авчирсан бөгөөд IDE -д код бичих нь маш хялбар бөгөөд интернэтэд ашиглах боломжтой олон тооны нээлттэй эх номын сан байдаг тул би ARDUINO -г энэ төслийн зүрх болгон ашигласан. Шаардлагатай Би маш жижиг нэрлэсэн (10Watt) нарны системийн төслийг туршиж үзсэн боловч үүнийг өндөр зэрэглэлийн системд ашиглахад хялбархан өөрчилж болно.

Та миний бүх төслүүдийг https://www.opengreenenergy.com/ дээрээс олж болно.

Онцлог: 1. LCD дэлгэцээр эрчим хүчний хяналт 2. интернетээр дамжуулан (Xively байршуулах) 3. SD картанд мэдээлэл оруулах

Та миний шинэ зааварчилгаа бүхий ARDUINO MPPT SOLAR CHARGE CONTROLLER-ийг харж болно (Хувилбар-3.0)

Та бас миний бусад зааварчилгааг үзэх боломжтой

ARDUINO SOLAR CHARGE CONTROLLER (Хувилбар 2.0)

ARDUINO SOLAR CHARGE CONTROLLER (Хувилбар-1)

Алхам 1: Шаардлагатай эд ангиуд:

Шаардлагатай хэсгүүд
Шаардлагатай хэсгүүд

1. ARDUINO UNO (Амазон) 2. ARDUINO ETHERNET SHIELD (Амазон)

3. 16x2 CHARACTER LCD (Амазон)

4. ACS 712 CURRENT SENSOR (Amazon) 4. RESISTORS (10k, 330ohm) (Амазон) 5. 10K потенциометр (Амазон) 6. JUMPER WIRES (Амазон) 7. ETHERNET CABLE (Amazon) 8. Талхны талх (Амазон)

Алхам 2: Эрчим хүч ба энерги

Эрчим хүч: Эрчим хүч нь хүчдэл (вольт) ба гүйдлийн (Amp) бүтээгдэхүүн юм P = VxI Эрчим хүчний нэгж нь Ватт эсвэл КВт Эрчим хүч: Эрчим хүч нь хүч (ватт) ба цаг (Цаг) -ийн бүтээгдэхүүн юм E = Pxt Эрчим хүчний нэгж нь Ватт цаг эсвэл киловатт Цаг (кВтц) Дээрх томъёоноос харахад Эрчим хүчийг хэмжихийн тулд бидэнд гурван параметр 1. Хүчдэл 2. Гүйдэл 3. Хугацаа хэрэгтэй байна.

Алхам 3: Хүчдэлийн хэмжилт

Хүчдэлийн хэмжилт
Хүчдэлийн хэмжилт
Хүчдэлийн хэмжилт
Хүчдэлийн хэмжилт
Хүчдэлийн хэмжилт
Хүчдэлийн хэмжилт

Хүчдэлийг хүчдэл хуваагч хэлхээний тусламжтайгаар хэмждэг. ARDUINO аналог зүүний оролтын хүчдэл 5В -аар хязгаарлагддаг тул хүчдэл хуваагчийг гаралтын хүчдэл 5В -аас бага байхаар зохион бүтээсэн. нарны хавтангийн хүчийг 6v, 5.5Ah гэж үнэлдэг тул би энэ 6.5v -ийг 5V -аас бага хүчдэлд буулгах ёстой. Би R1 = 10k, R2 = 10K ашигласан. R1 ба R2 -ийн утга нь нэгээс доогуур байж болох ч асуудал бол эсэргүүцэл бага байх үед илүү өндөр гүйдэл дамжин өнгөрөх бөгөөд үүний үр дүнд их хэмжээний хүч (P = I^2R) дулаан хэлбэрээр тархдаг. Тиймээс эсэргүүцлийн өөр утгыг сонгож болох боловч эсэргүүцлийн дагуу цахилгаан алдагдлыг багасгахад анхаарах хэрэгтэй. Vout = R2/(R1+R2)*Vbat Vbat = 6.5 бүрэн цэнэглэгдсэн үед R1 = 10k ба R2 = 10k Vout = 10/(10+10)*6.5 = 3.25v бөгөөд энэ нь 5v -ээс бага бөгөөд ARDUINO аналог зүүнд тохиромжтой. 9 вольтын батерейг зөвхөн утас холбоход зориулагдсан болно. Гэхдээ миний ашигладаг батерей нь 6 вольт, 5.5Ач тугалганы хүчил юм. a Vout = 3.25v ба түүнээс бага зайны бусад хүчдэлийн утга. AEDUINO ADC аналог дохиог харгалзах дижитал ойролцоогоор хөрвүүлэх. Батерейны хүчдэл 6.5В байх үед хүчдэл хуваагчаас 3.25v хүчдэл авч, жишээ нь ADC утга нь 3.25 в -тэй нийцдэг. 3.25v 696 1 -тэй тэнцүү 3.25/696 = 4.669мв Vout = (4.669*дээж1)/1000 вольт Бодит батерейны хүчдэл = (2*Vout) вольт дараа нь цуглуулсан дээжийн өгөгдлийг дунджаар (int i = 0; i <150; i ++) {sample1 = sample1+analogRead (A2); // хуваах хэлхээний саатал (2) -аас хүчдэлийг уншина уу; } түүвэр1 = түүвэр1/150; хүчдэл = 4.669*2*дээж1/1000;

Алхам 4: Одоогийн хэмжилт

Одоогийн хэмжилт
Одоогийн хэмжилт
Одоогийн хэмжилт
Одоогийн хэмжилт

Одоогийн хэмжилт хийхийн тулд ACS 712 (20 A) Hall Effect гүйдлийн мэдрэгчийг ашигласан. Зах зээл дээр өөр өөр гүйдлийн хүрээний ACS712 мэдрэгч байдаг тул өөрийн хэрэгцээнд нийцүүлэн сонгоорой. Талхны тавцангийн диаграммд би LED -ийг ачаалал хэлбэрээр харуулсан боловч бодит ачаалал өөр байна. АЖИЛЛАХ ЗАРЧИМ: Хаалганы эффект нь цахилгаан дамжуулагчийн хооронд дамжуулагчийн цахилгаан гүйдэлд шилжих хүчдэлийн зөрүүг (танхимын хүчдэл) үйлдвэрлэх явдал юм. гүйдэлд перпендикуляр соронзон орон. Hall Effect мэдрэгчийн талаар илүү ихийг мэдэхийг хүсвэл энд дарна уу ACS 712 мэдрэгчийн өгөгдлийн хүснэгтийг эндээс авна уу Мэдээллийн хүснэгтээс 1. ACS 712 нь эерэг ба сөрөг 20Ам -ийг хэмждэг бөгөөд аналог гаралт 100мВ/А -тэй нийцдэг 2. Гаралтын хүчдэлээр туршилтын гүйдэл байхгүй байна. VCC/2 = 5v/2 = 2.5V Калибровк: Аналог унших нь 0v-ээс 5v-тэй тэнцэх 0-1023 утгыг гаргадаг. Тиймээс аналог 1 = (5/1024) V = 4.89mv Утга = (4.89*Аналог унших утга)/ 1000 В Гэхдээ мэдээллийн хуудасны хувьд офсет нь 2.5 В байна (Одоогийн тэг байх үед мэдрэгчийн гаралтаас 2.5 В авах болно) Бодит утга = (утга-2.5) V Амп дахь гүйдэл = бодит утга*10ARDUINO КОД: // 150 дээж авах 2 сек интервал бүхий мэдрэгч, дараа нь цуглуулсан дээжийн өгөгдлийг дунджаар (int i = 0; i <150; i ++) {sample2+= analogRead (A3); // мэдрэгчийн саатлаас гарсан гүйдлийг унших (2); } түүвэр2 = түүвэр2/150; val = (5.0*түүвэр2) /1024.0; actualval = val-2.5; // офсет хүчдэл 2.5v ампер = бодит утга*10;

Алхам 5: Цаг хэмжих

Хугацаа хэмжихийн тулд ARDUINO өөрөө суурилуулсан таймертай тул гадны тоног төхөөрөмж шаардлагагүй болно. Millis () функц нь Arduino самбар одоогийн програмыг ажиллуулж эхэлснээс хойш миллисекундын тоог буцаана. ARDUINO CODE: long milisec = millis (); // хугацааг миллисекундээр тооцоолох урт хугацаа = милисек/1000; // миллисекундийг секунд болгон хөрвүүлэх

Алхам 6: ARDUINO хүч ба энергийг хэрхэн тооцдог

totamps = totamps+amps; // нийт amps avgamps = totamps/time -ийг тооцоолох; // дундаж amps amphr = (avgamps*time)/3600; // амп-цаг ватт = хүчдэл*ампер; // хүч = хүчдэл*гүйдлийн энерги = (ватт*цаг)/3600; Ватт-секийг 1 цаг (3600сек) // энерги = (ватт*цаг)/(1000*3600) хувааж дахин Ватт-цаг болгон хөрвүүлнэ; кВтц -аар уншихад зориулагдсан

Алхам 7: Харааны гаралт

Харааны гаралт
Харааны гаралт

Бүх үр дүнг цуваа дэлгэц эсвэл LCD дэлгэцээр харж болно. Өмнөх алхамуудад авсан бүх үр дүнг харуулахын тулд би 16x2 тэмдэгт бүхий LCD дэлгэцийг ашигласан бөгөөд схемийн хувьд дээр дурдсан талхны хавтангийн хэлхээг харна уу. > Arduino + 5v 3. VO -> Arduino GND pin + Resistor or Potentiometer 4. RS -> Arduino pin 8 5. RW -> Arduino pin 7 6. E -> Arduino pin 6 7. D0 -> Arduino -Холбогдоогүй 8 D1 -> Arduino -Холбогдоогүй 9. D2 -> Arduino -Холбогдоогүй 10. D3 -> Arduino -Холбогдоогүй 11. D4 -> Arduino pin 5 12. D5 -> Arduino pin 4 13. D6 -> Arduino pin 3 14. D7 -> Arduino pin 2 15. A -> Arduino Pin 13 + Resistor (Backlight power) 16. K -> Arduino GND (Backlight ground) ARDUINO КОД: Цуваа дэлгэцийн хувьд:

Serial.print ("VOLTAGE:"); Цуваа.хэвлэх (хүчдэл); Serial.println ("Volt"); Serial.print ("CURRENT:"); Цуваа.хэв (өсгөгч); Serial.println ("Amps"); Serial.print ("POWER:"); Цуваа.хэвлэх (ватт); Serial.println ("Ватт"); Serial.print ("ENERGY CONSUMED:"); Цуврал хэвлэх (эрчим хүч); Serial.println ("Ватт-цаг"); Serial.println (""); // хоосон мөр хоцорсны дараа дараагийн параметрийн багцыг хэвлэх (2000); LCD дэлгэцийн хувьд: "LiquidCrystal" номын санг кодонд оруулах шаардлагатай. LequidCrystal номын сангийн талаар илүү ихийг мэдэхийг хүсвэл энд дарна уу LCD дэлгэцийн зааварчилгааг энд дарна уу Дараах код нь эрчим хүч, энергийн бүх тооцоог LCD дэлгэц дээр харуулах формат юм. int backLight = 9; void setup () {pinMode (backLight, OUTPUT); // зүү 9 -ийг гаралтын аналог болгон бичих (backLight, 150); // арын гэрэлтүүлгийн эрчмийг хянадаг 0-254 lcd.begin (16, 2); // багана, мөр. дэлгэцийн хэмжээ lcd.clear (); // дэлгэцийг цэвэрлэх} void loop () {lcd.setCursor (16, 1); // курсорыг дэлгэцийн тооноос гадуур тохируулах lcd.print (""); // хоосон тэмдэгтийн саатал (600) хэвлэх; /////////////////////////////////////////////////////// Хүчийг LCD дэлгэц дээр хэвлэх/ ///////////////////////////////////////////////////////////// lcd.setCursor (1, 0); // курсорыг 1 -р колон ба 1 -р эгнээ lcd.print (ватт) дээр тохируулна уу; lcd.print ("W"); lcd.хэвлэх (хүчдэл); lcd.print ("V"); lcd.setCursor (1, 1); // курсорыг 1 -р багана, 2 -р эгнээ lcd.print (энерги) дээр тохируулна уу; lcd.print ("WH"); lcd.хэв (өсгөгч); lcd.print ("A"); }

Алхам 8: Xively.com руу өгөгдөл байршуулах

Xively.com руу өгөгдөл байршуулж байна
Xively.com руу өгөгдөл байршуулж байна
Xively.com руу өгөгдөл байршуулж байна
Xively.com руу өгөгдөл байршуулж байна
Xively.com руу өгөгдөл байршуулж байна
Xively.com руу өгөгдөл байршуулж байна

Дээрх дэлгэцийн агшинг харахын тулд доорх номын санг xively.com руу байршуулахын тулд эхлээд HttpClient -ийг татаж авна уу: энд дарна уу Энд дарна уу IDE ((ноорог -> Номын санг импортлох …..) https://xively.com (урьд нь pachube.com ба cosm.com) ашиглан данс нээнэ үү. Хөгжүүлэгчийн үнэгүй данс руу https://xively.com хаягаар бүртгүүлнэ үү.

Хэрэглэгчийн нэр, нууц үгээ сонгож, хаяг, цагийн бүсээ тохируулна уу. Та баталгаажуулах имэйл хүлээн авах болно;

дараа нь дансаа идэвхжүүлэхийн тулд идэвхжүүлэх линк дээр дарна уу. Данс амжилттай нээгдсэний дараа та Хөгжлийн төхөөрөмжүүдийн хуудас руу шилжих болно

  • +Төхөөрөмж нэмэх хайрцаг дээр дарна уу
  • Төхөөрөмжийнхөө нэр, тодорхойлолтыг өгнө үү (жишээлбэл ЭРЧИМ ХҮЧНИЙ ХЯНАЛТ)
  • Хувийн эсвэл нийтийн өгөгдлийг сонгоно уу (би хувийн сонголтыг сонгоно) ·
  • Төхөөрөмж нэмэх дээр дарна уу

Төхөөрөмжийг нэмсний дараа та олон чухал мэдээлэл байгаа шинэ хуудас руу шилжих болно

  • Бүтээгдэхүүний ID, бүтээгдэхүүний нууц, серийн дугаар, идэвхжүүлэх код ·
  • Feed ID, FeedURL, API -ийн төгсгөлийн цэг (Feed ID -г ARDUINO кодод ашигладаг)
  • Суваг нэмэх (ENERGY and POWER -ийг сонгоно уу, гэхдээ та өөрийн үзэмжээр сонгож болно) Параметрийн нэгж ба тэмдэглэгээг өгнө үү.
  • Өөрийн байршлыг нэмэх ·
  • API түлхүүрүүд (ARDUINO кодыг ашигласан тул энэ дугаарыг хуваалцахаас зайлсхий).
  • Триггерүүд (эрчим хүчний хэрэглээ тодорхой хязгаараас хэтэрсэн гэх мэт үйл явдал тохиолдох үед ping aweb хуудас)

Алхам 9: Xively ба ARDUINO код

Энд би дараагийн алхамд тусад нь хавсаргасан SD картын өгөгдлийг бүртгэхээс бусад эрчим хүчний тоолуурын бүрэн кодыг (бета хувилбар) хавсаргав. / ** Эрчим хүчний хяналтын өгөгдлийг xively руу байршуулах **/ #include #include #include #include #define API_KEY "xxxxxxxx" // Xively API түлхүүрээ оруулна уу #FEED_ID -ийг тодорхойлох xxxxxxxxx // Xively тэжээлийн ID -аа оруулна уу. Ethernet shield байт mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Бидний ажиглаж буй аналог зүү (0 ба 1 -ийг Ethernet бамбай ашигладаг) int sensorPin = 2; гарын үсэг зураагүй long lastConnectionTime = 0; // хамгийн сүүлд бид Cosm const -тэй холбогдоогүй урт хугацааны холболтInterval = 15000; // миллосекундээр Cosm -т холбогдох хоорондох саатал // Cosm номын санг эхлүүлэх // Бидний өгөгдлийн урсгалын ID char sensorId = "POWER"; char sensorId2 = "ЭРЧИМ ХҮЧ"; XivelyDatastream өгөгдлийн урсгал = {XivelyDatastream (sensorId, strlen (sensorId), DATASTREAM_FLOAT), XivelyDatastream (sensorId2, strlen (sensorId2), DATASTREAM_FLOAT), DATASTREAM_FLOAT),}; // Өгөгдлийн дамжуулалтыг XivelyFeed тэжээлд оруулах (FEED_ID, өгөгдлийн урсгал, 2/ * өгөгдлийн дамжуулалтын тоо */); EthernetClient үйлчлүүлэгч; XivelyClient xivelyclient (үйлчлүүлэгч); void setup () {Serial.begin (9600); Serial.println ("Сүлжээг эхлүүлэх"); while (Ethernet.begin (mac)! = 1) {Serial.println ("IP хаягийг DHCP -р авахад алдаа гарсан, дахин оролдож байна …"); саатал (15000); } Serial.println ("Сүлжээг эхлүүлсэн"); Serial.println (); } void loop () {if (millis () - lastConnectionTime> connectionInterval) {sendData (); // өгөгдлийг xively getData () руу илгээх; // өгөгдлийн урсгалыг xively lastConnectionTime = millis () -ээс буцааж уншина уу; // холболтын хугацааг шинэчлэх тул бид дахин холбогдохын өмнө хүлээнэ үү}} void sendData () {int sensor1 = watt; int sensor2 = энерги; datastreams [0].setFloat (мэдрэгч1); // тэжээлийн утга datastreams [1].setFloat (sensor2); // эрчим хүчний үнэ цэнэ Serial.print ("Унших хүч"); Serial.println (өгөгдлийн урсгал [0].getFloat ()); Serial.print ("Эрчим хүчийг унших"); Serial.println (өгөгдлийн урсгал [1].getFloat ()); Serial.println ("Xively руу байршуулж байна"); int ret = xivelyclient.put (тэжээл, API_KEY); Serial.print ("PUT буцах код:"); Serial.println (ret); Serial.println (); } // өгөгдлийн дамжуулалтын утгыг xively -аас авах, бидний хүлээн авсан хүчингүй болсон утгыг хэвлэх getData () {Serial.println ("Xively -аас өгөгдлийг унших"); int ret = xivelyclient.get (тэжээл, API_KEY); Serial.print ("Буцах кодыг авах:"); Serial.println (ret); if (ret> 0) {Serial.print ("Datastream is:"); Serial.println (тэжээл [0]); Serial.print ("Эрчим хүчний утга нь:"); Serial.println (тэжээл [0].getFloat ()); Serial.print ("Datastream is:"); Serial.println (тэжээл [1]); Serial.print ("Эрчим хүчний утга нь:"); Serial.println (тэжээл [1].getFloat ()); } Serial.println ();

Алхам 10: SD картанд мэдээлэл оруулах

SD картанд өгөгдөл хадгалахын тулд та SD номын санг импортлох хэрэгтэй Энд дарна уу Сургалтын талаар энд дарна уу SD номын сангийн талаар илүү ихийг мэдэхийг хүсвэл энд дарна уу SD карт руу өгөгдөл хадгалах кодыг тусад нь бичсэн тул миний ARDUINO UNO -д хангалттай санах ой байхгүй байна. LCD дэлгэц, өгөгдөл байршуулах кодыг бичих xively.com. Гэхдээ би бета хувилбарын кодыг сайжруулахыг оролдож байгаа бөгөөд ингэснээр нэг код нь бүх функцийг (LCD дэлгэц, Xively өгөгдөл байршуулах, SD картанд хадгалах) агуулсан болно. Өгөгдөл бүртгэх кодыг доор хавсаргасан болно. Миний кодыг өөрчилснөөр илүү сайн кодыг надтай хуваалцана уу эсвэл надад мессеж бичээрэй, ингэснээр төсөл илүү хүчтэй байх болно, энэ нь бусдад болон надад тустай байх болно гэж бодож байна.

123D тойргийн тэмцээн
123D тойргийн тэмцээн
123D тойргийн тэмцээн
123D тойргийн тэмцээн

123D тойргийн уралдааны гурав дахь шагнал

Зөвлөмж болгож буй: