Doel:€250.00
Donaties:€88.00

Per saldo:€-162.00

Steun ons nu!

Laatst bijgewerkt
op 03-06-2025

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Sfeer op je modelbaan door tothebeach
Vandaag om 14:58:11
Gezocht: foto's NS Ks/Us (nu Klmos) door ES44C4
Vandaag om 14:51:05
Wèhnich - Eén onbeduidend baantje op 1200 bij 1200mm door Prutsert
Vandaag om 14:45:24
Spoor- en tramweg parafernalia door Eelco Storm
Vandaag om 14:42:23
De bouw van mijn modelbaan in Thailand door Thai-Bundesbahn
Vandaag om 14:40:06
Dat overkomt mij niet. door hervé
Vandaag om 14:39:43
NS 1700 transfers door Roy van Dijk
Vandaag om 14:36:16
Mijn eerste H0-modeltreinbaan in aanbouw door Thai-Bundesbahn
Vandaag om 14:28:28
Bentheimer Eisenbahn Stations gebouwen "Laarwald" door Hans Reints
Vandaag om 14:10:16
BNLS Rijweekend 19 en 20 juli 2025 door MOVisser
Vandaag om 14:09:47
Alt-Wutachtalbahn 2025 door Hans Grasmaijer
Vandaag om 14:06:48
BR-18.6 Schaal-0. door FritsT
Vandaag om 13:24:11
lampjes in huizen willekeurig schakelen door bask185
Vandaag om 13:21:27
Toon hier je nieuwe (model-) spooraanwinst(en)... door Niels64
Vandaag om 13:16:43
Länderbahn en Reichsbahn locomotieven. door Thai-Bundesbahn
Vandaag om 12:21:57
Toon hier je (model)TRAM foto's. door R1954
Vandaag om 12:07:17
Onlangs gespot - gefotografeerd, de foto's door thevandijks
Vandaag om 11:46:46
Verlichting feller, Roco zimo door Klaas Zondervan
Vandaag om 11:46:21
Bezetmelder brug in rolbrug blijft actief als rolbrug gestopt is door Roelof Hartholt
Vandaag om 11:44:44
Centraal Zwitserland: Trein, tram, kabelbaan en gondels. door Hans van de Burgt
Vandaag om 10:52:53
Da's Daz 2 door Huup
Vandaag om 10:44:46
Bentheimer Eisenbahn, gisteren, vandaag en morgen. door Bertholdowitsch
Vandaag om 10:41:20
reserve onderdeel gezocht voor Minitrix 12593 BR132 door joespoor
Vandaag om 10:33:18
Roco Plan T door Sven
Vandaag om 10:29:53
Scandinavië-IG: Skandinavisk bangården. Voor op Scandinavië gerichte spoorzaken door Loki
Vandaag om 10:24:10
Bahnstrecke 5867 door Jelmer
Vandaag om 08:44:28
Stationsplein Baden Baden door Jelmer
Vandaag om 08:09:33
Gezocht info en foto's van standaard dwarsliggerwagen door ES44C4
Vandaag om 00:57:03
Microstepper motoren voor armseinpalen door bask185
20 July 2025, 23:38:11
Raadplaatje door ArjanB
20 July 2025, 23:19:53
  

Auteur Topic: Arduino analoge(!) modelbaan sturing  (gelezen 146562 keer)

smits66

  • Offline Offline
  • Berichten: 543
  • Schaal 1:160, Arduino
Re: Arduino analoge(!) modelbaan sturing
« Reactie #165 Gepost op: 15 February 2015, 22:55:50 »
Hoi Volgers

@Timo

Bedankt voor de input.
Helaas heb ik nog even geen tijd gehad om aan de library te werken.

Hoewel er in de schema's niet een directe verbinding getekend is, is deze gnd er wel in het schema aangegeven als +5v GND deze gaan naar de Arduino, de sturing voor de wissels wil ik galvanische gescheiden houden van de Arduino, de snelheids regeling van de motorschield is wel via de GND gekoppeld met de Arduino.

@Frits

Bedankt voor de input.

@allen

Ik heb het de laatste tijd druk gehad met andere zaken , werk, verbouwen, zodat ik even geen tijd heb gehad om verder met AAMS te gaan.

Vandaag had ik weer even tijd om er mee verder te gaan.

Ik heb een IR blok detectie gemaakt, dit alleen nog in een proef opstelling, ik moet het nog verder perfectioneren, zowel de sturing als het programma.

Het schema:


De proefopstelling:


Het arduino programma:

/* IR blok bezet melder voor de AAMS sturing 
   Dit is de eerste versie van deze sturing,
   moet nog in het AAMS programma worden gebouwd.
*/

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h> // library voor 12c lcd display

#define BACKLIGHT_PIN     3

  LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // adressering lcd display

const int IRblok1 = A0;
const int IRblok2 = A1;

const int rood =  4;
const int geel =  3;
const int groen = 2;

int drempelWaarde1 = 750;
int drempelWaarde2 = 500;
int drempelWaarde3 = 250;

void setup(){
 
  lcd.begin (20,4);
 
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(HIGH);
  lcd.home (); // go home

  // Print a message to the LCD.

  lcd.setCursor(3,0); //Start at character 2 on line 0
  lcd.print("Arduino UNO R3");
  lcd.setCursor(6,1);
  lcd.print("AAMS V1.0");
 
  pinMode(rood,OUTPUT);
  pinMode(geel,OUTPUT);
  pinMode(groen,OUTPUT);
 
  Serial.begin(9600);
 
}
void loop(){
     
  int irblok1Waarde = analogRead(IRblok1);
 
   if (irblok1Waarde < drempelWaarde1){
      digitalWrite(groen,LOW);
   }
    else {
      digitalWrite(groen,HIGH);
    }
 
  if (irblok1Waarde < drempelWaarde2){
    digitalWrite(geel,LOW);
    }
  else {
    digitalWrite(geel,HIGH);
    }
  if (irblok1Waarde < drempelWaarde3){
    digitalWrite(rood,LOW);
  }
  else {
    digitalWrite(rood,HIGH);
  }
     Serial.print(irblok1Waarde);
     lcd.setCursor(3,2);
     lcd.print(irblok1Waarde);
}

Het programma is weliswaar nog niet klaar en moet nog verwerkt worden in het AAMS programma, in de proefopstelling werkt het goed, de benadering van de IR blok bezet melder word zichtbaar gemaakt door drie leds, hoe dichterbij de IR hoe meer leds er gaan branden.

Ik heb een uitnodiging van een treinen club om mijn AAMS te demonstreren en uitleg te geven hoe het werkt, op de club avond.  ;D

Mvg Paul  :)
Üdvözlet Paul Smits.


bouw draadje "Laubenstein"

Peter Korsten

  • Offline Offline
  • Berichten: 8571
Re: Arduino analoge(!) modelbaan sturing
« Reactie #166 Gepost op: 16 February 2015, 07:50:34 »
Ik zit even naar je code te kijken. Heb je er nu drie leds aanhangen, of een driekleurenled? In dat laatste geval zou je nog eens naar de laatste if-statements moeten kijken.

- Peter
***** ***** ***** ***** ***** ***** ***** ***** 40

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: Arduino analoge(!) modelbaan sturing
« Reactie #167 Gepost op: 16 February 2015, 11:16:59 »
Hoi Paul,

Altijd leuk spelen met verschillende manieren. Ben je alleen niet bang dat omgevingslicht een te grote rol gaat spelen? Om niet te veel aan te passen zou je er voor kunnen kiezen om alle IR ledjes te schakelen door de Arduino. Zo kan je ze af en toe (1 keer per seconde ofzo :p) uit zetten en zo een meting doen van het omgevingslicht.

Overigens zou ik als ik zou was echt eens naar een library kijken. Denk namelijk dat het je zo veel dubbel werk scheelt!

Hoewel er in de schema's niet een directe verbinding getekend is, is deze gnd er wel in het schema aangegeven als +5v GND deze gaan naar de Arduino

Okay, omdat je zo in uiteindelijke printen ook nooit tekent ;)

de sturing voor de wissels wil ik galvanische gescheiden houden van de Arduino, de snelheids regeling van de motorschield is wel via de GND gekoppeld met de Arduino.
Okay, dan moet je dus nog een ander schema hiervoor maken. Met de huidige MOSFET / BJT schakelingen is dit niet het geval. Maar waarom wil je dit?

@Frits Ik dacht altijd dat je daarmee het automatisch plaatsen van tab's aan of uit zetten, niet dat je de huidige code er netjes mee maakt  :-[ Vandaar nooit op geklikt  ;D Weer wat geleerd.


Timo
Verzonden vanaf mijn desktop met Firefox

smits66

  • Offline Offline
  • Berichten: 543
  • Schaal 1:160, Arduino
Re: Arduino analoge(!) modelbaan sturing
« Reactie #168 Gepost op: 17 February 2015, 21:54:29 »
Hoi volgers
 
@Peter

Bedankt voor je input.

Ik gebruik drie aparte ledjes, deze ledjes worden alleen gebruikt voor test doeleinden, in de AAMS worden ze niet gebruikt.

Ik bouw vaak een kleine test schakeling en kleine test programma's om de diverse componenten te testen, als het goed werkt zet ik het stukje code pas in het AAMS programma, led's zijn perfecte componenten voor test doeleinden.

@Timo

Bedankt voor je input.

Ik heb er nog geen tijd voor gehad om naar de library te kijken, ik moet daar eens goed voor gaan zitten.
Als ik het 's avonds probeer, dan bak ik er niets van. ::)

De IR reciever word via de analoge input door de Arduino uitgelezen, dat levert een drempelwaarde op.

Voor omgevingslicht ben ik niet bang , IR detectors hebben niet veel last van omgevingslicht, misschien als er veel TL-licht in de buurt is kan dat van enig invloed zijn, ik gebruik daarom ook, voor de sensoren de analoge porten, zodat ik een drempelwaarde kan instellen.

De IR detectors die ik gebruik, zijn reflectie sensoren, het bereik van de sensoren zal niet veel meer zijn dan 5 cm.

Op mijn testbaantje heb ik ldr's gebruikt die zijn veel gevoeliger voor omgevingslicht, maar het werk best wel goed zolang het omgevingslicht niet te veel veranderd.

Om geen componenten kapot te maken wil ik het voorlopig galvanische gescheiden houden, heb al een Arduino en een wissel spoel
kapot gemaakt.

Als het goed werkt word het gekoppeld aan de Arduino van de AAMS sturing.

Mvg Paul  :)
« Laatst bewerkt op: 17 February 2015, 22:39:00 door smits66 »
Üdvözlet Paul Smits.


bouw draadje "Laubenstein"

smits66

  • Offline Offline
  • Berichten: 543
  • Schaal 1:160, Arduino
Re: Arduino analoge(!) modelbaan sturing
« Reactie #169 Gepost op: 19 March 2015, 21:27:47 »
Hoi Volgers.

Na een tijd niets gedaan te hebben met AAMS , en een vakantie naar ons tweede vaderland Hongarije, ga ik me weer bezig houden met het AAMS, zowel met het programma als met het verder testen van de AAMS.

De tweede schakeling / programma is de  Arduino Analoge Pendelbaan Sturing of kortweg AAPS, de hardware door mijn bedacht en ontwikkeld, op basis van een Arduino Uno, uiteindelijk word de Arduino Uno vervangen door een Arduino Nano.

De software is niet door mij ontwikkeld maar door iemand anders (naam staat in de header van het programma), ik heb het programma aangepast voor eigen gebruik,.

Voor de detectie van de trein ga ik drie verschillend sensoren gebruiken, reed-relais, drukknoppen (hand bediening) en IR reflectie sensoren, de reed-relais en de drukknoppen  worden parallel over elkaar gezet.

Het test programma is verre van af maar werkt verrassend goed.

De AAPS proef opstelling, van links naar rechts, reed-relais ,drukknoppen ,Arduino Uno en motordriver, de motordriver is aan een standaard trein trafo aangesloten, dit is om de max snelheid van de trein te kunnen regelen, als er een locomotief te snel of te langzaam rijd.



Het programma :

/*
HMC pendelautomaat met een Arduino
 Haagse Modelbouw Club 2014
 
 Aangepast door Paul Smits
 oginele versie door Alfred Hol
 
 */

// Keuze in- en uitgangen Arduino
int pwmA = 10;
int aIn1 = 9;
int aIn2 = 8;
int irSensor1 = 2; //digital in pin waarop Sensor1 wordt aangesloten
int irSensor2 = 3; //digital in pin waarop Sensor2 wordt aangesloten

//digitale pin waarop Sensor2 wordt aangesloten

// Beginwaarden rijrichting en snelheid

int pwmAval = 0;
int progStep = 1;
int waitTime = 10000;   // wachttijd op eindpunten in milliseconden
int ASCSPD = 30;        // versnellingscurve (totale tijd van versnellen in milliseconden is waarde ASCSPD x 256)
int DSCSPD = 20;        // vertragingscurve (totale tijd van vertragen in milliseconden is waarde DSCSPD x 256)

void setup() {

  // Instellen in- en uitgangen Arduino

  pinMode(pwmA, OUTPUT);
  pinMode(aIn1, OUTPUT);
  pinMode(aIn2, OUTPUT);

  pinMode(irSensor1, INPUT);
  pinMode(irSensor2, INPUT);

  //analogWrite(pwmA, pwmAval);

  // open seriele poort tbv logging
  Serial.begin(9600);
  Serial.println("Start log:");
  Serial.println("Pendelautomaat voor de Arduino");
  Serial.println("Haagse Modelbouw Club 2014");
  Serial.println(" ");
}

void loop() {
  //na het dooorlopen van alle acht programmastappen weer beginnen bij stap 1
  if (progStep == 9) {
    progStep = 1;
  } //na het dooorlopen van alle acht programmastappen weer beginnen bij stap 1

    //uitlezen sensoren
  Serial.print("wacht op sensor ");
  Serial.print("1 ");
  Serial.println(digitalRead(irSensor1));
  Serial.print("2 ");
  Serial.println(digitalRead(irSensor2));
  if (progStep == 2) {
    if (digitalRead(irSensor2) == 1) {
      progStep = 3;
    };
  };
  if (progStep == 6) {
    if (digitalRead(irSensor1) == 1) {
      progStep = 7;
    };
  };

  // naar specieke actie die hoort bij programmastatus
  while (progStep == 1) {
    versnellen();
  }
  while (progStep == 3) {
    vertragen();
  }
  while (progStep == 4) {
    wachtenompolen();
  }
  while (progStep == 5) {
    versnellen();
  }
  while (progStep == 7) {
    vertragen();
  }
  while (progStep == 8) {
    wachtenompolen();
  }
}

void versnellen () {
  Serial.print("Programmastap ");
  Serial.println(progStep);

  Serial.print(" accelereren in ");
  Serial.print(255*ASCSPD/1000);
  Serial.println( " seconden");

  for(int pwmAval=60; pwmAval <= 255; pwmAval++){

    analogWrite(pwmA,pwmAval);

    delay(ASCSPD);
    Serial.println(pwmAval);

  }
  Serial.println(" maximale snelheid bereikt ");
  Serial.println("");

  progStep =progStep+ 1;
  Serial.print("Programmastap ");
  Serial.println(progStep);
  Serial.print(" wacht op input op sensor ");
  if (progStep == 2) {
    Serial.println("2");
  };
  if (progStep == 6) {
    Serial.println("1");
  };
  Serial.println("");
}

void vertragen () {
  Serial.print("Programmastap ");
  Serial.println(progStep);

  Serial.print(" afremmen in ");
  Serial.print(255*DSCSPD/1000);
  Serial.println( " seconden");

  for (int pwmAval=255; pwmAval > 0; pwmAval--){

    analogWrite(pwmA,pwmAval);

    delay(DSCSPD);
    Serial.println(pwmAval);

  }
  Serial.println(" trein staat stil ");
  Serial.println("");
  progStep =progStep+ 1;
}

void wachtenompolen (){
  Serial.print("Programmastap ");
  Serial.println(progStep);

  Serial.print("  Wachttijd tot ompolen: ");
  Serial.print((waitTime)/1000);
  Serial.println(" seconden");

  delay(waitTime);
  if (progStep == 4) {
    //digitalWrite(aIn1, HIGH);
    //digitalWrite(aIn2, LOW);
    sturing(1,0,1);
  };
  if (progStep == 8) {
    //digitalWrite(aIn1, LOW);
    //digitalWrite(aIn2, HIGH);
    sturing(1,0,0);
  };
  Serial.println("  Ompolen ");
  Serial.println("");
  progStep =progStep+ 1;
}

void sturing(int trein, int snelheid, int richting){

  // Zet de parameters van de functie sturing(trein, snelheid, richting)
  // Trein 1: linksom en Trein 2 output B op het motorshield
  // Snelheid: 0 is stop, 255 is maximale snelheid
  // Richting: 0 Rechtsom, 1 Linksom

  boolean inPin1 = LOW;
  boolean inPin2 = HIGH;

  if(richting == 1){
    inPin1 = HIGH;
    inPin2 = LOW;

  }

  else{
    if(richting == 0) 
      inPin1 = LOW;
      inPin2 = HIGH;

  }

  if(trein == 1){
    digitalWrite(aIn1, inPin1);
    digitalWrite(aIn2, inPin2);
    analogWrite(pwmA, snelheid);

  }

  /* else{
   digitalWrite(BIN1, inPin1);
   digitalWrite(BIN2, inPin2);
   analogWrite(PWMB, snelheid);
   
   }*/
}

Verder heb ik twee printen in elkaar gesoldeerd, sein sturing en wissel sturing, voor de IR reflectie sensor is het niet noodzakelijk om een schakeling er voor te gebruiken.

Sein sturing:



Wissel sturing  (nog niet helemaal klaar mis nog 4 blusdiodes) maar goed genoeg om het droog te testen (leds):



Dat was het weer voor deze keer.

Zoals altijd sta ik open voor opmerkingen en of aanmerkingen. ;)

Mvg Paul
Üdvözlet Paul Smits.


bouw draadje "Laubenstein"

Fritsprt

  • Offline Offline
  • Berichten: 2615
Re: Arduino analoge(!) modelbaan sturing
« Reactie #170 Gepost op: 19 March 2015, 21:50:20 »
Hallo Paul,
Ik heb geen aanmerkingen. Wel een opmerking. Ik lees je draadje altijd met plezier. Je bent echt een heerlijke hobbyist. Het is mooi om te zien dat je je eigen weg gaat en leuke schakelingen maakt. Ga zo door! Ik blijf je volgen.

Succes Frits
Groet Frits

smits66

  • Offline Offline
  • Berichten: 543
  • Schaal 1:160, Arduino
Re: Arduino analoge(!) modelbaan sturing
« Reactie #171 Gepost op: 24 March 2015, 23:03:24 »
Hoi volgers,

Na het bedenken en uit voeren van een aantal schakelingen voor AAMS, heb ik nog een schakeling voor mijn modelbaan te ontwerpen nl een automatische keerlus sturing met een Arduino, dit is nog een flinke uitdaging.

Ik wil geen kortsluit-methode gebruiken,  ben er niet echt happig op, op je modelbaan wil je geen kortsluiting hebben,hoe klein en kort de sluiting ook is.
 
De sturing moet ik zelf ontwerpen, ook dat is nog een uitdaging,  reed contacten kan ik niet gebruiken (ik heb daarvoor kleine magneetjes nodig [ maximaal 1 mm dik x rond 3 mm ] die kan ik niet echt vinden) .
Ik wil gebruik maken van reflectie sensoren, dit soort sensoren zijn niet gevoelig voor licht, als er veel TL-lampen hangen kan dat van enig invloed zijn op de werking maar dat kan je beperken door de drempelwaarde instelbaar te maken.

Hoe zou de sturing moeten werken :



De trein komt via de pendelbaan naar de inrij sectie, W1 moet in de afbuig stand staan , de trein rijd de doorrij sectie in, Als de W1 in de afbuig stand staat moet de trein stoppen in de ompool-sectie, omdat het sein op rood staat dan word de baanspanning om-gepoold , als de wissel in rechtdoor stand staat moet de trein door rijden over het ompool-sectie, als er word om-gepoold moet W1 in de rechtdoor stand gezet worden en moet sein S2 op rood staan en S1 moet op groen staan (S1 en S2 worden  antiparallel geschakeld)

Zo moet het ongeveer gaan werken, doordat de keerlus word gevoed door een diodebrug kan de trein automatisch ompoolen in de keerlus, alleen de pendelbaan moet dan nog worden omgepoold vandaar dat er een ompool-sectie is getekend in de keerlus.
Uiteindelijk wil ik dat het automatische gebeurd.

Ik wil ook een mogelijkheid hebben om de baan met de hand te bedienen alleen de wissels seinen enz. , de keerlus word als eerste geschikt gemaakt voor hand en automatische bediening.

Voor de keerlus sturing wil ik een Arduino Uno met sensor shield gaan gebruiken.

De electronica vaar de sturing bestaat uit de volgende componenten :

  • 2 unpolaire 1 x om relais 12 of 5 volt
  • 4 bipolaire relais 2 x om 12 of 5 Volt
  • 2 drukknopjes (voor de handbediening wissel-sturing geel / groen)
  • 2 drukknopjes (voor handmatig sein-sturing rood/groen)
  • 2 drukknopjes (Voor handmatig ompoling wit / zwart )
  • 1 diode brug  of vier losse diodes 1N4007
  • Een hand vol led's rood/groen/geel
  • 4 Reflectie sensoren
  • Nog diversen klein spul

Zoals gebruikelijk ga ik de test schakeling maken op een breadboard, als het goed werkt ga ik de schakeling op een print solderen.

Word vervolgd

Mvg Paul




 
« Laatst bewerkt op: 24 March 2015, 23:14:01 door smits66 »
Üdvözlet Paul Smits.


bouw draadje "Laubenstein"

Fritsprt

  • Offline Offline
  • Berichten: 2615
Re: Arduino analoge(!) modelbaan sturing
« Reactie #172 Gepost op: 25 March 2015, 22:39:27 »
Hallo Paul,

Mocht je het wel met reedcontacten willen doen, die magneetjes koop je oa hier.

groet Frits
Groet Frits

Fritsprt

  • Offline Offline
  • Berichten: 2615
Re: Arduino analoge(!) modelbaan sturing
« Reactie #173 Gepost op: 28 March 2015, 16:16:41 »
Hallo Paul,

Ik heb ook al eens over een keerlus schakeling met een arduino en IR-lichtreflector sensors nagedacht en volgens mij kan het nog veel simpeler. Zelf heb ik al geexperimenteerd met IR-lichtreflectors. Ik gebruikte echter wel gemoduleerd licht om verstoringen van omgevingslicht te vermijden en dat werkt uitstekend. Ik meen dat ik het voorbeeld daarvan al eens eerder in dit draadje heb genoemd. Het kan echter ook zonder de IR led te moduleren zolang en maar niet teveel omgevingslicht op de IR-transistor valt.



Het grote verschil tussen een keerlus in een DCC omgeving en een analoge DC omgeving is dat het voor een DCC locomotief niet uit maakt hoe de polariteit is. De rijrichting van de loc wordt immers bepaald door het digitale signaal. Bij DCC wordt daarom vrijwel altijd de spanning in de lus omgepoold. Bij analoog moet je juist niet de lus, maar de rails die van en naar de lus leidt ompolen.

Het plaatje is getekend voor DCC maar dat maakt voor de werking niets uit als je je maar aan bovenstaande houdt. Stel een trein rijdt van sectie A, via wissel W die rechtdoor(r) staat naar sectie B. De trein zal de lichtsensors 1 en 2 activeren. Zodra de trein volledig in sectie B is zullen de sensors 1 en 2 laag worden (geen reflectie, geen trein). Zodra de trein nu over sensor 3 rijdt moet de arduino het wissel omgooien (a) en moet sectie A omgepoold worden door het relais (Rel). De trein vervolgt dan zijn weg in sectie A.

Omdat je e.e.a. gaat aansturen met een Arduino kan je e.e.a. softwarematig nog betrouwbaarder maken. Stel dat je trein te lang is voor de lus dan zullen de sensoren 2 en 3 tegelijk geactiveerd zijn. Door deze toestand af te vragen kan je in dat geval de baanspanning afschakelen zodat de trein niet tegen zijn eigen achterkant aanrijdt. Daarnaast is het raadzaam om het uitschakelen van de reflector te vertragen, zodat de sensor niet tussen twee wagons aangeeft dat er geen trein meer is. Wil je dat risico helemaal voorkomen dan zou je ook nog twee reflectors op 3 cm afstand van elkaar kunnen zetten en zodra één van de twee actief is staat er blijkbaar een trein boven de reflector.

Mijn schakeling heeft dus slechts 1 Arduino, 1 normaal relais (dubbelpolig om) en 2 reflectorsensors nodig (en wat transistoren om de Arduino het relais en de wissel aan te laten sturen). Het kan niet eenvoudiger. En nu maar hopen dat we hier niet een simpele keerlusschakeling discussie krijgen hoewel positieve input altijd op prijs gesteld wordt.

Succes Frits
Groet Frits

smits66

  • Offline Offline
  • Berichten: 543
  • Schaal 1:160, Arduino
Re: Arduino analoge(!) modelbaan sturing
« Reactie #174 Gepost op: 29 March 2015, 21:02:11 »
Hoi volgers,

@Frits

Bedankt voor je input.

Voor zover ik weet zijn IR-reflectie sensoren niet gevoelig voor omgevingslicht , alleen als er veel TL-lampen in de buurt zijn kan dat van enig invloed zijn.

Ik gebruik voor de keerlus schakeling twee unpolaire relais en twee bipolaire relais.

De unpoliare relais schakelen de wissel spoelen en de bipolaire voor de terugmelding naar het bediening paneel.

De tweede bipolaire relais is voor de ompoling van de baanspanning, tenminste dat was mijn eerste idee, echter werkt dat niet met de Arduino omdat ik een motorshield gebruikt, zal ik met een commando de rijrichting moeten veranderen, ik moet het meer gaan zoeken in een hardware / softwarematige oplossing.

Het ontwerp wat je er bij heb gemaakt werkt helaas niet, echter de plaatsing van de sensoren neem ik zeker mee in het ontwerp.
De Wissel van de keerlus word wel door twee normale relais en een bipoliare relais voor de terug melding naar het bedieningspaneel.
Voor de ompool-functie moet ik nog het een en het ander uitzoeken.

Mvg Paul
Üdvözlet Paul Smits.


bouw draadje "Laubenstein"

Fritsprt

  • Offline Offline
  • Berichten: 2615
Re: Arduino analoge(!) modelbaan sturing
« Reactie #175 Gepost op: 29 March 2015, 21:08:19 »
Hallo Paul,

Citaat
Het ontwerp wat je er bij heb gemaakt werkt helaas niet

Wat is de reden dat het niet werkt? Theoretich zou dit volgens mij moeten werken maar ik moet toegeven dat ik het nog niet gemaakt heb.

gr. Frits
Groet Frits

smits66

  • Offline Offline
  • Berichten: 543
  • Schaal 1:160, Arduino
Re: Arduino analoge(!) modelbaan sturing
« Reactie #176 Gepost op: 29 March 2015, 21:31:17 »
Hoi Frits,

Mijn motorshield werkt met pwm sturing, om de trein van richting te laten veranderen moet ik op de Arduino twee porten gebruiken om de motorsturing om te polen.

Het commando wat ik daar voor moet geven kan zijn:  inPin1,LOW en inPin2,HIGH voor rechtsom en inPin1,HIGH en inPin2,LOW voor linksom.

Ik weet ook niet of ik met een diodebrug een pwm signaal kan omkeren binnen de keerlus.

Misschien moet ik maar een een testopstelling maken om het te testen.

Mvg Paul


Üdvözlet Paul Smits.


bouw draadje "Laubenstein"

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: Arduino analoge(!) modelbaan sturing
« Reactie #177 Gepost op: 31 March 2015, 13:32:38 »
Je hardware is dus nu vooral "veel" omdat je bipolaire relais gebruikt en relais voor de wissels. Voor de wissels is het al eerder aan bod geweest, dit is jou keuze. Maar voor de terug melding, is dat echt zo belangrijk? Je kan de Arduino ook een terugmelding laten doen over de wisselstand. Enige is dat de Arduino bij het opstarten de wisselstand niet kent. Maar dit kan je oplossen door naar een standaard stand te gaan (en de wissel even te bekrachtigen). Dat de Arduino de wisselstand kent is toch al nodig.

Omdat je een H-brug gebruikt kan je inderdaad deze al gebruiken om de boel om te poolen. Diodes kunnen prima gebruikt worden voor de keerlus. Maar waarom voed je niet de hele lus gewoon met diodes? Op deze manier beperk je de lengte van de trein in de lus nogal.

Dus samengevat:
- Trein komt aan bij de eerste melder van de lus (en de lus is vrij)
- Wissel wordt in de juiste stand gezet om de lus in te rijden (of die nu afbuigen of recht door is maakt niet uit, is gewoon kwestie van eigen keuze)
- Trein rijdt lus in en wordt gevoed door diodes
- Voor de wissel wordt de tweede melder actief
- Wissel gaat om en Arduino stuur ledje op paneel aan voor melding
- Rijrichting wordt aangepast (merk je niet van door de diodes)
- Trein verlaat dus lus
- Arduino wacht tot de eerste melder weer vrij komt (van de trein die de lus verlaat) en is klaar voor de volgende keer

Op deze manier heb je nodig:
- Twee keer detectie (IR of magneet of anders)
- wisselsturing (of dit nu op basis is van relais of MOSFET maakt niet uit)
- Handje vol ledjes

Extra beveiliging is inderdaad in te bouwen zoals Frits aan gaf (stoppen als tweede melder actief wordt voor de eerste melder inactief is geworden => trein te lang). En pas inactief na "grote" pauze in licht (voor als de IR tussen rijtuigen in kijkt). Deze pauze kan snelheid afhankelijk zijn (en bijvoorbeeld de state bevriezen als de trein stil staat => kan de Arduino niet denken dat de boel vrij moet komen als de trein toevallig met de IR tussen twee rijtuigen stil wordt gezet).

Overigens lijkt me dat IR sensoren juist gevoelig zijn voor omgevingslicht van zonlicht en gloei/halogeen verlichting. (Warmte gaat gepaard met IR.) TL werkt op basis van UV en zal dus al minder storen.

De diodes in de lus hebben als nadeel dat er een spanningsval over is (en de trein dus langzamer gaat). Dit is op te lossen door de lus te voorzien van eigen motordriver/H-brug. Op deze manier (samen met extra melder) zou je dus lus ook geschikt kunnen maken voor berijden in twee richtingen. Voor het prijsverschil hoef je het bijna niet te laten.... PWM pin van de sectie voor de keerlus en de keerlus zelf mogen dezelfde zijn (snelheid is gelijk, alleen richting niet).


Timo
Verzonden vanaf mijn desktop met Firefox

Fritsprt

  • Offline Offline
  • Berichten: 2615
Re: Arduino analoge(!) modelbaan sturing
« Reactie #178 Gepost op: 31 March 2015, 20:07:35 »
Hallo Paul en Timo,

Citaat
Diodes kunnen prima gebruikt worden voor de keerlus

Ik probeer te begrijpen wat jullie met die diodes willen doen. Het enige dat ik kan bedenken is dat je die als een brugschakeling in de locomotief zet zodat de locomotief polariteit ongevoelig wordt zodat de locomotief altijd rechtdoor rijdt, ongeacht de polariteit van de rails. In dat geval kan je niet meer achteruit rijden. Dat zal niet de bedoeling zijn dus ik denk dat jullie iets anders bedoelen. Ik zie de uitleg met belangstelling tegemoet.

groet Frits
Groet Frits

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
Re: Arduino analoge(!) modelbaan sturing
« Reactie #179 Gepost op: 31 March 2015, 20:13:38 »
Het betreft hier gewoon analoge sturing. Dus de lus verbinden via een diodebrug met de sectie ervoor. Op deze manier kan de trein, ongeacht de polariteit (dus rijrichting) van de sectie ervoor, maar in één richting door de lus. Zo kan je ongemerkt de baan ompolen zonder dat de loc in de lus er iets van merkt of stopt.


Timo
Verzonden vanaf mijn desktop met Firefox