4 Relay Module aansluiten op externe voeding
15 berichten
• Pagina 2 van 2 • 1, 2
Re: 4 Relay Module aansluiten op externe voeding
dit door de invers logica van de relais module.
Wilt u dit iets meer toelichten?
In een andere test van mij kwam ik het volgende resultaat tegen...… als ik LOW typte de uitkomst HIGH was en andersom.
Advertisement
- Gij Kieken
- Berichten: 631
- Geregistreerd: 15 Nov 2015, 11:54
Re: 4 Relay Module aansluiten op externe voeding
Toon eens de sketch die je gebruikte.
Bij die relais moduletjes moet je de ingang (bv IN1 ) laag maken om de relais aan te sturen.
Dit is omdat de ene kant van de relais vast aan de +5volt hangt, dus moet je de andere kant naar beneden trekken (gnd niveau) digitalWrite (Pin, LOW).
Default staan alle ingangen als pinMode ingang als je dan een High er naar toe schrijft schakelt dit de interne PullUp weerstand(~20K) in.
Pas nadien zeg je dat het uitgang moet zijn pinMode(pin ,OUTPUT).
Bij die relais moduletjes moet je de ingang (bv IN1 ) laag maken om de relais aan te sturen.
Dit is omdat de ene kant van de relais vast aan de +5volt hangt, dus moet je de andere kant naar beneden trekken (gnd niveau) digitalWrite (Pin, LOW).
Default staan alle ingangen als pinMode ingang als je dan een High er naar toe schrijft schakelt dit de interne PullUp weerstand(~20K) in.
Pas nadien zeg je dat het uitgang moet zijn pinMode(pin ,OUTPUT).
Re: 4 Relay Module aansluiten op externe voeding
Dit is de versie aangepast naar de eerder genoemde inzichten van YouTube,
nog geen kans gezien om een test opstelling te maken.
Helemaal onder aan een uitsnede van de originele code.
// Automatisch Kippenluik versie 28012019
int Luikstatus = 0;
int motorPin1 = 3;
int motorPin2 = 4;
int ledState5 = 5;
int ledState6 = 6;
int ledState7 = 7;
int licht = (analogRead(A0));
void setup() {
Serial.begin(9600);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
pinMode(A0, INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(ledState5, OUTPUT);
pinMode(ledState6, OUTPUT);
pinMode(ledState7, OUTPUT);
}
void openen() {
int licht = (analogRead(A0));
digitalWrite(ledState5,HIGH);
digitalWrite(motorPin1,HIGH);
Serial.println("openen is aan");
Serial.println("lichtsterkte =");
Serial.println(licht);
Serial.println("Luikstatus");
Luikstatus = 1;
Serial.println(Luikstatus);
delay(5000);
digitalWrite(ledState5, LOW);
digitalWrite(motorPin1, LOW);
meten();
}
void sluiten(){
int licht = (analogRead(A0));
digitalWrite(ledState6,HIGH);
digitalWrite(motorPin2, HIGH);
Serial.println("Sluiten is aan");
Serial.println("lichtsterkte =");
Serial.println(licht);
Serial.println("Luikstatus");
Luikstatus = 0;
Serial.println(Luikstatus);
delay(5000);
digitalWrite(ledState6,LOW);
digitalWrite(motorPin2,LOW);
meten();
}
void meten(){
int licht = (analogRead(A0));
digitalWrite(ledState7,HIGH);
digitalWrite(motorPin1,LOW);
digitalWrite(motorPin2,LOW);
Serial.println("lichtsterkte =");
Serial.println(licht);
delay(5000);
if
(licht <100 && Luikstatus == 1){Serial.println("Luik is open");}
if
(licht <100 && Luikstatus == 0){Serial.println("Luik openen"); openen();}
if
(licht >100 && Luikstatus == 0){Serial.println("Luik is dicht");}
if
(licht >100 && Luikstatus == 1){Serial.println("Luik sluiten"); sluiten();}
}
void loop(){
meten();}
Hier een stukje uit het origineel waar ik het contra heb geschreven ofwel HIGH werkt als LOW enzv.
Werkte overigens wel.
digitalWrite(ledState5,HIGH);
digitalWrite(motorPin1,LOW); >>>>>Code moet dus eigenlijk HIGH zijn<<<<<<
Serial.println("openen is aan");
Serial.println("lichtsterkte =");
Serial.println(licht);
Serial.println("Luikstatus");
Luikstatus = 1;
Serial.println(Luikstatus);
delay(5000);
digitalWrite(ledState5, LOW);
digitalWrite(motorPin1,HIGH); >>>>>>>Code moet dus eigenlijk LOW zijn<<<<<<<<<
meten();
}
nog geen kans gezien om een test opstelling te maken.
Helemaal onder aan een uitsnede van de originele code.
// Automatisch Kippenluik versie 28012019
int Luikstatus = 0;
int motorPin1 = 3;
int motorPin2 = 4;
int ledState5 = 5;
int ledState6 = 6;
int ledState7 = 7;
int licht = (analogRead(A0));
void setup() {
Serial.begin(9600);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
pinMode(A0, INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(ledState5, OUTPUT);
pinMode(ledState6, OUTPUT);
pinMode(ledState7, OUTPUT);
}
void openen() {
int licht = (analogRead(A0));
digitalWrite(ledState5,HIGH);
digitalWrite(motorPin1,HIGH);
Serial.println("openen is aan");
Serial.println("lichtsterkte =");
Serial.println(licht);
Serial.println("Luikstatus");
Luikstatus = 1;
Serial.println(Luikstatus);
delay(5000);
digitalWrite(ledState5, LOW);
digitalWrite(motorPin1, LOW);
meten();
}
void sluiten(){
int licht = (analogRead(A0));
digitalWrite(ledState6,HIGH);
digitalWrite(motorPin2, HIGH);
Serial.println("Sluiten is aan");
Serial.println("lichtsterkte =");
Serial.println(licht);
Serial.println("Luikstatus");
Luikstatus = 0;
Serial.println(Luikstatus);
delay(5000);
digitalWrite(ledState6,LOW);
digitalWrite(motorPin2,LOW);
meten();
}
void meten(){
int licht = (analogRead(A0));
digitalWrite(ledState7,HIGH);
digitalWrite(motorPin1,LOW);
digitalWrite(motorPin2,LOW);
Serial.println("lichtsterkte =");
Serial.println(licht);
delay(5000);
if
(licht <100 && Luikstatus == 1){Serial.println("Luik is open");}
if
(licht <100 && Luikstatus == 0){Serial.println("Luik openen"); openen();}
if
(licht >100 && Luikstatus == 0){Serial.println("Luik is dicht");}
if
(licht >100 && Luikstatus == 1){Serial.println("Luik sluiten"); sluiten();}
}
void loop(){
meten();}
Hier een stukje uit het origineel waar ik het contra heb geschreven ofwel HIGH werkt als LOW enzv.
Werkte overigens wel.
digitalWrite(ledState5,HIGH);
digitalWrite(motorPin1,LOW); >>>>>Code moet dus eigenlijk HIGH zijn<<<<<<
Serial.println("openen is aan");
Serial.println("lichtsterkte =");
Serial.println(licht);
Serial.println("Luikstatus");
Luikstatus = 1;
Serial.println(Luikstatus);
delay(5000);
digitalWrite(ledState5, LOW);
digitalWrite(motorPin1,HIGH); >>>>>>>Code moet dus eigenlijk LOW zijn<<<<<<<<<
meten();
}
Re: 4 Relay Module aansluiten op externe voeding
Even een foto van mijn test opstelling
Werkt als de commando's low en high contra invoer.
Zal het probleem op het software forum zetten.
Werkt als de commando's low en high contra invoer.
Zal het probleem op het software forum zetten.
Re: 4 Relay Module aansluiten op externe voeding
dat LOW en HIGH is geen software fout maar een eigenschap van het relaybordje.De voeding van de relais komt direct van de voeding af en de nullen gaan naar de ingangspinnen Dat heet Sinken van een uitgang. Dat heeft te maken met het feit dat je dan allerlei voedingsspanningen kunt gebruiken. Vroeger was het zelfs algemeen gebruik om te sinken tot TTL ineens kwam met totempole schakelingen.
Nu nog steeds gebruik ik de ULN2xxx serie om dat te doen. Dan hoef ik nooit te kijken waar de voeding vandaan komt, als ik de ground maar aan elkaar knoop. Zo kun je relais, maar ook motoren simpel houden.
Advies is om define aan LOW en uit HIGH te definieren.
Nu nog steeds gebruik ik de ULN2xxx serie om dat te doen. Dan hoef ik nooit te kijken waar de voeding vandaan komt, als ik de ground maar aan elkaar knoop. Zo kun je relais, maar ook motoren simpel houden.
Advies is om define aan LOW en uit HIGH te definieren.
paul deelen
shooter@home.nl
shooter@home.nl
15 berichten
• Pagina 2 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 11 gasten