Hi
Mijn project bestaat uit het op en neer laten gaan van een platform met behulp van een lier (van 230V).
De aansturing van de lier door de arduino heb ik gerealiseerd via een 5V relais, dat een 24V relais laat schakelen, dat uiteindelijk 230V aan de lier geeft. Voor beveiliging tegen inductie-piekspanningen heb ik 'snubbers' opgenomen in het circuit. (op advies van het forum van CircuitOnline.)
Wanneer het platform op of neer gaat, controleert het programma met reflectiesensors waar het platform zicht bevindt.
Overigens, de GND van alle voedingen in mijn project, heb ik gekoppeld.
Om te bewaken dat de lier bijtijds ophoudt met hijsen of laten zakken, maak ik gebruik van interrupts op de pinnen 2 en 3. De ISR's, een voor omhoog en een voor omlaag, stoppen de lier.
Aan de pinnen 2 en 3 zijn mechanische schakelaars gekoppeld : met COM verbonden met de pin, NO verbonden met 5V, en NC verbonden met GND. Zowel de 5V en de GND zijn afkomstig van de arduino.
Wanneer ik de 230V voeding niet gebruik, dwz wanneer de lier dus geen stroom kan krijgen, dan kan ik zien dat de de 5V relais voor de lier correct geactiveerd worden; en wanneer ik dan met de hand de mechanische schakelaars indruk, dan worden de ISR's correct ingeschakeld (te zien aan de tijdelijk (!) print-opdracht in de ISR).
Wanneer ik de 230V voeding van de lier weer inschakel, dan worden de ISR's voortdurend geactiveerd en beletten zo de uitvoering van de code uit de loop.
Bijzonder daarbij is dat beide ISR's worden geactiveerd (blijkens de tijdelijke printopdracht).
Met mijn beperkte electronica-kennis begrijp ik er helemaal niets van.
Moet ik ergens spannings-filters / dempers gebruiken ????
Aanvulling 4 maart : wanneer ik een drukknop op de arduino gebruik in plaats van de schakelaar, dan is er niets aan de hand; dwz niet voortdurend ISR's.
Het verschil tussen drukknop en schakelaar is dat de drukknop op 10 cm van de arduino zit en de schakelaar op 1 of 1,5 meter. Ik denk daarom dat het probleem wordt veroorzaakt doordat de signaaldraad ergens spanning van krijgt (overspraak ??).
Ter informatie :
-
Wat is mijn Project : zie : https://www.youtube.com/watch?v=roFmkF6wo6c)
-
Een foto van het schema :
(( zelf zie ik nu geen schema; doe ik de upload dan wel goed ????) -
Code van mijn programma, beperkt tot de interrupts :
Excuses : code zonder code tags (waar staan die dingen ? ik zie alleen een 'knop'maar die doet niets
// test lier zondag 3 maart alleen code voor de interrupts
int seinOmlaag = 0;
int seinOmhoog = 0;
int pinOmlaag = A1;
int pinOmhoog = A0;
int pinStopSchakelaarOmlaag = 2; // EB-einde bereik-schakelaar voor omlaag
int pinStopSchakelaarOmhoog = 3; // EB-schakelaar voor omhoog
void setup() {
Serial.begin(9600);
pinMode (pinOmhoog, OUTPUT);
pinMode (pinOmlaag, OUTPUT);
pinMode (pinStopSchakelaarOmlaag, INPUT); // stop omlaag = einde bereik omlaag
pinMode (pinStopSchakelaarOmhoog, INPUT); // stop omhoog = einde bereik omhoog
// beginsitatie voor lier : stop
digitalWrite (pinOmlaag, LOW);
digitalWrite (pinOmhoog, LOW);
// interrupt voor Einde Bereik-schakelaars;
attachInterrupt(digitalPinToInterrupt(pinStopSchakelaarOmhoog), EBOmhoog, RISING);
attachInterrupt(digitalPinToInterrupt(pinStopSchakelaarOmlaag), EBOmlaag, RISING);
} // end setup
> void loop() {
> // lees knop die aangeeft of de lier omhoog of omlaag moet gaan
> // ...
> if (seinOmhoog == 1) digitalWrite (pinOmhoog, HIGH);
> if (seinOmhoog == 0) digitalWrite (pinOmhoog, LOW);
>
> if (seinOmlaagg == 1) digitalWrite (pinOmlaag, HIGH);
> if (seinOmlaagg == 0) digitalWrite (pinOmlaag, LOW);
> // code voor andere aktiviteiten
> // ...
> } //end loop
> // twee ISR's :
> void EBOmhoog() {digitalWrite (pinOmhoog, LOW); }
> void EBOmlaag() {digitalWrite (pinOmlaag, LOW); }
Gebruik code tags om code te formatteren voor het forum : prima maar hoe ????
