watergeef systeem probleempje met timer

Arduino specifieke Software
Berichten: 4
Geregistreerd: 05 Jun 2017, 19:09

watergeef systeem probleempje met timer

Berichtdoor RvdH » 05 Jun 2017, 19:25

Hallo allen!

Ik heb geen groene vingers, maar wel zwarte. Dus bedacht ik dat watergeven best geautomatiseerd kon worden.

Ik heb 6 plantenbakken, in elke plantenbak zit een sensor en een druppelboog. Elke bak wordt voorzien van water door een eigen klep.
Ik heb een arduino uno met een 8 relais unit waar er 6 van worden gebruikt.
Het idee is dat om de bv 20 minuten de sensoren kijken wat de waarde is en vervolgens de arduino aansporen om de waterklep te openen.

Het geheel werkt wel, maar ik heb een probleem met de tijdvertraging. Dit is overigens mijn eerste projectje, maar het smaakt naar meer. Ik heb al een setup gemaakt met de delayfunctie en eentje met de millis functie. Bij de delay functie gaat het systeem op een gegeven moment flippen en blijft hij als een gek de kleppen aansturen. Bij de millis functie lijkt het alsof hij halverwege vastloopt. Ik zie dat er 2x water gegeven wordt bij de bakken die te droog staan, maar dan wordt de zin "water ..." plots afgebroken en gaat hij weer wachten tot de volgende ronde.

Wie kan mij in de juiste richting duwen?

note; jullie zien een led functie staan bij de int . Deze leds gebruik ik niet en de functie heb ik uit de loop gehaald.

Code: Alles selecteren
int sensorPin1 = A0;
int outPin1 = 13;
int sensorValue1 = 0;
int sensorPin2 = A1;
int outPin2 = 12;
int sensorValue2 = 0;
int sensorPin3 = A2;
int outPin3 = 11;
int sensorValue3 = 0;
int sensorPin4 = A3;
int outPin4 = 10;
int sensorValue4 = 0;
int sensorPin5 = A4;
int outPin5 = 9;
int sensorValue5 = 0;
int sensorPin6 = A5;
int outPin6 = 8;
int sensorValue6 = 0;
int outPinled1 = 7;
int outPinled2 = 6;
int outPinled3 = 5;
int outPinled4 = 4;
int outPinled5 = 3;
int outPinled6 = 2;

long previousMillis = 0;
long interval = 60000;


void setup() {
  // outpins zijn pins die relais aansturen. oupinled wordt niet gebruikt.
  Serial.begin(9600);
pinMode (outPin1, OUTPUT);
pinMode (outPin2, OUTPUT);
pinMode (outPin3, OUTPUT);
pinMode (outPin4, OUTPUT);
pinMode (outPin5, OUTPUT);
pinMode (outPin6, OUTPUT);
pinMode (outPinled1, OUTPUT);
pinMode (outPinled2, OUTPUT);
pinMode (outPinled3, OUTPUT);
pinMode (outPinled4, OUTPUT);
pinMode (outPinled5, OUTPUT);
pinMode (outPinled6, OUTPUT);
}

void loop(){
  unsigned long currentMillis = millis();
   if (currentMillis - previousMillis > interval)
   {
    previousMillis = currentMillis;
   
// meten van de waardes die bak heeft.
  sensorValue1 = analogRead(sensorPin1);
  Serial.print("waarde bruin: ");
  Serial.print(sensorValue1);
  Serial.println("");
  sensorValue2 = analogRead(sensorPin2);
  Serial.print("waarde paars: ");
  Serial.print(sensorValue2);
  Serial.println("");
  sensorValue3 = analogRead(sensorPin3);
  Serial.print("waarde oranje: ");
  Serial.print(sensorValue3);
  Serial.println("");
  sensorValue4 = analogRead(sensorPin4);
  Serial.print("waarde geel: ");
  Serial.print(sensorValue4);
  Serial.println("");
  sensorValue5 = analogRead(sensorPin5);
  Serial.print("waarde blauw: ");
  Serial.print(sensorValue5);
  Serial.println("");
  sensorValue6 = analogRead(sensorPin6);
  Serial.print("waarde groen: ");
  Serial.print(sensorValue6);
  Serial.println("");

//elke bak heeft een eigen kleurcode
  // bruin
  if (sensorValue1 > 300) {
    digitalWrite(outPin1, HIGH);
    Serial.print("water bruin: ");
    Serial.println("");
    delay(2000);
    digitalWrite(outPin1, LOW);   
  }
  // paars
    if (sensorValue2 > 270) {
    digitalWrite(outPin2, HIGH);
    Serial.print("water paars: ");
    Serial.println("");
    delay(2000);
    digitalWrite(outPin2, LOW);
  }
  // oranje
    if (sensorValue3 > 200) {
    digitalWrite(outPin3, HIGH);
    Serial.print("water oranje: ");
    Serial.println("");
    delay(2000);
    digitalWrite(outPin3, LOW);   
  }
  // geel
    if (sensorValue4 > 180) {
    digitalWrite(outPin4, HIGH);
    Serial.print("water geel: ");
    Serial.println("");
    delay(2000);
    digitalWrite(outPin4, LOW);   
  }
  // blauw
    if (sensorValue5 > 155) {
    digitalWrite(outPin5, HIGH);
    Serial.print("water blauw: ");
    Serial.println("");
    delay(2000);
    digitalWrite(outPin5, LOW);   
  }
  // groen
    if (sensorValue6 > 250) {
    digitalWrite(outPin6, HIGH);
    Serial.print("water groen: ");
    Serial.println("");
    delay(2000);
    digitalWrite(outPin6, LOW);   
  }
  }
}

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: watergeef systeem probleempje met timer

Berichtdoor Koepel » 05 Jun 2017, 19:54

Heb je ook visvingers ? https://www.youtube.com/watch?v=P3gtNKRRVjA

Er is weinig op de sketch aan te merken. Misschien gaat de Arduino resetten.

Maak de variabelen die met millis() hebben te maken "unsigned long".
Wanneer je zo'n variabele een waarde geeft, dan kun 'UL' gebruiken om aan te geven dat het een unsigned long is.
Code: Alles selecteren
unsigned long previousMillis = 0;
unsigned long interval = 60000UL;


Je kunt in setup() een tekst schrijven, dat weet je of de Arduino misschien per ongeluk gaat resetten.
Code: Alles selecteren
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.begin("Mijn super watergeef systeem sketch gaat van start. covfefe!");
  ...


Zijn de getallen van de sensors een beetje normaal ? Misschien dat daar storing in zit.

Berichten: 4
Geregistreerd: 05 Jun 2017, 19:09

Re: watergeef systeem probleempje met timer

Berichtdoor RvdH » 06 Jun 2017, 19:33

goede input. Hij blijft inderdaad resetten. Hoe kan ik dat beëindigen?

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: watergeef systeem probleempje met timer

Berichtdoor Gij Kieken » 06 Jun 2017, 20:00

De voeding van het geheel nazien en opsplitsen kan misschien soelaas bieden.

Berichten: 4
Geregistreerd: 05 Jun 2017, 19:09

Re: watergeef systeem probleempje met timer

Berichtdoor RvdH » 07 Jun 2017, 19:47

hi, de voeding leek mij met 12v 15a wel voldoende, ik heb echter een alleenstaande voeding voor de arduino gepakt. Helaas blijft hij hetzelfde doen. Ik vrees dus voor een nieuwe uno.

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

Re: watergeef systeem probleempje met timer

Berichtdoor shooter » 07 Jun 2017, 19:57

de relaisvoeding moet direct van de 12V gehaald worden, eventueel via een 7805 en zet een haakje om (current-previous)
je gebruikt long en unsigned door elkaar, allemaal UL maken. (en dat gaat mis na 25 minuten
paul deelen
shooter@home.nl

Berichten: 4
Geregistreerd: 05 Jun 2017, 19:09

Re: watergeef systeem probleempje met timer

Berichtdoor RvdH » 07 Jun 2017, 22:09

Of heb ik gewoon een overflow van het geheugen door die serial.print opdrachten tussen de pinout high opdrachten? Een uno heeft niet zo heel veel geheugen.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: watergeef systeem probleempje met timer

Berichtdoor Koepel » 07 Jun 2017, 23:24

Het is waarschijnlijk de voeding. Dat kunnen veel dingen zijn. Kun je vertellen hoe het aangesloten is ? Kun je er misschien een schets van maken, of een foto van maken.

Wanneer er bijvoorbeeld een GND verbinding niet goed is (bijvoorbeeld wel aangesloten maar op een verkeerde manier) dan kan een Arduino board zomaar gaan resetten. Of de voltage regulator knijpt de stroom af omdat die te warm wordt met 12V. Of er dendert een spanningspuls door je draden. Lange draden kunnen als een spoel gaan werken. Zo zijn er nog heel veel meer dingen die mis kunnen gaan.

Het belangrijkste is om geen grote stromen door het Arduino board te laten gaan, en alle GND's met elkaar verbinden, maar dan op zo'n manier dat de stroom die terug komt van kleppen of motors niet de Arduino kan verstoren.

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

Re: watergeef systeem probleempje met timer

Berichtdoor shooter » 08 Jun 2017, 17:25

ja een overflow zou zeker kunnen want je stuurt nogal wat tekst snel achter elkaar.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: watergeef systeem probleempje met timer

Berichtdoor Gij Kieken » 09 Jun 2017, 19:59

Gooi alle vermogen vreters ervan af en vervang ze door een led (met weerstand) en en kijk of je code nu loopt.

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 16 gasten