Doel:€250.00
Donaties:€128.00

Per saldo:€-122.00

Steun ons nu!

Laatst bijgewerkt
op 16-04-2024

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Update: baan in de tropen door Arjen52
Vandaag om 08:04:09
LS Models 2024 door Servé
Vandaag om 07:53:21
IC-trein naar Berlijn in model, welke rijtuigen? door Servé
Vandaag om 07:46:32
Korneschans. Een fictief Duits Nederlands grensstation. door Wim Vink
Vandaag om 07:46:16
Vijfhuis (v.h. Frotterdam) door Ben
Vandaag om 07:14:29
Van Biervliet/B Models 2019, nieuws van de fabrikant door Corné81
Vandaag om 06:07:34
Mijn eerste H0-modeltreinbaan in aanbouw door bigboynl
Vandaag om 01:23:06
Decals voor een Roco 64892 DSG Speisewagen door frits959
Vandaag om 01:22:36
Einde Koemo ballast ??? door Ronald69
Vandaag om 01:14:28
Keerlusmodule Digikeijs DR5013 gaat na willekeurig aantal rondes op kortsluiting door Bert_Apd
Vandaag om 00:57:40
Frans/Belgisch H0e baantje door NS264
Vandaag om 00:44:46
Kleine Baan in H0 (≤ 0.5m²) door NS264
Vandaag om 00:19:08
h0 diorama USA “The Paintshops” door Whis
Vandaag om 00:08:34
Ronald en Wanda's "Southern Comfort" swamp layout! door class 37
Vandaag om 00:06:03
Nederland jaren 50 op basis van mijn roots door defender
19 april 2024, 23:05:17
Haandrecht materieel door orientexpress
19 april 2024, 23:02:39
EifelBurgenBahn door Frank 123
19 april 2024, 23:01:42
Mallnitzer Tauernbahnstrecke ÖBB N Spoor door Schachbrett
19 april 2024, 23:00:45
Traintastic - modelbaan besturingssoftware (gratis en open source) door bask185
19 april 2024, 22:27:47
Hengelo in 1981-1982, maar dan anders: Kassenberg in N door raymond erdtsieck
19 april 2024, 22:23:17
Laag-Baarlo door Benelux795
19 april 2024, 22:22:31
Een stukje Odsherreds Jernbane (OHJ) door gdh
19 april 2024, 21:51:42
US diorama in H0 door Wim Vink
19 april 2024, 21:38:59
Toon hier je nieuwe (model-) spooraanwinst(en)... door johanw
19 april 2024, 20:31:36
La Fabrique (1:87, 0,16m2) door tothebeach
19 april 2024, 20:02:10
Cranicher Altbahn door Arjen52
19 april 2024, 19:47:50
BMB 00-Modulebaan, BMB-Rijdagen en BMB-Deelname aan Beurzen & Evenementen door Hans van de Burgt
19 april 2024, 19:41:34
Aachenau West door MichielB
19 april 2024, 18:48:39
Jeugdsentiment (show je oude treintjes) door thonis
19 april 2024, 18:36:00
Openen Lima Hondekop door Mispoes
19 april 2024, 17:59:32
  

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

Joz

  • a.k.a. Jos
  • Offline Offline
  • Berichten: 316
  • Vaak bu'j te bange
    • Museumdepot Beekbergen in H0
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #45 Gepost op: 19 maart 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: 626
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #46 Gepost op: 19 maart 2023, 17:03:47 »
Erg fraai loopt hij!
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Bouw Witmoosdorf met zoon Rutger: 
  https://forum.beneluxspoor.net/index.php?topic=103485.msg3222322200#top

gdh

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

Joz

  • a.k.a. Jos
  • Offline Offline
  • Berichten: 316
  • Vaak bu'j te bange
    • Museumdepot Beekbergen in H0
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #48 Gepost op: 20 maart 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: 626
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #49 Gepost op: 20 maart 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
Bouw Witmoosdorf met zoon Rutger: 
  https://forum.beneluxspoor.net/index.php?topic=103485.msg3222322200#top

bask185

  • Offline Offline
  • Berichten: 4051
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #50 Gepost op: 20 maart 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: 316
  • Vaak bu'j te bange
    • Museumdepot Beekbergen in H0
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #51 Gepost op: 20 maart 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: 316
  • Vaak bu'j te bange
    • Museumdepot Beekbergen in H0
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #52 Gepost op: 20 maart 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 maart 2023, 14:19:19 door Jozz »

bask185

  • Offline Offline
  • Berichten: 4051
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #53 Gepost op: 20 maart 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: 3342
    • Mijn van-alles website
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #54 Gepost op: 20 maart 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: 316
  • Vaak bu'j te bange
    • Museumdepot Beekbergen in H0
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #55 Gepost op: 20 maart 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: 2098
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #56 Gepost op: 20 maart 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 maart 2023, 19:19:30 door meino. Reden: Nog een verduideling »
A clean desk is a sign of an empty mind

Kranenberg
De CanBus komt naar Kranenberg

Bert55

  • Offline Offline
  • Berichten: 626
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #57 Gepost op: 20 maart 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
Bouw Witmoosdorf met zoon Rutger: 
  https://forum.beneluxspoor.net/index.php?topic=103485.msg3222322200#top

Bert55

  • Offline Offline
  • Berichten: 626
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #58 Gepost op: 20 maart 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
Bouw Witmoosdorf met zoon Rutger: 
  https://forum.beneluxspoor.net/index.php?topic=103485.msg3222322200#top

Joz

  • a.k.a. Jos
  • Offline Offline
  • Berichten: 316
  • Vaak bu'j te bange
    • Museumdepot Beekbergen in H0
Re: Draaischijf uit de 3D-printer en met Arduino besturing
« Reactie #59 Gepost op: 20 maart 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.