Hallo,
ik ben Rob 20 jaar al een tijdje af en toe bezig met arduino
maar niet echt een prof
heb al wel een aantal leuke projectjes gemaakt
nu stuit ik op een probleem.
ik ben voor een groter project bezig om van een aantal HC-SR04 sensoren een digitaal uitgangs signaal te maken om deze door te sturen naar mijn plc.
ik heb er voor gekozen om dat met de sr04 sensoren en een arduino mega te doen omdat ultrasone sensoren die ik zo plug and play kan aansluiten op een plc een klein fortuin kosten
het plan is als volgt ik heb 2 groepjes van 3 sensoren als een van deze sensoren binnen een waarde van 5 tot 50cm vallen dan zal een relais hoog worden met deze relais zal ik dus de ingangs spanning voor de plc schakelen
elk groepje sensoren heeft dus een eigen relais
nu had ik alles werkend met deze code :
#define trig1 22 //trigger sensor 1
#define trig2 24 //trigger sensor 2
#define trig3 26 //trigger sensor 3
#define trig4 28 //trigger sensor 4
#define trig5 30 //trigger sensor 5
#define trig6 32 //trigger sensor 6
#define echo1 23 //echo sensor 1
#define echo2 25 //echo sensor 2
#define echo3 27 //echo sensor 3
#define echo4 29 //echo sensor 4
#define echo5 31 //echo sensor 5
#define echo6 33 //echo sensor 6
int Relais1 = 34;
int Relais2 = 35;
int maxDistance = 50;
int minDistance = 5;
long microSecond1, cmDistance1;
long microSecond2, cmDistance2;
long microSecond3, cmDistance3;
long microSecond4, cmDistance4;
long microSecond5, cmDistance5;
long microSecond6, cmDistance6;
void setup() {
Serial.begin (115200);
pinMode(trig1, OUTPUT);
pinMode(trig2, OUTPUT);
pinMode(trig3, OUTPUT);
pinMode(trig4, OUTPUT);
pinMode(trig5, OUTPUT);
pinMode(trig6, OUTPUT);
pinMode(echo1, INPUT);
pinMode(echo2, INPUT);
pinMode(echo3, INPUT);
pinMode(echo4, INPUT);
pinMode(echo5, INPUT);
pinMode(echo6, INPUT);
pinMode(Relais1, OUTPUT);
pinMode(Relais2, OUTPUT);
}
void loop() {
digitalWrite(trig1, LOW);
delayMicroseconds(2);
digitalWrite(trig1, HIGH);
delayMicroseconds(10);
digitalWrite(trig1, LOW);
microSecond1 = pulseIn(echo1, HIGH);
cmDistance1 = microSecond1/58.3;
delay(10);
digitalWrite(trig2, LOW);
delayMicroseconds(2);
digitalWrite(trig2, HIGH);
delayMicroseconds(10);
digitalWrite(trig2, LOW);
microSecond2 = pulseIn(echo2, HIGH);
cmDistance2 = microSecond2/58.3;
delay(10);
digitalWrite(trig3, LOW);
delayMicroseconds(2);
digitalWrite(trig3, HIGH);
delayMicroseconds(10);
digitalWrite(trig3, LOW);
microSecond3 = pulseIn(echo3, HIGH);
cmDistance3 = microSecond3/58.3;
delay(10);
digitalWrite(trig4, LOW);
delayMicroseconds(2);
digitalWrite(trig4, HIGH);
delayMicroseconds(10);
digitalWrite(trig4, LOW);
microSecond4 = pulseIn(echo4, HIGH);
cmDistance4 = microSecond4/58.3;
delay(10);
digitalWrite(trig5, LOW);
delayMicroseconds(2);
digitalWrite(trig5, HIGH);
delayMicroseconds(10);
digitalWrite(trig5, LOW);
microSecond5 = pulseIn(echo5, HIGH);
cmDistance5 = microSecond5/58.3;
delay(10);
digitalWrite(trig6, LOW);
delayMicroseconds(2);
digitalWrite(trig6, HIGH);
delayMicroseconds(10);
digitalWrite(trig6, LOW);
microSecond6 = pulseIn(echo6, HIGH);
cmDistance6 = microSecond6/58.3;
delay(10);
// detectie voorzijde met sensor 1,2,3
if (cmDistance1 >= maxDistance, cmDistance2 >= maxDistance ,cmDistance3 >= maxDistance)
{
 digitalWrite(Relais1, LOW);
}
else if (cmDistance1 >= minDistance, cmDistance2 >= minDistance, cmDistance3 >= minDistance)
{
 digitalWrite(Relais1, HIGH);
 Serial.println("Detectie Voorzijde");
}
else {
digitalWrite(Relais1, LOW);
}
// detectie achterzijde met sensor 4,5,6
if (cmDistance4>= maxDistance, cmDistance5 >= maxDistance ,cmDistance6 >= maxDistance)
{
 digitalWrite(Relais2, LOW);
}
else if (cmDistance6 >= minDistance, cmDistance5 >= minDistance, cmDistance6 >= minDistance)
{
 digitalWrite(Relais2, HIGH);
 Serial.println("Detectie Achterzijde");
}
else {
digitalWrite(Relais2, LOW);
}
 delay(10);
}
alleen op magische wijze werkt het plots niet meer:(
ik ben bekend met de newping library
alleen daar mee kreeg ik het niet voor elkaar om de sensoren binnen een bepaalde waarde te laten schakelen
eerst ging ik er van uit dat mijn arduino of sensoren waren overleden maar na het testen van beide blijkt dat niet het geval (getest met de newping library)
wie kan mij helpen ??
Groet Rob