• 1
  • 2
Най - вълнуващия въпрос зимно време.
naughty - специалист
Мониторинг на ел. консумация и други параметри като температура, дебит на течност, влажност, осветеност, присъствие и т.н, както и управление на електрически уреди посредством релета

Нека споделя малко опит в изграждането на система за любителски домашен енергиен мониторинг на термопомпа и следене на няколко основни температури. Концепцията може да се използва за мониторинг и последващ анализ на каквото и да е – например отоплителна система с котел/камина, дебит на течност, мониторинг на хладилни витрини, на климат (вятър, температура, влажност,налягане, осветеност) на фотоволатични системи, запис на GPS позиция , предаване данни по GPRS, акселометри, компаси, връткане на серво-та, управление на релета и каквото друго ви хрумне. В Интернет има примери за любителски мониторинг дори на сеизмични движения с отлична прецизност.

За изграждането на подобна система са необходими минимални познания по електроника и известни познания по програмиране. Не съм професионалист по хардуера и даже ме беше доста некомфортно да запоявам, но ето че се справих и сега ми изглежда смешно лесно. С една дума – не се шашкайте: не е толкова сложно, колкото се струва на пръв прочит.

За една такава системка дебнеща консумация и температури ще са необходими следните компоненти:

Хардуер:
NaNode – микроконтролер на базата нс Arduino с мрежови възможнсти
Захранване за Nanode

5V FTDI кабел за програмиране на Nanode

CT (current transformer) – не знам как се превежда на български - ампер клещи
Температурни сензори (цифрови или аналогови)

Софтуер:
Arduino Software IDE – за програмиране на Nanode, JeeNode

Програма за NaNode - пишете сами в зависимост от нуждите, примерни готови програми има безброй. По долу ще дам връзки към няколко основни примера.

Уеб базиран софт за съхранение и визуализация на данни, например pachube.com, emoncms, и др. Лично мен не ме кефи нито един от изброените и съм написал свой собствен. Детайли има по-нататък.


В зависимост от желанието, може да се направят и следните компоненти:

LCD екран за визуализация на някои параметри на живо
Отдалечени модули за събиране и препращане на данни от сензори към Nanode , на базата на JeeNode или EmonTx
Релейни платки към Nanode или JeeNode за управление на електроуреди
SD карта за събиране на данните при отсъствие на мрежова връзка

Системата работи по следният начин:

Nanode служи за събиране и изпращане на данните към външен сървър, сериен порт, LCD екран и т.н. според това каква програма му заредите. Nanode може да изпълнява функции на прост web-сървър и да визуализира текущи параметри и данни от сензорите на системата, да бъде конфигуриран и да управлява релета през HTTP странички

Nanode получава данните по прикачените към него сензори ИЛИ отдалечени сензори по радио-комуникация (чрез Hope RF RFM12B + JeeNode, emonTx и др варианти)

Събраните данни могат да бъдат визуализирани и анализирани през уеб-интерфейс.

Описание на модулите

Nanode
Изображение

Net Applications Node (http://nanode.eu) – е Ардуино базирана платка с отворен код, която разполага с вградена уеб свързаност. Nanode разполага с шест аналогови канала и шест цифрови линии. Струва около 55лв с доставка до България. Идва в кит вариант и трябва да го сглобите сами.

Ако не ви се занимава с запояване и чакане, може да позвате и друга алтернатива:
http://www.robotev.com/product_info.php ... cts_id=294

Предимството на втория вариант е и наличието на SD card слот - ще може да записвате данни направо на карта и после да ги анализирате например в ексел.
Друго предимство е наличието на повече софт за чипсета W5100 , например NTP за мрежово време, SNMP за феновете на програмата на jacket и т.н.

Nanode може да се закупи от тук:
http://nanode.eu/buy

Инструкции за сглобяване тук:
http://wiki.london.hackspace.org.uk/vie ... g_a_Nanode

Ако ще използвате отдалечени радио сензори, внимавайте с инструкцията, има малки детайли, които са ясно описани.

Захранване за Nanode може да закупите от всеки магазин за електроника, USB тип B (квадратните, за принтер)


FTDI кабел
За програмирането на Nanode ще ви трябва FTDI кабел 5V. Купих моя от Ebay, струват около 20-тина лева. Ако някой има стар кабел за данни от Nokia, може да го преправи както е описано тук: http://www.arduino.cc/cgi-bin/yabb2/YaB ... 1261313468


CT (current transformer) – не знам как се превежда на български – сигурно ще е нещо като трансдюсер или сензор за ток. Може да си изберете съвместим сензор от тук:

http://openenergymonitor.org/emon/node/156

Сензори лично аз купувам от smartgreenshop.co.uk , но да знаете, че доставката е безобразно бавна.

Изберете сензор 30 или 100А в зависимост от нуждите ви, efergy сензорите са най-тествани с моята система но и SCT-013-030 или SCT-013-000 са съвместими.

Схемата за свързване на сензорите е следната:

Изображение

Като избора стойностите на съпротивленията и кондензатора са съобразени със сензора на ток и максималните възможни отчитания. Четете тук

http://openenergymonitor.org/emon/node/59

и

Смятане резистор
http://tyler.anairo.com/?id=5.3.0


ако ще се вманиачавате и искате отчитане и на напрежението (вместо да го фиксирате на 220в) ще ви трябва и AC-AC трансформаторче, свързването към Nanode става така:

Изображение


Температурни сензори (цифрови или аналогови)

За избор на температурни датчици съм се спрял на цифровите TCN75A от тук:
http://www.robotev.com/product_info.php ... cts_id=176

Тези сензори работят на I2C шина и мога да закача 8 сензора като използвам само два пина от Nanode. Към същата шина може да закачите и сензори за влажност пак на I2C протокола и така да не хабите излишно пинове.

Друг много популярен модел цифрови температурни сензори е D18B20, силно ги препоръчвам.

Ако все пак държите на старомодните аналогови термистори, закачат се така:

Изображение

Как да четете стойности е описано тук:
http://www.arduino.cc/playground/Compon ... hermistor2



От софтуерната страна ще е необходимо:

Свалете си Arduino Software IDE – от http://arduino.cc

Програма за NaNode - пишете сами в зависимост от нуждите

Ето тук има около тон примерни програми, ще помагам и аз с каквото мога
http://openenergymonitor.org/emon/node/227


Примерче за отчитане температури и консумация към emoncmsL

http://dl.dropbox.com/u/18771283/HomeMonitorV4.zip


Ппример за отчитане на консумацията (при напрежение като параметър а не измервано)

Код: Избери всички


/*

 
//--------------------------------------------------------------------------------------
//Single CT wireless node example 

// By Glyn Hudson and Trystan Lea: 7/7/11
// openenergymonitor.org
// GNU GPL V3

//--------------------------------------------------------------------------------------
*/

#include <avr/eeprom.h>
#include <util/crc16.h>  //cyclic redundancy check


//--------------------------------------------------------------------------------------------------
// CT energy monitor setup definitions 
//--------------------------------------------------------------------------------------------------
int CT_INPUT_PIN =          1;    //I/O analogue 3 = emonTx CT2 channel. Change to analogue 0 for emonTx CT1 chnnel  
int NUMBER_OF_SAMPLES =     1480; //The period (one wavelength) of mains 50Hz is 20ms. Each samples was measured to take 0.188ms. This meas that 106.4 samples/wavelength are possible. 1480 samples takes 280.14ms which is 14 wavelengths. 
int RMS_VOLTAGE =           220;  //Assumed supply voltage (230V in UK).  Tolerance: +10%-6%
int CT_BURDEN_RESISTOR =    24;   //value in ohms of burden resistor R3 and R6
int CT_TURNS =              1500; //number of turns in CT sensor. 1500 is the vaue of the efergy CT 

double CAL = 1.295/2;          //*calibration coefficient* IMPORTANT - each monitor must be calibrated for maximum accuracy. See step 4 http://openenergymonitor.org/emon/node/58. Set to 1.295 for Seedstudio 100A current output CT (included in emonTx V2.0 kit)
//--------------------------------------------------------------------------------------------------

//########################################################################################################################
//Data Structure to be received 
//######################################################################################################################## 
typedef struct {
  	  int ct1;		// current transformer 1
	  int supplyV;		// emontx voltage
} Payload;
Payload emontx;
//########################################################################################################################



//********************************************************************
//SETUP
//********************************************************************
void setup() {
  Serial.begin(9600);
 

}

//********************************************************************
//LOOP
//********************************************************************
void loop() {
    
    //--------------------------------------------------------------------------------------------------
    // 1. Read current supply voltage and get current CT energy monitoring reading 
    //--------------------------------------------------------------------------------------------------
          emontx.supplyV = readVcc();  //read emontx supply voltage
          emontx.ct1=int(emon( CT_INPUT_PIN, CAL, RMS_VOLTAGE, NUMBER_OF_SAMPLES, CT_BURDEN_RESISTOR, CT_TURNS, emontx.supplyV));
    //--------------------------------------------------------------------------------------------------
    
  
  //for debugging 
  Serial.println(emontx.ct1); 
  delay(10);                     // Needed to make sure print is finished before going to sleep

   
}
//********************************************************************


//--------------------------------------------------------------------------------------------------
// Read current emonTx battery voltage - not main supplyV!
//--------------------------------------------------------------------------------------------------
long readVcc() {
  long result;
  // Read 1.1V reference against AVcc
  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  delay(2); // Wait for Vref to settle
  ADCSRA |= _BV(ADSC); // Convert
  while (bit_is_set(ADCSRA,ADSC));
  result = ADCL;
  result |= ADCH<<8;
  result = 1126400L / result; // Back-calculate AVcc in mV
  return result;
}
//--------------------------------------------------------------------------------------------------



int lastSampleI,sampleI;         // Sample variables
double lastFilteredI,filteredI;  // Filter variables
double sqI,sumI;                 // Power calculation variables
 
double emon(int CT_INPUT_PIN,double ICAL,int RMS_VOLTAGE,int NUMBER_OF_SAMPLES,int CT_BURDEN_RESISTOR,int CT_TURNS,int SUPPLY_VOLTAGE) 
{ 
  for (int n = 0; n < NUMBER_OF_SAMPLES; n++)
  {
    lastSampleI = sampleI;
    sampleI = analogRead( CT_INPUT_PIN );
    lastFilteredI = filteredI;
    filteredI = 0.996*(lastFilteredI+sampleI-lastSampleI);

    // Root-mean-square method current
    // 1) square current values
    sqI = filteredI * filteredI;
    // 2) sum 
    sumI += sqI;
  }
  double I_RATIO = (( CT_TURNS / CT_BURDEN_RESISTOR ) * (SUPPLY_VOLTAGE/1000.0)) / 1024.0;    // Rough calibration by component values
  I_RATIO = I_RATIO * ICAL;                                                                   // Fine adjustment calibration for accuracy
  
  double Irms = I_RATIO * sqrt(sumI / NUMBER_OF_SAMPLES);                                     // Final step in calculation of RMS CURRENT
  sumI = 0;                                                                                   // Reset sum ready for next run.
  
  double apparentPower = RMS_VOLTAGE * Irms;                                                  // Apparent power calculation
  return apparentPower;
}


Уеб базиран софт за съхранение и визуализация на данни, например pachube.com, emoncms, и др. Лично мен не ме кефи нито един от изброените и съм написал свой собствен с който визуализирам данните за произволен период с произволна резолюция. Мога да позволя на 4-5 от вас да го позват от моя сървър за тестове. За сега няма да споделям кода, трудно ми е да се разделя с него след 1 година кръпки :)

Екран от моята система:
Изображение



Моята система има закачен I2C LCD екран на който извеждам разни параметри, ккто и 8 релета за управление на термопомпата ми. В допълнение имам и отдалечен сензор за консумирантата енергия от цялата къща (не само термопомпата).

Основен модул
Изображение

Отдалеченият модул (в ел таблото на къщата. предава показанията безжично до другия модул)
Изображение
Изображение



и малко теория като за последно:

http://openenergymonitor.org/emon/node/61
kabel96 - специалист
Доста си се потрудил за което мога само да те поздравя.Проекта е доста интересен и има бъдеще.Как мога да разгледам браузера ти.Има ли възможност да се следят и управляват няколко устройства едновременно.продължава ли работата и при изключен компютър. I2c шината е лесна но при мои проби не държи на по дълги кабели а и от време на време забива.
Тани - модератор
И аз благодаря за търпението да обясниш всичко и те поздравявам за изпълнението на новаторската идея . Това е бъдещето на всеки дом!
naughty - специалист
kabel96 написа:
Как мога да разгледам браузера ти.
По едно време бях пуснал достъп всички да гледат и се започнаха въпроси от сорта на 'защо се къпеш в 12' и т.н. и спрях достъпа :)
kabel96 написа:
Има ли възможност да се следят и управляват няколко устройства едновременно.
Да, докато изчерпаш входовете на контролера. Има и мултиплексори и всъщност може доста устройства да се дебнат. аз имам закачена I2C релейна платка с 8 релета, може да се закачат и още.
kabel96 написа:
продължава ли работата и при изключен компютър.
Тук компютър не ти трябва освен за програмиране на контролера. Събираните данни пращаш през интернет на сървър, който да ги съхранява и евентуално визуализира. Ако сървъра ти е вкъщи - ще трябва да е пуснат. Ако не - ще трябва да закачиш SD карта и да записваш данните на нея за напълно автономен режим на работа.

ако ползваш PACHUBE.COM например компютър не ти трябва

kabel96 написа:
I2c шината е лесна но при мои проби не държи на по дълги кабели а и от време на време забива.
При мен най отдалечената група сензори е на ~4m, трябва да захраниш SDA и SCL с 5 волта по този начин, иначе се лигави:

Изображение

Нямам наблюдения да забива.

За по-голями разстояния ползвай безжичния JeeNode например http://jeelabs.com/products/jeenode
naughty - специалист
Подготвям шиелд за Ардуино с вход за CT сензор, 9V AC-AC трансформатор за измерване на напрежението, жак за 1 wire шина за 18B20 температурни сензори, жак за импулсни сензори (сензор за поток, свъзване към топломери, електромери и тем подобни с импулсен изход) и безжичен модул RFM12B за отдалечени сензори.

ето малко схеми
Изображение
Изображение

тези дни ще поръчам 4-5 бройки. Това са ми първи стъпки в работата с EAGLE, дано всичко мине нормално :)
naughty - специалист
Ето едно примерче за измерване на ток, напрежение и косинус фи (power factor) и изчислена мощност.

Изображение
Изображение
Изображение
kuuuuuul - майстор
Попаднах на това http://www.ebay.com/itm/ws/eBayISAPI.dl ... 1231895250 може ли да ни върши някаква работа?
naughty - специалист
kuuuuuul написа:
Попаднах на това http://www.ebay.com/itm/ws/eBayISAPI.dl ... 1231895250 може ли да ни върши някаква работа?
какво искаш да направиш с него? Общо взето купешките работи са малко скучни.

аз доста напреднах от последните ми постинги тук, в момента сам си правя Ардуино клониги

ето един с радио модул и само 2 на 2 сантиметра:
Изображение
  • 1
  • 2

Тема "Мониторинг на ел. консумация и други параметри" | Включи се в дискусията:


Сподели форума:

Бъди информиран. Следвай "Направи сам" във Facebook:

Намери изпълнител и вдъхновения за дома. Следвай MaistorPlus във Facebook: