Relais schaltet sofort wenn arduino mit Strom versorgt wird

Moin liebes Forum,

ich verzweifle grade an einer vermutlich einfachen Funktion. Ich habe zwar einen passenden Beitrag gefunden aber es will einfach nicht funktionieren. Nach drei Tagen versuche ich es mal hier. Bitte habt Nachsicht mit mir, mein letzter Beitrag in einem Forum dürfte einige Jahre zurückliegen.

Ich möchte einfach nur ein Relais schalten. Im Code befindet sich ein Ultraschall-Sensor. Bei einer bestimmten Entfernung in cm soll es schalten. Es funktioniert sogar sehr gut mit dem (mittlerweile) eingebauten Servo und auch mit dem Relais. Leider schaltet es beim einschalten Stromversorgung einmal sofort. Das möchte ich nicht, es soll nur dann schalten, wenn die Entfernung stimmt.

#include <Servo.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#define Steuer_PIN 8 //==> Pin für Relais-Steuerung

LiquidCrystal_I2C lcd(0x27,16,2);  // Set the LCD address to 0x27 for a 16 chars and 2 line display

int trigPin =12 ; // TRIG 
int echoPin =11 ;  // ECHO 

Servo servo;


float duration_us, distance_cm;

void setup() {
  Serial.begin (9600);
  pinMode(Steuer_PIN, OUTPUT);
  digitalWrite(Steuer_PIN,HIGH);
  lcd.init();               // Initialize the lcd
  lcd.backlight();          // Open the backlight 
  pinMode(trigPin, OUTPUT); // Config trigger pin to output mode
  pinMode(echoPin, INPUT);  // Config echo pin to input mode
  servo.attach(9);
}

void loop() {
  // Generate 10-microsecond pulse to TRIG pin
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Measure duration of pulse from ECHO pin
  duration_us = pulseIn(echoPin, HIGH);

  // Calculate the distance
  distance_cm = 0.017 * duration_us;

  lcd.clear();
  lcd.setCursor(0, 0); // Start to print at the first row & first line
  lcd.print("Abstand: ");
  lcd.setCursor(0, 1); // Print at the first row & second line
  lcd.print(distance_cm);
  lcd.print(" cm");

 if (distance_cm <= 100 || distance_cm >=120){

servo.write(90);
digitalWrite(Steuer_PIN,LOW);
delay(500);


}
else {
servo.write(0);
digitalWrite(Steuer_PIN,HIGH);


}
if (distance_cm > 400 || distance_cm <= 0){
Serial.println("zu weit !!");
}
else {
Serial.print(distance_cm);
Serial.println(" cm");
}
delay(500);
}

Wer kann mich erlösen und mir helfen? Muss ich um einen Pin zu schalten eine andere Library verwenden?

Vielen Dank und Gruß

Ralf

Drehe mal die Reihenfolge dieser beiden Zeilen um.

Gruß Tommy

Danke für die Antwort Tommy,

ich habe es umgedreht aber ohne Erfolg.

Der Steuer_Pin schaltet sofort beim Anschluß der Stromversorgung. Dabei spielt es keine Rolle, ob ich ein Relais oder ein MOSFET Modul verwende. Die Kontroll LED signalisiert immer kurz einen Schaltvorgang. Bei Verwendung des Servo ist alles gut. Nehme ich Abstand auf z.B. 1,10m dreht der Servo. Ändere ich den Abstand, dreht er zurück.

Ralf

Was für ein Relais (bitte Link posten) verwendest du ?

Was für Board nimmst du?

Poste mal ein Bild vom Relais und einen Schaltplan.

Oh,

jetzt muß ich vielleicht aufpassen das ich alles richtig wiedergebe und nichts falsch erzähle. Das Board wird im Geräte Manager als CH340 angezeigt. Ich lade den Code mit Board: "Arduino Nano" Prozessor ATmega328P (Old Bootloader) hoch. Das angesteuerte Gerät ist im Moment (nach meinen Tests) ein MOSFET

Ein Schaltplan wäre bei dem Quatsch mit dem angeschlossenen Servo vielleicht schon fast zu peinlich. Sollte ja nur ein Test sein.

Das Ding ist ein von mir gebauter Geocache, den ich schon einige Zeit mit dem Servo betreibe. Jetzt möchte ich statt des Servo einen Magnetschalter 5V einbauen. Lacht mich bitte nicht aus aber die Verkabelung wird nachdem alles funktioniert wieder richtig gemacht.

Ralf

Zur allgemeinen Belustigung hier mal ein Bild vom fertigen Projekt. Es kam jedenfalls ganz gut an in der Vergangenheit :wink:

1 Like

Und was genau ist das für ein Mosfet ?
Du musst uns schon komplette Infos geben, wenn wir helfen sollen.

Ups....sorry. Den Mosfet habe ich leider übersehen.
Und bedenke dabei, der Mosfet wird meist anders angesteuert a,s ein fertiges Relaismodul, das wir immer noch nicht kennen.
Und es ist kein LogicLevel Mosfet. Da gibt es schnell Probleme.

Und vorsicht bei deinem Aufbau gibt es schnell einen Kurzschluss und dann ist alles hin.

Owaja man kann nichts erkennen und Relais sehe auch nicht.
Versuche mal mit einem PWM Pin, Pin 8 ist kein PWM Pin, die starten normaler weise mit Low.

Mach mal dem Steuerpin auf LOW. Mit HIGH ist es klar das er einschaltet

Damit schaltet der durch im Setup mach mal

digitalWrite(Steuer_PIN,LOW);

Und GND braucht er auch

Das war nur ein Versuch für ein LOW-aktives Relais. Da Du nicht geschrieben hast, was Du benutzt, ist Hilfe schwer. Wenn es HIGH-aktiv ist, dann eben auf LOW setzen oder genauer beschreiben, was Du schalten willst.

Gruß Tommy

Wenn ich das hier beenden soll, schreibt einfach einen dezenten Hinweis. :wink: Mit meinen geschriebenen Erklärungen kann man vielleicht nicht unbedingt etwas anfangen, das ist selbst mir klar.

@wwerner Habe LOW und HIGH bereits versucht. Bin ja echt kein Profi aber bevor ich hier frage versuche ich natürlich erstmal die banalen Dinge. Danke trotzdem für den Tipp
@fony Ja, ich sagte ja, das die Verkabelung im Moment peinlich ist aber nach so vielen Versuchen sieht es doch bei Vielen irgendwann so aus. GND ist klar.
@HotSystems Danke für den Hinweis mit dem Kurzschluß :wink: WAGO Klemmen sind wahre Alleskönner. Mir ist noch kein Kabel raus gerutscht. Relais habe ich hier gekauft

Mittlerweile weiß ich natürlich auch nicht mehr was ich noch alles schon probiert habe, daher sind Eure Hinweise auf jeden Fall alle Zielführend. Was mich wundert, ist die Tatsache, daß es mit allen angeschlossenen Geräten das selbe Verhalten gibt, außer mit dem Servo. Der wird ja aber über eine Library angesteuert, ist dort vielleicht der Unterschied zu suchen?

Hi,

von elektronischen Unfug kann man ja gerne halten was man will, aber hier würde vermutlich ein Schaltplan in erster Linie Dir selber helfen :wink:

Gruß André

Nicht wen du den MOSFET mit LOW im Setup schaltest das ist ein N MOSFET was wird mit High eingeschaltet.
Wenn es um Relais Module geht sind auch welsche was mit High einschalten, das muss man testen wen kein Datenblatt dabei ist.
Natürlich muss man ganzen Sketch anpassen, zu dem was man nutzt :wink:

Hast du einen Pull Down am MOSFET - Gate?

Nach dem Foto vom Amaz. sollte der drauf sein

... man man man, da gibt sich jemand die Mühe die Lösung zu schreiben und ich habe es erst nicht gesehen.

@fony Das war die Lösung. Bin per Remote auf dem PC, an dem das angeschlossen ist und habe das MOSFET jetzt mit LOW geschaltet und hoch geladen. Bin in den Keller gerannt und siehe da ... so soll es sein.

Vielen Dank an ALLE !! die meine Unwissenheit mit viel Geduld ertragen haben. Manchmal ist es banal und man sollte (wenn auch nur mit Bleistift und Zettel) einen Schaltplan erstellen. Ich verspreche die Verkabelung "Kurzschlussfrei" zu bauen und benutze trotzdem die WAGO Klemmen.

Es ist damit zu rechnen, daß ich diese Community nochmal irgendwann bemühen werde. Tolle Community und sehr freundliche Menschen hier! Top

Das mag durchaus sein, nur ich sehe in deinem Aufbau keine WAGO Klemmen.
Sind die Kabel etwa schon rausgerutscht ? :wink:

Das gebe ich gerne zurück. Speziell wenn alle Fragen der Helfer zeitnah vom Fragesteller beantwortet werden, dann kann man auch sehr gut helfen.
Und das macht allen Helfern Spaß. Leider ist das nicht immer so.

1 Like