Messung hängt sich auf sobald ein Motor dazu schaltet

Guten Abend, ich versuche mich zurzeit in der Programmierwelt und habe mir als erstes Projekt eine Bewässerungsanlage vorgenommen.
Problem ist folgendes:
Der Sensor gibt mir solange richtige Werte aus, bis er den Wert von 350 unterschreitet und der Motor dreht. Ab den Moment dreht der Motor kontinuierlich weiter und der Sensor gibt keine Werte mehr aus.
Wenn ich die Feuchtigkeit manuell runter stelle, dreht der Motor weiter und der Sensor verhält sich so, als hätte er sich beim unterschreiten des Wertes (350) aufgehängt.

Zur Veranschaulichung habe ich bei Thinkercad die Schaltung nachgebaut mit den Teilen, die ich auch in echt verwende, anbei ist auch der Code geschrieben.

Eventuell habt ihr ein oder mehrere Lösungsvorschläge.
Mfg Würfelstein


int Messung = A0;
int FeuchtigkeitHoch = 276;
int FeuchtigkeitNiedrig = 573;
int Feuchtigkeit = 0;
int Prozentwert = 0;
int Pumpe = 8;

void setup() {

Serial.begin(230400);
pinMode(Messung,INPUT);
pinMode(Pumpe,OUTPUT);

}

void loop() {
Feuchtigkeit = analogRead(Messung);
delay(1000);
Serial.println("Feuchtigkeit: ");
Serial.print(Feuchtigkeit);
Prozentwert= map(Feuchtigkeit, FeuchtigkeitNiedrig, FeuchtigkeitHoch, 0, 100);
Serial.print("/");
Serial.print(Prozentwert);
Serial.println("%");
delay(1000);

while(Feuchtigkeit < 350)
{
  digitalWrite(Pumpe,HIGH);
  }
if(Feuchtigkeit >350)
{
  digitalWrite(Pumpe,LOW);
  }
}

Spulen des Motors haben nur wenige Ohms Widerstand, für einen schwachen Netzteil es ist wie Kurzschluss. Am besten, du sollst Versorgung von Elektronik und Leistungselektrik trennen

Würde es dann reichen wenn ich vor dem Motor ein Widerstand einlege?

Die Baudraten sind übrigens gleich (im Code als auch im seriellen Monitor) hab es auch schon mit verschiedenen ausprobiert.

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
mfg ein Moderator.

1 Like

Nein. Der 5-V-Ausgang des Arduino kann keinen Motor antreiben.

@wuerfelstein
wir sehen nicht wie du den NPN Transistor beschalten hast. Aber der Basiswiderstand fehlt auf alle Fälle.

Code als Grafik zu posten ist nicht wirklich klug. Den kann man nicht in die IDE laden und ausprobieren.

Auch fehlt am Motor (Pumpe) die zwingend notwendige Freilaufdiode.
Ohne die kann der Transistor sowie der Uno sterben, mindestens aber abstürzen.

Erstmal danke für die Ratschläge.
Habe jetzt eine Diode zwischen geschaltet und den Motor mit einer externen Batterie verbunden.
Leider ist immer noch das selbe Problem.
Ist der Feuchtigkeitswert über 350, so erhalte ich alle 100 mS einen Messwert aber geht die Feuchtigkeit unter 350 hängt sich die Messung auf und der Motor läuft im Dauerbetrieb, auch wenn ich die den Feuchtigkeitswert über 350 stelle.

Hier noch mal Bild von der Schaltung mit der Diode und der externen Spannungsquelle.

so beschaltet man nicht eine Freilaufdiode

Zeichne bitte neu.
Bau um.
Zeige Bilder nach dem Umbau sollte es noch nicht funktionieren.

Wieso zwischen geschaltet.
Google mal nach Freilaufdiode.
Auch der Transistor ist falsch beschaltet.
Wenn er durchschaltet, wird er heiß.
Sieh dir mal die Grundlagen an.

Hab die Diode und den Transistor umgesteckt.
Die Batterie lass ich raus, da der Motor auch mit 5 Volt läuft.

Anbei die neue Schaltung:

Du hast dir die Grundlagen noch nicht angeschaut.
Der Transistor ist immer noch falsch beschaltet.
Den Motor musst du in den Kollektorzweig einbauen, damit das sicher funktioniert.

Vielen dank erstmal.
Habe den Motor zum Transistor umgesteckt und das sieht jetzt folgendermaßen aus:
Screenshot 2023-07-07 114337

Aber das Problem das sich der Sensor aufhängt sobald der Feuchtigkeitswert von 350 unterschritten wird und der Motorläuft besteht immer noch :confused:

Sorry, aber sieh dir doch bitte mal die Grundlagen an.
Das hier ist noch falsch.

Hab den Code oben nochmal eingefügt, hoffentlich richtig...
und @HotSystems, ich hab mir die Grundlagen durchgelesen und der Transistor müsste so doch richtig angeschlossen sein, oder bin ich jetzt komplett verwirrt?

Dann hast du die Grundlagen nicht richtig angesehen oder verstanden.
Bei einem NPN-Transistor gehört der Emitter auf GND und der Motor einseitig an den Kollektor und die andere Seite auf Plus Spannung.

1 Like

Aber nicht verstanden!

Low Side Switch: NPN, N-Chanel
High Side Switch: PNP, P-Chanel

So in der Art?

Aber so hängt sich die Messung des Sensors immer noch auf, sobald der Feuchtigkeitswert 350 unterschreitet, messt der Sensor nicht mehr und der Motor läuft permanent.

Freilaufdiode fehlt!
Und totale Versorgungsüberlastung.

Dabei wurde schon gesagt, dass der Arduino die Pumpe nicht versorgen kann, und dass eine Diode sinnvoll ist.

Zumindest ist die Hardware teilweise ok.
Aber gelernt hast du immer noch nichts.
Wo ist diie Freilaufdiode ?

Tausche im Sketch mal das while durch ein if.

1 Like