Ben van plan om zelf een draaischijf te bouwen. In eerste instantie analoog aangestuurd. Stoppen op microschakelaars. Gewenste stand te bereiken met een draaischakelaar. Dit is vrij simpel te doen.
Maar nu de vraag: de motor moet 2 kanten op kunnen draaien, kortste weg naar de gewenste positie.
Dit is op te lossen met 1 schakelaar en ompoolrelais maar liever heb ik dit automatisch.
Zit eraan te denken om de werkelijke positie en gewenste positie met weerstanden te vergelijken en daar een opamp achter te hangen maar daar kom ik nog niet uit.
Iemand leuke ideeën?
Het omdraaien van de draairichting doe ik voorlopig maar met een schakelaar, het wordt pas interessant zodra het automatisch moet gaan worden.
Bezig geweest met een schakeling:
(https://myalbum.com/photo/66j7dkqLTTdS/7200.jpg)
Enige uitleg:
Links de positieschakelaars. Het zijn microschakelaars die normaal gesproken allemaal ingedrukt zijn behalve diegene waar de schijf gestopt is.
Zodra de draaischakelaar in een gewenste positie gezet wordt gaat de motor draaien totdat hij de positie bereikt heeft, de positieschakelaar schakelt dan af.
Draairichting wordt bepaald door S6/K5.
Snelheid wordt ingesteld door het PWM bordje. Ik heb er bij Ali 1 gevonden die spanningsgestuurd is, daarvoor kan ikzelf niet gaan solderen.
De normale snelheid wordt ingesteld met de potmeter. De (micro)schakelaar ernaast reduceert de snelheid zodra de positie bijna bereikt is. Door de elko zou dat geleidelijk moeten gaan. Componenten moet ik nog gaan dimensioneren. In plaats van een draaischakelaar ben ik van plan momentschakelaars met elk een houdrelais toe te passen.
Terugmelding zit er nog niet in, eerste hiermee experimenteren.
Ben benieuwd naar opmerkingen, ik sluit niet uit dat er nog een denkfout in zit......
Nog een vraag waar ik niet nog uitkom.
Als voorbeeld deze schijf:
(https://myalbum.com/photo/389QM6TXvXCo/360.jpg)
Er zijn 10 posities. (Meer dan ik nodig ben) Moet je dan 20 stopposities hebben zodra de loc er vooruit en achteruit af kan? Of alleen bij de doorrij sporen?
Citaat van: Bert1955 op zondag 09 januari 2022, 11:08:39
Er zijn 10 posities.
Er zijn 10 aansluitingen, dat is iets anders. Er zijn maar 8 stop posities omdat er 4 in elkaars verlengde liggen.
Ok, maar je wilt de loc toch kunnen omdraaien? Voor de goede orde, ik wil de Marklin schijf niet gaan nabouwen met de bediening die erbij hoort maar wil met het schema in 1 keer naar een gewenste positie??
Dat doe je toch door of linksom of rechtsom naar een positie te draaien?
Denk dat ik mijn verhaal onvoldoende belicht heb, met het schema heb ik de volgende bedoeling:
Stel ik heb totaal 6 sporen die naar de schijf gaan. Nummer 1-6.
En stel de schijf staat op positie 2 en ik wil naar 5. Dan druk ik op knopje 5 en de schijf gaat er direct naartoe.
Voor het drukken op 5 zet ik de draairichtingsschakelaar in de juiste stand.
Ik wil dus niet meermaals op 1 knop drukken waardoor hij eerst naar 3, dan naar 4 en tenslotte naar 5 gaat.
Een "nadeel" van mijn insteek is dat de sporen die tegenover elkaar liggen in feite 2 posities zijn ivm omdraaien van de loc?
Citaat van: Bert1955 op zondag 09 januari 2022, 12:08:34
En stel de schijf staat op positie 2 en ik wil naar 5. Dan druk ik op knopje 5 en de schijf gaat er direct naartoe.
Dat snap ik. Maar je kunt er op 2 manieren naar toe: direct of indirect. Voor het de brug op rijden doet het er niet zo toe maar voor het er af rijden wel: vooruit of achteruit.
Wat jij hier allemaal beschrijft is de "intelligentie" van je schakeling.
Ga je van x naar y: a) links om of rechts om b) langs de "korte" verdraaiing of via de "lange" verdraaiing en dan nog, hoe moet de loc van de schijf in vooruit of in achteruit?
Wanneer het een loods is, is het meestal achteruit maar voor de rest wie weet????
Waarom geen Aruino met motorshield?
Je hardware zal vééééééééééééééééééél eenvoudiger zijn en in je code kan je alle mogelijke "intelligentie" steken.
Is het een M* draaischijf waarmee je bezig bent, vervang dan terwijl je toch bezig bent de luidruchtige motor door een SB motor.
Dan is er nog de aandrijving zelf, direct drive of via reductie?
Hééééél belangrijk om toch iets nauwkeurig de brug te positioneren.
Als laatste nog de posities van de spooraansluitingen.
Een Duitser, ik kan het niet onmiddellijk terug vinden, heeft een PC en (ik dacht ook DCC) decoder gemaakt voor een M*draaischijf.
Op het tandwiel van de draaischijf heeft hij een zwart/wit kruis gemaakt.
X toeren van deze tandwiel = 1 spooraansluiting.
Dus x * y zwart/wit overgangen gezien door zijn sensor = verdraaiing van 1 spooraansluiting.
Bedankt voor jouw reactie!
Heb de foto van de marklin er alleen bijgezet gezien mijn vraag naar het aantal stoppunten, daar kom ik nu wel uit.
Ik ga de schijf zeker zelf bouwen, op termijn zal ik er wel een verslag van maken. Ten eerste omdat ik het leuk vind om te doen, ook de investering in een draaischijf heeft geen prioriteit
Ik maak me inderdaad de meeste "zorgen" om de precieze stopposities maar ik heb de methode met microschakelaars vaker toegepast zien worden, bv Wilgenspoor.
Je hebt wel een punt wat betreft automatisering maar dat gaat allemaal later wellicht gebeuren.
De componenten zoals getekend, inclusief de motor kost erg weinig, mislukken is alles behalve een drama:)
Citaat van: mcs51 op maandag 10 januari 2022, 07:19:39
..... Een Duitser, ik kan het niet onmiddellijk terug vinden, ........
Op het tandwiel van de draaischijf heeft hij een zwart/wit kruis gemaakt.
Bedoel je de DSD2010? .Scrol naar technische zaken / draaischijf (https://forum.3rail.nl/index.php?topic=50892.msg895600#msg895600)
groet
Harald
Absoluut Harald, dat is het!
@citaat
Ik heb de decoder ingebouwd en ben zeer tevreden.
groet
Harald
Ben afgestapt van de gedachte de draaischijf analoog aan te sturen.
Deels door opbouwende opmerkingen in dit draadje maar zeker ook door een post bij de buren:
http://www.h0modelspoor.nl/index.php?topic=2992.0 (http://www.h0modelspoor.nl/index.php?topic=2992.0)
Rob heeft flink werk ingestoken in het schrijven van Arduino code. Daarbij houd hij ook rekening met speling in de aandrijving.
3D printer is al druk met deze:
https://www.thingiverse.com/thing:1837520 (https://www.thingiverse.com/thing:1837520)
Nou, dat thingi project is mislukt:
(https://myalbum.com/photo/cshRYQXte2Qy/360.jpg)
Op de foto zat hij nog los in elkaar maar die loopt voor geen meter. Ondanks diverse pogingen blijft de stepper steeds steken door aanlopen van de tandwielen.
Verder zou het erg lastig zijn om slepers te monteren voor rijspanning en verlichting en zo. Na ja, het plastic is goedkoop, de tandwielen en het plateau kan ik deels wel gebruiken.
Dus, zelf maken van hout, deels geïnspireerd door het project van Piet https://forum.3rail.nl/index.php?topic=51785.msg1043139#msg1043139
Bij tante Ali voor weinig aangeschaft:
(https://myalbum.com/photo/jStfN278qzZA/360.jpg)
Ruim voldoende aansluitingen en mooi uit zicht/ stofvrij
3D ontwerp tot nu:
(https://myalbum.com/photo/JPQWbqd6aZtc/720.jpg)
Lastig om een 3D plaatje goed in beeld te krijgen
Ik voorzie eveneens een zelfbouw-draaischijf, enkel de tijd ontbreekt nog.
De basis wordt een KIBRI-handdraaischijfje, met een Arduino-gestuurde stappenmotor of servo die enkel 180° graden hoeft te draaien ( omkeren van stoomloc's nabij kopstation).
Citaat van: Ludo1957 op donderdag 10 februari 2022, 21:37:46
Ik voorzie eveneens een zelfbouw-draaischijf, enkel de tijd ontbreekt nog.
De basis wordt een KIBRI-handdraaischijfje, met een Arduino-gestuurde stappenmotor of servo die enkel 180° graden hoeft te draaien ( omkeren van stoomloc's nabij kopstation).
Wellicht is deze post bekend: http://www.h0modelspoor.nl/index.php?topic=2992.msg49385#msg49385
Rob heeft een Arduino Sketch geschreven, die implementeer ik graag.
Enkel 180 graden moet niet al te moeilijk zijn met een stappenmotor. Vraag me af of een servo genoeg power heeft, los van de vraag of je hem nauwkeurig genoeg op positie krijgt.
hoi,
Citaat van: Bert1955 op donderdag 10 februari 2022, 22:09:04
Vraag me af of een servo genoeg power heeft, los van de vraag of je hem nauwkeurig genoeg op positie krijgt.
Dan zou ik mij maar eens verdiepen in servo's. De kleine dingen veel gebruikt worden zijn niet sterk. Er zijn veel servo's die veel meer aan kunnen. Zelf heb ik een servo die 11 kg kan omzetten in gebruik bij mijn Segmentdraaischijf (https://forum.beneluxspoor.net/index.php?topic=22356.msg831025#msg831025). Positionering: Perfect. Het is maar hoe je je de overbrenging doet. Hoe precies wil je dat doen.
@Ronald
Ik probeer eerst de combinatie van een 28BYJ-48-5V 4 Fase stappenmotor met 1:64 reductie en een ULN2003A-stuurbord voor Arduino. Die heb ik ergens 8o liggen en wordt volgens YouTube met succes gebruikt bij meerdere DHZ-draaischijven (waaronder 1 met massiefhouten draaiplateau ).
Citaat van: Ludo1957 op vrijdag 11 februari 2022, 23:37:09
@Ronald
Ik probeer eerst de combinatie van een 28BYJ-48-5V
Precies wat ik gebruik, zeer lage investering. Wel nog met een extra ~1:11 reductie voor mijn 30cm schijf. Rob had een kleinere schijf direct aangestuurd maar zou het opnieuw met reductie doen.
Mijn proefopstelling werkt al prima
@citaat @citaat / @Ludo1957: Ik reageer op Bert1955 die zich afvraagd of servo's wel sterk genoegd zijn. En die zijn er. De steppenmotor die je wil gebruiken kan mogelijk ook wel sterk genoeg zijn. Zeker met een reductie erop.
Citaat van: Bert1955 op zaterdag 12 februari 2022, 08:49:56
Mijn proefopstelling werkt al prima
Dat is mooi :thumbup: Test het ook met gewicht (van een goede zware lok) op de bühne. Dan weet of het een en ander soepel loopt.
Citaat van: ronaldk op zaterdag 12 februari 2022, 09:06:42
: Test het ook met gewicht (van een goede zware lok) op de bühne. Dan weet of het een en ander soepel loopt.
Ga ik zeker doen, nog even wachten op lagers en de sleepring van tante Ali
Citaat van: ronaldk op zaterdag 12 februari 2022, 09:06:42
... ... ... Zeker met een reductie erop. ... ... ...
Naast het feit dat met een reductie kast het beschikbaar koppel aan de uitgang as vergroot, vergroot ook de positie nauwkeurigheid KLIK (https://www.orientalmotor.com/stepper-motors/technology/stepper-motor-gearheads.html) enkel maar goed nieuws dus :)
Met de geometrie van de draaischijven en de oplossingen van de stappenmotoren is er één grote maar en dat is de hoek. De F* en M* variant van de draaischijf (7286) heeft 48 posities ofwel 7,5 graden per positie. Met een standaard BYJ arduino motortje of een NEMA stepper kun je deze hoek nooit exact bereiken van wege het aantal stappen. De BYJ heeft namelijk 2048 stappen en een NEMA 200 (of 400 met een ander type). Bij beide motoren is een reductie nodig van minimaal 1:3 wil je een hoek van 7,5 graden kunnen bereiken.
Uiteraard zou je met microstepping een heleboel kunnen doen, maar dan lever je naast afstand per stap ook een deel kracht in wat met reductie niet het geval is.
Daarnaast is het kostenaspect ook nog iets, de (grote) steppers met reductie kunnen aardig in de papieren lopen.
De omtrek van een draaischijf is ruim afgerond 100cm (bij doorsnede iets boven 30cm) Komt niet precies, even voor het idee.
Delen door 2048 stappen is ~0,5mm resolutie. Toch niet echt slecht of maak ik een fout?
Zelf heb ik straks een overbrenging van ~1:11.
11 keer betere resolutie en kracht als ik dat goed zie
Bert,
Fouten maak je nooit met een zelfbouw! Alleen waar ik nu tegenaan loop met een 7286 draaischijf is de hoek. Met een Arduinostepper heb ik al een poging gewaagd met een 3:1 reductie, zo kom ik berekend exact op 7,5 graden met 128 stappen. De overbrenging was een riemoverbrenging met een 20/60 tand pulley, probleem hierbij was de "slack" in de overbrenging. Momenteel is er een Nema17 met ingebouwde 3:1 reductie onderweg uit China, dat moet een beter resultaat geven (hoop ik).
Voor jouw draaischijf die eigenbouw is gelden andere normen en specificaties, als je slecht gebruikt om te keren en een tweetal spoortjes die nog te plaatsen zijn zou ik lekken je project voortzetten, ik deel slechts mijn ervaringen.....
Jouw ervaringen zijn zeker welkom!
Mijn ambities zijn wat hoger dan een paar spoortjes.........6 voudige ringloods op 15 graden plus 2-3 sporen.
Ik ga het zien met vallen en opstaan
Ben,
Kun je een schatting geven wat de kosten zijn geweest om dit te realiseren? Dat kan meewegen in een keuze.....
Mooi gemaakt Ben!
Denk wel een ander kostplaatje, ben benieuwd!
Zelf ben ik erg weinig kwijt, een Arduino nano, stepper met ULN, wat los spul, een euro voor PLA ( 3D geprinte tandwielen), een slepertje. Hout heb ik genoeg liggen.
Denk totaal~ 15€
Maar of het goed gaat werken, ga het beleven
@citaat @citaat Het gaat bij mij zelden of nooit om geld en wat ik duur vind vind jij misschien goedkoop en andersom. Maar ik kom bij lange na niet aan de prijs van een digitale Marklin schijf.
Vandaag de proefopstelling compleet gemaakt. Hij loopt als een tierelier, yep, nog zonder belasting van een loc.
De stepper maakt ongeveer 26.500 stappen voor 360 graden. Ongeveer 27 stappen per mm verplaatsing aan de rand van de draaischijf, lijkt me ruim voldoende. In de sketch wordt ook voor speling gecompenseerd, of dat nodig is zie ik later.
Hieronder de proefopstelling en het schema.
(https://myalbum.com/photo/Lm8jgfdZFCat/720.jpg)
(https://myalbum.com/photo/YqAxMeBpZp3c/720.jpg)
Nu nog een week of wat wachten op een paar onderdelen
mooie stap verder. Hij draait keurig naar 10 posities.
Sketch is klaar voorlopig.
Daar in de sketch "maar" 4 Trackleds waren voorzien (en er niet genoeg digitale poorten over zijn) is deze omgebouwd naar binair uit.
Sketch doet dat nu prima, zodra die binnen is zet ik er een demultiplexer achter, dan heb ik maximaal 16 uitgangen voor tracks, teveel....
Tevens gebruik ik die signalen om de deuren van de ringloods aan te sturen.
Tevens werkt het spersein. Die gaat eerst op rood (en wit uit) ff wachten, dan beweging, einde beweging weer een delay, dan rood uit/wit aan.
In ieder geval is het schema voorlopig ook klaar:
(https://myalbum.com/photo/xgLZsgyCSbDZ/720.jpg)
Het lijkt heel wat maar valt reuze mee. Kom maar op met opmerkingen / vragen
Bert,
Zeer interessant stukje vlijt en er wordt goed over nagedacht. Momenteel ben ikzelf bezig met een aansturing van een 7286 draaischijf (de Marklin/Fleischmann). Hieraan hangt een Nema17 stappenmotor met een 3:1 vertraging en met microstepping kan deze met 9600 stappen rond. Voor mij is de exacte 7,5graden zeer belangrijk i.v.m. de geometrie. Dit alles wordt aangestuurd met een Arduino die de wisselcommando's van de centrale verwerkt zoals de originele wisseldecoder dat ook doet.
Op dit moment staat de 3D printer te rammelen om een bevestiging te printen voor de stappenmotor.
Hoi Chris,
Leuk dat je er ook mee bezig bent, zie graag wat het wordt. (deel svp het draadje indien je er 1 gaat maken)
Met jouw vertraging heb je ongeveer 10 stappen per mm op de omtrek, dat moet ruim voldoende zijn.
Uiteraard kan ik de sketch delen. Hij is nog niet perfect. 2 belangrijkste zaken:
1. wil graag dat hij de kortste weg kiest, is een lastige.
2. Delay verbeteren tussen de spersein signalen en daadwerkelijke beweging.
Bert,
Volgens mij heb je het aantal stappen tussen de posities gedefinieerd toch? Hierbij een voorbeeldje
void TurntableStep(){
if (TurnDir==1){myStepper.step(StepsForTrack);}
else if (TurnDir==2){myStepper.step(-StepsForTrack);}
}
Hoi Chris,
Mijn kennis van C is wat beperkt dus kan het niet helemaal inschatten wat jouw code doet.
Betrek mijn zoon er nog weer bij, hij is IT'er en heeft een deel van de aanpassingen van de Sketch van Rob gedaan. Met name het ombouwen naar Binaire leds en implementeren van de spersein signalen.
Zelf heb ik van 4 Tracks er (voorlopig, kan wijzigen) 10 van gemaakt, dat is simpel.
Om het draairichting ,, probleem" simpel te schetsen zodat ik het zelf ook begrijp:
Ik heb net binnen van MP een 6voudige ringloods, mooi ding van Vollmer, deur 1-6 op 15graden.
Deur 1 op 0 graden, vervolgens 15, 30, 45, 60 en 75 graden. De testopstelling loopt keurig van 1 naar 2, 3, 4, 5, 6 en weer terug.
Stel het aanvoerspoor(x) zit op 225 graden tegenover deur 4.
Van x naar 6 is dan 150 graden. Zoals de Sketch nu is draait de brug van x naar 6 rechtsom, de kortste weg.
Maar van x naar 1 ook rechtsom, dat zou linksom moeten.
Maar de vraag was vast al duidelijk?
Bert,
Had een stukje van de ArDiMo-Turn code geknipt, die is nog in ontwikkeling. Ben zelf nog wel aan het puzzelen, belangrijkste is dat je de sporen een nummer geeft en daaruit gaat rekenen. Met de loodsen op 15 graden heb je dus (om het makkelijk te houden) 2x 12 posities, waarvan 6 te gebruiken zijn.
Als je een bericht post kun je met de #-button de code wel in je bericht plakken, ik wil best wel eens kijken, want tussen IT'ers en IT'ers zit ook nog best wat verschil qua benadering. Daarnaast heb ik al wat ervaring met de code voor de Marklin draaischijf.
Je aansluitingen zijn dus 1-6 met 15graden ertussen met tegenover spoor 4 als aansluiting daar kan ik wel wat mee...
ok, in de sketch heb ik die posities er nog niet precies ingezet, voor de test had ik dat niet nodig.
Mijn zoon is een prima IT'er maar niet gespecialiseerd op Arduino.
Er zit nog veel onzin in de Sketch in de vorm van uitprobeersels maar daar lees je vast overheen:
/*
/* Turntable control
* =================
* For a turntable. 10 tracks
*
* Beschrijving (NL)
* Besturing voor een modelspoor segmentdraaischijf met 10 sporen.
* Middels 2 tandwielen een vertraging ingebouwd van 11* Hierop de stepper snelheid en track posities ingesteld
* Aantal sporen aanpassen:
* #define numberOfTracks 10 // number of tracks on turntable
* arrays below must correspond with number of tracks:
* int track[numberOfTracks]{-100, -2000, -3100, -4200, -5300, -6400, -7500, -13000, -15000, -17000}; aantal stopposities aanpassen
* int buttonBoundary[numberOfTracks]{1000, 900, 800, 700, 650, 550, 480, 380, 280, 180}; aantal waardes weerstanden aanpassen
* De draaischijf wordt aangedreven met een stappenmotor.
* Bediening met een '0-positie' sensor en 10 drukknoppen op een spanningsdeler
* Terugmelding over 4 LEDs, binaire uitgang, met een de-multiplexer kan er eenvoudig 1 led per track van gemaakt worden
* Waar in de sketch wordt gesproken over TrackLeds worden de 4 binaire uitgangen (D1, D2, D4 en D8) bedoeld.
* Bij Track 1 is dat "0000", Track 2 "0001", doorlopend tot Track 16 "1111"
* versie 3.0, 20 feb 2022
*
* Suggestie voor draairichting:
* Add variable "direction" and change your code at the end of the switch:
cstep += direction;
if cstep > 7 cstep = 0;
if cstep < 0 cstep = 7;
direction = 1; // go forward
direction = -1; // go backward
*/
/***** Import needed libraries ******/
#include <AccelStepper.h>
#define FULLSTEP 4
#define HALFSTEP 8
/***** Declare Pin Numbers *******/
// motor pins
#define motorPin1 2 // Blue - 28BYJ48 pin 1
#define motorPin2 3 // Pink - 28BYJ48 pin 2
#define motorPin3 4 // Yellow - 28BYJ48 pin 3
#define motorPin4 5 // Orange - 28BYJ48 pin 4
// sensor pins (analog)
#define startPin 8 // pin to detect turntable start position
#define buttonsPin A1 // analog pin to read buttons by Voltage divider
// led indicators pins
# define trackLed1 9 // led for track 1
# define trackLed2 10 // led for track 2
# define trackLed3 11 // led for track 3
# define trackLed4 12 // led for track 4
// spersein leds
# define sperledRed 6 // rode led spersein
# define sperledWit 7 // witte led spersein
#define ledpin 13 // LED on Arduino
/******* Definitions for turntable control ******/
// ---- Turntable ----
// Physical definitions
#define slack 18 // steps of slack in stepper motor axel from middle
#define initMove -30 // steps to move at initialisation before sensor read
#define numberOfTracks 10 // number of tracks on turntable
// arrays below must correspond with number of tracks:
// positions for 10 turntable tracks (motor steps from 0) -> 1 omwenteling = ~ 26500 stappen.
int track[numberOfTracks]{-100, 26400, 3100, 4200, 5300, 6400, 7500, 13000, 15000, 17000};
int buttonBoundary[numberOfTracks]{1000, 900, 800, 700, 650, 550, 480, 380, 280, 180};
// Operational definitions
#define startTrack 0 // initial track to move to (after detecting 0-position sensor)
#define maxTurnSpeed 400.0 // maximum speed of stepper motor normal operation -> van 55 naar 400 =~ 60sec / omwenteling
#define startTurnSpeed 120.0 // start speed of stepper motor -> van 20 naar 120 verhoogd
#define turnAccelleration 46.0 // acceleration of stepper motor
int WTG = 0; // WayToGo Variable to determine turndirection resulting in shorttest way to go
int CurrentPos=0; //
// ---- Led display ----
unsigned long prevms = 0; // blinking led milisecs last on/off
unsigned long curms = millis(); // blinking led milisecs now
const long blnkint = 250; // blink interval in milliisec.
/******* Global variables ******/
// ---- Turntable variables ----
int currentTrack = 0; // position after initialisation
int newTrack = 0; // 1st position to move to after initialisation
int button = -1; // button pressed (0, 1 2 3 4 5 6 7 8 or 9, -1 is no button)
// ---- Led display variables ----
int blnk = HIGH;
/****** Objects *******/
// ---- Stepper motor object ----
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
// array of pins used to send out the binary-encoded track number
int ledPins[]{trackLed1, trackLed2, trackLed3, trackLed4};
/****** Functions ******/
#define ArrayCount(x) (sizeof(x) / sizeof(x[0]))
// ---- initialiation: 0-position detection ----
// Turntable initialisation after starting/resetting Arduino.
// It first moves the stepper motor counterclockwise (defined by initMove),
// and then moves the turntable clockwise slowly untill 0-positions is sensed
// on "startPin".
// Motor position "0"is set to the sensor position.
// Function returns "true" if sensor has been detected.
//
// Maximum steps is to find sensor: last track position + initial move steps.
// When 0 position is not sensed, function returns "false".
bool initTurntable() {
bool succesfull = true; // return parameter
int x = 0; // step counter
digitalWrite(ledpin, LOW); // show initialisation ongoing on Arduino board
// calculate total maximum number of steps (maxSteps) to find sensor:
// the number of steps to position of last track, including slack and initial move
int maxSteps = abs(track[numberOfTracks - 1]) + abs(initMove) + 2 * slack; // sensor must be found in less steps
// move turntable into start / reset position
stepper1.setMaxSpeed(10); // verhoogd van 1 naar 10
stepper1.setAcceleration(500.0);
stepper1.setSpeed(10); // verhoogd van 1 naar 10
// start with a move counterclockwise in case just beyond sensor...
x = initMove;
// now keep turning the table slowly until start point sensed
do {
stepper1.runToNewPosition(x);
x++; //was x++; nu sneller naar 0 positie
} while ((digitalRead(startPin) == LOW) && (x < maxSteps)); //run until sensor active, or max steps done (error)
if (x < maxSteps) { // start position sensed. Intialise stepper position
stepper1.setCurrentPosition(0); // sensor position = 0
digitalWrite(ledpin, HIGH); // end of initialisation
} else { // initialisation error
succesfull = false;
}
stepper1.disableOutputs(); // Turn off stepper motor power
return succesfull;
}
// ---- read button sensor ----
// function to get button from analog pin
// returns button 0-9 pressed.
// returns -1 if no button pressed
int getButtonPressed() {
int r = analogRead(buttonsPin);
int b = -1;
if (r < buttonBoundary[0]) { // a button was pressed
delay(200); // wait for analog pin to stabalize
r = analogRead(buttonsPin);
// check which boundary value has been read on analog buttonPin
if (r < buttonBoundary[0]) {
b = numberOfTracks - 1; // check lat button to first
while (r > buttonBoundary[b]) {
b--;
}
}
}
return b;
}
// ---- turntable movement calculation ----
// function to calculate new position for turntable to move to
// input: new track number
// output: new stepper position with corrections mechanical inaccuracies
int calcNewPosition(int trk) {
int pos = 0; // new stepper motor position
int curTurnDirection = 0; // current direction in Turntable = calculate for slack in movement
// keep values last move before calculating new move
currentTrack = newTrack;
newTrack = trk;
// Init new move
// check direction for additional slack movement.
// calculate new stepper position
//if (newTrack > currentTrack) { // Rob's intitial statement
Serial.begin(9600);
Serial.print ("current Track: "); //wat is de huidige Track
Serial.println (currentTrack);
Serial.print ("new Track: "); // en waar willen we naartoe
Serial.println (newTrack); //
//if (newTrack > currentTrack && newTrack + currentTrack <-13250) { // shortest direction is choosen. 13250 equals 180 degrees turn
// curTurnDirection = -1; // counterclockwise
//} else {
// curTurnDirection = 1; // voor test -1 ipv 1clockwise
//}
//Serial.print ("curTurnDirection: "); //
//Serial.println (curTurnDirection); // Hij trekt zich er dus niets van aan of je hem +1 of -1 maakt
// calculate position to move to
//Serial.print ("Current Pos: "); //
//Serial.println (pos);
CurrentPos = track[newTrack]; // store current position
//if (newTrack = 3) {
//pos = (track[newTrack]-10000);
//}else{
pos = track[newTrack]; // bare track position
//}
Serial.print ("Current Position: "); //
Serial.println (CurrentPos);
Serial.print ("Position to go to: "); //
Serial.println (pos);
//CurrentPos = newTrack;
//WTG = pos; // store current position
Serial.print ("Distance to go in steps "); //
Serial.println (pos - CurrentPos);
Serial.println (" "); //
//pos = -1*track[newTrack]; // bare track position
//pos = pos + (curTurnDirection * 2 * slack); // correction for slack
pos = pos + (curTurnDirection * 1 * slack); // correction for slack
//Serial.print ("Pos plus slack: "); //
//Serial.println (pos);
return pos;
}
// ---- LED indiator function ----
// led on / of / blink function
// trackNumber: track number
// func: 0 = off, 1 = blink, 2 = on
void setLed(int trackNumber, int func) {
if (func == 0) {
writeLedPins(trackNumber, LOW);
}
if (func == 2) {
writeLedPins(trackNumber, HIGH);
}
if (func == 1) {
curms = millis();
if (curms - prevms >= blnkint) {
prevms = curms;
if (blnk == HIGH) {
blnk = LOW;
} else {
blnk = HIGH;
}
writeLedPins(trackNumber, blnk);
}
}
}
// Set led pins depending on the binary input in the `ledPins` array, at position `led`.
void writeLedPins(int trackNumber, int value) {
//Serial.println();
//Serial.print("Track: ");
//Serial.println(trackNumber);
// Loop over all led pins.
for (int i = 0; i < ArrayCount(ledPins); ++i) {
// If the bit for the current led pin is set, set the pin.
digitalWrite(ledPins[i], trackNumber & (int) round(pow(2, i)) ? value : LOW);
//Serial.print(trackNumber & (int) round(pow(2, i)) ? value : LOW);
}
//Serial.println();
}
void setSperSign(bool isWhite) {
digitalWrite(sperledRed, isWhite ? LOW : HIGH);
digitalWrite(sperledWit, isWhite ? HIGH : LOW);
}
/****** SETUP: RUNS ONCE ******/
void setup() {
bool init = false; // turntable intialisation status
//Serial.begin(9600);
int x = 0;
// set the digital led pins as output and initialise values
while (x < ArrayCount(ledPins)) {
pinMode(ledPins[x], OUTPUT);
analogWrite(ledPins[x], 255);
digitalWrite(ledPins[x], LOW); // show initializing: all track leds off
x++;
}
// show: initializing: Loop through all leds
for (int i = 0; i < numberOfTracks; ++i) {
writeLedPins(i, HIGH);
delay(250);
}
writeLedPins(0, LOW);
pinMode(ledpin, OUTPUT);
digitalWrite(startPin, LOW); // initialise startpin low. Default HIGH, aangepast ivm IR tunnel
digitalWrite(buttonsPin, HIGH); // initialise button read
// turntable initialisation: search for 0-position sensor
init = initTurntable(); // initialise turntable.
while (not init) { // Find 0-position (sensor), false = 0-pos. not found
digitalWrite(ledpin, HIGH); // Blink led indefenitely
delay(100);
digitalWrite(ledpin, LOW);
delay(100);
}
// no error: setup turntable and led indicators for normal operation
x = 0;
while (x < ArrayCount(ledPins)) { // switch off track leds
digitalWrite(ledPins[x], LOW);
x++;
}
// Setings for speed and accelaration during normal operation
stepper1.setMaxSpeed(maxTurnSpeed);
stepper1.setAcceleration(turnAccelleration);
stepper1.setSpeed(startTurnSpeed);
// move to initial track
stepper1.moveTo(calcNewPosition(startTrack)); // move to new position in normal operation
stepper1.runSpeed();
}//--(end setup )---
/****** LOOP: RUNS CONSTANTLY ******/
void loop() {
stepper1.run(); // operate the stepper motor
// turntable stop
if (stepper1.distanceToGo() == 0) { // turntable at desired position
stepper1.disableOutputs(); // turn stepper motor off (all pins low)
setLed(newTrack, 2); //turn on led for track positioned to
button = getButtonPressed(); // check if a button was pressed
delay(250);
setSperSign(true);
if (button > -1 && button != newTrack) { // button pressed for another track than positioned on
setSperSign(false);
delay(100); // Wacht een seconde na het spersignaal
setLed(newTrack, 0); //turn off led for this track, we're moving away from it.
stepper1.moveTo(calcNewPosition(button)); // calculate new stepper position and move to it.
}
}// turntable moving
else { // turntable turning (moving to desired position)
setLed(newTrack, 1); // blink the LED for the track where turntable is moving to
}
}//--(end main loop )---
//*********( THE END )***********
Ziet er allemaal goed uit :thumbup: Ben benieuwd naar de eerste bewegende beelden als het een en ander goed werkt :thumbup: :thumbup:
(https://myalbum.com/photo/Lm8jgfdZFCat/360.jpg)
//if (newTrack > currentTrack && newTrack + currentTrack <-13250) { // shortest direction is choosen. 13250 equals 180 degrees turn
// curTurnDirection = -1; // counterclockwise
//} else {
// curTurnDirection = 1; // voor test -1 ipv 1clockwise
//}
En als je al deze // eens weghaalt? Dit lijkt mij toch wel cruciaal stukje code.....
Hoe voeg ik een video uit myalbum toe?
Bij afbeeldingen zie ik de link, bij een video niet....?
Citaat van: Buzz_4stroke op woensdag 23 februari 2022, 16:30:57
//if (newTrack > currentTrack && newTrack + currentTrack <-13250) { // shortest direction is choosen. 13250 equals 180 degrees turn
// curTurnDirection = -1; // counterclockwise
//} else {
// curTurnDirection = 1; // voor test -1 ipv 1clockwise
//}
En als je al deze // eens weghaalt? Dit lijkt mij toch wel cruciaal stukje code.....
Die code werkt helaas niet, stond standaard in de code van Rob. Dit had ik erbij bedacht: && newTrack + currentTrack <-13250
Ten eerste: newTrack en currentTrack zijn niet de posities (bv 1000, 2000, 3000) maar de Tracknummers 0-9)
Ten tweede, al zet ik curTurnDirection hard op +1 of -1, hij trekt zich er niets van aan.
Spullen van tante Ali binnengekomen, kon ik mooi verder:
(https://myalbum.com/photo/dqziFgpGPv3n/720.jpg)
(https://myalbum.com/photo/mczKfMEPom2c/720.jpg)
Hij loopt lekker rustig en stopt keurig telkens op dezelfde plek. Met de slackcompensatie zit het dus ook wel goed.
Nu verder borduren
Gisteren is de rest in 3D geprint. Het deel naast het spoor op de brug. Maar ik weet nog niet precies wat ik ermee aan moet, gaarne jullie ideeën:
(https://myalbum.com/photo/zbY4f59fGN7P/720.jpg)
Ik heb helaas geen K-rail maar heb het gevoel dat K veel beter uitkomt op de brug.
De looppaden naast het spoor zit nu veel lager dan het spoor zelf, heb het gevoel dat het op dezelfde hoogte moet. Kan de zijdelen natuurlijk wel van onderen opvullen en bijna strak tegen de spoorstaven aandrukken.
En/of K-rail erop wat doorloopt in de ringlocloods.
Hoor graag jullie gedachten!
Citaat van: Bert1955 op woensdag 02 maart 2022, 16:02:25
heb het gevoel dat K veel beter uitkomt op de brug.
Goed gevoel. Ballastbedding op een draaibrug is een beetje onrealistisch... 8o
Dat heb je mooi opgelost Ben, dus K-rail zoeken :) en was overigens ook al van plan "parket" te gaan leggen, erg fraai!!
Misschien de shed ook nog met dun hout bekleden.
Ben overigens helemaal niet zo enthousiast over C-rail maar ja, daar heb ik het eea van
Citaat van: ACTS.zuid op woensdag 02 maart 2022, 16:18:11
Misschien is dit iets ter inspiratie
Gr, Ben.
Hoe diep is jouw kuil Ben?
@citaat
Goed voorbeeld doet volgen! In ieder geval 70% van de post en de foto's...... :D
Ik wist niet dater zure forumleden zijn, jammer, maar mooie foto's. Ik ga de brug verder aanpassen, morgen hoop ik een handvol gebruikte K binnen te krijgen.
Je kan eventueel ook gewoon een stuk 2-rail gebruiken en in het midden een houtenvloertje met een draad / staafje (in een groef) om de stroomvoorziening te regelen. Dat zou je ook nog eventueel met spijkertjes in het houten vloertje kunnen oplossen en een draad onderdoor. Het ligt er een beetje aan hoe lekker je aan het freubelen wil. :)
Zure forumleden ken ik niet maar ik hou wel van zure-bommen en b.v. rolmopsen. >:-D
groet
Harald
:) Harald.
Nog een eerste video gemaakt, wel met de domme C-rail erop
https://youtu.be/w0d6DcgYgHM
Vooralsnog staat de video op "Privé"?
ff wennen aan youtube, zal het proberen recht te zetten zo
nu ok?
Yes :thumbup:!
Dat werkt heel fraai en vooral stil (maar ik heb dan ook een 7186 ;)).
Met vriendelijke groet,
William
mooi en yep, je hoort hem zo goed als niet, ook zonder het achtergrond muziekje die er bij abuis bij zat.
Heb het schema aangepast.
Potmeter voor het "overrule" draaien met schakelaar.
Reset schakelaar voor de Arduino
Overrule schakelaar voor de 0 positie detectie
(https://myalbum.com/photo/pP2hnfy4RK6s/720.jpg)
Mooi alles werkt nu alleen nog stukje K-rails erop.
groet
Harald
K—rails erop, speciaal voor Harald B)
En flink wat inspiratie van Ben.
Hekwerk en trappetje zijn ook klaar maar dat komt er later aan. Idem houten vlonders tot aan de spoorstaven.
Tevens de H- balken ter ondersteuning.
(https://myalbum.com/photo/xiVfHo2XcnMz/720.jpg)
Precies zoals het plan is Ben:)
De bodem van de kuil is nu nog vlak. Aan de buitenrand komt een ring van ~15mm hoog. Daarop de rail De vloer van de kuil laat ik met gips dan oplopen tot 5mm onder de rand. Dus een verloop van 10 mm in de kuil.
Zo ziet het plan er in 3D uit:
(https://myalbum.com/photo/S6gYTUVePtUa/720.jpg)
Citaat van: Bert1955 op zondag 06 maart 2022, 12:45:32
K—rails erop, speciaal voor Harald B)
Wat een eer maar je doet het voor jezelf, je hebt er plezier in en het ziet er ook nog eens veel beter uit.
groet
Harald
Hoeveel ruimte zit er tussen de planken en de rail?
Verder vind ik de traanplaat tussen de rail erg mooi. Dan zal bij mij niet lukken met K-rail. Of ik zou er een zeer dunne laag tussen moeten maken met gaatjes voor de puko's .........of een dunne draad erover of ga ik te ver?
Hoi,
Citaat van: Bert1955 op zondag 06 maart 2022, 20:50:18
Hoeveel ruimte zit er tussen de planken en de rail?
Ligt er een beetje aan de breedte van de gebruikte wielflens.
Citaat van: Bert1955 op zondag 06 maart 2022, 20:50:18
Verder vind ik de traanplaat tussen de rail erg mooi. Dan zal bij mij niet lukken met K-rail. Of ik zou er een zeer dunne laag tussen moeten maken met gaatjes voor de puko's .........of een dunne draad erover of ga ik te ver?
Je hebt een aantal opties. Heb je toevallig ook mijn bericht gelezen? Dan zal je zien dat je makkelijk met een stukje 2-rail aan de gang kan gaan:
Citaat van: ronaldk op donderdag 03 maart 2022, 09:27:47
Je kan eventueel ook gewoon een stuk 2-rail gebruiken en in het midden een houtenvloertje met een draad / staafje (in een groef) om de stroomvoorziening te regelen. Dat zou je ook nog eventueel met spijkertjes in het houten vloertje kunnen oplossen en een draad onderdoor. Het ligt er een beetje aan hoe lekker je aan het freubelen wil. :)
Gebruik dan een Code 100 rails (Bijvoorbeeld Peco 100-rails die zijn 2,54mm hoog) die sluiten mooi aan op de K-rails. Een leverancier in Frankrijk had / heeft mooie metalen traanplaten. In Nederland zullen er ook wel leveranciers (o.a. Modelbouwshop Nederland (https://www.modelbouwshopnederland.nl/c-1720497/div-traan-ruit-plaat/).) te vinden zijn. Deze zou je dan als vervanging van de puko's kunnen gebruiken. Ik zou de K-rails ook op de aansluitsporen gebruiken. Niet rechtstreeks aansluiten op de C-rails. Of je moet eerst een deel van de rails ontdoen van het ballastbed.
Hoi,
Dank voor de reactie!
1. ga zodra ik aan de planken toe ben kijken naar de wielflens. Planken komen in ieder geval iets lager dan bovenzijde spoorstaaf.
2. jouw bericht heb ik een keer gelezen maar had het niet paraat. Prima oplossing! Het zijn de details maar ik kan ook wat zeer dun in 3D printen. Wel nu van plan K-rail op de brug te leggen ipv wat ander erbij aan te schaffen. Komt vast goed.
3. De K-rails lopen in ieder geval een heel stuk door op de (2) aansluit sporen, heb nog 2 K naar C verlopen liggen.
Eerst de brug maar verder afmaken.
Aanvulling: En ook een prima idee Ben!
Hallo Bert,
Op mijn draaischijf heb ik de railprofielen op styreen gelijmd naast de rails heb ik een stook geplakt van verpakkingsband dat gebruikt wordt om dozen op pallets vast te zetten. Tussen de rail profielen stukjes messing gaas aangebracht die dienstdoen als midden geleider.
Verdere details staan op mijn website maar die weet je wel te vinden
Vgr,
Piet
Hoi Piet,
Dank voor jouw reactie. Heb jouw link in mijn favorieten staan, even niet aan gedacht opnieuw te kijken.
Met alle info komt het vast goed.
Moet er ook nog even voor zorgen dat ik de brug er relatief makkelijk af kan halen, de elektrische verbinding is dan wel belangrijk
Aanvullend: zag dat je de roosters weg kan halen om de brug los te halen, goed idee! Denk dat ik er een luikje ondermaak om de verbinding los te kunnen halen, of nog beter, stekker aan de brug en contra eronder
Citaat van: Bert1955 op maandag 07 maart 2022, 08:42:03
1. ga zodra ik aan de planken toe ben kijken naar de wielflens. Planken komen in ieder geval iets lager dan bovenzijde spoorstaaf.
Kijk even in de modelbouwnormen (NEM) van de Morop - pub. 310 (https://www.morop.eu/index.php/en/nem-the-norms.html). Dan weet je wat de maximale vrij ruimte mag zijn. Volgens de 3rail wiki (https://wiki.3rail.nl/index.php/3rail_en_2rail_assen) is het iets van 13,9mm voor Märklin. Dat is namelijk de kleinste flensafstand van märklin volgens de Wiki. Zelf zou ik dan iets minder breed zitten. Je zit ook namelijk met de schoen (bevestiging) van de spoorstaaf.
je kan ook dit gebruiken tussen de sporen :arrow: https://www.modellbahnshop-lippe.com/Zubeh%C3%B6r/Gleise/Weinert-3258/de/modell_210156.html (https://www.modellbahnshop-lippe.com/Zubeh%C3%B6r/Gleise/Weinert-3258/de/modell_210156.html);
mvg,
Michel
Dat is erg fraai maar zou wel minimaal ⅓ van de kosten van de hele draaischijf zijn :?
Stap verder:
(https://myalbum.com/photo/yiXVVNoivcPP/720.jpg)
Oplopende bodem uiteindelijk van witte klei gemaakt, gemengt met wat zwart acrylverf. In ieder geval alvast een basis voor verdere afwerking. Hij loopt soepel over de rails.
en draaien maar
https://www.youtube.com/watch?v=LIHeX7czPvk
Het is mooi gemaakt. :thumbup: :thumbup: Maar naar verhouding lijkt deze brug wel erg hoog. Of lijkt dat maar zo?
Citaat van: ronaldk op vrijdag 11 maart 2022, 17:30:58
Het is mooi gemaakt. :thumbup: :thumbup: Maar naar verhouding lijkt deze brug wel erg hoog. Of lijkt dat maar zo?
Denk deels dat het zo is, deels de indruk. In het echt vind ik het wel ok :P
Stapje verder.
MDF rand vastgelijmd. Met een lintzaag uit een plaatje gehaald.
Binnenkort de brug spuiten in een soort legergroen.
https://youtu.be/cDYw90w4GaQ]https://youtu.be/cDYw90w4GaQ
(https://myalbum.com/photo/TFK8ynZnbUd5/720.jpg)
Verf moet nog wat bijgewerkt worden.
Daarna de planken nog
Met de draaischijf gebeurt er op dit moment niet veel. We zijn volop bezig met het baanontwerp, hopen binnenkort een start te maken met de bouw.
Wel heb ik een print laten maken bij JLCPCB van de logische schakelingen, zie post #60, inmiddels was dat schema aangepast / uitgebreid.
Vandaag kwamen de printen binnen want je krijgt er gelijk minimaal 5, en dat voor €2 dus 40 cent per stuk....wel een paar euro voor verzending, productie & transport duurde iets meer dan 14 dagen.
Daar kun je zelf bij lange na geen printen voor maken.
Ze zijn dubbelzijdig en veel beter te solderen dan eigen gebakken.
Verder heb ik nog een flinke partij Mosfets liggen. Printje ontworpen met een indicatieled per kanaal, 4 kanalen per print. JLC heeft er 4 stuks op 1 print van gemaakt, keer 5, dus 5*4*4 = 80 kanalen. (0,05ct per kanaal excl componenten maar die had ik al) Vast ruim voldoende voor de baan :)
In het verleden liet ik professioneel printen maken in Europa. Voor dit project uit nieuwsgierigheid gekeken naar de kosten, kwam uit op >€200.......
(https://myalbum.com/photo/6htNRpXPwWdm/720.jpg)
Hoi Bert,
Ik lees al een aardig tijdje mee met de bouw van je draaischijf, erg knap wat je allemaal in elkaar weet te bouwen :thumbup: :thumbup:
Mvg,
Peter Degeluidsman
Hoi Peter,
Dank voor het compliment. Het is leuk om te doen, iets van jezelf geeft net een beetje beter gevoel dan een standaard oplossing, nog los van de kosten. Maar even zien hoe we het mooi kunnen integreren in de baan. Dan moet de schijf nog "op kleur" en wat wild gras tussen de voegen.
Eerst het karwei buiten met beton/goot/tegels afmaken, schaal 1:1.....