Al een tijdje ben ik bezig met een irrigatiesysteem om een aantal plantjes tijdens de vakantieperiode in leven te houden. Ik gebruik hiervoor een Arduino Nano die een pompje via een relaismodule aanstuurt op pin D12 en een vlotter (schakelaar) heeft verbonden op pin D2 (interrupt). Het idee is dat de Arduino eens in de zoveel tijd de pomp aanzet en vervolgens wacht tot de volgende bewaterbeurt. De vlotter moet een interrupt genereren wanneer de watervoorraad op is en kan zodoende het systeem uitzetten, een alert genereren, o.i.d. (pomp gaat kapot als ie doorblijft gaan zonder water).
De twee delen afzonderlijk werken prima: de schakeling zonder vlotterdeel werkt prima en ook werkt de schakeling goed wanneer alleen het vlotterdeel is aangesloten, dus zonder relais/pomp gedeelte.
Wanneer alles is aangesloten staat het relais aan en gaat de pomp aan, maar blijft aan wat er ook gebeurt. Er komt dan ook geen seriële activiteit meer vanuit de Arduino.
Het geheel werkt op 5V. Ik maak gebruik van deze: http://nl.aliexpress.com/...-Trigger/32615769150.html relaismodule. De vlotter: ene kant aan 5V, andere kant naar D2 en 10K naar Gnd. Gnd's zijn met elkaar verbonden.
Iemand enig idee wat er niet klopt?
Edit: Ik zie dat het ook zonder het vlotterdeel het programma niet werkt. Als ik het interrupt deel in het programma uitschakel werkt het programma correct, maar dan zonder de interrupt natuurlijk. Ik zal de gehele schakeling opbouwen en in het programma het interrupt deel uitschakelen. Kijken wat er dan gebeurt.
De twee delen afzonderlijk werken prima: de schakeling zonder vlotterdeel werkt prima en ook werkt de schakeling goed wanneer alleen het vlotterdeel is aangesloten, dus zonder relais/pomp gedeelte.
Wanneer alles is aangesloten staat het relais aan en gaat de pomp aan, maar blijft aan wat er ook gebeurt. Er komt dan ook geen seriële activiteit meer vanuit de Arduino.
Het geheel werkt op 5V. Ik maak gebruik van deze: http://nl.aliexpress.com/...-Trigger/32615769150.html relaismodule. De vlotter: ene kant aan 5V, andere kant naar D2 en 10K naar Gnd. Gnd's zijn met elkaar verbonden.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
| /* Informatie */ const int PompPin = 12; // Pomp pin // int PompState = LOW; int ledPin = 13; int pinInterrupt = 2; // volatile int state = LOW; unsigned long previousMillis = 0; long interval = 500; // aanpassen void setup() { pinMode(ledPin, OUTPUT); pinMode(PompPin, OUTPUT); // Interrupt pinMode(2, INPUT); digitalWrite(2, LOW); attachInterrupt(0, tankleeg, HIGH); Serial.begin(9600); Serial.println("---------------------------------------"); Serial.println("Irrigatieprogramma"); } void loop() { unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval){ previousMillis = currentMillis; bewateren(); } Serial.println ("We zijn aan het wachten"); digitalWrite(ledPin, LOW); digitalWrite(PompPin, LOW); delay(2000); } void bewateren(){ Serial.println ("We gaan bewateren"); digitalWrite(PompPin, HIGH); // pomp aan digitalWrite(ledPin, HIGH); // led aan delay(5000); Serial.println ("Klaar"); digitalWrite(PompPin, LOW); // pomp uit digitalWrite(ledPin, LOW); // led uit } void tankleeg(){ Serial.println ("Oh jee!!! De tank is leeg!!!"); Serial.println ("Stop het programma!!!"); digitalWrite(PompPin, LOW); // pomp uit delay(1000); while(1){ digitalWrite(PompPin, LOW); // pomp uit } //state = !state; } |
Iemand enig idee wat er niet klopt?
Edit: Ik zie dat het ook zonder het vlotterdeel het programma niet werkt. Als ik het interrupt deel in het programma uitschakel werkt het programma correct, maar dan zonder de interrupt natuurlijk. Ik zal de gehele schakeling opbouwen en in het programma het interrupt deel uitschakelen. Kijken wat er dan gebeurt.
[ Voor 5% gewijzigd door DurkVell op 15-06-2016 18:04 ]