Arduino Mega stopt

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 5
Geregistreerd: 12 Jun 2016, 15:41

Arduino Mega stopt

Berichtdoor jes2983 » 12 Jun 2016, 15:52

Geachte,
ik ben enkele maanden bezig met Arduino en ben een zwembadsturing aan het maken met volgende functies:
* aansturing filterpomp
* aansturing chloorpomp
* aansturing zonneverwarmingsklep
Hardware bestaat uit :
* Arduino Mega
* DS 3132 klok
* LCD 20 X 4
* relaiskaart 8 kanalen

Ik heb alles geprobeerd en toto gisteren werkte alles .
Nu heb ik aan de relaiskaart enkele relais gehangen om oa de pomp aan te sturen en nu loopt het mis .
Als de verwarming aan gaat gaan er 2 relais aan . Op de moment dat deze terug uit gaan valt Mega stil .
Als ik de grote relais terug afkoppel werkt alles terug normaal .
Ik heb al een andere voeding genomen zodat alles gescheiden is maar probleem blijft : bij het afvallen van de relais stopt mega met werken .
Ik ben een beetje ten einde raad en weet niet hoe dit op te lossen .
Iemand nog ideeen ?

Jan
Berlaar Belgie

Advertisement

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

Re: Arduino Mega stopt

Berichtdoor nicoverduin » 12 Jun 2016, 16:23

Jan,
Begin maar eerst met de sketch hier neer te zetten, en liefst ook een schema. Zo op afstand zonder inhoudelijke info kunnen wij weinig. Overigens hoe weet je of de mega stil valt? Of heb je een heartbeat led erop zitten?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 5
Geregistreerd: 12 Jun 2016, 15:41

Re: Arduino Mega stopt

Berichtdoor jes2983 » 12 Jun 2016, 20:02

Geachte,
ik denk dat deze stopt omdat de uitgangen niet meer logisch aangestuurd zijn en omdat klok op display stil staat .
Meestal komt er onzin ( rare bewegende karakters) op display .
Dit gebeurt elke keer als relais afvallen .
Hieronder de code :
cpp code
#include <Time.h>
#include <TimeAlarms.h>
#include <Wire.h> // Comes with Arduino IDE
#include <TimeLib.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define DS18B20 6
#include <DS3231.h>
#include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
OneWire ourWire(DS18B20);
DallasTemperature sensors(&ourWire);
DS3231 clock;
RTCDateTime dt;
int relayV = 23;
int relayP = 25;
int relayC = 27;
bool merkerV;
bool merkerP;
bool merkerC;
bool merkerF;
unsigned long TIMER0 = 0; // Variable to hold elapsed time for Timer 0
unsigned long previousMillis = 0;
const long interval = 300000;


void setup() {

Serial.begin(9600);
setSyncProvider(RTC.get); // the function to get the time from the RTC
pinMode(relayV, OUTPUT);
pinMode(relayP, OUTPUT);
pinMode(relayC, OUTPUT);
digitalWrite(relayV, HIGH);
digitalWrite(relayP, HIGH);
digitalWrite(relayC, HIGH);

Alarm.alarmRepeat(12,30,0, FilterAan); // schakelpunten instellen en benoemen
Alarm.alarmRepeat(16,30,0, FilterUit);
Alarm.alarmRepeat(13,0,0, CLRPompAan);
Alarm.alarmRepeat(13,4,0, CLRPompUit);

lcd.begin(20,4); // initialize the lcd for 20 chars 4 lines, turn on backlight
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);

delay(1000); //was 1000 aangepast naar 100 (26-04-2016)
sensors.begin(); // start reading sensors
}
lcd.backlight(); // finish with backlight on

} // end of setup

void FilterAan(){ // als schakepunt bereikt wordt zet merkerF op 1
merkerF = true;
lcd.setCursor(17,2); // zet cursor op juiste plaats
lcd.print("AAN"); // schrijf op LCD "Aan"
}

void FilterUit(){
merkerF = false;
lcd.setCursor(17,2);
lcd.print("UIT");
}
void CLRPompAan(){
merkerC = true;
lcd.setCursor(17,1);
lcd.print("AAN");

}
void CLRPompUit(){
merkerC = false;
lcd.setCursor(17,1);
lcd.print("UIT ");

}

void digitalClockDisplay(){ // zonder deze regel loopt klok niet

}

void loop(){

Alarm.delay(1); // zonder deze regel worden schakelpunten niet uitgevoerd

unsigned long currentMillis = millis(); // timer : op dit moment current millis instellen

digitalClockDisplay();


dt = clock.getDateTime();

lcd.setCursor(0,0); //Start at character 4 on line 0
lcd.print(dt.hour); lcd.print(":");
lcd.setCursor(3,0); //Start at character 4 on line 0
lcd.print(dt.minute); lcd.print(":");
lcd.setCursor(6,0); //Start at character 4 on line 0
lcd.print(dt.second);
lcd.print(" ");

delay(100);

{
if (Serial.available())
{
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0)
{
// display each character to the LCD
lcd.write(Serial.read());
}
}

//read temperature and output via LCD
lcd.setCursor(0,1); //de volgende regels zetten juiste tekst op LCD
lcd.print("Tzw");
lcd.setCursor(10,1);
lcd.print("C");
lcd.setCursor(0,2);
lcd.print("Tda");
lcd.setCursor(10,2);
lcd.print("C");
lcd.setCursor(0,3);
lcd.print("Tzp");
lcd.setCursor(10,3);
lcd.print("C");
lcd.setCursor(12,1);
lcd.print("Chlr");
lcd.setCursor(12,2);
lcd.print("Filt");
lcd.setCursor(12,3);
lcd.print("Verw");

sensors.requestTemperatures(); // temperaturen ophalen en op LCD zetten
lcd.setCursor(4,1);
lcd.print(sensors.getTempCByIndex(0));
//sensors.requestTemperatures();
lcd.setCursor(4,2);
lcd.print(sensors.getTempCByIndex(1));
//sensors.requestTemperatures();
lcd.setCursor(4,3);
lcd.print(sensors.getTempCByIndex(2));

//{
if (merkerF||merkerV) { // pomp schakelen als er filteren gevraagd wordt OF verwarmen

merkerP=true;
lcd.setCursor(17,2);
lcd.print("AAN");
}
else {

merkerP=false;
lcd.setCursor(17,2);
lcd.print("UIT");
}
if (merkerC) { // relais aansturen chloorpomp(omgekeerde logica)
digitalWrite (relayC,LOW);
lcd.setCursor(17,1);
lcd.print("AAN");
}

else {

digitalWrite (relayC, HIGH); // relais afleggen chloorpomp (omgekeerde logica)
//digitalWrite(Led4, LOW);
lcd.setCursor(17,1);
lcd.print("UIT ");
}

if (sensors.getTempCByIndex(0) >29){ // verwarming gaat uit als water zwembad boven 29 graden is

merkerV=false;
lcd.setCursor(17,3);
lcd.print("UIT");

}

else if (sensors.getTempCByIndex(1) > 25){ // verwarming gaat aan als op dak temp hoger is dan 25 °C

lcd.setCursor(17,3);
lcd.print("AAN");
merkerV=true;

}

else if(currentMillis - previousMillis >= interval){ //nadraaien van verwarming om op en afspringen te voorkomen. Interval = 5 min = 300000

previousMillis = currentMillis;
merkerV=false; //weet niet dat dit true or false moet zijn
lcd.setCursor(17,3);
lcd.print("UIT");
}

if(merkerP){ //omgekeerde logica: als merker hoog is stuur uitgang laag en schakel relais in

digitalWrite (relayP,LOW);

}
else
{
digitalWrite (relayP,HIGH);
}
if(merkerV)
{
digitalWrite (relayV,LOW);
}
else
{
digitalWrite (relayV,HIGH);
}
}

}


/* ( THE END ) */

Berichten: 5
Geregistreerd: 12 Jun 2016, 15:41

Re: Arduino Mega stopt

Berichtdoor jes2983 » 12 Jun 2016, 20:18

Geachte,
een schema heb ik niet echt maar hier een foto van de kast( in bijlage) . Momenteel terug een beetje rommelig omdat ik naar dit probleem aan het zoeken ben . In het midden bovenaan zit de Arduino relaiskaart . De bovenste " relais sturen op hun beurt de relais aan die eronder staan . Naast deze 4 relais staat een schakelaar waarmee ik de aansturing van deze relais kan onderbreken .
Als ik dit doe werkt alles zoals het hoort .

Jan

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

Re: Arduino Mega stopt

Berichtdoor nicoverduin » 13 Jun 2016, 08:32

Dit klinkt sterk naar het ontbreken van een blus diode over die grote relais. Heb jij die erover zitten? Want ik zie geen foto
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4079
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Arduino Mega stopt

Berichtdoor shooter » 13 Jun 2016, 22:59

voeding van relais bord mag niet van de arduino afkomen.
paul deelen
shooter@home.nl

Berichten: 5
Geregistreerd: 12 Jun 2016, 15:41

Re: Arduino Mega stopt

Berichtdoor jes2983 » 14 Jun 2016, 19:42

Nico,
je hebt helemaal gelijk .
Ik had al een andere 12 v voeding gezet om voeding te geven aan de 4 relais om dit circuit volledig te scheiden van de Mega maar dit gaf nog steeds hetzelfde resultaat .
Ik heb nu blusdiodes over de spoelen van de 4 relais geplaatst en Mega valt niet meer uit .
Ondertussen heb ik ook de voeding terug weggenomen en werk ik terug met 1 voeding en alles blijft OK .
Ik ga nog wel eerst wat testen alvorens dit als opgelost te beschouwen .
Bedankt .

Jan

PS : foto kon ik niet toevoegen als bijlage omdat file te groot was .

Mochten jullie toch geinterreseerd zijn laat me dan weten hoe ik de foto toch kan toevoegen.

Jan

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

Re: Arduino Mega stopt

Berichtdoor nicoverduin » 14 Jun 2016, 20:05

Er zijn van die openbare sites waar je een foto op kan zetten en dan een url naar die foto zetten. Zo doe ik het tenminste.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 133
Geregistreerd: 10 Jan 2016, 16:39

Re: Arduino Mega stopt

Berichtdoor Nightmystic » 15 Jun 2016, 07:58

Zelf gebruik ik dropbox, dan zet je het in de cloud en link je er vanaf hier naartoe.

Je maakt dan wel een account aan en hebt het programma op je pc draaien. Dus als je dropbox verder nergens anders voor gebruikt of weinig hier post is het niet je beste optie

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

Re: Arduino Mega stopt

Berichtdoor nicoverduin » 15 Jun 2016, 08:24

Ik heb een eigen domein met 15G ruimte dus daar ff een foldertje gemaakt :)
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 14 gasten