Relais springt 1/10 seconde aan zonder reden ??

Als U een gezamenlijk project wil starten of aan projecten van anderen mee wilt werken.
Berichten: 8
Geregistreerd: 23 Nov 2015, 23:30

Relais springt 1/10 seconde aan zonder reden ??

Berichtdoor juzo » 23 Nov 2015, 23:47

Goedenavond allemaal, ik heb een programma geschreven voor een zwembad temperatuur regeling die aangesloten is met een warmte wisselaar op een grote glastuinbouw ketel. De temperatuur is in stelbaar van 16-36 graden en de maximale ingangstemperatuur op de wisselaar is 50 graden. De pomp van het zwembad circuleert over de wisselaar om het water op te warmen. Elke keer als de mengklep is aangestuurd voor de open functie klikt het pomp relais een 1/10 seconde uit en weer aan. Het lijkt wel dat als hij dat doet dat het programma weer begint in de loop routine.
Ook al is de gemeten temperatuur boven de ingestelde temperatuur heb ik het zelfde probleem,

Wie weet een oplossing of zie ik wat over het hoofd ?
cpp code
#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <DallasTemperature.h>

#include <OneWire.h>

// Zwembad regeling met mengklep voor verwarming
// Ontwikkeld en gemaakt door Jurgen Zomer
// Prototype versie 16-11-2015
// Data lijn op pin 2 databus sensor
// Handmatig pomp aansturing


#define ONE_WIRE_BUS 2
// Setup oneWire
OneWire oneWire(ONE_WIRE_BUS);
// oneWire verwijzen naar Dallas Temperature
DallasTemperature sensors(&oneWire);

// Voer hier alle id's van aangesloten temperatuur sensoren in

DeviceAddress zwembadThermometer = { 0x28, 0xFF, 0xA5, 0xA8, 0x52, 0x15, 0x02, 0x87 };
DeviceAddress ketelThermometer = { 0x28, 0xFF, 0x4A, 0xA6, 0x52, 0x15, 0x02, 0x27 };



LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 20 chars and 4 line display
byte grad[8] = { B01000, B10100, B01000, B00111, B01000, B01000, B01000, B00111 };

// ingang a4 setpoint temperatuur dmv potmeter
// ingang 2 dallas temperatuur sensor
// ingang 10 handmatig pomp aan
// uitgang 11 klep open
// uitgang 12 klep dicht
// uitgang 9 pomp aan (led op print)

int set = analogRead(A1);
int hand = 10;
int klepopen = 11;
int klepdicht =12;
int pomp = 9;
int x=0;
int y=0;

void setup()
{


pinMode(hand, INPUT); // Handsturing pomp aan
pinMode(klepopen, OUTPUT); // Klep open
pinMode(klepdicht, OUTPUT); // Klep dicht
pinMode(pomp, OUTPUT); // Pomp aan

lcd.createChar(1, grad);
lcd.init();
lcd.backlight();
lcd.home();

lcd.setCursor(1,2);
lcd.print("Zwembad controller");
lcd.setCursor(1,3);
lcd.print(" Powered by JUZO ");
delay(5000);
lcd.clear();

// Activeer de library
sensors.begin();

// set the resolution to 10 bit
sensors.setResolution(zwembadThermometer, 10);
sensors.setResolution(ketelThermometer, 10);

Serial.begin(9600);}

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);
Serial.print(" F: ");
Serial.print(DallasTemperature::toFahrenheit(tempC));
}


}



void loop()
{


if (y=1) {delay(5000);} else {delay(0);}
x=0;

//delay(200);

sensors.requestTemperatures();
float t1tempC = sensors.getTempC(zwembadThermometer);//Zwembad temperatuur
float t2tempC = sensors.getTempC(ketelThermometer);//Ketel temperatuur
float set = analogRead(A1);


// Serial.println("Ketel : ");
// Serial.print((t2tempC),1);
// Serial.println("Zwembad : ");
// Serial.print((t1tempC),1);



// lees potmeteringang a1 converteer de waar van instelbaar 16 tot 35 graden

set = map (set, 0, 1023, 16, 35);
//Serial.println("Ingesteld : ");
//Serial.print(set);
lcd.setCursor(0,0);
lcd.print("Ingesteld : ");
lcd.print((set),1);
lcd.print((char)223);
lcd.setCursor(0,1);
lcd.print("Zwembad : ");
lcd.print((t1tempC),1);
lcd.print((char)223);

lcd.setCursor(0,2);
lcd.print("Verwarming : ");
lcd.print((t2tempC),1);
lcd.print((char)223);

// uitgang 13 pompsturing handbediend

if (hand == HIGH) {digitalWrite(pomp, LOW);
lcd.setCursor(0,3);
lcd.print("Pomp hand");}
else
{digitalWrite(pomp, HIGH);
lcd.setCursor(0,3);
lcd.print("Pomp is uit");}



// Routine temp zwembad te laag pomp aan

if (t1tempC < set)
{ digitalWrite (pomp, LOW);
//Serial.println("Pomp aan");
lcd.setCursor(0,3);
lcd.print("Pomp is aan");
y=1;}


if (t1tempC >set)
{ digitalWrite (pomp, HIGH);
lcd.setCursor(0,3);
lcd.print("Pomp is uit"); }


// dode zone van 3 graden om onrustige mengklep regeling te vermijden
// uitgang 11 mengklep open
// uitgang 12 mengklep dicht

if ( (t1tempC < set) && (t2tempC <30) )
{ digitalWrite (klepopen, LOW);
lcd.setCursor(13,3);
lcd.print("Open");
//Serial.println("Open 5 sec");
delay (5000);
lcd.setCursor(13,3);
lcd.print(" ");
digitalWrite (klepopen, HIGH);
x=1; }





if ( ( t1tempC < set) && (t2tempC >50) )
{ digitalWrite (klepdicht, LOW);
lcd.setCursor(14,4);
lcd.print("Dicht");
//Serial.println("Dicht");
delay (2500);
lcd.setCursor(14,4);
lcd.print(" ");
digitalWrite (klepdicht, HIGH); }

if ( (t1tempC < set) && (t2tempC <48) && (x=0) )
{ digitalWrite (klepopen, LOW);
lcd.setCursor(13,3);
//Serial.println("Open 1 sec");
lcd.print("Open");
delay (1000);
lcd.setCursor(13,3);
lcd.print(" ");
digitalWrite (klepopen, HIGH);
x=0; }


delay (30000);
}

Advertisement

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

Re: Relais springt 1/10 seconde aan zonder reden ??

Berichtdoor nicoverduin » 23 Nov 2015, 23:59

hoe stuur je het relais aan? En waar komt de voedingspanning van het relais (spoel) vandaan?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 8
Geregistreerd: 23 Nov 2015, 23:30

Re: Relais springt 1/10 seconde aan zonder reden ??

Berichtdoor juzo » 24 Nov 2015, 00:18

Uno wordt gevoed door een externe 12 Volt voeding van 1 Ampere, haal de voeding van de sensoren en aansturing van de relais van de 5 volt van de print af tevens ook gnd. Of kan ik beter het relais boardje apart voeden met de vcc en gnd en de aansturing van de relais alleen van de uitgangen van het printje afhalen ? Wat is jou vermoeden dat de spanning in elkaar zakt ?

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

Re: Relais springt 1/10 seconde aan zonder reden ??

Berichtdoor nicoverduin » 24 Nov 2015, 08:48

Het lijkt er inderdaad op dat hij gereset wordt. paar punten van belang:
a) de voeding van de spoel altijd eigen voeding
b) als je niet zo'n chinees relais bordje gebruikt, zorg voor een blus diode over de spoel (kathode aan de plus)
c) alle GNDS gemeenschappelijk tenzij je gebruik maak van een optokoppelaar die het gele relais circuit galvanisch kan scheiden
d) Als je een eigen relais met transistor gebruik vergeet dan niet een stroom begrenzing weerstand van 100-220 ohm tussen de basis en arduino output pin.

Heb je zo'n chinees bordje dan kun je volstaan met GNDs gemeenschappelijk, eigen voeding naar de spoel van het relais (meestal zit er nu een jumper op)

Tenslotte, al gooi je 10A op de ingang van de de Arduino, de 5V regulator kan niet meer leveren dan 500mA. Trek daar het Arduino eigen gebruik vanaf en er is niet zoveel meer over voor andere externe apparaten.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 8
Geregistreerd: 23 Nov 2015, 23:30

Re: Relais springt 1/10 seconde aan zonder reden ??

Berichtdoor juzo » 24 Nov 2015, 19:08

Bedankt voor de reactie, het programma kan er dus niet zelf voor zorgen dat er een reset plaats vindt automatisch begrijp ik uit je antwoord.
Ik zal wel even de voeding veranderen zit inderdaad een jumper op

Berichten: 8
Geregistreerd: 23 Nov 2015, 23:30

Re: Relais springt 1/10 seconde aan zonder reden ??

Berichtdoor juzo » 24 Nov 2015, 21:17

Goedenavond, ik heb het gevonden, Ik had een testopstelling gemaakt op een bread boardje nu had ik per ongeluk de ingang 10 voor de pomp sturing zwevend gemaakt de pull down weerstand had ik in het gaatje ernaast gestopt. Elke keer als hij de routine doorliep trok hij even het relais aan en liet hem direkt weer afvallen.

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

Re: Relais springt 1/10 seconde aan zonder reden ??

Berichtdoor nicoverduin » 24 Nov 2015, 22:56

Tja, daar kan ik niet tegen op :)
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar Gezamenlijke projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 5 gasten