Doel:€250.00
Donaties:€88.00

Per saldo:€-162.00

Steun ons nu!

Laatst bijgewerkt
op 03-06-2025

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Klein baantje 1200x1200mm door Prutsert
Vandaag om 15:30:03
Piko 51916 NS 1100 blauw botsneus door Corné81
Vandaag om 15:28:54
Fleischmania Nostalgia door tothebeach
Vandaag om 15:28:12
Spoor- en tramweg parafernalia door Eric B
Vandaag om 15:26:07
De bouw van mijn modelbaan in Thailand door Eric B
Vandaag om 15:23:55
De Projecten van RetroJack door RetroJack
Vandaag om 15:21:53
Raadplaatje door ArjanB
Vandaag om 15:20:46
BR-18.6 Schaal-0. door tijgernootje
Vandaag om 15:14:06
Sfeer op je modelbaan door tothebeach
Vandaag om 15:07:17
Toon hier je nieuwe (model-) spooraanwinst(en)... door tothebeach
Vandaag om 15:04:16
Vijfhuis (v.h. Frotterdam) door Lobomotion69
Vandaag om 14:45:44
US Sandtower in messing Spoor-0 door FritsT
Vandaag om 14:07:58
Swalbenburg, N modulebaan door NS264
Vandaag om 14:01:11
Yet Another Servo Decoder door AP3737
Vandaag om 13:54:31
Länderbahn en Reichsbahn locomotieven. door puntenglijder
Vandaag om 13:47:06
Ervaringen met veilingsites enzo (Marktplaats, Ebay, Catawiki, etc). door bellejt
Vandaag om 13:43:46
Locverlichting dmv micro-LEDS door Bahn-AG
Vandaag om 13:33:07
Acherntal H0. (TP III/TP IV) door NS264
Vandaag om 13:28:45
Arlbergbahn.. ? door Benelux795
Vandaag om 13:24:23
Station Roodeschool door Torikoos
Vandaag om 13:23:26
digitaal veranderd in 15 jaar door Henk G
Vandaag om 13:10:27
Een nieuw begin door dreezy
Vandaag om 13:02:35
Mijn eerste H0-modeltreinbaan in aanbouw door tijgernootje
Vandaag om 13:00:44
Harzwald Hafen Bahn (spoor 0) door tijgernootje
Vandaag om 12:55:16
Göhrener Viaduct door MaraNCS
Vandaag om 12:00:19
Piko 2025 door Sicco Dierdorp
Vandaag om 11:50:21
Aachenau West door Eric v C
Vandaag om 11:39:38
Ronald doet de Fork Challenge! door MaraNCS
Vandaag om 11:04:36
Spoorwegmuseum krimpt collectie in door thevandijks
Vandaag om 10:38:13
LTM 51 Garratt op basis van Harry Kaffa† ets door orientexpress
Vandaag om 07:58:41
  

Auteur Topic: Draaischijf uit de 3D-printer en met Arduino besturing  (gelezen 27866 keer)

Joz

  • a.k.a. Jos
  • Offline Offline
  • Berichten: 626
  • Vaak bu'j te bange
    • Museumdepot Beekbergen in H0
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #45 Gepost op: 19 March 2023, 16:59:56 »
En dan nu eindelijk... een filmpje!

<a href="https://www.youtube.com/v/I3H3pjFTVtM" target="_blank" class="new_win">https://www.youtube.com/v/I3H3pjFTVtM</a>

https://www.youtube.com/watch?v=I3H3pjFTVtM

Om de continuïteit van de spanningsvoorziening te testen, heb ik er een soundloc op gezet. Dan merk je meteen als er ergens een onderbreking komt. De loc heeft geen accu-pack  ;D

Bert55

  • Offline Offline
  • Berichten: 886
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #46 Gepost op: 19 March 2023, 17:03:47 »
Erg fraai loopt hij!
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Witmoosdorf afgebroken, Witmoos 2 wordt opgestart na de verhuizing

gdh

  • Online Online
  • Berichten: 1150
    • Station Lemmer
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #47 Gepost op: 19 March 2023, 21:40:23 »
Ziet er goed uit (y)

Joz

  • a.k.a. Jos
  • Offline Offline
  • Berichten: 626
  • Vaak bu'j te bange
    • Museumdepot Beekbergen in H0
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #48 Gepost op: 20 March 2023, 12:40:50 »
Ik ben er ook wel erg tevreden over hoe het nu uitpakt.
Dat de draaischijf nu gebouwd is en draait, betekent echter niet dat alles klaar is. De aansturing moet nog, dus daar ga ik nog mee verder.

De aansturing wil ik kunnen gebruiken voor zowel deze schijf die voor analoog bedrijf bedoeld is, als mijn eigen Roco draaischijf (digitaal bedrijf)

Dan kom ik op het volgende lijstje met eisen:
  • Bediening via seriële poort (voor analoge toepassing)
  • Bediening via DCC (Fleischmann protocol?)
  • Bediening via +/- knoppen op decoder
  • Automatische vaststelling aantal stappen per rotatie (dank Bask185 voor het idee)
  • Programmering van de draaisnelheid (misschien default in 1,5 minuut rond?)
  • Programmering van de positie van de aansluitsporen
  • Programmering positie ompoling brugspoor
  • Output t.b.v. melding bij bereiken eindpositie

Meer kon ik zo even niet bedenken  :D  Mist er nog iets?

Wat ik al heb:
  • Adruino Nano op een printje met knopjes en DCC interface (zie hieronder)
  • Eigengebakken library met makkelijke functies om de draaischijf te besturen

De ervaring leert dat ik niet goed overweg kan met Arduino sketches die door anderen gemaakt zijn. Her en der zijn die ook voor draaischijven wel op internet te vinden, Meino heeft bijvoorbeeld al wel e.e.a. laten zien, en ook via de links van Bert55 kwam ik wel e.e.a. tegen. Als ik sketches van anderen overneem, dan kom ik altijd op een punt dat ik toch wat wil/moet aanpassen en dan begint het grote foutzoeken.
Door het zelf te maken (lees: hele kleine stukjes code kopiëren/plakken), leer ik er op de eerste plaats steeds meer van, en ten tweede snap ik wat de code doet.

Het printje met DCC interface was bedoeld voor de aansturing van servo's voor wissels, en moet voor deze toepassing een TMC2209 stappenmotor driver gaan aansturen.


Bert55

  • Offline Offline
  • Berichten: 886
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #49 Gepost op: 20 March 2023, 12:56:15 »
Mooie lijst met wensen!
Ik bedien mijn schijf met DCC adressen ( 1 adres per stoppositie) en met een potmeter ( alleen voor afregelen en testen) maar dat weet je vast.

Ik ben zeker geen expert.
Gebruik de aangepaste sniffer sketch voor DCC herkenning en een andere aangepaste sketch voor de aansturing van 18 posities ( worden er denk ik 19 of 20…)
Bovenstaande is vast niet nieuw voor je:)

Nog een suggestie voor jouw lijst:
Spersignaal. Op draaischijven zitten (vaak?) sperseinen. Rood bij bezet en wit bij vrij.
Die zijn in mijn sketch en de stuurprint ingebouwd.
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Witmoosdorf afgebroken, Witmoos 2 wordt opgestart na de verhuizing

bask185

  • Offline Offline
  • Berichten: 4971
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #50 Gepost op: 20 March 2023, 13:37:26 »
Citaat
Mist er nog iets?
Ik weet niet of je het al hebt, maar langzaam optrekken en remmen. Ik zou dan kijken naar de accelstepper library (als je dat nog niet gedaan heb).

De bediening van de oneindige overslag bestond uit 3 drukknopjes (CW, CCW en teach) en een toggle schakelaar. Met de toggle schakelaar kon ik het apparaat in 'manual' mode zetten. In manual mode kon ik CW en CCW ingedrukt houden om de schijf handmatig te verdraaien. Met het teach knopje kon ik dan een aansluiting opslaan in EEPROM.

In automatische mode kan je met CW en CCW de schijf laten shiften tussen de aansloten sporen.

Gestructureerd programmeren is natuurlijk wel een dingetje. Vooral voor half complexe dingen zoals deze.
Een paar algemene tips (waarvan je sommige zo te zien al heb uitgevogeld):
  • vis eerst uit wat de schijf allemaal moet kunnen, probeer de taken te definieren, schrijf dingen op papier
  • Houd code leesbaaar. Gebruik geen vage afkortingen, zorg er voor dat je moeder of je vrouw het zou kunnen lezen. Namen kiezen voor functies en variabelen is het moeilijkste wat er is
  • Functies moet je niet veel langer maken dan 1 pagina lang, 2 max. Anders doe je het nut van functies deels teniet
  • Praat tijdens programmeren hard op in jezelf. Leg jezelf dingen uit. Dan 'ver-mens' je het werk voor jezelf
  • Wat ik zelf fijn vind, is om eerste de 'syntax' en structuur op te zetten. Je maakt eerst lege functies aan met duidelijk namen en vult het later in
  • Doe veel tussentijd je programma compileren, dit voorkomt dat je ooit lang bezig bent met foutzoeken
  • Breng op voorhand debug teksten aan voor jezelf
  • Zelf vind ik het handig om void loop() onderin te zetten en alleen functies aan te roepen vanuit loop(), dit maakt navigeren makkelijker
  • Gebruik een betere editor zoals vs code of notepad ++
  • gebruik commentaar en focus dat commentaar op wat je wilt bereiken. Ook functies houden van een klein stukje text wat beschrijft wat de functie moet doen
  • Lijn je code altijd netjes uit, dit maakt het lezen en begrijpen makkelijker
  • Splits je code in meerdere bestandjes (heb je al gedaan met je schijf  (y)). Ik zet bijvoorbeeld altijd al mijn eeprom code ed in aparte bestandjes
  • Don't use Dutch code or comments, it is not done  :P


Ik geef dan hier de loop van de oneindige overslag. Ik doe hier wel iets meer dan slechts functies aanroepen. Hij is rond de 70 lijntjes, bij mij net iets langer dan 1 pagina.

Ik maak ook gebruik van mijn debounce library, altijd handig. Je kan ook zoeken naar de library bounce2.h

Zelf meen ik dat dit over het algemeen leesbaar is, maar dat zegt bijna elke programmeur over zijn eigen (mis)baksels  ;D

void loop()
{
    debounceButtons() ; // debounces all inputs
    cruise() ;            // handle stepper motor

    uint8_t state = modeBtn.readInput() ; // state can be FALLING, RISING, LOW or HIGH. I mainly act on RISING or FALLING states.
   
    if( state == RISING )
    {
        Serial.println("AUTOMATIC MODE") ;
        mode = AUTOMATIC ; // new mode can only be adopted when motor is not moving
        //dumpEEPROM() ;
    }
    if( state == FALLING )
    {
        mode = MANUAL ;
        firstStore = true ;
        Serial.println("MANUAL MODE") ;
    }

    uint8_t  cwState =  CW.readInput() ;
    uint8_t ccwState = CCW.readInput() ;
    uint8_t recordState = record.readInput() ;

    if( ccwState == LOW && cwState == LOW )
    {
        setCircumreference( 0xFFFF ) ;
        Serial.println(F("setCircumreference wiped, reboot")) ;
        while( 1 ) ;
    }

    if( mode == MANUAL )
    {   
        if( cwState  == FALLING ) cruiseCW() ;
        if( ccwState == FALLING ) cruiseCCW() ;
        if( cwState == RISING || ccwState == RISING ) stopCruising() ;

        else if( recordState == RISING )
        {
            if( firstStore ) clearSlots() ;
            firstStore = false ;
            storeSlot( position ) ;
        }
    }
   
    if( mode == AUTOMATIC )
    {
        update() ;   // update stepper positions
       
        if( cwState == FALLING )
        {
            shiftCW() ;
        }
        if( ccwState == FALLING )
        {
            shiftCCW() ;
        }
    }

    REPEAT_MS( 500 )  // print new positions to monitor every 500ms
    {
        static uint32_t prevPos ;

        if( prevPos != position )
        {
            Serial.print( position ) ; Serial.print("  ");
            Serial.println( currentSpeed ) ;
            prevPos = position ;
        }
    }
    END_REPEAT
}
Een functie zoals shiftCW() behoeft in mijn optiek niet echt commentaar omdat de naam tamelijk duidelijk aangeeft wat het moet doen.

Hope it helps

Mvg,

Bas
Train-Science.com
Train-Science github
It ain't rocket science ;-)

Joz

  • a.k.a. Jos
  • Offline Offline
  • Berichten: 626
  • Vaak bu'j te bange
    • Museumdepot Beekbergen in H0
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #51 Gepost op: 20 March 2023, 13:44:09 »
Nog een suggestie voor jouw lijst:
Spersignaal. Op draaischijven zitten (vaak?) sperseinen. Rood bij bezet en wit bij vrij.
Die zijn in mijn sketch en de stuurprint ingebouwd.

Zo'n spersignaal had ik niet over nagedacht. Voor de Fiddle Yard hoeft het niet en bij de VSM hebben ze dat ook niet, dacht ik.
Hoe werkt dat dan Bert? Bij eindpositie bereikt èn brugspoor vrij => wit licht? En dan aan beide zijden? Of alleen aan de zijde waar één loc toestemming krijgt om op te rijden?

Joz

  • a.k.a. Jos
  • Offline Offline
  • Berichten: 626
  • Vaak bu'j te bange
    • Museumdepot Beekbergen in H0
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #52 Gepost op: 20 March 2023, 14:17:05 »
Dank voor de vele tips Bas!
Ik probeer die allemaal zeker toe te passen. Ik had destijds ook jouw epistels over Goed programmeren in C bestudeerd.

Ik weet niet of je het al hebt, maar langzaam optrekken en remmen. Ik zou dan kijken naar de accelstepper library (als je dat nog niet gedaan heb).
De library die ik inmiddels zelf gemaakt heb, voorziet inderdaad ook in langzaam optrekken en afremmen. Zie filmpje: https://www.youtube.com/watch?v=I3H3pjFTVtM

Ik had wel naar de Accelstepper library gekeken, en ook naar de Flexystepper library, maar daar had ik toch ruzie mee. Ik kon in ieder geval geen optie vinden dat er rekening gehouden wordt met een rondgaande beweging. Ze zijn volgens mij meer voor lineaire bewegingen bedoeld.

En toen ik toch bezig was, vond ik de berekeningen daarin voor de acceleratie en deceleratie onnodig ingewikkeld met worteltrekformules enzo.
Zij gebruiken één timestamp variabele om te bepalen wanneer er een nieuw stapje moet worden gezet, en berekenen dan meteen hoelang gewacht moet worden voor het volgende stapje.
Ik gebruik simpelweg een tweede timestamp die elke 1000000UL / accelerationSteps miliseconden checkt of de speedSteps aangepast moet worden.
« Laatst bewerkt op: 20 March 2023, 14:19:19 door Jozz »

bask185

  • Offline Offline
  • Berichten: 4971
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #53 Gepost op: 20 March 2023, 14:23:28 »
Citaat
onnodig ingewikkeld met worteltrekformules enzo
Dat klinkt idd te ingewikkeld. Je maakt je leven veel makkelijker als je met lineaire versnellingen werkt. De snelheid volgt dan een trapezium vormige grafiek Dan kan je alle formules van je natuurkunde lessen toepassen. Maar goed, wat klaar is, is klaar  :police:
Train-Science.com
Train-Science github
It ain't rocket science ;-)

Menno

  • Offline Offline
  • Berichten: 3444
    • Mijn van-alles website
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #54 Gepost op: 20 March 2023, 14:25:25 »
Ik ben er ook wel erg tevreden over hoe het nu uitpakt.
Bediening via seriële poort (voor analoge toepassing)
Die snap ik niet ;) Dan is het niet meer analoog, maar nog steeds digitaal...
Bediening via DCC (Fleischmann protocol?)
DCC is toch een universeel protocol? Wat doet Fleischmann zoveel anders dat je dat zo expliciet vermeld?
De ervaring leert dat ik niet goed overweg kan met Arduino sketches die door anderen gemaakt zijn.
Als veel commentaar daarbij ontbreekt, is dat ook niet raar. Ik kan simpel PIC-spul programmeren in assembler, maar ik moet daar echt commentaar bij noteren om te voorkomen dat ik zelf niet meer weet wat ik doe én dat als anderen het ooit voort zouden zetten (zeldzaam), die tenminste ook weten wat de code doet. Zeker in assembler geen overbodige luxe, gezien de bijzonder cryptische code die daarbij gebruikt wordt.

Joz

  • a.k.a. Jos
  • Offline Offline
  • Berichten: 626
  • Vaak bu'j te bange
    • Museumdepot Beekbergen in H0
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #55 Gepost op: 20 March 2023, 14:34:23 »
Met "Bediening via seriële poort (voor analoge toepassing)" bedoel ik een omgeving waar geen DCC apparaten beschikbaar zijn.
Via de seriële poort, omdat het bedienpaneel wat verder van de draaischijf gepositioneerd kan zijn.

DCC is inderdaad een universeel protocol, maar van wat ik zo kon vinden, wijkt de manier van het aansturen van een draaischijf nogal af per fabrikant. Dat heeft dan meer met de adressering te maken, dus ik had het eigenlijk "Fleischmann adresseringsmethode" moeten noemen ofzo  ;)

Dat ziet er zo uit:
Adr.|        | Functie
--------------------------------------------
200 | rood   | 180° met de klok mee draaien
    | groen  | 180° tegen de wijzers van de klok in draaien
201 | rood   | spoorwegverbinding 1 met brughuisje bij de aansluiting
    | groen  | spoorwegverbinding 1 zonder brughuisje bij de aansluiting
202 | rood   | spoorwegverbinding 2 met brughuisje bij de aansluiting
    | groen  | spoorwegverbinding 2 zonder brughuisje bij de aansluiting
203 | rood   | spoorwegverbinding 3 met brughuisje bij de aansluiting
    | groen  | spoorwegverbinding 3 zonder brughuisje bij de aansluiting
 ...
247 | rood   | spoorwegverbinding 47 met brughuisje bij de aansluiting
    | groen  | spoorwegverbinding 47 zonder brughuisje bij de aansluiting
248 | rood   | spoorwegverbinding 48 met brughuisje bij de aansluiting
    | groen  | spoorwegverbinding 48 zonder brughuisje bij de aansluiting

Lees voor rood/groen ook wel rechtdoor/afbuigend of andersom

Deze kon ik tenminste begrijpen.. Van de Märklin adressering kon ik niet echt wat mee. Heb die ook zo even niet meer paraat.

meino

  • Offline Offline
  • Berichten: 2317
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #56 Gepost op: 20 March 2023, 15:36:39 »
Ik had wel naar de Accelstepper library gekeken, en ook naar de Flexystepper library, maar daar had ik toch ruzie mee. Ik kon in ieder geval geen optie vinden dat er rekening gehouden wordt met een rondgaande beweging. Ze zijn volgens mij meer voor lineaire bewegingen bedoeld.

Voor jou misschien niet echt relevant meer, maar voor anderen misschien wel. De Accelstepper weet niets van een rondgaande beweging. Hij heeft twee zaken waar mee hij zijn beweging controleert, de huidige positie (void AccelStepper::setCurrentPosition(long position)   ) en een doel positie (void AccelStepper::moveTo(long position)). Als de doel positie groter is dan de huidige positie, zal hij stapjes voorwaards maken en als de doel positie kleiner is, maakt hij stapjes achterwaards. Overigens posities kunnen ook negatief zijn. Dat komt van pas omdat bij een draaischijf je modulo moet rekenen. Bijvoorbeeld, steppermotor 400 stapjes geen microstepping. Dan heeft de draaischijf 400 mogelijke posities. Stel huidige positie is 10, doel positie is 360. Als je nu gewoon met moveTo(360) de doelpositie op 360 zet, dan zal Accelstepper 350 stapjes voorwaards maken. Echter als je modulo 400 rekent is de kortste afstand slechts 50 stapjes (360-(400+10). Kortom als je nu met movTo(360-400) de doelpositie op -40 zet, zal Accellstepper 50 stapjes achterwaards uitvoeren. Daarna staat alleen de huidige positie op -40, dus dat moet je daarna even corrigeren naar de correcte odulo 400 waarde. Als je dit eenmaal doorhebt is er prima te werken met de Accelstepper. Dat is wat ik zelf in mijn Turntable class heb gedaan.

Overigens, je draaischijf loopt erg mooi, petje af voor het resultaat.

Groet Meino
« Laatst bewerkt op: 20 March 2023, 19:19:30 door meino. Reden: Nog een verduideling »

Bert55

  • Offline Offline
  • Berichten: 886
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #57 Gepost op: 20 March 2023, 15:44:42 »
Zo'n spersignaal had ik niet over nagedacht. Voor de Fiddle Yard hoeft het niet en bij de VSM hebben ze dat ook niet, dacht ik.
Hoe werkt dat dan Bert? Bij eindpositie bereikt èn brugspoor vrij => wit licht? En dan aan beide zijden? Of alleen aan de zijde waar één loc toestemming krijgt om op te rijden?

Ik heb het spersein nu gepland op de brug aan beide zijden gericht naar buiten. Rood bij beweging brug en wit in ruststand. Indien brug bezet is wit maar daar heb je een goed punt. Heb detectie op de brug dus dat is simpel toe te voegen.
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Witmoosdorf afgebroken, Witmoos 2 wordt opgestart na de verhuizing

Bert55

  • Offline Offline
  • Berichten: 886
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #58 Gepost op: 20 March 2023, 18:32:36 »
Interessante uitleg over Accelstepper Meino. Dat sla ik even op. Snap er nog niet alles van maar zodra nodig kom ik er graag op terug.
De komende periode gaan we onze draaischijf verder inbouwen en testen.
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Witmoosdorf afgebroken, Witmoos 2 wordt opgestart na de verhuizing

Joz

  • a.k.a. Jos
  • Offline Offline
  • Berichten: 626
  • Vaak bu'j te bange
    • Museumdepot Beekbergen in H0
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #59 Gepost op: 20 March 2023, 23:48:04 »
Bedankt voor je compliment Meino, erg gewaardeerd  :)

Ik snap nu ook hoe je de AccelStepper library gebruikt: de crux zit hem dus in het na elke voltooide beweging de positie met modulo herberekenen en bijwerken met setCurrentPosition.