Мазмұны:

ARDUINO ENERGY METER: 10 қадам (суреттермен)
ARDUINO ENERGY METER: 10 қадам (суреттермен)

Бейне: ARDUINO ENERGY METER: 10 қадам (суреттермен)

Бейне: ARDUINO ENERGY METER: 10 қадам (суреттермен)
Бейне: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Шілде
Anonim
Image
Image
ARDUINO ENERGY METER
ARDUINO ENERGY METER
ARDUINO ENERGY METER
ARDUINO ENERGY METER

[Бейнені ойнату]

Мен Үндістанның Одиша ауылындамын, онда электр қуатын жиі өшіру жиі кездеседі. Ол әркімнің өміріне кедергі келтіреді. Бала кезімде ымырт түскеннен кейін оқуды жалғастыру өте қиын болды. Осы мәселеге байланысты мен өз үйіме эксперименттік негізде күн жүйесін жасадым. Мен бірнеше жарық диодты жарықтандыру үшін 10 Вт, 6 В күн батареясын қолдандым. Көптеген қиыншылықтардан кейін жоба сәтті болды. Содан кейін мен жүйеге кернеуді, токты, қуат пен энергияны бақылауды шештім. Бұл ARDUINO -ды осы жобаның жүрегі ретінде қолданатын ENERGY METER идеясын әкелді, себебі оның IDE -де кодты жазу өте оңай және Интернетте сәйкес келетін көптеген ашық бастапқы кітапханалар бар. Мен жобаны өте шағын номиналды (10 Вт) күн жүйесі бойынша тәжірибеден өткіздім, бірақ оны жоғары рейтингтік жүйе үшін пайдалану үшін оңай өзгертуге болады.

Сіз менің барлық жобаларымды мына жерден таба аласыз:

Ерекшелігі: 1. LCD дисплейі арқылы энергия мониторингі 2. интернет арқылы (Xively upload) 3. SD картасында деректерді тіркеу

Сіз менің жаңа нұсқаулық ARDUINO MPPT SOLAR CHARGE CONTROLLER-ды көре аласыз (3.0-нұсқа)

Сіз менің басқа да нұсқауларымды көре аласыз

ARDUINO SOLAR CHARGE CONTROLLER (2.0 нұсқасы)

ARDUINO SOLAR CHARGE CONTROLLER (1-нұсқа)

1 -қадам: Қажетті бөлшектер:

Қажетті бөлшектер
Қажетті бөлшектер

1. ARDUINO UNO (Amazon) 2. ARDUINO ETHERNET SHIELD (Amazon)

3. 16x2 СИПАТТЫ СКД (Amazon)

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

2 -қадам: Қуат пен энергия

Қуат: қуат - кернеудің (вольт) және токтың (ампер) P = VxI қуат бірлігі - Ватт немесе КВ Энергия: Энергия - қуаттың (ватт) және уақыттың (Сағат) туындысы E = Pxt Энергия бірлігі - Ватт сағат немесе киловатт Сағат (кВтсағ) Жоғарыда келтірілген формуладан Энергияны өлшеу үшін бізге үш параметр 1. Кернеу 2. Ток 3. Уақыт қажет екені түсінікті.

3 -қадам: кернеуді өлшеу

Кернеуді өлшеу
Кернеуді өлшеу
Кернеуді өлшеу
Кернеуді өлшеу
Кернеуді өлшеу
Кернеуді өлшеу

Кернеу бөлу тізбегінің көмегімен өлшенеді. ARDUINO аналогты түйіспелі кіріс кернеуі 5 В -қа дейін шектелгендіктен, кернеу бөлгішті шығыс кернеуі 5 В -тан төмен болатындай етіп жасадым. күн батареясының қуаты 6В, 5.5Ач, сондықтан 5В төмен кернеуге дейін 6.5В төмендетуім керек. Мен 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,25 в және сериялық монитордан үлгі 1 = 696 алдым, онда үлгі 1 ADC мәні 3,25 в сәйкес келеді Жақсырақ түсіну үшін мен кернеуді өлшеуге арналған 123D схемасы бойынша нақты уақыт модельдеуін тіркедім: 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 датчигінің әр түрлі диапазоны бар, сондықтан сіздің сұранысыңызға сәйкес таңдаңыз. Нан тақтасының диаграммасында мен жарық диодты жүктеме ретінде көрсеттім, бірақ нақты жүктеме басқаша. ЖҰМЫС ПРИНЦИПІ: Холл эффектісі - өткізгіштегі электр тогына көлденең электр өткізгіштің кернеу айырмасының (Холл кернеуі) пайда болуы. токқа перпендикуляр магнит өрісі. Hall Effect сенсоры туралы толығырақ білу үшін мына жерді басыңыз ACS 712 датчигінің деректер парағы мына жерден табылған. Деректер парағынан 1. ACS 712 100мВ/А аналогтық шығысқа сәйкес келетін 20Ам оң және теріс өлшейді. 2. Шығу кернеуі арқылы сынақ тогы болмайды. VCC/2 = 5v/2 = 2.5V Калибрлеу: Аналогты оқу 0v-ден 5v-ге тең 0-1023 мәнін шығарады, сондықтан аналогты оқу 1 = (5/1024) V = 4.89мв мәні = (4.89*аналогты оқу мәні)/ 1000 В Бірақ деректер парақтарына сәйкес офсеттік 2,5В (ток нөл болғанда сенсордың шығысынан 2,5В аласыз) Нақты мән = (мән-2,5) В Ампердегі ток = нақты мән*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,5в ампер = нақты мән*10;

5 -қадам: Уақытты өлшеу

Уақытты өлшеу үшін сыртқы жабдық қажет емес, өйткені ARDUINO -да кіріктірілген таймер бар. Millis () функциясы Arduino тақтасы ағымдағы бағдарламаны іске қосқаннан бері миллисекундтардың санын қайтарады. ARDUINO CODE: long milisec = millis (); // уақытты миллисекундпен есептеңіз ұзақ уақыт = милисек/1000; // миллисекундтарды секундқа түрлендіру

6 -қадам: ARDUINO қуат пен энергияны қалай есептейді

totamps = totamps+amper; // жалпы амперлердің авгамптарын есептеңіз = totamps/time; // орташа ампер amphr = (avgamps*time)/3600; // амп-сағат ватт = кернеу*ампер; // қуат = кернеу*ток энергиясы = (ватт*уақыт)/3600; Ватт-сек тағы 1 сағатқа (3600сек) // энергия = (ватт*уақыт)/(1000*3600) бөлу арқылы Watt-Hr-ге айналады; кВт / сағ оқуға арналған

7 -қадам: визуалды шығыс

Көрнекі шығыс
Көрнекі шығыс

Барлық нәтижелерді сериялық мониторда немесе СКД көмегімен көруге болады. Алдыңғы қадамдарда алынған барлық нәтижелерді көрсету үшін мен 16x2 таңбалы СК қолдандым. Схемалар үшін жоғарыда көрсетілген нан тақтасының схемасын қараңыз. LCD -ді ARDUINO -мен төмендегідей қосыңыз: СКД -> Arduino 1. VSS -> Arduino GND 2. VDD - > Arduino + 5v 3. VO -> Arduino GND + резисторы немесе потенциометр 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 түйрегіші 5 12. D5 -> Arduino түйрегіші 4. 13. D6 -> Arduino түйрегіші 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 («Вольт»); Serial.print («CURRENT:»); Сериялық баспа (күшейткіш); Serial.println («күшейткіштер»); Serial.print («ҚУАТ:»); Сериялық баспа (ватт); Serial.println («Ватт»); Serial.print («ENERGY CONSUMED:»); Сериялық баспа (энергия); Serial.println («Ватт-сағат»); Serial.println («»); // бос жол кідірісінен кейін келесі параметрлер жиынтығын басып шығару (2000); СКД үшін: СКД дисплейі үшін алдымен кодқа «LiquidCrystal» кітапханасын импорттау керек. LequidCrystal кітапханасы туралы толығырақ білу үшін мына жерді басыңыз СКД оқулығын басу үшін мына жерді басыңыз. Келесі код СКД -де барлық қуат пен энергияға #include lcd (8, 7, 6, 5, 4, 3, 2) есептеулерін көрсету үшін формат болып табылады; int backLight = 9; void setup () {pinMode (backLight, OUTPUT); // pin 9 шығыс analogWrite ретінде орнатыңыз (backLight, 150); // артқы жарық қарқындылығын басқарады 0-254 lcd.begin (16, 2); // бағандар, жолдар. дисплей өлшемі lcd.clear (); // экранды тазарту} void loop () {lcd.setCursor (16, 1); // lcd.print («») дисплей санынан тыс курсорды орнатыңыз; // бос таңбаның кешігуін басып шығару (600); ///////////////////////////////////////////////////////////////////////////////////////////////////// ж. ////////////////////////////////////////////////////////////cl.setCursor (1, 0); // курсорды 1 -ші бағанаға және 1 -ші қатарға орнатыңыз lcd.print (ватт); lcd.print («W»); lcd.print (кернеу); lcd.print («V»); lcd.setCursor (1, 1); // курсорды 1 -ші бағанға және 2 -ші қатарға орнатыңыз lcd.print (энергия); lcd.print («WH»); lcd.print (күшейткіш); lcd.print («A»); }

8 -қадам: Xively.com сайтына деректерді жүктеу

Xively.com сайтына деректерді жүктеу
Xively.com сайтына деректерді жүктеу
Xively.com сайтына деректерді жүктеу
Xively.com сайтына деректерді жүктеу
Xively.com сайтына деректерді жүктеу
Xively.com сайтына деректерді жүктеу

Тұрақты тұру үшін жоғарыдағы скриншоттарды қараңыз. Xively.com сайтына деректерді жүктеу үшін келесі кітапхананы жүктеу үшін алдымен HttpClient: мына жерді басыңыз: мұнда басыңыз SPI: arduino IDE -ден импорттау (эскиз -> кітапхананы импорттау …..) Ethernet: arduino -дан импорттау IDE ((эскиз -> Кітапхананы импорттау …..) https://xively.com (бұрынғы pachube.com және cosm.com) сайтында тіркелгі ашыңыз https://xively.com сайтында ақысыз әзірлеуші тіркелгісіне тіркеліңіз.

Пайдаланушы атын, құпия сөзді таңдаңыз, мекен -жайыңызды және уақыт белдеуін орнатыңыз және т

содан кейін есептік жазбаны іске қосу үшін белсендіру сілтемесін басыңыз. Есептік жазбаны сәтті ашқаннан кейін сіз Development devices бетіне бағытталасыз

  • +Құрылғыны қосу жолағын нұқыңыз
  • Құрылғыңызға атау беріңіз және сипаттамасын беріңіз (мысалы, ЭНЕРГИЯ МОНИТОРИНГІ) ·
  • Жеке немесе ашық деректерді таңдаңыз (мен құпияны таңдаймын) ·
  • Құрылғы қосу түймесін басыңыз

Құрылғыны қосқаннан кейін сіз көптеген маңызды ақпарат бар жаңа бетке бағытталасыз

  • Өнім идентификаторы, өнімнің құпиясы, сериялық нөмірі, активтендіру коды ·
  • Feed ID, FeedURL, API соңғы нүктесі (Feed идентификаторы ARDUINO кодында қолданылады)
  • Арналарды қосыңыз (ENERGY and POWER таңдаңыз, бірақ сіз өз таңдауыңыз бойынша таңдай аласыз) Параметр үшін бірлік пен таңбаны беріңіз ·
  • Орныңызды қосыңыз ·
  • API кілттері (ARDUINO кодында қолданылады, бұл нөмірді бөліспеңіз)
  • Триггерлер (оқиға болған кезде, мысалы, энергия шығыны белгілі бір шектен асқанда)

9 -қадам: Xively және ARDUINO коды

Мұнда мен келесі қадамда бөлек бекітілген SD картасының деректерін тіркеуді қоспағанда, энергия есептегішінің толық кодын (бета нұсқасын) тіркедім. / ** Энергия мониторингі деректері xively -ге жүктеледі **/ #include #include #include #include #define API_KEY «xxxxxxxx» // Xively API кілтін енгізіңіз #FEED_ID xxxxxxxxxx белгілеңіз // Xively feed идентификаторын енгізіңіз // MAC мекен -жайыңыз үшін Ethernet shield байт mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Біз бақылайтын аналогтық түйреуіш (0 және 1 Ethernet қалқанымен қолданылады) int sensorPin = 2; қол қойылмаған long lastConnectionTime = 0; // соңғы рет біз Cosm const -ке қосылдық unsigned long connectionInterval = 15000; // миллисекундтарда Cosm -ға қосылу арасындағы кідіріс // Cosm кітапханасын инициализациялау // Біздің деректер ағыны ID char sensorId үшін жолды анықтаңыз = «POWER»; char sensorId2 = «ENERGY»; 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); // қуат мәні деректер ағымы [1].setFloat (сенсор2); // энергия мәні 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 («GET қайтару коды:»); Serial.println (ret); if (ret> 0) {Serial.print («Datastream is:»); Serial.println (арна [0]); Serial.print («Қуат мәні:»); Serial.println (feed [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 -да жады жеткіліксіз. СКД дисплейі үшін код жазу және xively.com деректерін жүктеу. Бірақ мен бета нұсқаның кодын жақсартуға тырысамын, осылайша бір код барлық мүмкіндіктерді қамтуы мүмкін (СКД дисплейі, Xively деректерді жүктеу және SD картасында деректерді сақтау). Деректерді тіркеу коды төменде бекітілген. Менің кодты өзгерту арқылы жақсы кодты менімен бөлісіңіз. Бұл менің бірінші техникалық нұсқауым, егер біреу қате тапса, мен өзімді жетілдіре аламын деп түсініктеме беріңіз. Егер сіз осы жобаның жетілдіру бағыттарын тапсаңыз, түсініктеме беріңіз. немесе маған хабарлаңыз, сондықтан жоба күштірек болады. Менің ойымша, бұл басқаларға да, маған да пайдалы болады.

123D тізбектер сайысы
123D тізбектер сайысы
123D тізбектер сайысы
123D тізбектер сайысы

123D схемалар байқауының үшінші жүлдесі

Ұсынылған: