Päikeseelekter kasvuhoonet monitoorima
Collapse
X
-
Vs: Päikeseelekter kasvuhoonet monitoorima
Luugi külge on kindel panna.Kas on sellist herkonit kus on variant kolme klemmiga,et ilma magnetita on 1 kontakt lahti ja teine kinni ? Vist saab arduino analoog pin-e ka kasutada kui saab aga vist ei saa. Mul softis mingid viivitused.
Kust odavaid rulluisu rattaid saab koos laagritega.Nendega hea trossi juhtida.Jooksevad libedalt.Tuleb soon sisse treida rattasse või käiata (lihtsam variant).
Comment
-
Emal oli kolm poega, kaks olid normaalsed ja kolmas oli elektroonik.Comment
-
Vs: Päikeseelekter kasvuhoonet monitoorima
Tavalise herkoni taha saab panna ka teise relee, ümberlülitava.
Akna liikuva raami külge mingi pulk sissepoole rippu läbi liikumatu raami küljes oleva suunaja. Pulga külge kaks magnetit eri pooltele, kinni ja lahti asendile. Suunaja külge kaks herkonit, kummagile magnetile oma. Võib ka mitu tk panna, saab vahepealseid asendeid progeda.
Laagritega trossi rullikuid saab suuremat sorti koopiamasinate seest, seal veetakse seda peeglitega kelku trossidega edasitagasi.Comment
-
Vs: Päikeseelekter kasvuhoonet monitoorima
Sellise asja tahaks kasvuhoone keskelt ülevalt ajada ülesse.Otsast tuleb välja 4 trossi mis lähevad luukide külge.Vahel on laagrid mis teevad trossi jooksu kergemaks.Peaks olema suuremad tegelikult.Alla tuleb kojamehe mootor pooliga kuhu kerib trossi peale.Toru sees on need 4 trossi ühe küljes.Ole näha kuidas töötab.Teoreetiliselt peaks toimima.
Keevitus on kole aga peaks töötama.
Comment
-
Vs: Päikeseelekter kasvuhoonet monitoorima
See oli katse nr.1. Leidsin Maximast rulluisud 10€. Sealt saab rattad.Lõikan trossi jaoks soone sisse ja peaks olema parem variant kui see mis tehtud.?
Mul on olemas ka Gertboard. Kas seda poleks mõtet kasutada ?viimati muutis kasutaja insippo; 18 May 2013, 17:08.
Comment
-
Vs: Päikeseelekter kasvuhoonet monitoorima
Niiskust näitab lcd-l aga temperatuuri ei oska panna.
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
/*
0 - 232 rxd
1 - 232 txd
2 - rw (LCD) pin 4
3 - enable (LCD) pin 6
4 - sd card 9 (ETHERNET SHIELD)
5 - lcd d4 (LCD)
6 - lcd d5 (LCD)
7 - lcd d6 (LCD)
8 - lcd d7 (LCD)
9 - DS18B20
10 - w5100 select(ETHERNET SHIELD)
11 - SPI MOSI (ETHERNET SHIELD)
12 - SPI MISO (ETHERNET SHIELD)
13 - SPI CLK (ETHERNET SHIELD)
ANALOG
0 - MOISTURE in (analog) moisture_input 0
1 - moisture (digital) divider_top 2
2 - moisture 1 (digital) divider_bottom 3
3 - window open (digital)
4 - window close (digital)
5 - water pump (digital)
Moisture
Connect two nails and a resistor as shown
analog 1---* #define divider_top A1
|
\
/
\ R1
/
|
|
analog 0----* #define moisture_input A0
|
|
*----> nail 1
*----> nail 2
|
|
|
analog 2---* #define divider_bottom A2
*/
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(2, 3, 5, 6, 7, 8);
// Data wire is plugged into pin 9 on the Arduino
#define ONE_WIRE_BUS 9
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
// Assign the addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses:
// http://www.hacktronics.com/Tutorials...ss-finder.html
DeviceAddress insideThermometer = { 0x28, 0x2B, 0xE6, 0xDA, 0x02, 0x00, 0x00, 0x43 };
DeviceAddress outsideThermometer = { 0x28, 0x6B, 0xDF, 0xDF, 0x02, 0x00, 0x00, 0xC0 };
DeviceAddress groundThermometer = { 0x28, 0x59, 0xBE, 0xDF, 0x02, 0x00, 0x00, 0x9F };
#define moisture_input 0 // analog pin 0, nail 1
#define divider_top 1 // resistor analog pin 1
#define divider_bottom 2 // nail 2 analog pin 2
int waterPump =A5; // water pump analog pin 5
int moisture;
int Koguprotsent;
int tempHigh =A3; // window open relay
int tempLow =A4; //window close relay
int X=0;
void setup(void)
{
pinMode (tempLow, OUTPUT);
pinMode (tempHigh, OUTPUT);
pinMode (waterPump, OUTPUT);
digitalWrite(waterPump, LOW);
digitalWrite (tempLow, LOW);
digitalWrite (tempHigh, LOW);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin();
// set the resolution to 10 bit (good enough?) maybe 9 bit better
sensors.setResolution(insideThermometer, 9);
// sensors.setResolution(outsideThermometer, 9);
// sensors.setResolution(dogHouseThermometer, 9);
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("Error getting temperature");
} else {
Serial.print("C: ");
Serial.print(tempC);
//-- panin koodi siia..
}
if (tempC >= 27 && X ==0){
digitalWrite(tempHigh, HIGH);
delay(6000);
digitalWrite(tempHigh, LOW);
X = 1;
}
if (tempC <= 24 && X ==1){
//luuk alla
X = 0;
digitalWrite(tempLow, HIGH);
delay(6000);
digitalWrite(tempLow, LOW);
}
}
void loop(void)
{
//---- soil
// Serial.print("Getting Soil Moisture...\n\r");
moisture=SoilMoisture(); // soilmoister as variable
Koguprotsent = ((moisture*100)/970); // mina sain max väärtuseks 950
Serial.print("Niiskuse absoluut arv: ");
Serial.println(moisture);
lcd.setCursor(0, 0);
lcd.print("Muld:");
lcd.print(moisture);
delay(2000);
Serial.print("Mullas on niiskust ");
Serial.print(Koguprotsent);
Serial.print(" % ");
lcd.setCursor(9, 0);
lcd.print(",");
lcd.print(Koguprotsent);
lcd.print("%");
Serial.println();
delay(1000); // tuleks sättida endale sobivaks.
if (Koguprotsent >= 90){
digitalWrite(waterPump, LOW);
}
if (Koguprotsent <= 75){
digitalWrite(waterPump, LOW);
delay(1000); //pumba töö aeg.Katsetamise käigus selgub palju oleks normaalne aeg pumba tööks,et ei tekiks uputust.
digitalWrite(waterPump, HIGH);
}
//---------- temp
delay(1000);
Serial.print("Getting temperatures...\n\r");
sensors.requestTemperatures();
Serial.print("Inside temperature is: ");
printTemperature(insideThermometer);
Serial.print("\n\r");
lcd.setCursor(0, 1);
lcd.print("T.In:");
printTemperature(insideThermometer);
lcd.print("\n\r");
Serial.print("Outside temperature is: ");
printTemperature(outsideThermometer);
Serial.print("\n\r");
Serial.print("Ground temperature is: ");
printTemperature(groundThermometer);
Serial.print("\n\r");
//lcd.print("In:");
//lcd.print(outsideThermometer);
//lcd.print("G:");
//lcd.print(groundThermometer);
}
int SoilMoisture(){
int reading;
// set driver pins to outputs
pinMode(divider_top,OUTPUT);
pinMode(divider_bottom,OUTPUT);
// drive a current through the divider in one direction
digitalWrite(divider_top,LOW);
digitalWrite(divider_bottom,HIGH);
// wait a moment for capacitance effects to settle
delay(1000);
// take a reading
reading=analogRead(moisture_input);
// reverse the current
digitalWrite(divider_top,HIGH);
digitalWrite(divider_bottom,LOW);
// give as much time in 'reverse' as in 'forward'
delay(1000);
// stop the current
digitalWrite(divider_bottom,LOW);
return reading;
//relays for temp
pinMode(tempHigh,OUTPUT);
}
Comment
-
Vs: Päikeseelekter kasvuhoonet monitoorima
Mina tegin mitme anduriga nii:
DeviceAddress AURUSTI = { 0x28, 0x58, 0xBA, 0xA0, 0x04, 0x00, 0x00, 0x54 };
DeviceAddress KAPP = { 0x28, 0xF9, 0x04, 0xA1, 0x04, 0x00, 0x00, 0x5D };
.
.
.
float temp = sensors.getTempC(AURUSTI);
float temp1 = sensors.getTempC(KAPP);
.
.
.
lcd.print (temp);
lcd.print (temp1);Comment
-
Vs: Päikeseelekter kasvuhoonet monitoorima
Tegin nii. Midagi saaks lihtsamini vast.
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(2, 3, 5, 6, 7, 8);
// Data wire is plugged into pin 9 on the Arduino
#define ONE_WIRE_BUS 9
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
// Assign the addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses:
// http://www.hacktronics.com/Tutorials...ss-finder.html
DeviceAddress insideThermometer = { 0x28, 0x2B, 0xE6, 0xDA, 0x02, 0x00, 0x00, 0x43 };
DeviceAddress outsideThermometer = { 0x28, 0x6B, 0xDF, 0xDF, 0x02, 0x00, 0x00, 0xC0 };
DeviceAddress groundThermometer = { 0x28, 0x59, 0xBE, 0xDF, 0x02, 0x00, 0x00, 0x9F };
#define moisture_input 0 // analog pin 0, nail 1
#define divider_top 1 // resistor analog pin 1
#define divider_bottom 2 // nail 2 analog pin 2
int waterPump =A5; // water pump analog pin 5
int moisture;
int Koguprotsent;
int tempHigh =A3; // window open relay
int tempLow =A4; //window close relay
int X=0;
void setup(void)
{
pinMode (tempLow, OUTPUT);
pinMode (tempHigh, OUTPUT);
pinMode (waterPump, OUTPUT);
digitalWrite(waterPump, LOW);
digitalWrite (tempLow, LOW);
digitalWrite (tempHigh, LOW);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin();
// set the resolution to 10 bit (good enough?)
sensors.setResolution(insideThermometer, 12);
sensors.setResolution(outsideThermometer, 12);
sensors.setResolution(groundThermometer, 12);
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("Error getting temperature");
} else {
Serial.print("C: ");
Serial.print(tempC);
lcd.print(tempC,0);
//-- panin koodi siia..
}
if (tempC >= 27 && X ==0){
digitalWrite(tempHigh, HIGH);
delay(6000);
digitalWrite(tempHigh, LOW);
X = 1;
}
if (tempC <= 24 && X ==1){
//luuk alla
X = 0;
digitalWrite(tempLow, HIGH);
delay(6000);
digitalWrite(tempLow, LOW);
}
}
void loop(void)
{
//---- soil
// Serial.print("Getting Soil Moisture...\n\r");
moisture=SoilMoisture(); // soilmoister as variable
Koguprotsent = ((moisture*100)/970); // mina sain max väärtuseks 950
Serial.print("Niiskust mullas: ");
Serial.println(moisture);
lcd.setCursor(0, 0);
lcd.print("Muld:");
lcd.print(moisture);
//delay(2000);
Serial.print("Mullas on niiskust ");
Serial.print(Koguprotsent);
Serial.print(" % ");
lcd.setCursor(9, 0);
lcd.print("- ");
lcd.print(Koguprotsent);
lcd.print("%");
//Serial.println();
delay(2000); // tuleks sättida endale sobivaks.
if (Koguprotsent >= 90){
digitalWrite(waterPump, LOW);
lcd.clear();
lcd.print(" Pump stop");
lcd.setCursor(1,0);
lcd.print("Muld on niiske");
}
if (Koguprotsent <= 75){
digitalWrite(waterPump, LOW);
lcd.clear();
lcd.print(" Pump start");
delay(1000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print(" 1");
delay(1000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print(" 2");
delay(1000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print(" 3");
delay(1000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print(" 4");
delay(1000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print(" 5");
delay(1000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print(" 6");
delay(1000);
lcd.clear();
//pumba töö aeg.Katsetamise käigus selgub palju oleks normaalne aeg pumba tööks,et ei tekiks uputust.
digitalWrite(waterPump, HIGH);
lcd.print(" Pump stop");
delay(2000);
}
//---------- temp
float Out = sensors.getTempC(outsideThermometer);
float In = sensors.getTempC(insideThermometer);
float G = sensors.getTempC(groundThermometer);
//delay(1000);
Serial.print("Getting temperatures...\n\r");
sensors.requestTemperatures();
Serial.print("Inside temperature is: ");
printTemperature(insideThermometer);
Serial.print("\n\r");
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Inside temp:");
lcd.print(In,1);
delay(2000);
Serial.print("Outside temperature is: ");
printTemperature(outsideThermometer);
Serial.print("\n\r");
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Outside temp:");
lcd.print(Out,1);
delay(2000);
Serial.print("Ground temperature is: ");
printTemperature(groundThermometer);
Serial.print("\n\r");
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Ground temp:");
lcd.print(G,1);
delay(2000);
lcd.clear();
}
int SoilMoisture(){
int reading;
// set driver pins to outputs
pinMode(divider_top,OUTPUT);
pinMode(divider_bottom,OUTPUT);
// drive a current through the divider in one direction
digitalWrite(divider_top,LOW);
digitalWrite(divider_bottom,HIGH);
// wait a moment for capacitance effects to settle
delay(1000);
// take a reading
reading=analogRead(moisture_input);
// reverse the current
digitalWrite(divider_top,HIGH);
digitalWrite(divider_bottom,LOW);
// give as much time in 'reverse' as in 'forward'
delay(1000);
// stop the current
digitalWrite(divider_bottom,LOW);
return reading;
//relays for temp
pinMode(tempHigh,OUTPUT);
}
Arduinot kasvuhoonesse ei julge jätta. Mul on kaabli kõri miski 30 m. Kaevan maasse ja putkani.Sinna on raskem sisse pääseda.Akud ja muu kola jääks sinna.Kasuhooneni voolu kaabel ja võrgukaabel. Kasvuhoonesse jäävad siis ainult releedviimati muutis kasutaja insippo; 19 May 2013, 14:33.
Comment
-
Vs: Päikeseelekter kasvuhoonet monitoorima
Releede mähiste jaoks on 0,75 mm2 ok, aga kojamehe mootorile paneks 2,5 mm2, kui rasket vedu ning mootori kinnipoomise ohtu pole, siis lühikese juhtme hädaga 1,5 mm2. Kaitsmed vahele.Comment
-
Vs: Päikeseelekter kasvuhoonet monitoorima
Kojamehe mootor võttis tühikäigul 0.5A. Juhe tuleb mul pikk.20m umbes.Releedele tahtsin panna üldse cat 5-e.
Kui aga panna kojamehe mootori juurde väike aku.Näiteks see :Aku Ultracell 12V 1.3Ah http://www.oomipood.ee/product/ul 1....3ah-97-43-52mm.
Vahele relee,et ei tekiks juhtmes suurt pinget.Kui mootor käivitub siis lülitab ennast ainult selle väikse aku peale.See aku laeb ennast suuremast akust mis asub eemal selle 0,75mm2 kaabli otsasviimati muutis kasutaja insippo; 21 May 2013, 06:53.
Comment
-
Vs: Päikeseelekter kasvuhoonet monitoorima
Isegi see 0,5A vool on nii pika ja peenikese kaabli puhul 0,9V pinge langu.
Kui sa pandes seda 0,75mm kaablit kaks kõrvuti, siis ehk hädapärast veaks ilma akuta ka välja ja oleks mootor ülekoormamisest kaitstud, sest 5A voolu juures oleks pingelang kusagil 4,5V ja siis läheb ka mootoril tarbimine piisavalt väikeseks, et elus püsida. Selliselt mootorit säästa proovida oleks muidugi narr. Eriti kui energia ammutamine on niigi kriitiline. Miski 22W läheks kaablisse kaotsi selliselt. Aga kui sellest kahju ei ole, siis enam midagi otseselt maha ei tohiks põleda.
Aku aitab hädast välja oluliselt kindlamatl ja on ka mootori jõuvaru suurem.Comment
Comment