BeneluxSpoor.net forum

Wat zijn we aan het bouwen? => Baanplannen => Topic gestart door: 72sonett op 27 september 2016, 23:28:43

Titel: El carrilet
Bericht door: 72sonett op 27 september 2016, 23:28:43
Mijn meerjarenplan, inmiddels al 30 jaar...

Getekend met SCARM (http://www.scarm.info/index.php).
(https://images.beneluxspoor.net/bnls/snapshot6.jpg)

(https://images.beneluxspoor.net/bnls/snapshot7.jpg)
Niet helemaal precies zoals gebouwd, meer een design as you go. Afmeting ca. 3,40 x 2,40 m.

(https://images.beneluxspoor.net/bnls/DSCI2554.jpg)

(https://images.beneluxspoor.net/bnls/DSCI2557.jpg)

(https://images.beneluxspoor.net/bnls/DSCI2566.jpg)

(https://images.beneluxspoor.net/bnls/Photo0168.jpg)

(https://images.beneluxspoor.net/bnls/scouts2.jpg)
Titel: Re: El carrilet
Bericht door: VFR op 28 september 2016, 12:12:14
En als ik dit zo zie, ook al 30 jaar plezier van neem ik aan.  ;D
Titel: Re: El carrilet
Bericht door: 72sonett op 29 september 2016, 14:10:38
 8) filmpjes;


https://www.youtube.com/v/JB91Qlc-WU4

https://www.youtube.com/v/0e0jT8e-Tnk
Titel: Re: El carrilet
Bericht door: 72sonett op 03 oktober 2016, 20:08:27
De hard- en software;

(https://images.beneluxspoor.net/bnls/Trein-8255ppi.jpg)

In de computer zitten twee I/O kaarten met een 8255 PPI (https://en.wikipedia.org/wiki/Intel_8255) volgens een ontwerp van Elektuur (uit 1989). De ene kaart is geconfigureerd voor invoer, de andere voor uitvoer, ieder 3 bytes breed. Aan de invoerkant is daarmee ruimte voor 24 bezetmelders met reedschakelaars, aan de uitvoerkant is ruimte voor 24 relais voor stopsecties en wissels.

Het programma op de computer leest constant de 3 adressen van de 24 bezetmelders. Aan de hand van een melding wordt de status van de blokken bijgewerkt en op het scherm getoond, de stopsecties worden met de relais in/uitgeschakeld en wissels worden omgezet.
Op de baan staat een constante 12 V voor de 'snelle' delen, vóór en na iedere stopsectie zit ca 1 m spoor waar 10 V op staat, zodat de loc daar langzamer rijdt. Ook de stopsecties worden met 10 V geschakeld.

Het programma is geschreven in Pascal met een Lazarus IDE (http://www.lazarus-ide.org/), maatwerk specifiek voor deze baan.
Titel: Re: El carrilet
Bericht door: ruudns op 03 oktober 2016, 20:10:22
 (y) Wijs, nog met de echte oude Faller autowegen (y).
Titel: Re: El carrilet
Bericht door: Te 2/2 op 22 november 2016, 10:50:38
Bij toeval stuit ik op dit draadje, en zie daar zo'n oude faller overweg, met messing middelrail. Goede herinneringen uit m'n jeugd. De autootjes deden het allang niet meer, de trafo had ik in mijn jeugd misbruikt voor electrolyse proefjes, maar die baandelen zouden nog ergens op zolder kunnen slingeren.
Bij gelegenheid maar eens kijken ...

Daarna zie ik een schema uit elektuur (1989). Met plek voor 24 reedcontacten en 24 relais op 24-bit format, en vooral dat laatste verbaasde me. Vandaag de dag zou je dat anders aanpakken, maar voor 1989 is dat buitengewoon efficiënt. Betekent 1 bit (pin?) per apparaat, dus monostabiele relais. Klasse dus. Leuke link naar Lazarus, erbij. Ken ik niet, omdat ik in de C++ wereld leefde, en pascal iets is van lang geleden voor mij (<1987).

Kortom, een leuk draadje, bedankt.
Titel: Re: El carrilet
Bericht door: 72sonett op 22 november 2016, 21:55:20
Citaat
...... een schema uit elektuur (1989). ... buitengewoon efficiënt..
In 1985/86 deed ik HTS informatica en toen was Pascal de standaard programmeertaal. Ik ben toen ook met Borland's Turbo Pascal begonnen, in DOS uiteraard - Windows ...  ???

Die Elektuur I/O-kaart zit in een ISA connector van een 386 PC. Door de beperkte grafische mogelijkheden van Turbo Pascal onder DOS draait het op een PC met Windows 95 maar wel in een DOS box.  OK voor toen, maar alles bij elkaar nu behoorlijk achterhaalde techniek, noem het maar remmende voorsprong...  ISA connectoren zijn er niet meer, Windows staat niet meer toe dat een programma rechtstreeks I/O adressen leest of schrijft (moet via DLLs of API's) en alleen heel oude versies van Lazarus/FP compileren nog voor W95.

Ik heb er wel eens aan gedacht om opnieuw te beginnen, Lazarus IDE met Free Pascal, Windows XP en 2x een USB I/O kaart (https://nl.aliexpress.com/item/From-intelligent-household-USB-I-0-Data-acquisition-card-Control-module-MCU-IO-pin-16-road/32324935299.html?spm=2114.48010508.4.2.Yt06b4) met ieder 16 pennen.
(https://ae01.alicdn.com/kf/HTB1nTYjLpXXXXXOapXXq6xXFXXXn/Gratis-drive-intelligente-Ik-0-USB-data-acquisitie-kaart-controle-module-16-MCU-IO-pin.jpg_640x640.jpg)

Op het WWW zijn wel voorbeelden te vinden hoe deze kaart aan de praat te krijgen is maar dat is allemaal in C/++.  Voor de Arduino ben ik daar wel mee begonnen maar ik vind het een hopeloos cryptische programmeertaal vergeleken met Pascal, zeker als er nog OOP bij komt ook, ik ben meer 'procedureel', de vertaalslag van C naar Pascal is me nu nog te vaag.
Citaat
... Lazarus .... Ken ik niet, omdat ik in de C++ wereld leefde, en pascal iets is van lang geleden voor mij (<1987).
Ik heb 2 van die USB kaarten besteld, worden hopelijk half december geleverd. Misschien pb ik je nog wel met vragen over het vertalen van C naar Pascal...  :)
Titel: Re: El Carrilet
Bericht door: 72sonett op 11 oktober 2017, 23:15:21
De afgelopen maanden heb ik o.a. de hard- en software omgebouwd naar gebruik voor Windows XP met 4 USB I/O sticks. Het zou nu ook op latere Windowsversies moeten werken, maar dat moet ik nog uitproberen.


(https://images.beneluxspoor.net/bnls/IOboard.jpg) (https://images.beneluxspoor.net/bnls/IOboard.jpg)

In het midden zit een USB hub met 4 aansluitingen, deze hub zit met een kabeltje aan de computer (laptop).
Aan de hub zitten de 4 USB I/O sticks, 2 voor invoer (onder en boven), 2 voor uitvoer (links en rechts). De invoer komt van bezetmelders (reedschakelaars), die via in de I/O kaart  ingebouwde optrekweerstanden even naar massa schakelen als er een loc met een magneetje er onder een blok inrijdt.
De uitvoer gaat via twee relaiskaarten die de stopsecties en wissels schakelen. De linker kaart heeft 16 relais, de rechter 10 relais + 6 open collector transitorschakelaars.
Een aantal wissels zonder eindafschakeling wil ik nog gaan schakelen met servo's, ook ipv te vertrouwen op afschakeling van wissels die dat wel hebben.


Op de achterkant van het paneel zit de voeding, 12 V en 5 V uit een oude computervoeding, en nog twee voedingen, één om 10 V uit de 12 V te halen voor de afremsecties, en één aparte met meerdere spanningen voor ledverlichting en andere grappen.
Die 10 V wil ik nog vervangen door een instelbare 12 V PWM regeling.

(https://images.beneluxspoor.net/bnls/voedingen.jpg) (https://images.beneluxspoor.net/bnls/voedingen.jpg)


De reedschakelaars zitten aan het begin van ieder blok tussen de rails.
(https://images.beneluxspoor.net/bnls/reed2.jpg) (https://images.beneluxspoor.net/bnls/reed2.jpg)
Eenmaal aangevuld met ballast en wat bijgeverfd vallen ze niet meer op.



Het programma op de laptop is herschreven in (Free) Pascal in de Lazarus IDE, bijna 2000 regels code, voor gebruik van de USB sticks ipv die Elektuur I/O kaart. De twee eerder gekochte USB sticks heb ik na veel www-zoeken aan de praat gekregen en vervolgens nog twee bijgekocht.
Bij de USB sticks werd een .DLL meegeleverd en programmavoorbeelden in C++, die heb ik herschreven in Pascal. In het Pascalprogramma kan ik procedures en functies in die .DLL als extern definieren en aanroepen alsof ze een deel van het Pascalprogramma zijn. Zo is iedere individuele pen van de stick als invoer of uitvoer te definieren en je kunt ze uitlezen c.q. een waarde geven.


Geinspireerd door andere zelfbouwtopics op dit forum heb ik me ook nog gewaagd aan deze kruising, bij gebrek aan een bestaand iets met een bocht er in. De rails zijn gesoldeerd op een stukje dubbelzijdig printplaat. Het is nog niet perfect maar de meeste treinen gaan er overheen zonder ontsporen...

(https://images.beneluxspoor.net/bnls/kruising_6.jpg) (https://images.beneluxspoor.net/bnls/kruising_6.jpg)






Titel: Re: El carrilet
Bericht door: laurent op 11 oktober 2017, 23:47:14
Wat ik in je kruising mis zijn de contrarails om te zorgen dat je wielen niet de verkeerde kant op gaan. :) Verder een interessant project zo, zeker met die zelfbouw elektronica allemaal erbij.
Titel: Re: El Carrilet
Bericht door: 72sonett op 11 oktober 2017, 23:51:56
Er zitten bielzen tussen als contrarails, is op de foto niet zo goed te zien.

Mijn interesse gaat meer uit naar elektronica en besturing dan naar scenery en tijdperkcorrecte treinstellen, bij mij rijdt vanalles door elkaar...
Titel: Re: El Carrilet
Bericht door: 72sonett op 13 oktober 2017, 10:38:35
Zo ziet het er uit op het computerscherm:
(https://images.beneluxspoor.net/bnls/scherm1.jpg) (https://images.beneluxspoor.net/bnls/scherm1.jpg)

De 4 opstelsporen rechts zijn er in werkelijkheid nog niet, komt later.
Rode lijn is bezet blok, groen is vrij. De seinen worden aangegeven met een dikke rode of groene stip.
De lijst midden in het scherm geeft de treinen die beschikbaar zijn op de witte sporen aan de linkerkant, dat deel is handbediend. Een geselecteerde trein kan ik het gecontroleerde deel in laten rijden, en er weer uit.

De blauwe stippen zijn bezetmelders (reedschakelaars), door ze op het scherm aan te klikken kan ik een trein simuleren.
Titel: Re: El carrilet
Bericht door: 72sonett op 26 november 2017, 23:43:58
De meeste elektrische wissels worden rechtstreeks bediend door een relais op de uitvoerkaart waarbij ik vertrouw op de eindafschakeling, maar nog niet alle wissels zijn elektrisch en de klassieke Roco of Fleischmann wisselaandrijvingen zijn me te duur.

Door goedkope servo's en een omgebouwde servotester te gebruiken worden die wissels nu omgezet door een servo:

- goedkope Chinese servotester, ca 1 euro
(https://images.beneluxspoor.net/bnls/wisselservo-01.jpg)

- potmeter (10k) lossolderen:
(https://images.beneluxspoor.net/bnls/wisselservo-02.jpg)

- connector en draadbrug er op:
(https://images.beneluxspoor.net/bnls/wisselservo-03.jpg)

- 2 potmeters (10k) parallel en 2 connectoren op apart stukje gaatjesboard:
(https://images.beneluxspoor.net/bnls/wisselservo-04.jpg) (https://images.beneluxspoor.net/bnls/wisselservo-05.jpg)

- gaatjesboard op testerprintje geprikt
(https://images.beneluxspoor.net/bnls/wisselservo-06.jpg)

-SG92 servo (ca 1 euro) aangesloten en connector met 3 lange draden naar relais op uitvoerkaart
(https://images.beneluxspoor.net/bnls/wisselservo-07.jpg)

Het common relaiscontact komt aan het oude lopercontact van de tester. De NC en NO relaiscontacten komen aan de lopers van de 2 potmeters. Met het schakelen van het relais wordt steeds één van de 2 potmeters gekozen. Hiermee zijn de eindstanden van de servo in te stellen.

Zie ook deze pagina in de encyclopedie (https://encyclopedie.beneluxspoor.net/index.php/Servo-aansturing#Aangepaste fabrieks-servotester).

Wisselaandrijving voor ca 2,50 euro, een fractie van de fabrieksaandrijving...
Titel: Re: El carrilet
Bericht door: Hans Grasmaijer op 27 november 2017, 00:53:59
Leuke baan met veel zelfbouw. Bijvoorbeeld je wisselaandrijving, dat geeft te denken.
Filmpjes ook leuk, lekker puur techniek el carrilet y el coche.
Mag ook wat muziek eronder, van de animals bijvoorbeeld, of jouw voice-over met uitleg.  (y)




Titel: Re: El carrilet
Bericht door: 72sonett op 27 november 2017, 18:59:58
Het 1e schema is het ge-"reverse engineerde" schema van een servotester, rond het IC niet helemaal correct maar het gaat vooral om hoe de potmeter aan het IC zit.
Het 2e schema geeft het principe van 2 potmeters en een schakelaar.
Het 3e schema is zoals ik het gemaakt heb, met een piggy back printplaatje met connectoren en 2 potmeters op de plaats van de ene potmeter.

Een wisseldecoder werkt ook met een relais toch? Dit is dan ook voor een digitale baan te gebruiken.

(https://images.beneluxspoor.net/bnls/wisselservo-08_1.jpg)


Die filmpjes heb ik ooit even snel gemaakt met mijn telefoon, met slechte belichting. Teveel moeite om ze mooier te maken met een muziekje er bij...
Titel: Re: El carrilet
Bericht door: 72sonett op 15 januari 2018, 19:49:17
Dit weekeind een draadloos camera'tje ingebouwd in een lange "DIGITAL is cool" wagon:

(https://images.beneluxspoor.net/bnls/camera-1.jpg)

(https://images.beneluxspoor.net/bnls/camera-2.jpg) (https://images.beneluxspoor.net/bnls/camera-3.jpg)

Ontvanger, aangesloten op video ingang van TV:

(https://images.beneluxspoor.net/bnls/camera-5.jpg)

Beeld op TV:

(https://images.beneluxspoor.net/bnls/camera-6.jpg)


Nu nog uitzoeken hoe ik er een filmpje van kan maken.

Titel: Re: El carrilet
Bericht door: Reinout van Rees op 16 januari 2018, 08:41:24
Oh wow, dat ziet er stukken handiger en netter uit dan mijn klein-cameraatje-met-ducttape-op-rongenwagen experiment! Tijd om een oud rijtuig bij de kladden te vatten.

Om het naar je pc te kijken zou je een goedkope "video grabber" (voorbeeld (https://www.conrad.nl/nl/basetech-br116-video-grabber-incl-videobewerkingssoftware-plug-play-1168633.html?sc.ref=Search%20Results)) kunnen gebruiken.

Reinout
Titel: Re: El carrilet
Bericht door: 72sonett op 16 januari 2018, 11:57:31
Citaat
...  "video grabber"
Nu je het zegt... ik heb nog ergens zo een ding liggen, ooit gebruikt om videotape op DVD te zetten. Dat wordt even zoeken...
Titel: Re: El carrilet
Bericht door: mikeya op 16 februari 2018, 14:30:29
Zojuist dit topic gevonden via de link in je signature.
Geinig project. Ik sta er niet altijd bij stil dat het digitaliseren van de baan iets is wat bijvoorbeeld al in de jaren 80 werd gedaan.
Ook leuk om generatieverschillen te zien qua programmeren  ::)
Zelf een beetje gerommeld met Delphi rond 1999, dat was zo rond mijn 13e, maar nooit meer iets meegedaan.

Dit ga ik wel volgen :)
Titel: Re: El carrilet
Bericht door: 72sonett op 18 februari 2018, 22:02:14
Citaat van: Reinout van Rees
...  "video grabber"
Ik heb mijn oude video grabber weer opgezocht en aangesloten op de ontvanger en de computer.  Vervolgens MS Movie Maker (https://www.microsoft.com/nl-nl/store/p/movie-creator-free-video-editor/9nblggh4wwjr) gedownload en uitgeprobeerd. Nu krijg ik alleen maar een zwart/wit beeld op de computer terwijl ik met de ontvanger op de TV wel een kleurenbeeld krijg... rara??

Ik heb de camera overigens weer uit de 'Cool' wagon gehaald en ingebouwd in een oude Jouef 1306, zonder motor, zodat hij door een andere loc opgeduwd kan worden ipv getrokken. Ik werd wat duizelig van het achteruitrijden...

(https://images.beneluxspoor.net/bnls/camera1306-1.jpg)

Ik heb alle assen van de 1306 voorzien van stroomafnemers, een brugcel en een buffer-elco toegevoegd en een 7809 spanningsregelaar. De camera werkt nu zonder batterijtje, scheelt een hoop ruimte:

(https://images.beneluxspoor.net/bnls/camera1306-5.jpg)

De camera zit achter het kleine gaatje onder de middenstijl, zit vast met twee M2 boutjes waarvan de koppen te zien zijn. Er zitten ook nog twee witte leds in die genoeg licht geven om ook in tunnels beeld te hebben.

(https://images.beneluxspoor.net/bnls/camera1306-3.jpg)

Citaat van: mikeya
... Ik sta er niet altijd bij stil dat het digitaliseren van de baan iets is wat bijvoorbeeld al in de jaren 80 werd gedaan.
Ja, ik ben er begin jaren '80 mee begonnen, toen was jij nog niet geboren...  :)  Je bent net zo oud als mijn zoon.

Citaat
Dit ga ik wel volgen
Leuk, maar ik post niet zoveel, je moet wel geduld hebben.  ;D
Titel: Re: El carrilet
Bericht door: gvandersel op 24 mei 2018, 09:19:27
Hoi,

Zit even te neuzen in je bouwdraadje (Dankzij je signature). Qua leeftijd en opleiding en programma afkomst redelijk op hetzelfde niveau.
Ben in de jaren 80/90 bezig geweest met automatiseren met het HCC!m systeem. Dus kon ook hun software gebruiken.
Daarnaast in die tijd Delphi gebruikt om mijn eerste stapjes in OO te zetten. Later veel aan gehad.
Nu is Visual Studio de ontwikkel omgeving voor de normale zaken. Verder zoveel mogelijk de bijbehorende IDE.

Groet,

Gerard van der Sel.
Titel: Re: El carrilet
Bericht door: 72sonett op 24 mei 2018, 11:49:06
Ik ben inmiddels gepensioneerd dus ik heb alle tijd voor modelspoor en ander hobbies.

Ik heb in het verleden ook veel programmeerwerk gedaan maar hoofdzakelijk voor relationele databases, niets in procesbesturing e.d., daar ben ik pas mee begonnen met deze modelbaan, de overstap van procedureel naar OOP heb ik ook nooit echt gemaakt, ben er wel mee begonnen, ook in Delphi maar het was me teveel gedoe en het ging me niet snel genoeg. Ik kan nu met Pascal alles doen wat ik wil dus ik begin ook niet meer aan OOP.

Wat ik nog wel doe is werken met een Basic Stamp microcontroller, o.a. de traverse op mijn baan wordt bestuurd door een BS2 en het een mechanisme uit een oude matrixprinter en er ligt ook nog ergens een Arduino waar ik wat mee stoei in C++ (wat een gedoe) en waar  nu een DCC++ centrale op staat, maar Pascal blijft mijn favoriete programmeertaal. Die Arduino centrale met JMRI is nog een project voor later...

Mijn modelbaan is inmiddels uitgebreid met een (soort van) schaduwstation met 4 sporen, dat vereiste weer wat extra programmeerwerk...

gr M.

(https://images.beneluxspoor.net/bnls/schaduw01.jpg)


Titel: Re: El carrilet
Bericht door: 72sonett op 10 oktober 2018, 01:53:31
Vandaag maar eens een softwarematige aanpak bedacht voor een PWM snelheidsregeling omdat de vorige niet werkte... (zie hier (https://forum.beneluxspoor.net/index.php?topic=78506.msg3221828456#msg3221828456)).

Arduino Uno gekocht en een dubbele H brug. Een printje met 3 potmeters had ik nog liggen, uit een oude TV. Voeding gemaakt van de onderdelen uit een defecte spaarlamp + een ledje. Faller AMS trafo van 16 V had ik ook nog.

Programma'tje geschreven voor de Arduino. Het idee was om een positieve puls te maken met een variabele lengte van 0.. 10ms gevolgd door een negatieve puls van 0..10 ms, op soortgelijke manier als het originele Faller AMS systeem dat doet met een halve sinus, waarvan dan de amplitude geregeld wordt door een variabele weerstand, totale vaste lengte 20 ms (= 50 Hz). Met PWM regel je de pulsbreedte, niet de pulshoogte (die blijft constant).

Mijn idee was om tzt een parallelle LCD aan te sluiten om de snelheid te laten zien op een schaal van 0..100, dus die code zit ook al in het programma, maar het wordt dan waarschijnlijk te traag om nog op tijd pulsen te maken. Met een seriële terminal lukt het in ieder geval niet.

// AMSregelaar.ino
// regelt 2 auto's mbv een halve L298N dual H bridge module en 2 potmeters
//
// ================================= [include libraries ] ==========================================
#include <LiquidCrystal.h> // Hitachi HD44780 LCD library

// ================================= [global variables ] ==========================================
const byte LCDRSpin = 12;  // LCD pinnen
const byte LCDEnpin = 11;
const byte LCDD4pin =  4;  // data
const byte LCDD5pin =  5;
const byte LCDD6pin =  6;
const byte LCDD7pin =  7;
LiquidCrystal lcd(LCDRSpin, LCDEnpin, LCDD4pin, LCDD5pin, LCDD6pin, LCDD7pin);
//
// input pins met potmeter
const byte speed1pin =  A1; // snelheid auto 1 ++/-- met potmeter
const byte speed2pin =  A2; // snelheid auto 2 ++/-- met potmeter

// output pins motor control H-bridge
const byte auto1pin = 8;    // auto 1 op rijstrook A, '0' = stop, '1' = rijden
const byte auto2pin = 9;    // auto 2 op rijstrook A

const byte pulstijd = 10;   // pulslengte bij 50 Hz = 1/50 = 20/1000 = 20 ms = 10 msec +puls + 10 msec -puls
//word snelheid;
word rijtijd;
//                             +5 V|--------|              |-----|                 |---|
//                                 |        |              |     |                 |   |                   |
//                              0 -|        |--|  |--------|     |-----|  |--------|   |-------|   |-------|
//                                             |  |        |           |  |        |           |   |       |
//                             -5 V            |--|        |           |--|        |           |---|       |
//                                             |           |           |           |           |           |
// PWM deel              msec      |  8     | 2| 2|   8    |  5  |  5  | 2|    8   | 3 |   7   | 3 |   7   |
// hoog/laag freq        msec      |     10    |    10     |    10     |    10     |    10     |     10    |
// hoog + laag           msec      |          20           |          20           |          20           |
// ==============================================================================================================
void disp(word s, byte r){  // regel 1 = 0                  Subroutine om tekst op LCD te laten zien
  lcd.setCursor(0, r-1);    // laat s zien op regel r van display
  lcd.print("snelheid ");
  lcd.print(r,DEC);
  lcd.print(": ");         
  lcd.print(s, DEC);         
  lcd.print("  ");
}
// ========================== [set up ] ========================================================================
//
void setup() {
  lcd.begin(16, 2);          // set up LCD 16 karakters, 2 regels
  lcd.clear();
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(speed1pin,INPUT);  // joystick potmeter snelheid auto 1
  pinMode(speed2pin,INPUT);  // joystick potmeter snelheid auto 2
  pinMode(auto1pin,OUTPUT);  // aansturing H brug
  pinMode(auto2pin,OUTPUT);
  digitalWrite(auto1pin,LOW); // auto 1 uit
  digitalWrite(auto2pin,LOW); // auto 2 uit

  //Serial.begin(9600);         // open serial port  9600 bps: 
}
// ========================= [ main ] ============================================================================
void loop() {
  digitalWrite (auto1pin,HIGH);        // laat auto 1 rijden, kijk ondertussen naar +/- joystick
  digitalWrite(LED_BUILTIN, HIGH);     // ingebouwde LED loopt mee met auto 1
  //snelheid = analogRead(speed1pin)/10; // potmeter; waarde 0..1023/10 = 0..102
  //disp(snelheid,1);                    // laat snelheid 1 zien op regel 1 van lcd
  //Serial.print("snelheid 1: ");        // test
  //Serial.println(snelheid);            // test
  //rijtijd = snelheid/10;               // waarde 0..102/10 ==> puls 0..10 msec
  rijtijd = analogRead(speed1pin)/100; // waarde 0..1023/100 ==> puls 0..10 msec
  delay (rijtijd);                     // laat auto 1 rijden gedurende 'rijtijd1' = 0..10 msec
  digitalWrite(auto1pin,LOW);          // stop auto 1
  digitalWrite(LED_BUILTIN, LOW);      // ingebouwde LED loopt mee met auto 1
  delay (pulstijd - rijtijd);          // gedurende rest pulstijd, totaal 10 msec

  digitalWrite(auto2pin,HIGH);         // laat auto 2 rijden, kijk ondertussen naar joystick
  //snelheid = analogRead(speed2pin)/10; // potmeter; waarde 0..1023/10 = 0..102
  //disp(snelheid,2);                    // laat snelheid 2 zien op regel 2 van lcd
  //Serial.print("Snelheid 2: ");
  //Serial.println(snelheid);
  //rijtijd = snelheid/10;               // waarde 0..102/10 ==> puls 0..10 msec
  rijtijd = analogRead(speed2pin)/100; // waarde 0..1023/100 ==> puls 0..10 msec
  delay (rijtijd);                     // laat auto 2 rijden gedurende 'rijtijd2' = 0..10 msec
  digitalWrite(auto2pin,LOW);          // stop auto 2
  delay (pulstijd - rijtijd);          // gedurende rest pulsijd

// LOOP                    // voor altijd
}
// ==========================[ end main ] ========================================================================

De Arduino verbonden met de potmeters en de stuuringang van de motorregelaar. De Arduino zit op een 12 V adapter.
De motorregelaar krijgt een gelijkspanning van ca 20 V uit de trafo en de voeding, de uitgang van de regelaar gaat naar de baan.

Foto's volgen...
Titel: Re: El carrilet
Bericht door: 72sonett op 10 oktober 2018, 17:08:56
Dat ziet er dan zo uit:

Potmeters
(https://images.beneluxspoor.net/bnls/potmeters.jpg) (https://images.beneluxspoor.net/bnls/potmeters.jpg)


Arduino, H-brug motorregelaar
(https://images.beneluxspoor.net/bnls/ArduinoUno.jpg) (https://images.beneluxspoor.net/bnls/ArduinoUno.jpg)


Trafo, voeding
(https://images.beneluxspoor.net/bnls/regelaarHbrug-2.jpg) (https://images.beneluxspoor.net/bnls/regelaarHbrug-2.jpg)


Pulsen zichtbaar op DSO
+puls
(https://images.beneluxspoor.net/bnls/pluspuls.jpg) (https://images.beneluxspoor.net/bnls/pluspuls.jpg)

-puls
(https://images.beneluxspoor.net/bnls/minpuls.jpg) (https://images.beneluxspoor.net/bnls/minpuls.jpg)

beide
(https://images.beneluxspoor.net/bnls/helepuls.jpg) (https://images.beneluxspoor.net/bnls/helepuls.jpg)

Puls met rijdende auto
(https://images.beneluxspoor.net/bnls/viezepuls.jpg) (https://images.beneluxspoor.net/bnls/viezepuls.jpg)


Video van pulsen bij verdraaien van potmeters, eerst + puls van 0-- -> 10 ms, dan -puls 0 ---> 10 ms
en weer terug naar 0 ms

https://www.youtube.com/v/eeQ7wKJ8dOA

Pulsen met rijdende auto
https://www.youtube.com/v/cYd4oS7vSTA
Titel: Re: El carrilet
Bericht door: 72sonett op 10 december 2018, 14:11:32
Dit weekeind nog wat verder nagedacht...

Een Arduino heeft 6 analoge ingangen en 6 PWM uitgangen. Door die te gebruiken, met een dubbele H-brug motorregelaar, is het mogelijk om 4 auto's onafhankelijk van elkaar te laten rijden.

Schema:

(https://images.beneluxspoor.net/bnls/AMSregelaar4xPWM.jpg)

Regelaar:
(https://images.beneluxspoor.net/bnls/regelaarNanox4-1.jpg)

(https://images.beneluxspoor.net/bnls/regelaarNanox4-2.jpg)

Maar dan blijven er van de Arduino nog 2 in- en uitgangen ongebruikt, dat is jammer...
Door nog 2 potmeters toe te voegen en een 2e motorregelaar, zijn er dus 6 auto's te regelen, en met 2 Arduino's en 3 regelaars dus 12 auto's (de 2e motorregelaar wordt met 2 Arduino's gestuurd).

De code is voor dit laatste, 6 auto's per Arduino:
Code:
// AMScontrollerPWM.ino
//
// controls 2x 2 Faller AMS cars in same lane
// using L298N dual H bridge module and 4 (slide) potmeters
//
// ================================= [include libraries ] ==========================================
//  none
// ================================= [global variables ] ==========================================
//
// input pins potmeters
const byte speed6pin =  A0; // speed car 6 ++/--  potmeter
const byte speed1pin =  A1; // speed car 1 ++/--  potmeter
const byte speed2pin =  A2; // speed car 2 ++/--  potmeter
const byte speed3pin =  A3; // speed car 3 ++/--  potmeter
const byte speed4pin =  A4; // speed car 4 ++/--  potmeter
const byte speed5pin =  A5; // speed car 5 ++/--  potmeter
//
// output pins H-bridge 1 (PWM)
const byte car1pin = 11; // lane A, cars 1 & 2
const byte car2pin = 10;
const byte car3pin = 6;  // lane B, cars 3 & 4
const byte car4pin = 5;
// output pins H-bridge 2 (PWM)
const byte car5pin = 4;  // lane C, cars 5 & 6
const byte car6pin = 9;
//
const byte pulsetime = 10;  // pulse length at 50 Hz = 1/50 sec = 0.002 sec = 20 ms = 10 msec +puls + 10 msec -puls
//
// =========================== [ set up ]=========================================================================
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite (LED_BUILTIN, HIGH);  // built-in LED on
  pinMode(speed1pin,INPUT);  // potmeter speed car 1
  pinMode(speed2pin,INPUT);  // potmeter speed car 2
  pinMode(speed3pin,INPUT);  // potmeter speed car 3
  pinMode(speed4pin,INPUT);  // potmeter speed car 4
  pinMode(speed5pin,INPUT);  // potmeter speed car 5
  pinMode(speed6pin,INPUT);  // potmeter speed car 6
 
  pinMode(car1pin,OUTPUT);   // control of H bridge 1, cars 1..4
  pinMode(car2pin,OUTPUT);   // all pins output
  pinMode(car3pin,OUTPUT);
  pinMode(car4pin,OUTPUT);
  pinMode(car5pin,OUTPUT);   // control of H bridge 2, cars 5,6
  pinMode(car6pin,OUTPUT);
 
  digitalWrite(car1pin,LOW); // all cars stop
  digitalWrite(car2pin,LOW);
  digitalWrite(car3pin,LOW);
  digitalWrite(car4pin,LOW);
  digitalWrite(car5pin,LOW);
  digitalWrite(car6pin,LOW);
  delay (1000);                     // wait 1 sec
  digitalWrite (LED_BUILTIN, LOW);  // built-in LED off
}
// =========================== [ main ] ==========================================================================
void loop() {
  // ADC value on potmeter speed pin = 0..1023
  // divide by 4 to convert to pulse 0..255 ==> 0..100% duty cycle
  //
  // for '+' cars in lane A, B & C (cars 1, 3 & 5)
  digitalWrite (car1pin,LOW);
  analogWrite  (car2pin,analogRead(speed1pin)/4); // + car 1 in lane A
  digitalWrite (car3pin,LOW);
  analogWrite  (car4pin,analogRead(speed3pin)/4); // + car 1 in lane B
  digitalWrite (car5pin,LOW);
  analogWrite  (car6pin,analogRead(speed5pin)/4); // + car 1 in lane C
  delay (pulsetime); // wait positive halfwave

  // for '-' cars in lane A B & C (cars 2, 4 & 6)
  digitalWrite (car2pin,LOW);
  analogWrite  (car1pin,analogRead(speed2pin)/4); // - car 2 in lane A
  digitalWrite (car4pin,LOW);
  analogWrite  (car3pin,analogRead(speed4pin)/4); // - car 2 in lane B
  digitalWrite (car6pin,LOW);
  analogWrite  (car5pin,analogRead(speed6pin)/4); // - car 2 in lane C
  delay (pulsetime); // wait negative halfwave
 
} // repeat forever
 
// ==========================[ end main ] ========================================================================

Deze week nog maar wat bijbouwen.
Titel: Re: El carrilet
Bericht door: mikeya op 26 december 2018, 19:58:17
 (y) (y) (y)
Titel: Re: El carrilet
Bericht door: Sven op 21 juli 2019, 10:24:36
Ik heb alle assen van de 1306 voorzien van stroomafnemers, een brugcel en een buffer-elco toegevoegd en een 7809 spanningsregelaar. De camera werkt nu zonder batterijtje, scheelt een hoop ruimte
Martin, ik heb een Wifi camera (SQ13) om in een lok in te bouwen en ik wil ook zoiets erom heen bouwen, zodat de camera stroom afneemt van het spoor en een stroombuffer heeft. Weet je misschien waar ik ergens een overzicht/schema hiervan kan vinden hoe ik dat in elkaar zet? Het lijkt me een redelijk eenvoudige opstelling en ik ben wel handig met solderen, maar niet met het bedenken van elektronische schakelingen.
Titel: Re: El carrilet
Bericht door: Sven op 21 juli 2019, 11:17:15
Antwoord ontvangen via PM. Camera heeft batterij, da's z'n stroombuffer. 5V DC converter erop, klaar. Ik zal er in mijn draadje over de SQ13 verder over schrijven als ik zover ben.
Titel: Re: El carrilet
Bericht door: Jack Black (NS1220) op 19 november 2020, 17:43:51
Werk je nog aan deze baan?
Titel: Re: El carrilet
Bericht door: 72sonett op 19 november 2020, 18:25:20
Jazeker!!
Ik heb alleen wat pech gehad met een computer die stuk ging en waar het besturingsprogramma op stond. Ik heb inmiddels een nieuwe computer en ik heb een backup terug gezet etc, maar er is ook een groter scherm bij de nieuwe computer dus ik moest het display deel van het programma herschrijven...

Het kost allemaal wat tijd...

Titel: Re: El carrilet
Bericht door: Jack Black (NS1220) op 19 november 2020, 18:27:16
Ah mooi  (y)
Titel: Re: El carrilet
Bericht door: 72sonett op 20 november 2020, 11:00:37
Dit is mijn meest recente bouwsel; een traverse, gemaakt met met het loopwerk van een oude matrixprinter met stappenmotor. Op de plaats van de printkop zit de bak van de traverse. Besturing met een Arduino. Met een draaiknop wordt het spoor gekozen en na indrukken van een knopje schuift de bak naar het gekozen spoor.
De sporen zijn nog niet aangesloten op een regelaar, dat wordt de volgende stap.


https://www.youtube.com/v/BaNMoxOLXKg

Als het filmpje niet start, dit is de link (https://www.youtube.com/watch?v=BaNMoxOLXKg).
Titel: Re: El carrilet
Bericht door: Jack Black (NS1220) op 20 november 2020, 12:33:23
Prachtig  (y)
Ik hou van bewegende dingen op de baan.
Welk land en welke periode heb je als thema?
Titel: Re: El carrilet
Bericht door: 72sonett op 20 november 2020, 13:05:06
Hoofdzakelijk NL materieel, maar ik heb ook een Duitse stoomlok, en een USA Burlington Northern loc en een Canadese CN, gewoon omdat ik die mooi vond en er tijdens een vakantie toevallig tegenaan liep.

Wat tijdperken betreft doe ik niet moeilijk, ik rij met wat ik mooi vind. Het gaat mij meer om de besturing en de elektronica. Ik lig er ook niet wakker van dat er gelijke wagennummers in dezelfde trein zitten...  ;)
Titel: Re: El carrilet
Bericht door: Jack Black (NS1220) op 20 november 2020, 13:46:03
Wagennummers; je hebt van die fundamentalisten die eisen dat die allemaal verschillen  :D
Ik heb ook D en NL en net als jij een paar USA locs die ik mooi vind: Die EMD DDA40X moest ik natuurlijk wel hebben  :)
Titel: Re: El carrilet
Bericht door: Frycio82 op 22 november 2020, 21:39:00
Hallo,

Geweldig die traverse :):):)  (y) (y) (y) (y) (y)
Goed idee met die stappenmotor van een matrix printer.
Titel: Re: El carrilet
Bericht door: 72sonett op 23 november 2020, 12:55:36
Goed idee met die stappenmotor van een matrix printer.

Mocht het je interesseren, dit is het principeschema:

(https://images.beneluxspoor.net/bnls/traverse-schema-arduino.jpg) (https://images.beneluxspoor.net/bnls/traverse-schema-arduino.jpg)

Titel: Re: El carrilet
Bericht door: Frycio82 op 24 november 2020, 07:07:41
Hallo,

Bedankt voor het schema. Kan dit ook worden uitgevoerd met een Arduino Uno ? Daar heb ik er nog een paar van liggen :)
Titel: Re: El carrilet
Bericht door: bask185 op 24 november 2020, 08:07:48
Misschien, in dit schema zijn A6 en A7 gebruikt en een UNO heeft die niet. Echter A2 is nog vrij om te gebruiken en je kan ook nog pin 0 en 1 gebruiken, maar let op dat je die weer makkelijk los kan maken omdat iets aansluiten op die pinnen het upload process zou kunnen verstoren. Ik weet verder niets af van die BCD<->7 segment omzetter.

@Sonnet, ik weet niet wat je precies doet met A6 en A7, ik had ooit gelezen dat je die alleen als analoge input kon gebruiken ???

Bas
Titel: Re: El carrilet
Bericht door: gvandersel op 24 november 2020, 09:10:56
A6 en A7 zijn eigenlijk poort C pin 6 en pin 7 en zijn mits uitgevoerd gewoon als dogitale input/output te gebruiken, net als A0 tot A5.

Groet,

Gerard van der Sel.
Titel: Re: El carrilet
Bericht door: bask185 op 24 november 2020, 09:17:37
Hm ik heb het gegoogled en A6 en A7 kun je niet als digitale pinnen inzetten. Ze zijn alleen aangesloten op een interne multiplexer op de ADC.
https://forum.arduino.cc/index.php?topic=568116.0 (https://forum.arduino.cc/index.php?topic=568116.0)

Bas

Titel: Re: El carrilet
Bericht door: ikbenerevenniet op 24 november 2020, 09:51:55
Kan dit ook worden uitgevoerd met een Arduino Uno ?

Ja. Als het om pins A3 t/m A7 gaat: de Uno heeft genoeg vrije digitale I/O-pins, nl. 2 t/m 13 (*) en A0 t/m A5. Alleen is van die laatste reeks A1 in 72sonett's schema al in gebruik als analoge input, en die heb je op de Uno natuurlijk ook weer nodig.

*: Ook nog 0 en 1, maar die kun je beter vrij houden, zijn nl. voor de seriepoort, en die heb je nodig om een sketch te kunnen uploaden.
Titel: Re: El carrilet
Bericht door: 72sonett op 24 november 2020, 11:33:08
Dat van A6 en A7 wist ik van de Arduino reference (https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/), maar ik gebruik ze als digitale uitvoer en blijkbaar gaat dat goed.  Eventueel kun je de LT op A5 weglaten en dan A2 en A5 gebruiken ipv A6 en A7.

De draaischakelaar geeft met een weerstandsladder een analoge waarde aan de Nano, die waarde wordt verschaald naar een getal 0..5 voor het spoornummer. Dit nummer wilde ik zichtbaar maken op een grote 7-segmentdisplay opgebouwd uit rechthoekige leds, maar omdat er op de Nano geen 7 I/O lijnen meer vrij waren heb ik dat met een BCD naar 7segment decoder gedaan door het spoornummer per bit naar de (4) A, B, C en D ingangen van de decoder te schrijven. Toen was er nog weer een I/O voor de lamptest (LT) beschikbaar dus die heb ik ook maar gebruikt, hoewel je voor die LT ook een 8 naar de display kan sturen. Je kunt dat hele 7segmentdeel ook weglaten, ik heb het ook nog niet aangesloten.
(https://images.beneluxspoor.net/bnls/7SegSpoorDisp.jpg)

Het aantal stappen tussen de sporen heb ik experimenteel vastgesteld en de waarde als constante in het programma gezet, zo ook het stukje tussen de parkeerstand helemaal links en spoor 0.

Bij inschakelen is de stand van de stappenmotor en de traverse niet bekend, er moet dus eerst een nulstand worden bepaald. Dat gebeurt door de traverse langzaam naar links te schuiven totdat een schakelaartje wordt ingedrukt (het klikken van het schakelaartje is te horen in het filmpje). Vanuit die 'parkeerstand' schuift de traverse dan naar spoor 0.

In het filmpje is te zien dat de traverse soms blijft haken achter een aansluitend spoor en de motor een paar stappen overslaat, dan is de nulstand ook weg en dan lijnen de sporen niet meer op met de traverse. Daarom wordt iedere keer als spoor 0 gekozen wordt de parkeerstand weer even opgezocht en dan klopt het weer.

In het filmpje is ook te zien dat na inschakelen de LCD niet altijd goed de tekst weergeeft, maar als ik dan de resetknop op de Nano indruk is het weer ok.

De traverse is overigens een Märklin brugdeel.

Voor de liefhebbers, dit is het programma;
// ULN2803/4 controller board, Matsushita 42SIM-24D8YB/24D8A stepper motor
// I/O pin1 = 4 rood  ---> pin 4 stepper motor
// I/O pin2 = 5 bruin ---> pin 2     ,,
// I/O pin3 = 6 geel  ---> pin 1     ,,
// I/O pin4 = 7 blauw ---> pin 3     ,,
//              wit   ---> pin 5   (VCC)
// volgorde; 6 -> 6+5 -> 5 -> 5+7 -> 7 -> 7+4 -> 4 -> 4+6
//
//--------------------- [global variables ]------------------------------------------------------
const byte maxspoor    = 6;  // aantal sporen
const byte parkpause   = 2;  // minimum pause in msec = max. snelheid
const byte schuifpause = 1;  // max. pause in msec = min. snelheid
const word stappenperspoor = 130; // aantal stappen tussen 6 sporen 0..5
const word stappennaarnul  =  30; // aantal stappen van parkeerpositie naar spoor 0
char messVersie[]="Traverse 1.0      "; // 18 posities

byte doelspoor;              // 6 sporen, om doelspoor 0..5 aan te geven
byte actspoor;               // om actuele spoor aan te geven

byte rotorpos[9];            // fases 00000000 .. 00001010
byte index;                  // begin fasepositie na parkeren
int stappen;                 // totaal te nemen stappen vooruit (+) of achteruit (-)
bool parkstand;              // om aan te geven of in parkeerstand of niet
//
//                  bit  D76543210
const byte LCDcls      = B00000001; // clear LCD
const byte autoinc     = B00000110; // Set Auto-Increment on
//                       B00001100; // Display on/off control: Display on, cursor off, blink off
const byte cursoron    = B00001110; // Turn On Cursor
const byte twoline4b5x8= B00101000; // Function Set: 4 bits, 2-Line Mode, 5x8 font
// Function set          B001LNF--  Sets interface data length (L), number of display lines (N), and character font (F). 37 ms
//                           1      : 8 bits,
//                           0      : 4 bits
//                            1     : 2 lines,
//                            0     : 1 line
//                             1    : 5 x 10 dots,
//                             0    : 5 x 8 dots
//                       B00110100; // Function Set: 8-bit, 1 line, font 5x10
const byte cursorleft  = B00010000; // move cursor 1 pos to left
const byte cursorright = B00010100; // move cursor 1 pos to right
//                       B0001 S/C R/L — — // Cursor or display shift without changing DDRAM contents. 37 ms
//                              1     = Display shift
//                              0     = Cursor move
//                                  1   = to the right
//                                  0   = to the left



// -----[ I/O pin definitions ]-------------------------------------------------
const byte draaiswpin  = A1;  // invoer voor doelspoor 0..6
const byte parkswpin   = 5;   // invoer parkeerschakelaar
       
const byte stepB4pin   = 10;  // naar stappenmotor via ULN2003 pin B1..B4
const byte stepB3pin   = 11;
const byte stepB2pin   = 12;
const byte stepB1pin   = 13;
//
const byte BCDpinA     = A3;  // BCD naar 7 seg display
const byte BCDpinB     = A7;
const byte BCDpinC     = A6;
const byte BCDpinD     = A4;
const byte lamptestpin = A5;

const byte ledroodpin  = 6;   // naar rode led op lcdboard
const byte ledgroenpin = 4;   // naar groene led op lcdboard
const byte LCDd4pin    = A0;  // naar LCD datapin D4
const byte LCDd5pin    = 9;   // naar LCD datapin D5
const byte LCDd6pin    = 2;   // naar LCD datapin D6
const byte LCDd7pin    = 8;   // naar LCD datapin D7
const byte ENpin       = 7;   // naar LCD pin 10 ENable read/write
const byte RSpin       = 3;   // naar LCD pin 9 Register SELECT; 0 = Instructie, 1 = data/text
 
//======================[ LCD subroutines ] ======================================================
void ClearLCD() {
  SendInst (LCDcls); // Clear display
}
// ----------------------------------
void SendInst(byte inst){
  digitalWrite(RSpin,LOW);   // Set instruction mode
  SendChar (inst);
  digitalWrite(RSpin,HIGH);  // Back to text mode;
}      // SendInst           
// ----------------------------------
void SendChar (byte kar){

  digitalWrite(LCDd4pin,bitRead(kar,4));  // kar.HIGHNIB   // Send High Nibble
  digitalWrite(LCDd5pin,bitRead(kar,5));
  digitalWrite(LCDd6pin,bitRead(kar,6));
  digitalWrite(LCDd7pin,bitRead(kar,7));
  digitalWrite(ENpin,1);                  // puls op ENable, LCD neemt data over
  delayMicroseconds(5);
  digitalWrite(ENpin,0);
  //
  digitalWrite(LCDd4pin,bitRead(kar,0));   // kar.LOWNIB    // Send Low Nibble
  digitalWrite(LCDd5pin,bitRead(kar,1));
  digitalWrite(LCDd6pin,bitRead(kar,2));
  digitalWrite(LCDd7pin,bitRead(kar,3));
  digitalWrite(ENpin,1);                   // puls op ENable, LCD neemt data over
  delayMicroseconds(5);
  digitalWrite(ENpin,0);
  //delay(10);
} // SendChar
//----------------------------------------------------------------------------------
void stepperstap(byte index) {  // draai steppermotor 1 stap
  digitalWrite(stepB1pin,bitRead(rotorpos[index],0));
  digitalWrite(stepB2pin,bitRead(rotorpos[index],1));
  digitalWrite(stepB3pin,bitRead(rotorpos[index],2));
  digitalWrite(stepB4pin,bitRead(rotorpos[index],3));
} // stepperstap
//----------------------------------------------------------------------------------
void motorstop () {                // maak steppermotor stroomloos, leds aan/uit
  stepperstap(0);
  digitalWrite (ledroodpin,LOW);   // rode led uit
  digitalWrite (ledgroenpin,HIGH); // groene aan
} // motorstop
//----------------------------------------------------------------------------------
void parkeer() {                   // draai langzaam terug naar positie 0 totdat schakelaar wordt ingedrukt
  char messPark1[15] = "Parkeren...   ";
  char messPark2[15] = "Geparkeerd.   ";

  digitalWrite (ledroodpin,HIGH);     // rode led aan, groene uit
  digitalWrite (ledgroenpin,LOW);
  ClearLCD;
  delay(50);
  for (int t = 0; t<= 11; t++) { SendChar (messPark1[t]); } // laat "Parkeren... " boodschap zien

  index = 9;                          // begin ergens
  parkstand = digitalRead(parkswpin); // kijk naar eindschakelaar op traverse (= ook op LCD module)
  while (parkstand == false) {        // zolang schakelaar niet ingedrukt
      index = index - 1;              // draai linksom
      if (index < 1) {index = 8; };   //
      stepperstap(index);
      delay (parkpause);
      parkstand = digitalRead(parkswpin);  // kijk naar eindschakelaar op traverse
  }   // schakelaar ingedrukt in eindstand

  // schuif naar spoor 0
  for (int t = 0; t == stappennaarnul; t++) {      // 512 = 1 REV rotor shaft = 1/64 REV output shaft, half step
    index = index + 1;           // positief, rechtsom
    if (index > 8) {index = 1; } // opnieuw beginnen als te groot
    stepperstap(index);          // uitvoer naar stappenmotor via ULN2003
    delay (schuifpause*2);       // langere pauze = langzamer schuiven
  }
 
  motorstop;                     // motor stroomloos, leds aan/uit
  ClearLCD;             
  for (int t = 0; t<= 13; t++) { SendChar (messPark2[t]); } // laat "Geparkeerd." boodschap zien

  actspoor  = 0;                 // actuele stand van schuifbrug
  doelspoor = 0;
  delay (1000);                  // wacht om tekst te laten zien
}
//===================================================================================================
int haalstappen (int steps){         //draaischakelaar geeft spoor aan, spoor 0 = parkeerstand
  char messWacht[8]= "Wacht: ";
  char messNaar[8] = " ---> ?";
  char messSpoor[8]= "Spoor  ";
  byte tmpspoor;
 
  tmpspoor = actspoor;
  do {                             // wachten tot schakelaar is ingedrukt, dan parkswpin == high
    doelspoor = map(analogRead(draaiswpin),0,1023,0,5); // kijk naar draaischakelaar
    if (tmpspoor != doelspoor) {   // laat stand draaischakelaar zien op LCD en 7 seg als veranderd is
      tmpspoor = doelspoor;
      SendInst(cursorleft);         // zet cursor 1 pos naar links
      SendChar(48 + doelspoor);     // laat nieuwe 'naar' spoornr zien op LCD
      //
      digitalWrite(BCDpinA,!bitRead(doelspoor,0));   // laat doelspoor zien op 7 seg display, 'laag' ís aan
      digitalWrite(BCDpinB,!bitRead(doelspoor,1));
      digitalWrite(BCDpinC,!bitRead(doelspoor,2));
      digitalWrite(BCDpinD,!bitRead(doelspoor,3));
    }
  }
  while (digitalRead(parkswpin) == LOW); // niets doen zolang schakelaar op LCD module niet is ingedrukt
  //
  if (doelspoor > maxspoor) { doelspoor = maxspoor; }
  //DEBUG CRSRXY, 1,2, BIN dipsw, " doelspoor = ", DEC doelspoor, "     "
  steps = (doelspoor-actspoor) * stappenperspoor;     // kan negatief zijn
  //DEBUG CRSRXY, 1,3, "haalstappen; spoor ", DEC actspoor, " --> ", DEC doelspoor, " stappen = ", SDEC steps,"      ", CR

  ClearLCD;
  for (int t = 0; t<=5; t++) { SendChar(messSpoor[t]); }   //lookup t, ["Spoor "], char
  SendChar (48 + actspoor);  // laat 'van' spoornr zien op LCD
  for (int t = 0; t<=5; t++) { SendChar(messNaar[t]);  }   //lookup t, [" ---> "], char
  SendChar (48 + doelspoor);  // laat 'naar' spoornr zien op LCD

  return steps; // haalstappen
}
// =======================================================================================0
void setup() {
  pinMode(draaiswpin,INPUT); // invoer draaischakelaar
  pinMode(parkswpin,INPUT);  // invoer parkeerschakelaar = ook schakelaar op LCD module
   
  pinMode(stepB1pin,OUTPUT); // uitvoer naar stappenmotor via ULN2003
  pinMode(stepB2pin,OUTPUT);
  pinMode(stepB3pin,OUTPUT);
  pinMode(stepB4pin,OUTPUT);

  pinMode(BCDpinA,OUTPUT);   // BCD naar 7 seg display
  pinMode(BCDpinB,OUTPUT);
  pinMode(BCDpinC,OUTPUT);
  pinMode(BCDpinD,OUTPUT);
  pinMode(lamptestpin,OUTPUT);

  pinMode(RSpin,OUTPUT);     // = LCD PIN 9 Register Select; 0 = Instructie, 1 = data/text
  pinMode(ENpin,OUTPUT);     // = ENable read/write
  pinMode(LCDd4pin,OUTPUT);  // LCD datapin d4
  pinMode(LCDd5pin,OUTPUT);  // LCD datapin d5
  pinMode(LCDd6pin,OUTPUT);  // LCD datapin d6
  pinMode(LCDd7pin,OUTPUT);  // LCD datapin d7
 
  pinMode(ledroodpin,OUTPUT); // leds op lcdboard
  pinMode(ledgroenpin,OUTPUT);

  rotorpos[0] = B0000000;   // 0
  rotorpos[1] = B0000010;   // 6
  rotorpos[2] = B0000110;   // 6+5
  rotorpos[3] = B0000100;   // 5
  rotorpos[4] = B0000101;   // 5+7
  rotorpos[5] = B0000001;   // 7
  rotorpos[6] = B0001001;   // 7+4
  rotorpos[7] = B0001000;   // 4
  rotorpos[8] = B0001010;   // 4+6

  // ------------------ Initialize LCD -------------------------------
  //LOW  RW               ' write mode
  //LOW  RS               ' instruction mode
  //LOW  LCDDB4           ' Set To 4-bit Operation
  //HIGH LCDDB5
  //LOW  LCDDB6
  //LOW  LCDDB7
  //PULSOUT EN,3   
  SendInst (twoline4b5x8); // %00101000 = 2-Line Mode, 4 bits, 5x8 font
  SendInst (cursoron);     // %00001110 = Turn On Cursor
  SendInst (autoinc);      // %00000110 = Set Auto-Increment on
  ClearLCD;
  //
  for (int t=0; t<=18; t++) {SendChar (messVersie[t]); }
  delay (3000);            // laat versie zien
  lamptest;                // 7 segment lamptest
  parkeer;                 // draai naar positie 0 totdat schakelaar wordt ingedrukt, dan naar spoor 0
}
// --------------------------------------------------------------------
void lamptest(){           // lamptest; 7 segment alle leds aan
   char messLamptest[15] = "lamptest...    ";
   for (int t=0; t<=15; t++) {SendChar (messLamptest[t]); }
   //
   /*
   t = 8;
   digitalWrite(BCDpinA,bitRead(t,0));   // laat '8' zien op 7 seg display
   digitalWrite(BCDpinB,bitRead(t,1));
   digitalWrite(BCDpinC,bitRead(t,2));
   digitalWrite(BCDpinD,bitRead(t,3));
   */
   digitalWrite(lamptestpin,0);   // maak lamptestpin laag, '8' gaat aan
   delay (1000);                  // 1 seconde 7 segment lamptest
   digitalWrite(lamptestpin,1);   // maak lamptestpin hoog
}
// --------------------------[ main ]-----------------------------------
//
void loop() {         
  haalstappen (stappen);       // aantal stappen aan de hand van spoornummer via draaischakelaar
  // motor gaat draaien
  digitalWrite (ledroodpin, HIGH);     // rode leds aan
  digitalWrite (ledgroenpin,LOW);      // groene led uit
  //
  for (int stap = 0; stap == abs(stappen); stap++) {  // STEP (HFstep+1) // 512 = 1 REV rotor shaft = 1/64 REV output shaft, half step
    if (stappen > 0) { 
      index = index + 1; }       // positief, rechtsom
    else {
      index = index - 1; }       // negatief, linksom
    if (index > 8) {index = 1; } // opnieuw beginnen van onder als te groot
    if (index < 1) {index = 8; } // opnieuw beginnen van boven als te klein
    stepperstap(index);          // uitvoer naar stappenmotor via ULN2003
    if ((stap < (stappenperspoor/4) ) || (stap > (abs(stappen)-stappenperspoor/4) ))
    {
      delay (schuifpause*2);     // langzaam schuiven als dichtbij doelspoor
    }
    else {
      delay (schuifpause);       // snel schuiven
    }
  }
 
  actspoor = doelspoor;          // schuifbrug is verplaatst naar doelspoor
 
  if (doelspoor == 0) { parkeer(); } // opnieuw nulstand vaststellen
 
  motorstop;                     // steppermotor stroomloos, rode led uit, groen aan
 
}
// ======================================= [ einde prog ]==============================================================

Titel: Re: El carrilet
Bericht door: ModelbouwHO op 21 maart 2021, 20:03:57
De AMSregelaar werkt naar behoren bij mij. Ik heb de serial monitor de snelheid verhoogd. Het uitlezen van de schuifpotentiometer heeft alleen invloed als meer dan 10 % gewiizigd word. Hiermee heb ik vier autootjes rustig rijden. Vr gr Hans
Titel: Re: El carrilet
Bericht door: 72sonett op 29 oktober 2021, 21:50:16
Vandaag de boel na lange tijd en wat aanpassingen in het programma weer eens laten rijden:

https://YouTube.com/v/AFlBLjeHkWE

Ging vrij probleemloos met een NS2200 maar een Sik gaf veel storingen.
Titel: Re: El carrilet
Bericht door: 72sonett op 02 februari 2022, 17:38:26
De afgelopen weken met Tinkercad (https://www.tinkercad.com/things/ciUVUQgmGlE) ons huis in 3d nagebouwd in 1:100. Vorige week de bestanden naar een Fablab gebracht hier in de buurt en het huis laten afdrukken. Het huis is in 4 delen getekend; garage, bg, 1e verdieping en dak. Het moet nog wat bijgesneden worden hier en daar, er moet nog doorzichtig plastic in de ramen en deuren, de garage moet nog grijs geverfd worden en de 4 delen moeten dan op elkaar gelijmd worden. Dan nog een plekje zoeken ergens op de modelbaan...
Misschien ook nog licht er in maken, als dat niet teveel doorschijnt.

De schaal is 1:100 ipv 1:87 dus het huis is iets te klein, maar dat valt niet op (de auto is een Wiking model in 1:87). Misschien laat ik het nog een keer drukken met een schaalfactor van 1,15 (=100/87).

(https://images.beneluxspoor.net/bnls/huis-04-61fab0afad598.jpg) (https://images.beneluxspoor.net/bnls/huis-04-61fab0afad598.jpg)

(https://images.beneluxspoor.net/bnls/huis-delen-jpg-61fab0fbc66db.jpg) (https://images.beneluxspoor.net/bnls/huis-delen-jpg-61fab0fbc66db.jpg)


Titel: Re: El carrilet
Bericht door: Reinout van Rees op 02 februari 2022, 22:11:05
Leuk gelukt zo, je huis. Zoiets herkenbaars op de baan lijkt me leuk.

Hoeveel kost het eigenlijk ongeveer om zoiets te laten printen? Ik heb ooit in m'n studie wel eens met dat soort CAD-pakketten moeten/mogen werken en er is best veel leuks mogelijk, maar ik heb géén idee hoe goedkoop/duur dat 3d printen tegenwoordig is.

Reinout
Titel: Re: El carrilet
Bericht door: 72sonett op 02 februari 2022, 22:22:37
bg + garage €14,50
1e verdieping €12,50
dak €10,00

Ik heb op de bovenverdieping nog wat meubilair gemaakt, inclusief de modelbaan die daar staat. Je krijgt dan wel het 'Droste-effect (https://nl.wikipedia.org/wiki/Droste-effect)' (recursie); op die modelmodelbaan staat ook weer een model van het modelhuis, met daarin  een model van de modelmodelbaan...  ad infinitum.
Titel: Re: El carrilet
Bericht door: Reinout van Rees op 02 februari 2022, 22:53:21
Bedankt voor de info. Valt me eigenlijk best mee. Je hebt er in ieder geval iets heel leuks mee kunnen bouwen!

Reinout
Titel: Re: El carrilet
Bericht door: Julien op 03 februari 2022, 19:01:34
Leuk idee om je eigen huis na te maken! Iets unieks voor op de baan  (y)

Maar waarom heb je het in 1:100 laten printen i.p.v. 1:87? Zit daar een technische of praktische reden achter?

groeten,
Julien
Titel: Re: El carrilet
Bericht door: 72sonett op 03 februari 2022, 19:22:54
Ik heb het in Tinkercad in 1:100 getekend, vanaf de bouwtekeningen, dat is handiger dan alle afmetingen te delen door 87. Het moet ook nog wel op de 3d printer passen, dus veel groter dan 25 x 25 cm kan niet. Het is nu ca 13 x 13 cm, in 1:87 wordt dat ca 15 x 15 cm.

Wat nog wel mogelijk is, is het .obj bestand met een factor 100/87 = 1,15 te vergroten. Ik heb inmiddels nog wat details veranderd, dus misschien laat ik het nog een keer afdrukken in 1:87.
Titel: Re: El carrilet
Bericht door: Julien op 03 februari 2022, 19:23:59
Bedankt voor de uitleg!

groeten,
Julien
Titel: Re: El carrilet
Bericht door: Jack Black (NS1220) op 03 februari 2022, 19:49:20
De prijs valt me mee.
Titel: Re: El carrilet
Bericht door: 72sonett op 03 februari 2022, 20:08:20
Vergelijkbaar met een Faller kit van dezelfde grootte.
Titel: Re: El carrilet
Bericht door: Jack Black (NS1220) op 03 februari 2022, 20:10:21
Inderdaad. Maar deze is uniek  (y)
Titel: Re: El carrilet
Bericht door: 72sonett op 13 februari 2022, 18:18:13
Vandaag huis ingebouwd...

(https://images.beneluxspoor.net/bnls/carrilet-1-62093ceb7541e.jpg) (https://images.beneluxspoor.net/bnls/carrilet-1-62093ceb7541e.jpg)

Zwembad komt nog...
(https://images.beneluxspoor.net/bnls/carrilet-pool-620944c736576.jpg) (https://www.tinkercad.com/things/lthWp932Hq9)
Titel: Re: El carrilet
Bericht door: Jack Black (NS1220) op 14 februari 2022, 10:47:59
Wordt mooi  (y)
Titel: Re: El carrilet
Bericht door: 72sonett op 25 februari 2022, 09:17:52
Zwembad ingegraven:


(https://images.beneluxspoor.net/bnls/IMG-20220224-112457-6218906302886.jpg) (https://images.beneluxspoor.net/bnls/IMG-20220224-112457-6218906302886.jpg)