Probleme beim Sketch für Bewässerung

Hallo zusammen,

ich schreibe hier über mein erstes Arduinoprojekt überhaupt also wenn etwas nicht so sein sollte wie üblich beißt mir nicht den Kopf ab :wink: Ich habe selbst grundlegende Erfahrung in Programmierung mit C++ und R und dachte mir ich mache mich mit einem überarbeiteten Code für meine Bewässerung selbstständig.

Zum Projekt: Ich will mein Gewächshaus im Garten ohne Strom mittels Solarzelle, Akku und Regler betreiben. Ich verwende hierzu eine Pumpe aus dem Wohnmobilbereich, mit der ich eine 1/2" Ringleitung mit drehenden Sprinklern betreibe. Vllt erweitere ich das System auch noch auf ein Beet aber erstmal zu meinem Problem.

Zu Beginn lief auch alles ganz ok die Ansteuerung der Pumpe erfolgt mittels Arduino Nano Nachbau mit ATmega 328P welcher Daten von einem mit Urethan beschichteten Capacitiven Soil v1.2 Sensor erhält und mittels “Timer” ein ständiges bewässern wenn die Feuchtigkeit unter einen bestimmten Grenzwert fällt.
Den Timer habe ich in der Schleife eingebaut wie man später in meinem Code sehen kann.

Das Problem schon zu Beginn war, dass ich den Arduino zusätzlich zum Strom vom Spannungswandler LM 2596s welchen ich in meinem Projekt verwendet habe, mit dem USB Anschluss an den Laderegler anschließen musste, da mein Code sonst nicht vernünftig lief.

Habe ein bisschen nachgelesen und das mag vllt. an dem “niedrigen” Eingangsstrom am Arduino gelegen haben. Leider ist mir in der Elektronik etwas kaputt gegangen weswegen ich das Projekt nochmal neu aufgebaut habe. Diesmal versorgt der Spannungswandler nur das Display den Feuchtesensor und das Relais mit 5V und der Arduino läuft über usb am neuen Spannungswandler.

Leider habe ich in der Zwischenzeit am Code gebastelt, da ich Probleme mit dem Feuchtesensor hatte und das System solange so umgestellt hab das es nur über den Timer lief.

Mein Problem bei der ganzen Sache ist aber nun folgendes:
Der Arduino bewässert das Gewächshaus gar nicht mehr. Wenn ich ihm Strom aus beiden Quellen gebe (usb+Spannungswandler) schaltet das Relais nach dem starten und ein paar Sekunden direkt ab. Aber auch nicht wieder an. Folglich verdursten die Pflanzen. Wenn ich den Arduino nur über eine Quelle Speise läuft die Pumpe dauerhaft und zieht meine Tonne trocken was aber auch nicht so sein sollte wenn man sich den Code durchliest.

Ich habe die Befürchtung das ich am Code etwas verändert habe auf das ich jetzt aufs verrecken nicht komme ich stehe quasi wie der Ochs vorm Berg.
Daher dachte ich es wäre vielleicht hilfreich wenn einer von euch Experten sich meine Konstruktion mal ansieht wenn ihr Zeit und Lust habt :wink:

Hier mal eine Übersicht über meine Konstruktion bzw im Anhang:

![Bew-sserung-Plan](http://<a href=)

Und hier mein Sketch:

int sensor_pin = A1;
int output_value;

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

unsigned long startMillis;
unsigned long LONG_DELAY_MS = 43200000;   //43200000; 12h // 28.800.000; 8h Pause
unsigned int WATERING_TIME = 480000;      //480000;   8min //5 Minuten gießen 300000

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

void setup() {
pinMode(7, OUTPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 
display.display();
delay(2000);
  display.clearDisplay();
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.setTextColor(WHITE);
  display.setCursor(5, 10);
  display.setTextSize(2);
  display.println("Startet");
  display.display();
  delay(5000);
  display.clearDisplay();
}
void loop() {
output_value = analogRead(sensor_pin);
output_value = map(output_value, 860, 20, 0, 420);
display.setCursor(15, 0);
display.setTextSize(1);
display.println("Giessomat");

display.setCursor(50, 15);
display.setTextSize(2);
display.print(output_value);
display.println(" % ");
display.display();
delay(1000);
display.clearDisplay();

if  (output_value <50 && (millis()- startMillis) > LONG_DELAY_MS) 

{
    digitalWrite(7, LOW);
    delay(WATERING_TIME);
    startMillis = millis();
  }
  else
  {
    digitalWrite(7, HIGH); //
  }
}

Edit: Danke an Tommy56 und Ja 7 ist der D7 Pin für das Relais

Ich weiß nicht, womit Du die Codebox gemacht hast, aber Codetags sind es nicht (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).

Eine Mischung aus millis() und delay ist meist ein ungünstiger Weg.
Ich vermute, die MagigNumber 7 ist der RelaisPin, evtl solltest Du den zum besseren Verständnis auch als solchen bezeichnen.

Deine Stromversorgungsprobleme kann ich nicht nachvollziehen.

Gruß Tommy

Ein gleichzeitiges Anschließen von USB und 5 Volt solltest du vermeiden. Je nach Schaltung deines Nano können da Ausgleichsströme entstehen, die auch Leiterbahnen zerstören können.

Und wie Tommy schon schrieb, deine Kombi mit millis und delay ist ganz schlecht und kann zu merkwürdigen Fehlern führen.

Ein Arduino IO-pin kann maximal 40mA strom liefern. Ein Relais das mit 5V Spulenspannung betrieben wird und mittlere Größe hat wird da in den meisten Fällen mehr Strom ziehen. Da macht es Sinn einen Transistor der den Strom schalten dazwischen zu schalten.

Was hat denn das Relais für einen Spulenwiderstand? Habe mal schnell bei Reichelt nachgeschaut 5V Relais Spulenwiderstand 65 bis 167 Ohm Das macht dann an 5V 5V / 65 Ohm = 76 mA ==> IO-pin kaputt 5V / 167 Ohm = 29 mA finde ich schon hart an der Grenze

Wenn man eine Relais-Spule abschaltet entstehen Spannungspitzen die durch eine Freilaufdiode abgefangen werden müssen sonst geht die Elektronik die das Relais ansteuert kaputt.

viele Grüße Stefan

(deleted)

StefanL38: Ein Arduino IO-pin kann maximal 40mA strom liefern. Ein Relais das mit 5V Spulenspannung betrieben wird und mittlere Größe hat wird da in den meisten Fällen mehr Strom ziehen. Da macht es Sinn einen Transistor der den Strom schalten dazwischen zu schalten.

Was hat denn das Relais für einen Spulenwiderstand? Habe mal schnell bei Reichelt nachgeschaut 5V Relais Spulenwiderstand 65 bis 167 Ohm Das macht dann an 5V 5V / 65 Ohm = 76 mA ==> IO-pin kaputt 5V / 167 Ohm = 29 mA finde ich schon hart an der Grenze

Wenn man eine Relais-Spule abschaltet entstehen Spannungspitzen die durch eine Freilaufdiode abgefangen werden müssen sonst geht die Elektronik die das Relais ansteuert kaputt.

viele Grüße Stefan

Bei dem Relais verwende ich ein KF-301 1-Relais 5V Modul Low-Level-Trigger für Arduino das ist mit 30V 10A DC angegeben aber ist die 30V Seite nicht unabhängig von der schaltenden Seite oder hab ich da was missverstanden? Bin kein Elektriker in dem Sinne mehr so als Hobby xD

Von Reich ist die Pumpe entschuldige das war mein Fehler mit Reichelt und Reich. Reich PowerJet Tauchpumpe

Ich dachte mir schon das die gleichzeitige Versorgung über USB und Pin nicht so sein sollte, aber der Sketch lief nur wenn ich eben beides angeschlossen habe. Keine Ahnung warum. Jaaa habe schon die Thematik mit millis und delay gelesen und auch die passenden Beiträge und Diskussion dazu. Komme ich also doch nicht um eine RTC herum um meine 8h zu pausieren wenn ich den Sketch ohne Delay ausführen will oder stehe ich nur gerade auf dem millis-Schlauch xD

Dein KF-301 1-Relais 5V passt und kann direkt vom Arduino angesteuert werden.
Denke daran, das ist Low-aktiv, was soviel wie “zieht bei LOW an und fällt bei HIGH ab” heißt.
Eine Freilaufdiode ist schon vorhanden.

nagulander:
Ich dachte mir schon das die gleichzeitige Versorgung über USB und Pin nicht so sein sollte, aber der Sketch lief nur wenn ich eben beides angeschlossen habe. Keine Ahnung warum…

Dann solltest du mal genau beschreiben, was passiert, wenn du die eine oder die andere Spannung anschließt.
Evtl. gibt es dann ja eine Erklärung.

Peter-CAD-HST: Der "original" Arduino NANO trennt beide Spannungquellen zuverlässig mit einer Schottky-Diode.

Es ist aber kein originaler. Also nix mit zuverlässig.

HotSystems:
Dann solltest du mal genau beschreiben, was passiert, wenn du die eine oder die andere Spannung anschließt.
Evtl. gibt es dann ja eine Erklärung.

Also habs nochmal genau ausprobiert.

Wenn beides angeschlossen ist, USB und PIN Versorgung, läuft das Skript.
Hatte nen Problem mit dem Bodensensor der hatte wohl immer was falsches gemeldet. Hab noch einen mit Urethan beschichtet mal sehen ob der besser hält. Muss ich nur neu kalibrieren :confused:

Wenn ich nur Strom am PIN anliegen habe läuft die Pumpe im Dauerbetrieb bis die Tonne leer ist ohne das das Skript eingreift. Das Relais bleibt geschaltet.

Bei Strom nur über den USB Anschluss hingegen bleibt die Pumpe aus. Das Relais ebenfalls,

nagulander: Also habs nochmal genau ausprobiert.

Wenn beides angeschlossen ist, USB und PIN Versorgung, läuft das Skript. Hatte nen Problem mit dem Bodensensor der hatte wohl immer was falsches gemeldet. Hab noch einen mit Urethan beschichtet mal sehen ob der besser hält. Muss ich nur neu kalibrieren :/

Wenn ich nur Strom am PIN anliegen habe läuft die Pumpe im Dauerbetrieb bis die Tonne leer ist ohne das das Skript eingreift. Das Relais bleibt geschaltet.

Bei Strom nur über den USB Anschluss hingegen bleibt die Pumpe aus. Das Relais ebenfalls,

Dann hast du ein Problem mit der Versorgung. Der Strom aus dem Netzteil scheint nicht zu reichen.

Was für ein Netzteil hast du dran ? Spannung und Strom ? Hast du die Spannung mal im Betrieb gemessen ?

Ich rate mal, dass du das LM2596-Netzteil auf 5V eingestellt hast, und am Nano am VIN angeschlossen hast. Da brauchst du aber >= 6.5V

Wenn das direkt zuviel für dein Relais ist, nimm die 5V für das Relais aus dem 5V Pin und hoffe, dass der Spannungsregler am Nano nicht zu heiß wird, wenn das Relais aktiv ist.

Erstaunlich, dass USB allein nicht für das Relais reicht. Da solltest du am 5V Pin auch 4.x V messen können (selbst wenn das Relais angezogen hat).

Ein Sketch ist übrigens kein Skript. :wink:

Warum keinen originalen Sensor verwenden? Da gibt es auch ein shield dafür, welches funktioniert. https://www.ramser-elektro.at/der-gies-o-shield-fuer-den-arduino/

Die Chinaböller haben einen entscheidenden Nachteil: Sie sind nicht beschichtet! Also verotten Sie genauso, wie die resistiv funktionierenden Sensoren.

Weil sein Sensor beschichtet ist und das sicher nicht das Problem ist. (Jedenfalls noch nicht / in diesem Thread)

Reklame für das eigene Zeug sollte schon halbwegs relevant sein, sonst macht man sich eher unbeliebt, lieber Fred.

Hallo nagulander,

warum beantwortest du nicht unsere Fragen ?

Hallo Dieter,

ich versuche alle Fragen immer direkt und zügig zu beantworten, hatte aber einen stressigen Tag und komme erst jetzt zu den neuen.

Zur Stromversorgung verwende ich ein LM2596S welchen ich wie schon vermutet auf 5V runter geregelt habe um auch die anderen Komponenten wie den Sensor Display und Relais damit zu versorgen. Ich hatte mir auch schon gedacht, dass die Spannung nicht ausreichen würde, danke dir aber noch michaelx für deinen Hinweis.

Habe mich jetzt dazu entschlossen den Arduino einfach über ein zweites LM2596S zu versorgen dann kann ich ihn ja einfach über z.B. 6,5V betreiben ohne das es Auswirkungen auf die anderen Komponenten hat.

Kann aber erst in ein paar Tagen testen ob dann alles läuft wie gewünscht.

Und von dem Gies-o-shield hatte ich schon gehört aber wollte auch eigene Erfahrungen sammeln. Lustig das du aber billige Chinaböller erwähnst lieber Fred; die teuren Böller werden übrigens ebenfalls in China produziert und sind meist auch besser als Produkte aus unseren Landen :D

Danke jedenfalls schon mal für die Hilfe ich werde auf jeden Fall berichten ob es dann jetzt doch noch kurz vor Herbstsaison mit der Bewässerung klappt. Aber ist ja auch ein Projekt das mehr als ein Jahr halten soll.

LG

nagulander: ..... Zur Stromversorgung verwende ich ein LM2596S welchen ich wie schon vermutet auf 5V runter geregelt habe um auch die anderen Komponenten wie den Sensor Display und Relais damit zu versorgen. Ich hatte mir auch schon gedacht, dass die Spannung nicht ausreichen würde, danke dir aber noch michaelx für deinen Hinweis.

Habe mich jetzt dazu entschlossen den Arduino einfach über ein zweites LM2596S zu versorgen dann kann ich ihn ja einfach über z.B. 6,5V betreiben ohne das es Auswirkungen auf die anderen Komponenten hat.

Du kannst doch den Spannungsregler LM2596S auf 5Volt stellen und damit den "Arduino" an den 5Volt-Pin anschließen, sowie alle anderen Module die auch 5V brauchen, damit betreiben. Wozu einen zweiten Regler ?

damit den "Arduino" an den 5Volt-Pin anschließen

Dann aber nicht gemeinsam mit USB! Gibt Leute, die bauen sich ein spezielles USB Kabel mit durchtrennter + Leitung.

Halte ich für riskant, weil man bei Bedarf froh darüber ist, dass USB so einfach mit jedem Kabel mit passendem Stecker geht (Das ist der Grund für den Erfolg von USB).

Danke michael_x, das ist eine sehr wichtige Ergänzung.