probleem met ds18b20 en relay
21 berichten
• Pagina 2 van 3 • 1, 2, 3
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: probleem met ds18b20 en relay
Dus dat lijkt goed te werken.... Eventueel in een loopje van mij part de temperaturen lezen en displayen waarbij je de sensoren opwarmt. Gewoon om uit te sluiten dat ze defect zijn oid.
Laat tevens je programma zien dat je gebruikt. Dat maakt lezen wat eenvoudiger.
Vervolgens alleen die relais gebruiken die daadwerkelijk in gebruik zijn. En dan relais voor relais uitbreiden. Het gaat erom dat je uitsluit wat goed is. Nu heb je nog een heleboel extra zaken erin zitten die nu niet in gebruik zijn wat allemaal verstorend werkt. Het gaat er mij om, om te lokaliseren of dit een hardware probleem is? Overbelasting van de voeding? fout in het programma enz enz.
Laat tevens je programma zien dat je gebruikt. Dat maakt lezen wat eenvoudiger.
Vervolgens alleen die relais gebruiken die daadwerkelijk in gebruik zijn. En dan relais voor relais uitbreiden. Het gaat erom dat je uitsluit wat goed is. Nu heb je nog een heleboel extra zaken erin zitten die nu niet in gebruik zijn wat allemaal verstorend werkt. Het gaat er mij om, om te lokaliseren of dit een hardware probleem is? Overbelasting van de voeding? fout in het programma enz enz.
Advertisement
Re: probleem met ds18b20 en relay
Oké zal het is proberen en dan zal ik het resultaat hier weer posten
Re: probleem met ds18b20 en relay
heb het geprobeerd via een loop en heb via serial uitgelezen en ze lopen allemaal mooi gelijk op.
Ik heb het geprobeert via Celsius naar Fahrenheit in een andere sketch en daar bij schakelt hij met 2 wel maar met 3 niet. kom er nu niet meer uit. allemaal alleen schakelen ze wel met 2 ook maar met 3 niet.
Ik heb het geprobeert via Celsius naar Fahrenheit in een andere sketch en daar bij schakelt hij met 2 wel maar met 3 niet. kom er nu niet meer uit. allemaal alleen schakelen ze wel met 2 ook maar met 3 niet.
Re: probleem met ds18b20 en relay
ik krijg via deze sketch de relais wel in werken maar in de sketch die ik wil gebruiken werkt hij niet
[ code2=cpp ]
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 14
// 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);
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
int relay1 = 29; // kastventilator 12V
int relay2 = 30; // kastventilator 12V
int relay3 = 31; // kastventilator 12V
void setup () {
Serial.begin(9600);
delay(1000);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
sensors.begin();
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
}
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(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 t8tempC = sensors.getTempC(T8);//pomp1 temp
float t9tempC = sensors.getTempC(T9);//pomp2 temp
float t10tempC = sensors.getTempC(T10);//Kast temp
if (t8tempC > 27) digitalWrite (relay1, LOW);
Serial.print("\npomp1 ");
if (t8tempC < 25) digitalWrite (relay1, HIGH);
if (t9tempC > 27) digitalWrite (relay2, LOW);
Serial.print("\npomp2 ");
if (t9tempC < 25) digitalWrite (relay2, HIGH);
if (t10tempC > 27) digitalWrite (relay3, LOW);
Serial.print("\nkast ");
if (t10tempC < 25) digitalWrite (relay3, HIGH);
}
[ /code2 ]
[ code2=cpp ]
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 14
// 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);
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
int relay1 = 29; // kastventilator 12V
int relay2 = 30; // kastventilator 12V
int relay3 = 31; // kastventilator 12V
void setup () {
Serial.begin(9600);
delay(1000);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
sensors.begin();
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
}
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(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 t8tempC = sensors.getTempC(T8);//pomp1 temp
float t9tempC = sensors.getTempC(T9);//pomp2 temp
float t10tempC = sensors.getTempC(T10);//Kast temp
if (t8tempC > 27) digitalWrite (relay1, LOW);
Serial.print("\npomp1 ");
if (t8tempC < 25) digitalWrite (relay1, HIGH);
if (t9tempC > 27) digitalWrite (relay2, LOW);
Serial.print("\npomp2 ");
if (t9tempC < 25) digitalWrite (relay2, HIGH);
if (t10tempC > 27) digitalWrite (relay3, LOW);
Serial.print("\nkast ");
if (t10tempC < 25) digitalWrite (relay3, HIGH);
}
[ /code2 ]
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: probleem met ds18b20 en relay
Je moet ff de spaties weghalen tussen die vierkante haken. Dan ziet je listing er gelijk profi uit
Re: probleem met ds18b20 en relay
Wie weet er nu een oplossing.
met deze sketch werkte eerst alle 3 de relais goed. Nu blijft de 3 de relais aan terwijl de temp nog niet beruikt is. komt de temp op de ingestelde waarde dan schakelt het relais uit en daarna gaat het zwak knipperen.
wie weet de oplossing hier voor, het werkte eerst en nu weer niet.
cpp code
met deze sketch werkte eerst alle 3 de relais goed. Nu blijft de 3 de relais aan terwijl de temp nog niet beruikt is. komt de temp op de ingestelde waarde dan schakelt het relais uit en daarna gaat het zwak knipperen.
wie weet de oplossing hier voor, het werkte eerst en nu weer niet.
cpp code
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 14
// 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);
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
int relay1 = 22; // kastventilator 12V
int relay2 = 23; // kastventilator 12V
int relay3 = 24; // kastventilator 12V
void setup () {
Serial.begin(9600);
delay(1000);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
sensors.begin();
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
}
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);
printTemperature(T8); // pomp1
lcd.setCursor(0,1);
printTemperature(T9); // pomp2
lcd.setCursor(10,1);
printTemperature(T10); // kast
float t8tempC = sensors.getTempC(T8);//pomp1 temp
float t9tempC = sensors.getTempC(T9);//pomp2 temp
float t10tempC = sensors.getTempC(T10);//Kast temp
if (t8tempC > 27) digitalWrite (relay1, LOW);
if (t8tempC > 27) Serial.print("\nPomp 1 ALARM");
if (t8tempC < 25) digitalWrite (relay1, HIGH);
//
if (t9tempC > 27)digitalWrite (relay2, LOW);
if (t9tempC > 27) Serial.print("\nPomp 2 ALARM");
if (t9tempC < 25) digitalWrite (relay2, HIGH);
//
if (t10tempC > 27) digitalWrite (relay3, LOW);
if (t10tempC > 25) digitalWrite (relay3, HIGH);
}
Re: probleem met ds18b20 en relay
het programma gaat wel erg snel hoor.
begn eens met te zorgen dat als bijv t9 > 27 en de vlag van t9 is uit dan actie zoals pomp aan en vlag zetten.
als vlag aan staat dan niets doen
dan
begn eens met te zorgen dat als bijv t9 > 27 en de vlag van t9 is uit dan actie zoals pomp aan en vlag zetten.
als vlag aan staat dan niets doen
dan
paul deelen
shooter@home.nl
shooter@home.nl
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: probleem met ds18b20 en relay
en als je relais vervangt voor alleen een LED?
Re: probleem met ds18b20 en relay
in de snelle loop request je temperaturen
gelijk daarna zoek je ze op,
als te hoog dan pomp uit.
etc
dan ben je binnen 1 ms alweer terug bij die request.
dat is veel te snel.
begin eens met een delay na de request,
en bij t10temp staat een > en dat moet een < zijn.
gelijk daarna zoek je ze op,
als te hoog dan pomp uit.
etc
dan ben je binnen 1 ms alweer terug bij die request.
dat is veel te snel.
begin eens met een delay na de request,
en bij t10temp staat een > en dat moet een < zijn.
paul deelen
shooter@home.nl
shooter@home.nl
21 berichten
• Pagina 2 van 3 • 1, 2, 3
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten