Relais standaard bekrachtigd

Hardware geleverd door Arduino
Berichten: 7
Geregistreerd: 01 Nov 2020, 16:44

Relais standaard bekrachtigd

Berichtdoor coene369 » 01 Nov 2020, 16:53

Nieuw op het forum en nieuw met het gebruik van arduino.

Ik gebruik een arduino nano
Ik heb de volgende opstelling

Keypad 3x4
Lcd i2c
Relais

Als ik onderstaand code gebruik word het relais standaard bekrachtigd. Dit is Vlgs mij niet de bedoeling. De arduino nano blijft na een bepaalde tijd vasthangen. Ik weet even niet hoe ik dit kan veranderen

Code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>

#define Password_Length 8

int signalPin = 12;

char Data[Password_Length];
char Master[Password_Length] = "123A456";
byte data_count = 0, master_count = 0;
bool Pass_is_good;
char customKey;

const byte ROWS = 4;
const byte COLS = 4;

char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};

Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

LiquidCrystal_I2C lcd(0x21, 16, 2);

void setup(){
lcd.init();
lcd.backlight();
pinMode(signalPin, OUTPUT);
}

void loop(){

lcd.setCursor(0,0);
lcd.print("Enter Password:");

customKey = customKeypad.getKey();
if (customKey){
Data[data_count] = customKey;
lcd.setCursor(data_count,1);
lcd.print(Data[data_count]);
data_count++;
}

if(data_count == Password_Length-1){
lcd.clear();

if(!strcmp(Data, Master)){
lcd.print("Correct");
digitalWrite(signalPin, HIGH);
delay(5000);
digitalWrite(signalPin, LOW);
}
else{
lcd.print("Incorrect");
delay(1000);
}

lcd.clear();
clearData();
}
}

void clearData(){
while(data_count !=0){
Data[data_count--] = 0;
}
return;
}

Alvast bedankt voor de hulp

Advertisement

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: Relais standaard bekrachtigd

Berichtdoor Gij Kieken » 01 Nov 2020, 20:27

Het hangt er een beetje vanaf welke relais (module) je gebruikt.
Vele worden inverse logic gestuurd,wat zoveel betekent als, om de relais te bekrachtigen moet je sig. aan gnd koppelen.
Als je dit verandert in je sketch werkt het net andersom.

if(!strcmp(Data, Master)){
lcd.print("Correct");
digitalWrite(signalPin, LOW); //deze regel
delay(5000);
digitalWrite(signalPin, HIGH); //en deze regel
}

Berichten: 7
Geregistreerd: 01 Nov 2020, 16:44

Re: Relais standaard bekrachtigd

Berichtdoor coene369 » 01 Nov 2020, 21:43

Het relais word dus bekrachtigd als de pin low is.

Moet ik de pin dan niet eerst high maken. Zodat relais niet bekrachtigd is.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Relais standaard bekrachtigd

Berichtdoor Koepel » 02 Nov 2020, 11:10

Jazeker, en dat kan.

Het is toegestaan om een pin alvast 'HIGH' te zetten, nog voordat het als uitgang wordt gezet.
Als het Arduino board stroom krijgt, dan staat alles als hoogohmige ingang.
Als je meteen een pinMode() doet, dan wordt die pin een OUTPUT en wordt LOW, want dat is de default.
Als je echter eerst met een digitalWrite() die pin alvast klaar zet voor HIGH, en dan pinMode(), dan gaat de pin meteen van hoogohmig naar HIGH.

Code: Alles selecteren
void setup()
{
  digitalWrite( signalPin, HIGH);   // preset to HIGH
  pinMode( signalPin, OUTPUT);   // make it OUTPUT and use the preset value
}


Het is iets uitgebreider dan wat ik hierboven schrijf.
Wanneer een digitalWrite() wordt gedaan op een ingang, dan wordt de interne pullup weerstand 'aan' of 'uit' gezet.
Dus de ingang was eerst INPUT en hoogohmig. Die pin alvast klaar zetten voor HIGH met digitalWrite() zet de pullup weerstand aan, dan wordt de pin zachtjes HIGH. Dan de pinMode() en dan wordt het een sterke HIGH uitgang.

Berichten: 7
Geregistreerd: 01 Nov 2020, 16:44

Re: Relais standaard bekrachtigd

Berichtdoor coene369 » 02 Nov 2020, 12:59

Kan het kwaad dat het relais 99,9% van de tijd bekrachtigd is? Zo niet kan ik het zo laten. Hoe zit het dan met stroom verbruik.
Ps. Bovenstaande verhaal is duidelijk bedankt hiervoor

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Relais standaard bekrachtigd

Berichtdoor Koepel » 03 Nov 2020, 03:36

Dat geeft niet.
Je hebt waarschijnlijk apparaten in huis met een relais dat altijd aan staat.
Als het relais een omschakelcontact heeft, dan kun je misschien dat andere contact gebruiken.

De stroom zul je moeten meten.

De Arduino 5V pin is waarschijnlijk te zwak om een relais van stroom te voorzien. Die 5V pin is voor sensors en schakelaars en zo.

Terug naar Arduino hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 11 gasten