Направих показване на данните от термопомпата в интернет.
Използва се ардуино с етернет. Данните се изпращат през 1 минута на безплатния сървър
https://pachube.com/feeds/25242
Започнах да тествам и отчитане на получената топлинна енергия.
По-долу е текущия код за ардуиното.
Ако някой иска да го използва трябва да се заместят адресите на датчиците!
Също така трябва да си вкара и собствен ключ за pachube.
Използва се ардуино с етернет. Данните се изпращат през 1 минута на безплатния сървър
https://pachube.com/feeds/25242
Започнах да тествам и отчитане на получената топлинна енергия.
По-долу е текущия код за ардуиното.
Ако някой иска да го използва трябва да се заместят адресите на датчиците!
Също така трябва да си вкара и собствен ключ за pachube.
Код: Избери всички
#include <ERxPachube.h>
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <EEPROM.h>
#include "EEPROMAnything.h"
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x42, 0x3B }; //да не се повтаря с друг в локалната мрежа
byte ip[] = { 192,168,0, 82 }; //адрес за ардуиното
byte gateway[] = {192,168,0,1}; //адрес на рутера, ако се ползва
byte subnet[] = { 255, 255, 255, 0 };
float T0,T1,T2,T3,T4,F,P, PulseTime,Q62,Q62f=0,temp_f;
int i;
volatile long lastFlowPulseTime;
long LastFeedTime, FlowPulseTime, loopTime, SensorsReadTime, Q62Time;
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(2);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
DeviceAddress DeviceAddress0 = { 0x28, 0xE0, 0xDD, 0xC2, 0x02, 0x00, 0x00, 0xF4 }; //28E0DDC2020000F4
DeviceAddress DeviceAddress1 = { 0x28, 0x26, 0xC4, 0xC2, 0x02, 0x00, 0x00, 0x56 }; //2826C4C202000056
DeviceAddress DeviceAddress2 = { 0x28, 0xB7, 0xD1, 0x11, 0x03, 0x00, 0x00, 0x5C }; //28B7D1110300005C
DeviceAddress DeviceAddress3 = { 0x28, 0x9B, 0xD7, 0x11, 0x03, 0x00, 0x00, 0x0B }; //289BD7110300000B
DeviceAddress DeviceAddress4 = { 0x28, 0x3D, 0xCA, 0x11, 0x03, 0x00, 0x00, 0x75 }; //283DCA1103000075
ERxPachubeDataOut dataout("ключ", 25242);
ERxPachubeDataOut dataout1("ключ", 52035);
void setup() {
Ethernet.begin(mac, ip);
delay(1000);
// Start up the library
dataout.addData(0);
dataout.addData(1);
dataout.addData(2);
dataout.addData(3);
dataout.addData(4);
dataout.addData(5);
dataout.addData(6);
dataout.addData(8);
dataout.addData(9);
dataout.addData(10);
dataout1.addData(1);
sensors.begin();
attachInterrupt(1, FlowPulseSet, RISING);
pinMode(4,OUTPUT);
}
void loop()
{
loopTime=millis();
if (loopTime-LastFeedTime>59998)
{
LastFeedTime=loopTime;
feedPachube();
}
flowCalculation();
if (loopTime-Q62Time>3600000 && Q62f>0)
{
EEPROM_readAnything(0,temp_f);
Q62=temp_f+Q62f;
EEPROM_writeAnything(0,Q62);
Q62f=0;
}
if (loopTime-SensorsReadTime>9999)
{
SensorsReadTime=loopTime;
sensorsRead();
}
}
void feedPachube()
{
P=F*(T1-T2)*0.00115;
dataout.updateData(0, T0);
dataout.updateData(1, T1);
dataout.updateData(2, T2);
dataout.updateData(3, T3);
dataout.updateData(4, F);
dataout.updateData(5, P);
dataout.updateData(6, (analogRead(0)<200)); //Fan feedback
dataout.updateData(8, (analogRead(2)<200)); //4-way valve feedback
dataout.updateData(9, (analogRead(3)<200)); //Defrosting
dataout.updateData(10, T4);
int status = dataout.updatePachube();
EEPROM_readAnything(0,Q62);
temp_f=Q62f+Q62;
dataout1.updateData(1, temp_f);
status = dataout1.updatePachube();
}
void flowCalculation()
{
if (lastFlowPulseTime>FlowPulseTime)
{
PulseTime=lastFlowPulseTime-FlowPulseTime;
F=3600000/PulseTime;
temp_f=Q62f;
Q62f=(T1-T2)*0.00115+temp_f;
if (F>2000 || F<0) F=0;
FlowPulseTime=lastFlowPulseTime;
}
if (loopTime>lastFlowPulseTime+10000) F=0;
}
void FlowPulseSet()
{
lastFlowPulseTime=millis();
}
void sensorsRead()
{
sensors.requestTemperatures(); // Send the command to get temperatures
delay(1000);
T0=sensors.getTempC(DeviceAddress0);
T1=sensors.getTempC(DeviceAddress1);
T2=sensors.getTempC(DeviceAddress2);
T3=sensors.getTempC(DeviceAddress3);
T4=sensors.getTempC(DeviceAddress4);
}
Прикачен файл
mon_d1.JPG (46.21 KиБ) Видяна 8464 пъти