probleem met ds18b20 en relay

Hardware geleverd door Arduino
Berichten: 16
Geregistreerd: 15 Sep 2014, 13:54

probleem met ds18b20 en relay

Berichtdoor Roelof » 11 Feb 2015, 14:05

Hoi

Wie kan mij helpen, het heb 3 ds18b20 sensors, ik wil bij een bepaalde temperatuur een relay schakelen.
nou werkt dit bij 1 sensor helemaal goed. ik start arduino en relay is uit en bij ingestelde temperatuur gaat hij aan.
bij de overige 2 sensoren werkt dit niet, de relay's staan bij start aan, deze gaan uit als de temperatuur is beruikt. als ik dan weer de temperatuur laat oplopen gaat alleen het ledje bij de relay zwak knipperen. maakt niet uit of ik alle 3 de sensoren op de zelfde relay zet bij de 1 is het de andere 2 niet. ook als ik de sensor alleen gebruik dan doet hij het ook niet, alleen wel bij 1 sensor.
wie weet een oplossing

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: probleem met ds18b20 en relay

Berichtdoor nicoverduin » 11 Feb 2015, 15:04

Om te beginnen:
a) hoe heb je eea aangesloten
b) zet je code hier neer (tussen de [ code2=cpp ] en [ /code2 ] tags) Dan kunnen wij jou evt helpen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 16
Geregistreerd: 15 Sep 2014, 13:54

Re: probleem met ds18b20 en relay

Berichtdoor Roelof » 11 Feb 2015, 15:11

de sensoren zijn aangesloten op poort 14.
ben nog een beetje aan het stoeien met de code.

cpp code
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>


#define ONE_WIRE_BUS 14
byte termometru[8] = //icon for termometer
{
B00100,
B01010,
B01010,
B01110,
B01110,
B11111,
B11111,
B01110
};
//float SettempV = 1;// vorsttemp
//float SettempVoh = 90;// Vocht fan aan
//float SettempVol = 85;// Vocht fan uit
//float SettempTh = 25;// hoktemp fan aan
//float SettempTl = 20;// hoktemp fan uit
//float SettempKh = 20;// kasttemp fan aan
//float SettempKl = 18;// kasttemp fan uit

// 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.
DeviceAddress T1 = { 0x28, 0x2F, 0xC8, 0xE4, 0x04, 0x00, 0x00, 0x49 };//buiten
DeviceAddress T2 = { 0x28, 0x2E, 0xC7, 0x2C, 0x06, 0x00, 0x00, 0x7B };//aanvoer
DeviceAddress T3 = { 0x28, 0xB2, 0xF1, 0x2E, 0x06, 0x00, 0x00, 0xA8 };//retour
//DeviceAddress T4 = { };//
//DeviceAddress T5 = { };//
//DeviceAddress T6 = { };//
//DeviceAddress T7 = { };//
DeviceAddress T8 = { 0x28, 0xC0, 0x40, 0x56, 0x06, 0x00, 0x00, 0x68 };//pomp1
DeviceAddress T9 = { 0x28, 0x27, 0x95, 0x0B, 0x06, 0x00, 0x00, 0x0D };//pomp2
DeviceAddress T10 = { 0x28, 0x52, 0xBC, 0x56, 0x06, 0x00, 0x00, 0x30 };//kast

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define LCD_WIDTH 16
#define LCD_HEIGHT 2
const int relay1 = 22; // pomp 1 (vijverpomp)
const int relay2 = 23; // Pomp 2 (skimmer pomp)

const int relay3 = 24; // UV Lamp
const int relay4 = 25; // .....................


const int relay8 = 29; // kastventilator 12V
const int relay9 = 30; // vulkraan 24V
const int relay10 = 31; // doseerpomp 1 12V
const int relay11 = 32; // doseerpomp 2 12V
const int relay12 = 33; // Ventilator 12V Accu
const int relay28 = 49; // alarm p1
const int relay29 = 50; // alarm p2
const int relay30 = 51; // alarm + buzzer
const int relay31 = 52; // regen
const int relay32 = 53; // vorst




void setup () {
Serial.begin(9600);
delay(100);
Serial.print("\nvijvercontroler ");

pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);

pinMode(relay8, OUTPUT);
pinMode(relay9, OUTPUT);
pinMode(relay10, OUTPUT);
pinMode(relay11, OUTPUT);
pinMode(relay12, OUTPUT);

pinMode(relay28, OUTPUT);
pinMode(relay29, OUTPUT);
pinMode(relay30, OUTPUT);
pinMode(relay31, OUTPUT);
pinMode(relay32, OUTPUT);

//*** set the resolution to 10 bit (good enough?)

sensors.begin();
sensors.setResolution(T1, 10);
sensors.setResolution(T2, 10);
sensors.setResolution(T3, 10);
//sensors.setResolution(T4, 10);
//sensors.setResolution(T5, 10);
//sensors.setResolution(T6, 10);
//sensors.setResolution(T7, 10);
sensors.setResolution(T8, 10);
sensors.setResolution(T9, 10);
sensors.setResolution(T10, 10);


lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight
lcd.clear();
lcd.createChar(1,termometru); // Set cursor to column 0, row 0

lcd.print("vijver controler"); // Print 'Initalizing' to the LCD.

lcd.setCursor(0,1);

lcd.print("versie V0.01 ");
delay(500);
lcd.clear();
}



void printTemperature(DeviceAddress deviceAddress)

{
//float Settemp= SettempX;
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
lcd.print("Er");
Serial.print("\nFout bij opvragen temperatuur ");
} else {
lcd.print(tempC,0); // (tempc,x) x = is you variable point, i.e ,0 is no decimal, ,1 is 1 decimal,etc,




}
}
void loop(void)


{
sensors.requestTemperatures(); // just before this menu runs, read temps
lcd.setCursor(0,0);
lcd.write(1);
lcd.setCursor(1,0);
printTemperature(T1); // Buiten
lcd.setCursor(4,0);
lcd.write(1);
lcd.setCursor(5,0);
printTemperature(T2); // Aanvoer
lcd.setCursor(8,0);
lcd.write(1);
lcd.setCursor(9,0);
printTemperature(T3); // Retour
lcd.setCursor(12,0);
lcd.write(1);
lcd.setCursor(13,0);
//printTemperature(T5); //
lcd.setCursor(0,1);
lcd.write(1);
lcd.setCursor(1,1);
printTemperature(T8); // pomp1
lcd.setCursor(4,1);
lcd.write(1);
lcd.setCursor(5,1);
printTemperature(T9); // pomp2
lcd.setCursor(8,1);
lcd.write(1);
lcd.setCursor(9,1);
printTemperature(T10); // kast

float t1tempC = sensors.getTempC(T1);//buiten
float t2tempC = sensors.getTempC(T2);//aanvoer
float t3tempC = sensors.getTempC(T3);//retour
//float t4tempC = sensors.getTempC(T4);//........
//float t5tempC = sensors.getTempC(T5);//........
//float t6tempC = sensors.getTempC(T6);//........
//float t7tempC = sensors.getTempC(T7);//........
float t8tempC = sensors.getTempC(T8);//pomp1 temp
float t9tempC = sensors.getTempC(T9);//pomp2 temp
float t10tempC = sensors.getTempC(T10);//Kast temp
{

if (t10tempC > 26) digitalWrite (relay8, LOW); Serial.print("\nkasttemp hoog ");
if (t10tempC < 25) digitalWrite (relay8, HIGH);




if (t8tempC > 26) digitalWrite (relay9, LOW); Serial.print("\npomp1 hoog ");
if (t8tempC > 24) digitalWrite (relay9, HIGH);
if (t9tempC > 26) digitalWrite (relay10, LOW);Serial.print("\npomp2 hoog ");
if (t9tempC > 24) digitalWrite (relay10, HIGH);
}

}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: probleem met ds18b20 en relay

Berichtdoor nicoverduin » 11 Feb 2015, 16:17

Hoe heb je de 5V geregeld voor al die relais en LCD?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 16
Geregistreerd: 15 Sep 2014, 13:54

Re: probleem met ds18b20 en relay

Berichtdoor Roelof » 11 Feb 2015, 16:57

Dit komt van de arduino zelf. Heb nog mogelijkheid voor externe power.
heb even geprobeerd om het relaybord op externe power maar dan heb ik het zelfde probleem

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: probleem met ds18b20 en relay

Berichtdoor nicoverduin » 11 Feb 2015, 18:19

Roelof,

Het probleem waar ik een beetje mee zit is dat het verschijnsel wat je beschrijft is een inkakkende voeding. Maar als ik het goed begriijp (we weten nog steeds niet hoe je nou eea heb bedraad dus ga ik maar wat aanemen):
a) maak je gebruik van relais op zo'n PCB (ebay?). Het relais wordt aangestuurd door een optokoppelaar op de print.
b) de voeding voor de spoel wordt geleverd door een externe voeding?
c) De LCD backlight wordt gevoed door de externe voeding?

Op de serieel wat krijg je daar wat te zien?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 16
Geregistreerd: 15 Sep 2014, 13:54

Re: probleem met ds18b20 en relay

Berichtdoor Roelof » 11 Feb 2015, 18:39

het probleem is niet zo zeer dat het aan de voeding zal liggen. de sensoren zijn aangesloten als volgt (+ data -).
het is een 8 relais bord gevoed door de arduino. (extern hielp ook niet)
het probleem is dat de sensor van de kast wel gewoon het relais aanschakelt, maar als ik alleen 1 van de andere 2 sensors probeer dan knippert het ledje zwak. maakt niet uit welke relais ik pak. het probleem komt door deze sensoren denk ik dan.

op de serial krijg ik
kasttemp hoog
pomp1 hoog
pomp2 hoog

terwijl de temperatuur nog niet te hoog is

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: probleem met ds18b20 en relay

Berichtdoor nicoverduin » 11 Feb 2015, 19:07

Los van of het werkt, en uiteraard staat het vrij om in het ergste geval 2-3x de max toelaatbare stroom te trekken van de regulator... Je moet NOOIT een relais bord voeden vanuit de Arduino...
En wat geeft Serial door?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: probleem met ds18b20 en relay

Berichtdoor nicoverduin » 11 Feb 2015, 19:09

Dan wordt het debuggen:
- Eerst de 3 sensoren lezen en kijken welke waarden je op de Serial krijgt. Zet alle relais maar uit (commentaar van maken) en dan stap voor stap opbouwen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 16
Geregistreerd: 15 Sep 2014, 13:54

Re: probleem met ds18b20 en relay

Berichtdoor Roelof » 11 Feb 2015, 19:19

serial geeft bij het alleen lezen van de sensoren.
ROM = 28 C0 40 56 6 0 0 68
Chip = DS18B20
Data = 1 24 1 4B 46 3F FF C 10 A8 CRC=A8
Temperature = 18.25 Celsius, 64.85 Fahrenheit
ROM = 28 52 BC 56 6 0 0 30
Chip = DS18B20
Data = 1 3C 1 4B 46 3F FF 4 10 A0 CRC=A0
Temperature = 19.75 Celsius, 67.55 Fahrenheit
ROM = 28 27 95 B 6 0 0 D
Chip = DS18B20
Data = 1 14 1 4B 46 3F FF C 10 54 CRC=54
Temperature = 17.25 Celsius, 63.05 Fahrenheit
No more addresses.

Volgende

Terug naar Arduino hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 53 gasten