8-relay board + DC voeding

Arduino shields
Berichten: 19
Geregistreerd: 25 Apr 2016, 16:02

8-relay board + DC voeding

Berichtdoor HighTechTuinier1986 » 29 Apr 2016, 15:38

Hallo allemaal,

Ik heb het volgende probleem met mijn relais-bordje en misschien mijn arduino MEGA.

nu valt me dit op, aan de USB, werkt de relaisbord precies volgens mijn code. Dus 1 relais per keer gaat open staan.

maar als de arduino aan de adapter is aangesloten dan in plaats van dat 1 relais aanslaat, gaan ze allemaal open staan.

De adapter output volgens de label is:
12v DC, 1000mA

Wat kan ik het beste doen?

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: 8-relay board + DC voeding

Berichtdoor shooter » 29 Apr 2016, 17:09

bij de usb is het 5 Voklt en jij sluit ineens 12 V aan das niet slim.
geef schema van relaisbordje en hoe je het aangesloten hebt.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: 8-relay board + DC voeding

Berichtdoor nicoverduin » 29 Apr 2016, 18:52

Ik ga er ff vanuit dat ie niet zo onzorgvuldig is dat hij de 12V op de USB gooit maar op de adapter ingang. Niet dat dat nu echt gaat helpen. Je moet namelijk NOOIT relais aan de een Arduino hangen aan de 5V. Het is de goden verzoeken. De Mega, Uno en welk ander type hebben een lineaire regulator. Goedkoop maar zeker uit de tijd. Die lineaire regulators moeten namelijk de (voedingsspanning - 5V) * stroom als warmte wegwerken en daar kunnen ze slecht tegen. Als ze allemaal openstaan is het ofwel dat er ergens een reset plaatsvindt doordat die relais ongecontroleerd zijn voordat de IO poorten zijn geinitialiseerd. Maar laten we eerst maar ff EN het aansluitschema EN de sketch hier zien. Nu is het alleen maar gissen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 19
Geregistreerd: 25 Apr 2016, 16:02

Re: 8-relay board + DC voeding

Berichtdoor HighTechTuinier1986 » 29 Apr 2016, 20:38

nicoverduin schreef:Ik ga er ff vanuit dat ie niet zo onzorgvuldig is dat hij de 12V op de USB gooit maar op de adapter ingang. Niet dat dat nu echt gaat helpen. Je moet namelijk NOOIT relais aan de een Arduino hangen aan de 5V. Het is de goden verzoeken. De Mega, Uno en welk ander type hebben een lineaire regulator. Goedkoop maar zeker uit de tijd. Die lineaire regulators moeten namelijk de (voedingsspanning - 5V) * stroom als warmte wegwerken en daar kunnen ze slecht tegen. Als ze allemaal openstaan is het ofwel dat er ergens een reset plaatsvindt doordat die relais ongecontroleerd zijn voordat de IO poorten zijn geinitialiseerd. Maar laten we eerst maar ff EN het aansluitschema EN de sketch hier zien. Nu is het alleen maar gissen.


Dat klopt, ik gebruik de adapter ingang op de arduino. Ik ben tot nu toe niet echt duidelijk geweest lees ik uit de reacties van jouw en shooter.

Ik heb dus een sensor-shield op de Mega gezet, en de relaisbord aangesloten op de digitale uitgangen en de GND en VCC aangesloten op de G en V van digitale uitgang 0(nul).

dit zijn de onderdelen:
relais bord: http://www.banggood.com/5V-8-Channel-Re ... 74110.html
sensor shield: http://www.banggood.com/UNO-R3-Sensor-S ... 54753.html

cpp code
const int analogInPin0 = A0;
const int analogInPin1 = A1;
const int analogInPin2 = A2;
//const int analogInPin3 = A3;
//const int analogInPin4 = A4;
//const int analogInPin5 = A5;

#define relay0 2
#define relay1 3
#define relay2 4
//#define relay3 5
//#define relay4 6
//#define relay5 7

const int motorPinPWM = 8;
const int motorPin1 = 9;
const int motorPin2 = 10;

//input sensors
//1023 = droog
//686 = trigger pomp
//350 = kraan water

//any value above this should trigger the pump
const int triggerValue = 690;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(relay0, OUTPUT);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
// pinMode(relay3, OUTPUT);
// pinMode(relay4, OUTPUT);
// pinMode(relay5, OUTPUT);

//motorPins
pinMode(motorPinPWM, OUTPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);

testMotor();
resetValves();
}

void divider(){
Serial.println("================================");
}

void testMotor(){
Serial.println("testing motor");

//open valves
digitalWrite(relay0,LOW);
digitalWrite(relay1,LOW);
digitalWrite(relay2,LOW);

digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
analogWrite(motorPinPWM, 100);

delay(5000);

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
analogWrite(motorPinPWM, 100);

delay(5000);

digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
analogWrite(motorPinPWM, 0);

//close valves
digitalWrite(relay0,HIGH);
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
Serial.println("test completed");
}

void resetValves(){
digitalWrite(relay0,HIGH);
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
//digitalWrite(relay3,HIGH);
//digitalWrite(relay4,HIGH);
//digitalWrite(relay5,HIGH);
Serial.println("valves have been reset.");
divider();
}

void sensor1(){
// print the results to the serial monitor:
Serial.print("1 sensor = ");
Serial.print(analogRead(analogInPin0));
Serial.println();

if (analogRead(analogInPin0) > 680){
Serial.println("entering watering cycle");
digitalWrite(relay0, LOW);
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);

Serial.println("engaging motor");

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
analogWrite(motorPinPWM, 80);

//runtime of motor
delay(5000);

digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
analogWrite(motorPinPWM, 80);

Serial.println("disengaging motor");

divider();
}
}

void sensor2(){
// print the results to the serial monitor:
Serial.print("2 sensor = ");
Serial.print(analogRead(analogInPin1));
Serial.println();

if (analogRead(analogInPin1) > 680){
Serial.println("entering watering cycle");
digitalWrite(relay0, HIGH);
digitalWrite(relay1, LOW);
digitalWrite(relay2, HIGH);

Serial.println("engaging motor");

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
analogWrite(motorPinPWM, 80);

//runtime of motor
delay(5000);

digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
analogWrite(motorPinPWM, 80);

Serial.println("disengaging motor");

divider();
}
}

void sensor3(){
// print the results to the serial monitor:
Serial.print("3 sensor = ");
Serial.print(analogRead(analogInPin2));
Serial.println();

if (analogRead(analogInPin2) > 680){
Serial.println("entering watering cycle");
digitalWrite(relay0, HIGH);
digitalWrite(relay1, HIGH);
digitalWrite(relay2, LOW);

Serial.println("engaging motor");

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
analogWrite(motorPinPWM, 80);

//runtime of motor
delay(5000);

digitalWrite(motorPin1 , LOW);
digitalWrite(motorPin2, LOW);
analogWrite(motorPinPWM, 80);

Serial.println("disengaging motor");

divider();
}
}

void loop() {

delay(500);
sensor1();
delay(500);
sensor2();
delay(500);
sensor3();
resetValves();
delay(9000);
}

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: 8-relay board + DC voeding

Berichtdoor shooter » 29 Apr 2016, 21:46

dat gaat niet goed, je zult voor het relaisbord een aparte 5 V voeding moeten regelen en de jumper op het relaisbordje ook extern zetten, de relais trekken veel te veel stroom om uit een Mega te halen, zoals ook nico zegt natuurlijk.
geef toch maar een schets van hoe je het aangesloten hebt en hoe je denkt dat het zou moeten, mag in fritzing maar ook in iets anders hoor,
bijv qelectrotech.
paul deelen
shooter@home.nl

Berichten: 19
Geregistreerd: 25 Apr 2016, 16:02

Re: 8-relay board + DC voeding

Berichtdoor HighTechTuinier1986 » 07 Mei 2016, 15:20

shooter schreef:dat gaat niet goed, je zult voor het relaisbord een aparte 5 V voeding moeten regelen en de jumper op het relaisbordje ook extern zetten, de relais trekken veel te veel stroom om uit een Mega te halen, zoals ook nico zegt natuurlijk.
geef toch maar een schets van hoe je het aangesloten hebt en hoe je denkt dat het zou moeten, mag in fritzing maar ook in iets anders hoor,
bijv qelectrotech.


Ik laat ff de huidige configuratie voor wat het is, want het werkt duidelijk niet zoals het moet. Maar ik denk dat op basis van wat jij en Paul zegt dat het zo moet. de 2e adapter heb ik wel liggen.
Bijlagen
hoe het moet.png
hoe het moet.png (14.82 KiB) 9393 keer bekeken

Berichten: 19
Geregistreerd: 25 Apr 2016, 16:02

Re: 8-relay board + DC voeding

Berichtdoor HighTechTuinier1986 » 07 Mei 2016, 23:19

Hij werkt, de tip van shooter heeft geholpen. en hij doet precies wat hij moet doen. ik ga waarschijnlijk nu de code wat opschonen en efficiënter maken.

bedankt voor de hulp!

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: 8-relay board + DC voeding

Berichtdoor shooter » 08 Mei 2016, 16:43

ik mis in je schema nog wel een draadje van gnd relais naar gnd mega.
en zet je 12Volt wat lager bijv 9 of 7.5 Volt dan krijgt de mega niet zoveel warmte te verstoken.
paul deelen
shooter@home.nl

Berichten: 18
Geregistreerd: 07 Jul 2013, 19:04

Re: 8-relay board + DC voeding

Berichtdoor williamdv » 21 Mei 2016, 12:42

nu valt bij ook het kwartje, thanks

idd je arduino op 9v zetten 12 is net te veel 12v is echt de max boven grens.
ik heb de zelfde setup, maar dan een 12v relais bordje.

Terug naar Shields

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten