Analoog minitrix wissel aansturen met Arduino

Vraag maar raak!

Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

Ik zoek hulp bij het aansturen van een minitrix wissel met een Arduino.
Vaak zie je dat het met een servo gedaan word maar ik wil de wissel zelf aansturen over zijn drie draden.
Wie kan mij helpen met de layout en het progamma.

Marcel


Groeten Marcel V
Gebruikersavatar

fenix
Berichten: 574
Lid geworden op: 04 apr 2019 14:26

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door fenix »

Hallo Marcel,

Er zijn 2 mogelijkheden voor
1e: de wisselstroom gebruiken van de trafo en dan met een enkelvoudig relais via de arduino een pulsje naar de schakeldraad van de wissel. per wissel heb je zo 2 relais nodig. in de arduino code kun je dan met bv het 'delay()'commando de pulslengte wel netjes regelen. Nadeel: je hebt per wissels 2 pinnetjes van de arduino nodig.

2e: kijken of de eindafschakeling van de wisselspoelen nog goed werkt en een relais gebruiken dat een 'NC' en een 'NO' aansluiting heeft naast de 'common' aansluiting. Een schakeldraad van het wissel op de NC en de andere schakeldraad op de NO aansluiting van het relais. De common van het relais en de common draad van de wisselspoelen sluit je dan aan op de voeding van de trafo. Zo heb je per wissel maar 1 pinnentje van de arduino nodig. Pinnetje 'hoog' is wissel in de ene stand en pinnetje 'laag' is de wissel in de andere stand.

aandachtspuntje is dat de aanstuur spanning van het relais 5 volt is (als je een 5volt arduino gebruikt) en dat je relais een stuurstroom heeft van minder dan 25mA. De min of meer standaard relais modules die verkrijgbaar zijn, doen het wat dat betreft goed. (ze maken alleen een enorm kabaal ;) )

Fenna


Gebruikersavatar

fenix
Berichten: 574
Lid geworden op: 04 apr 2019 14:26

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door fenix »

aanvulling, een voorbeeld programmaatje kan ik wel schrijven voor je. Duurt alleen even, want ik heb nog andere klusjes (en mijn betaalde werk) in de wachtrij staan ;) Moren overdag heb ik er wel tijd voor verwacht ik

Fenna



Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

Hallo Fenna, de eerste optie lijkt mij de mooiste ondanks dat er twee pinnen van de arduino nodig zij.
Met zo'n schakeling kan ik dan via twee relais twee wissels kan aansturen die tegelijk om moeten.
Bedankt dat je mij hierbij wilt helpen.

Marcel


Groeten Marcel V
Gebruikersavatar

fenix
Berichten: 574
Lid geworden op: 04 apr 2019 14:26

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door fenix »

Hallo Marcel,

Dit is voor mij niet heel ingewikkeld. Voor mijn eigen projecten haal ik wat meer uit arduino's
Wel heb ik nog wat vraagjes voor ik het voorbeeldje ga schrijven.
Welk type arduino ga je gebruiken en wat wil je er nog meer mee gaan doen? Tussen de verschillende types arduino hebben pinnetjes weer andere specialiteiten op eenzelfde pin nummer.
Met wat voor schakelaar of drukknop wil je de wissels gaan bedienen?

Fenna



mjdb
Berichten: 133
Lid geworden op: 26 feb 2021 21:48

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door mjdb »

De optie met twee relais is waarschijnlijk de beste en (relatief) goedkoopste. Een puur electronische schakeling met krachtige transistors is denkbaar maar voor een niet electronicus een stuk ingewikkelder.

Op welke wijze wil je het commando 'in' de Arduino krijgen? Waarschijnlijk zul je een DCC decoder moeten maken en deze tussen je rail-spanning en de Arduino moeten aansluiten. Wat heb je al in dit opzicht?

Marco


Marco

Digitaal spoor N met Z21 (voorheen DR5000) en Digikeijs modules.
Diverse Arduino's voor wissels en seinen. Zelfbouw DCC decoders.
Ook een paar DTS ground-detectie modules.
Aangestuurd door Koploper.

Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

mjdb schreef: 25 dec 2021 10:35 De optie met twee relais is waarschijnlijk de beste en (relatief) goedkoopste. Een puur electronische schakeling met krachtige transistors is denkbaar maar voor een niet electronicus een stuk ingewikkelder.

Op welke wijze wil je het commando 'in' de Arduino krijgen? Waarschijnlijk zul je een DCC decoder moeten maken en deze tussen je rail-spanning en de Arduino moeten aansluiten. Wat heb je al in dit opzicht?

Marco
Hallo Marco,
De commando's worden als programmaatje van de PC naar de arduino gezonden en die kan daarna zelfstandig werken.
Zoals in de kop van het bericht staat wil ik Analoog dus geen DCC, in iedergeval nog niet nu.
Ik wil nu beginnen met een ovaal met twee wissels zodat ik een zijspoor heb en dit alles aansturen met een Arduino.


Groeten Marcel V

Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

fenix schreef: 24 dec 2021 23:16 Hallo Marcel,

Dit is voor mij niet heel ingewikkeld. Voor mijn eigen projecten haal ik wat meer uit arduino's
Wel heb ik nog wat vraagjes voor ik het voorbeeldje ga schrijven.
Welk type arduino ga je gebruiken en wat wil je er nog meer mee gaan doen? Tussen de verschillende types arduino hebben pinnetjes weer andere specialiteiten op eenzelfde pin nummer.
Met wat voor schakelaar of drukknop wil je de wissels gaan bedienen?

Fenna
Hallo Fenna,

Ik ben in het bezit van een Arduino uno en die wil ik voor dit kleine project gebruike.
Ben ook in het bezit van een Mega en een paar nano's, de nano's gebruik ik voor afstand en temperatuur meten en de Mega is voor de toekomst als ik misschien digitaal wil gaan rijden maar zover is het nog lang niet want ik heb alleen maar analoge lok's.
Dus als antwoord op je vraag ik wil een Arduino Uno gaan gebruiken om een trein te laten rijden en wissels te bedienen met de Uno


Groeten Marcel V
Gebruikersavatar

fenix
Berichten: 574
Lid geworden op: 04 apr 2019 14:26

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door fenix »

Hallo Marcel,

Zal ik rekening houden met een PWM rijregelaar in de uno? (heb zelf een goed werkende arduino nano rijregelaar, met oled display, voor analoge locs)
Alleen wil ik nog wel graag weten met wat voor knoppen of schakelaar je de wissel bediening wilt doen.

groetjes, Fenna



Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

Zo jij bent ver met dat Arduino spul. Kan mij niets voorstellen bij een nano met oled display als rijregelaar maar is wel interessant.
Ik heb een infrarood module waarmee in de wissels wil aansturen. Bijvoorbeeld als de trein driemaal over het hoofd spoor is gegaan dan naar het zijspoor en daar een bepaalde tijd stil laten staan.
Als de trein dan weer gaat rijden komt hij weer lans de infrarood module en ze de wissels weer op rechtdoor.
PWM lijkt mij wel handig want daar zou ik een trein mee aan sturen toch?
Zal dan nog wel een.module bij moeten want een Arduino kan niet re htstreeks een trein aansturen.


Groeten Marcel V
Gebruikersavatar

fenix
Berichten: 574
Lid geworden op: 04 apr 2019 14:26

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door fenix »

Ok, nu heb ik wat om het opzetje dat ik net heb geschreven wat bij te sturen.
Welke infrarood module heb je?

ik schrijf voor en test op een nano, maar die heeft de zelfde pinnummers en interne architectuur als een UNO dus deze code moet direct kunnen draaien.

Mijn rijreglaar gebruikt een L239D chip om het arduino signaal te 'versterken' voor een modeltrein. Met die chip kun je ook direct de rijrichting instellen. Het kost 2 digitale uitgangs pinnen, 1 pwm uitgangspin en 1 analoge ingangspin op de arduino als je geen display erbij hebt.

het eerste opzetje heb ik direct geleend uit mijn rijregelaar code en dat aangepast:
Dit opzetje gebruikt 2 toetsen om de wissels te schakelen.

Om het aan te passen naar 3x door een lichtsluis en dan schakelen, kan dat via 1 input signaal dat de doorkomsten telt en pas dan actie onderneemt
/**************************************************************************

**************************************************************************/

#include <SPI.h>
#include <Wire.h>

#define enablePin 11 //(enable pin van een L239D motorregelaar)
#define in1Pin 4 // inputpin 1 van een L239D motorregelaar
#define in2Pin 5 // inputpin 2 van een L239D motorregelaar
#define leftselectPin 3 // drukknop voor linksaf stand van de wissel (de drukknop verbindt de pin met massa)
#define rightselectPin 2 // drukknop voor rechtsaf stand van de wissel (de drukknop verbindt de pin met massa)
#define leftsetPin 6 // aanstuurpin voor relais van 'linksaf'
#define rightsetPin 7 // aanstuurpin voor relais van 'rechtsaf'
#define potPin A7 // aansluitpin van een potmeter (10kohm) voor de rijregelaar
#define _DEBOUNCE_TIME 300 // deze waarde wordt gebruikt om 'dender' in de toets af te vangen
#define _PULSE_DELAY 250 // de lengte van de puls naar de wisselspoel in miliseconden
int speed = 0;
int speedpct = speed;
int speedmapped = speed;
int speedabs= speed;
boolean reverse = false;
boolean turnleft = false;
boolean turnright = false;
boolean leftread = false;
boolean rightread = false;
boolean leftPinCheck = true;
boolean rightPinCheck = true;

void setup() {
// het prescalen van de timer is om een betere pwm frequentie te krijgen voor modeltrein motoren
// vanwege het prescalen van een timer voor de pwm is eigenlijk alleen pin 11 beschikbaar voor een goed pwm signaal voor een modeltrein.
// gebruik je timer A daarvoor (met de pnnen 5 en 6), verstoor je de hele interne timing van de arduino
// the 2 usefull options for prescaling timer 2 in regards to driving a dc motorised modeltrain:
//TCCR2B = TCCR2B & B11111000 | B00000110; // set timer 2 divisor to 256 for PWM frequency of 122.55 Hz
TCCR2B = TCCR2B & B11111000 | B00000111; // set timer 2 divisor to 1024 for PWM frequency of 30.64 Hz

//setup pin 11 AND 3 for phase correct PWM:
TCCR2A = _BV(COM2A1) | _BV(WGM20);

pinMode(in1Pin, OUTPUT);
pinMode(in2Pin, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(leftselectPin, INPUT_PULLUP);
pinMode(rightselectPin, INPUT_PULLUP);
pinMode(leftsetPin, OUTPUT);
pinMode(rightsetPin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(leftselectPin), leftint, FALLING); // de drukknoppen werken met interrupt. Daardoor hoeft niet in de code apart de knoppen te worden uitgelezen
attachInterrupt(digitalPinToInterrupt(rightselectPin), rightint, FALLING); // de interrupt routines handelen ook 'contact dender' af en geven aan het hoofdprogramma door in welke stand de wissels moeten staan
// daarvoor gebruiken de interrupt routines 2 software 'vlaggen': turnleft en turnright
}

void leftint()
{
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
leftPinCheck = digitalRead(!leftselectPin);
if ((interrupt_time - last_interrupt_time > _DEBOUNCE_TIME)&& leftPinCheck) turnleft=true;
last_interrupt_time = interrupt_time;
}

void rightint()
{
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
rightPinCheck = digitalRead(!rightselectPin);
if ((interrupt_time - last_interrupt_time > _DEBOUNCE_TIME)&& rightPinCheck) turnright=true;
last_interrupt_time = interrupt_time;


}

void loop() {

speed = analogRead(potPin);
speedmapped=map(speed,0,1023,127,-127);
speedabs=abs(speedmapped);
if (speedabs < 10) speedabs = 0;
if (speedmapped < 0) reverse = false;
else reverse = true;
setMotor(speedabs, reverse);
if (turnleft){
digitalWrite(leftsetPin, HIGH);
delay(_PULSE_DELAY);
digitalWrite(leftsetPin, LOW);
turnleft=false;
turnright=false;
}
if (turnright){
digitalWrite(rightsetPin, HIGH);
delay(_PULSE_DELAY);
digitalWrite(rightsetPin, LOW);
turnleft=false;
turnright=false;
}
}

void setMotor(int speed, boolean reverse)
{
if(speed != 0) {
analogWrite(enablePin, speed*2);
digitalWrite(in1Pin, ! reverse);
digitalWrite(in2Pin, reverse);
}
else {
analogWrite(enablePin, 0);
digitalWrite(in1Pin, 0);
digitalWrite(in2Pin, 0);
}
}



Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

Je bent heel erg snel bezig, dacht dat je na de feestdagen wild kijken 😀
Voor de infrarood sensor moet ik zo na het eten even kijken.


Groeten Marcel V

Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

Ik heb 1 maal de HW-201 infrarood module.
Ik heb ook ooit een L298N motor driver board besteld om een robot auto te bouwen maar dat kreeg ik niet voor mekaar.


Groeten Marcel V
Gebruikersavatar

fenix
Berichten: 574
Lid geworden op: 04 apr 2019 14:26

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door fenix »

ik ga even snuffelen wat ik over die modules te weten kan komen (heb ze zelf nog nooit in mijn handen gehad).

Die HW-201 lijkt me een reflectie detector. In hoeverre die effectief is, zul je moeten experimenteren.
Gebruik daarvoor bijvoorbeeld het "digital > button" voorbeeld in de arduino IDE. In plaats van de drukknop de uitgang van de hw-201. Probeer dan ook eens met die module onder een hoek met het spoor. ik ben er een beetje op bedacht dat die module gaat tellen hoeveel stuks materieel je in je trein hebt in plaats van het aantal passages van de hele trein.
Als je op die manier een werkende opstelling hebt, kun je met het signaal van de hw-201 wat complexere dingen gaan doen
niet teveel tegelijk en stap voor stap (zo ben ik ook gekomen waar ik nu ben met arduino ;) )
mijn tip: probeer ondertussen eens de code te lezen en te doorzien wat ik eerder heb gedeeld en zoek ook in de arduino reference op internet bij "attachinterrupt()". Wat daarin staat beschreven heb ik toegepast.

Probeer ook eens te bedenken op welke manier je wilt herkennen dat de trein op het zijspoor staat. dat is wel handig als trigger om de wachttijd te beginnen ;)

nog een tip, hou de pinnen A4 en A5 vrij voor eventuele I2C modules! I2C is erg leuk spul, denk aan schermpjes, extra input en output pinnen en specialistische sensor modules.



Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

Ik ga hier na de kerstdagen eens op mijn gemak naar kijken allemaal.
Dat de infrarood module ook de wagons zou tellen had ik eigenlijk niet aan gedacht, best stom natuurlijk.
Voor nu nog een fijne kerst verder, ik meld mij weer als ik een en ander bekeken heb.


Groeten Marcel V

Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

Vandaag een schakeling met een ledje en een drukschakelaar gemaakt op de Arduino. Als ik de knop in druk gaat de led aan laat ik de schakelaar los gaat de led uit, zo ver zo goed.
Daarna de schakelaar vervangen door de infrarood module, als je iets voor de module zet gaat de led uit haal je het weg gaat de led aan.
Werkt dus andersom als de schakelaar.
Als je er wagonnetjes langs haalt dan licht de led op iedere keer tussen de wagons, is dus niet te gebruiken omdat er teveel signalen komen.
Bedoeling was 1 signaal over de hele lengte van de trein maar dit geeft dus 3 maal een signaal bij een locomotief met 3 wagons.
Volgende idee is dan eer readrelais met een magneetje onder de locomotief.
Kan dat werken om relais aan te sturen via de Arduino en dan het relais weer de minitrix wissel?

Marcel


Groeten Marcel V
Gebruikersavatar

fenix
Berichten: 574
Lid geworden op: 04 apr 2019 14:26

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door fenix »

Hallo Marcel,
Daar was ik al een beetje bang voor ...
Heb je ook geprobeerd met die detectie module onder een hoek met het spoor?
Als het goed is, kun je ook de gevoeligheid wat instellen met de potmeter. Heb je daarmee ook gespeeld?

Met een magneetje een reedrelais activeren werkt vast wel. Wat betreft de arduino is dat 'gewoon' een drukknop.

Wat betreft het arduino programma ben ik wat stapjes verder
Met mijn nanootje heb ik een en ander ook getest en als je wilt kan ik er morgen wel een videootje van maken.

Zoals het programma nu werkt, worden na 3 omlopen de wissels naar het zijspoor geschakeld. Op het zijspoor aangekomen, kan een detectie methode de wacht tijd starten (in de arduino wordt de PWM rijregelaar op nul gezet gedurende het wachten). Na het aflopen van de wachttijd gaat het PWM rijsignaal weer aan en bij de eerste doorkomst detectie worden de wissels weer naar het hoofdspoor gezet. bij de 3e doorkomst weer naar het zijspoor enz enz enz. De rijsnelheid en rijrichting wordt met een (10kohm) potmetertje ingesteld, zoals je ook de draaiknop op een rijtrafo gebruikt.

voorwaarde is dat de doorkomst detectie ergens halverwege de ronde zit. De trein is dan weer helemaal op het hoofdspoor en nog niet bij de wissels.
/**************************************************************************

**************************************************************************/

#include <SPI.h>
#include <Wire.h>
// L239D en L298N motordrivers gebruiken dezelfde signalen van de arduino
#define enablePin 11 // enable pin van een L239D motorregelaar
#define in1Pin 4 // inputpin 1 van een L239D motorregelaar
#define in2Pin 5 // inputpin 2 van een L239D motorregelaar
#define loopcountPin 3 // drukknop voor linksaf stand van de wissel (de drukknop verbindt de pin met massa)
#define waittriggerPin 2 // drukknop voor rechtsaf stand van de wissel (de drukknop verbindt de pin met massa)
#define turnoutsetPin 6 // aanstuurpin voor relais van 'linksaf'
#define turnoutresetPin 7 // aanstuurpin voor relais van 'rechtsaf'
#define potPin A7 // aansluitpin van een potmeter (10kohm) voor de rijregelaar
#define _DEBOUNCE_TIME1 300 // deze waarde wordt gebruikt om 'dender' in de passage teller af te vangen
#define _DEBOUNCE_TIME2 300 // deze waarde wordt gebruikt om 'dender' in de wacht trigger af te vangen
#define _PULSE_DELAY 250 // de lengte van de puls naar de wisselspoel in miliseconden
#define _LOOP_COUNT 3 //aantal rondes dat word gereden voor de wissels worden geschakeld
#define _WAIT_DELAY 5000 // wachttijd in miliseconden
int speed = 0;
int speedpct = speed;
int speedmapped = speed;
int speedabs= speed;
boolean reverse = false;
boolean setturnout = false;
boolean resetturnout = false;
boolean leftread = false;
boolean rightread = false;
boolean loopPinCheck = true;
boolean waitPinCheck = true;
boolean waitloop = false;
int waitspeed = speed;

int loopcount = _LOOP_COUNT;

void setup() {
// het prescalen van de timer is om een betere pwm frequentie te krijgen voor modeltrein motoren
// vanwege het prescalen van een timer voor de pwm is eigenlijk alleen pin 11 beschikbaar voor een goed pwm signaal voor een modeltrein.
// gebruik je timer A daarvoor (met de pnnen 5 en 6), verstoor je de hele interne timing van de arduino
// the 2 usefull options for prescaling timer 2 in regards to driving a dc motorised modeltrain:
//TCCR2B = TCCR2B & B11111000 | B00000110; // set timer 2 divisor to 256 for PWM frequency of 122.55 Hz
TCCR2B = TCCR2B & B11111000 | B00000111; // set timer 2 divisor to 1024 for PWM frequency of 30.64 Hz

//setup pin 11 AND 3 for phase correct PWM:
TCCR2A = _BV(COM2A1) | _BV(WGM20);

pinMode(in1Pin, OUTPUT);
pinMode(in2Pin, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(loopcountPin, INPUT_PULLUP);
pinMode(waittriggerPin, INPUT_PULLUP);
pinMode(turnoutsetPin, OUTPUT);
pinMode(turnoutresetPin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(loopcountPin), loopcounter, FALLING); // de drukknoppen werken met interrupt. Daardoor hoeft niet in de code apart de knoppen te worden uitgelezen
attachInterrupt(digitalPinToInterrupt(waittriggerPin), waitint, FALLING); // de interrupt routines handelen ook 'contact dender' af en geven aan het hoofdprogramma door in welke stand de wissels moeten staan
// daarvoor gebruiken de interrupt routines 2 software 'vlaggen': turnleft en turnright
}

void loopcounter()
{
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
loopPinCheck = digitalRead(!loopcountPin);
if ((interrupt_time - last_interrupt_time > _DEBOUNCE_TIME1)&& loopPinCheck) loopcount = loopcount -1;
if (loopcount == _LOOP_COUNT - 1) resetturnout = true;
if (loopcount == 0)
{
loopcount = _LOOP_COUNT;
setturnout = true;
}
last_interrupt_time = interrupt_time;
waitloop = false;
}

void waitint()
{
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
waitPinCheck = digitalRead(!waittriggerPin);
if ((interrupt_time - last_interrupt_time > _DEBOUNCE_TIME2)&& waitPinCheck) waitloop=true;
last_interrupt_time = interrupt_time;


}

void loop() {

speed = analogRead(potPin);
speedmapped=map(speed,0,1023,127,-127);
speedabs=abs(speedmapped);
if (speedabs < 10) speedabs = 0;
if (speedmapped < 0) reverse = false;
else reverse = true;
setMotor(speedabs, reverse);
if (setturnout){
digitalWrite(turnoutsetPin, HIGH);
delay(_PULSE_DELAY);
digitalWrite(turnoutsetPin, LOW);
setturnout=false;
resetturnout=false;
waitloop = false;
}
if (resetturnout){
digitalWrite(turnoutresetPin, HIGH);
delay(_PULSE_DELAY);
digitalWrite(turnoutresetPin, LOW);
setturnout=false;
resetturnout=false;
waitloop = false;
}
if (waitloop)
{
waitloop = false;
setMotor(0, reverse);
delay(_WAIT_DELAY);
setMotor (speed, reverse);
}
}

void setMotor(int speed, boolean reverse)
{
if(speed != 0) {
analogWrite(enablePin, speed*2);
digitalWrite(in1Pin, ! reverse);
digitalWrite(in2Pin, reverse);
}
else {
analogWrite(enablePin, 0);
digitalWrite(in1Pin, 0);
digitalWrite(in2Pin, 0);
}
}



Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

Hallo Fenna,
Het probleem met de infrarood module is dat deze omgekeerd werkt van de drukschakelaar. Als de druk schakelaar niet wordt ingedrukt dan is de LED uit maar de infrarood schakeling zet de Led aan en pas als er iets voor komt gaat deze uit.
Een deel van je code kan ik volgen maar lang niet alles maar dat is niet erg dat leer ik misschien nog wel eens.
Ik denk dat ik eerst maar eens enkele readrelais ga bestellen en schakelrelais voor de wissels, kan je mij vertellen waar deze relais te bestellen en welke ik weet dat er complete printjes zijn met twee of meer relais.
Verder ga ik proberen om een en ander in Fritzing te tekenen dat is duidelijker voor mij.
Als het in Fritzing staat stuur ik het wel naar jou dan kan je zien of het een beetje klopt.
Groeten Marcel


Groeten Marcel V
Gebruikersavatar

fenix
Berichten: 574
Lid geworden op: 04 apr 2019 14:26

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door fenix »

Hallo Marcel,

Een signaal omkeren is niet moeilijk.
probeer datzelfde button voorbeeld dat je gebruikte en zet een uitroepteken erin
deze regel:
buttonState = digitalRead(buttonPin);
wordt dan:
buttonState = digitalRead(!buttonPin);
het uitroepteken voor 'buttonPin' zorgt voor de omkering. een 'hoog' wordt 'laag' en een 'laag' wordt 'hoog'

Fenna



Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

Hallo Fenna,
Oké dat is makkelijk en ik heb weer wat geleerd.
Is dit het juiste relais? https://opencircuit.nl/product/Relais-module-12v
Of moet het deze zijn https://opencircuit.nl/product/5v-relai ... -2-kanaals
Marcel


Groeten Marcel V

who2010
Berichten: 202
Lid geworden op: 25 jun 2020 21:19
Locatie: Nieuwerkerk aan den IJssel

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door who2010 »

Marcel,
Mocht je de 5V relais willen aanschaffen, ik heb er nog een 6-tal liggen in ongeopende verpakking.
Deze kan je rechtstreeks aansturen met een Arduino.
Stuur maar een PM als je interesse hebt, over de prijs worden we het wel eens (ze liggen hier toch ongebruikt niets te doen).
M.v.g. Willem


Mvg, Willem
Z21_start met WiFi
Gebruikersavatar

fenix
Berichten: 574
Lid geworden op: 04 apr 2019 14:26

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door fenix »

met Fritzing heb ik nog geen directe ervaring, maar dat is geen probleem. Dat leer ik wel ;)

Als je met weerstandjes en transistors wilt experimenten, kun je zelf een relais schakeling in elkaar knutselen. Het gekozen relais moet zeker 1 ampere kunnen schakelen en kies een voedingspanning die je makkelijk beschikbaar hebt. Je kunt 5v via de arduino gebruiken, maar let op de maximake stroom die vanuit het arduino board gebruikt kan worden.
kleine miniatuur print relais zijn doorgaans zuiniger met stroom en stiller in gebruik, maar hebben wat beperkingen in de maximale stroom die ze kunnen schakelen.
Anders is een kant en klare relais module een goede optie. Zo'n module met 2 relais gaat prima werken. (ik gebruik dergelijke modules als ik bv netspanning wil schakelen met een arduino, omdat die modules wat extra voorzorgen hebben ingebouwd ;)) Wel even opletten of ze met een hoog signaal schakelen of met een laag signaal, maar goed dat lost een uitroepteken in de code wel weer op ;)

Zoals net ook door Willem gezegd, die 5v modules kunnen direct op de arduino. En van de stroom die die relais trekken ligt de arduino ook niet wakker.
Wel zou ik dan voor een module kiezen die 2 relais op 1 printje heeft.

Fenna



Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

who2010 schreef: 28 dec 2021 11:46 Marcel,
Mocht je de 5V relais willen aanschaffen, ik heb er nog een 6-tal liggen in ongeopende verpakking.
Deze kan je rechtstreeks aansturen met een Arduino.
Stuur maar een PM als je interesse hebt, over de prijs worden we het wel eens (ze liggen hier toch ongebruikt niets te doen).
M.v.g. Willem
Hallo Willem,
Als het een relais module is al de tweede die ik plaatste dus met dubbel relais heb ik wel interesse, laat maar even weten da stuur ik een PM.
Heb je soms ook nog reed switches?

Groeten Marcel


Groeten Marcel V

Onderwerp starter
Onmogelijkhier
Berichten: 384
Lid geworden op: 05 jan 2021 20:06
Locatie: Omgeving Rotterdam mijn geboorte stad

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door Onmogelijkhier »

Hoi Fenna,
Ik kan wel dingen in elkaar solderen maar moet dan een kompleet schema hebben dus hou ik het even bij de modules dat is makkelijker voor mij.
Marcel


Groeten Marcel V

who2010
Berichten: 202
Lid geworden op: 25 jun 2020 21:19
Locatie: Nieuwerkerk aan den IJssel

Re: Analoog minitrix wissel aansturen met Arduino

Bericht door who2010 »

"Hallo Willem,
Als het een relais module is al de tweede die ik plaatste dus met dubbel relais heb ik wel interesse, laat maar even weten da stuur ik een PM.
Heb je soms ook nog reed switches?

Groeten Marcel"

Marcel, het is inderdaad de 2e die je plaatste (dubbel relais).
Helaas heb ik geen reedswitches, sorry.

M.v.g. Willem.


Mvg, Willem
Z21_start met WiFi
Plaats reactie