Welkom! Login voor uitgebreide toegang en gebruiksfuncties.

Updates:

Microstepper motoren voor armseinpalen

in Al het andere!

Gestart door AP3737, 8 oktober 2023 20:02

Vorige topic - Volgende topic

AP3737

Hallo allemaal

Voor mijn modelbaan wil ik armseinen plaatsen. Ik heb de afgelopen tijd via meerdere kanalen een voldoende aantal gebruikte Viessmann en Schneider signalen kunnen kopen. Een aantal zijn daarvan in uitstekende toestand, maar een aantal zijn van wat mindere kwaliteit of hebben een kapotte aandrijving.

Omdat de standaard Viessmann 4551 aandrijving niet erg betrouwbaar schijnt te zijn, wil ik ze verwijderen en door iets anders vervangen. Op dit forum, maar ook elders, zie ik dat veel mensen hiervoor servo motoren nemen, zoals de SG90.

Op een aantal plaatsen zie ik echter ook dat mensen micro steppers inzetten om wissels om te zetten. Goede voorbeelden die mij geïnspireerd hebben, zijn:
- Langsamer Weichenantrieb für C-Gleis mit Schrittmotor und DCC Steuerung: https://www.stummiforum.de/t213531f7-Langsamer-Weichenantrieb-fuer-C-Gleis-mit-Schrittmotor-und-DCC-Steuerung.html
- Langsamer Unterflur Weichenantrieb für Roco Line mit Schrittmotor: https://www.stummiforum.de/t213617f195-Langsamer-Unterflur-Weichenantrieb-fuer-Roco-Line-mit-Schrittmotor.html#msg2537173
- Micro-Schrittmotoren und die MobaLedLib: http://www.erich-wedeking.de/Modellbahn/Anleitung%20Micro-Stepper%20und%20MobaLedLib.pdf
- Microsteppers voor bewegende pantograaf: https://forum.beneluxspoor.net/index.php?topic=105407.msg3222400193#msg3222400193.
Ik wil nu deze micro stappers zelf gaan gebruiken voor het omzetten van armseinen.

Misschien nog even voor de volledigheid. Omdat armseinen op de modelbaan relatief kwetsbaar zijn, wil ik ze uiteindelijk met een variant van de Wattenscheider Signalschacht (https://www.fremo-net.eu/index.php?id=339) uitrusten, om ze relatief makkelijk uitneem- en verwisselbaar te maken. De schacht moet het liefst wat kleiner uitvallen dan bovengenoemde Fremo variant, en zal ik met behulp van mijn 3D printer drukken.

Maar eerst terug naar de Micro stepper motoren. Deze zijn bij Ali in vele varianten te koop. Ik heb voor mijn steppers €0,97 per stuk betaald bij de "Classic motor Store". Daarbij komen nog de kosten voor verzending. Alleen bij deze winkel tel ik al 10 verschillende types, die allemaal een net iets andere vorm hebben en anders  geprijsd zijn. Wat precies de verschillen zijn, weet ik niet; wat ik wel weet, is dat deze steppers door camera fabrikanten voor de auto-focus van lenzen worden gebruikt. Wat ik in ieder geval eenieder kan aanraden, is meteen voldoende motoren te kopen, want er is geen garantie dat je later van hetzelfde type nog genoeg kan bijbestellen.

De maten van de door mij gebruikte motoren zijn in onderstaande foto weergegeven. Met bijna 16mm breedte heeft de motor een duidelijk groter inbouwgat nodig dan Viessmann's 4551 "Stellantrieb". Op Aliexpress heb ik (later) echter ook smallere varianten gevonden.


De motor kan een beweging van ongeveer 8,7 mm maken; dat is dus ruim meer dan de ruwweg 3,5 mm beweging die we nodig hebben voor de Viessmann armseinen. Om de hele 8,7 mm te overbruggen, maakt de motor ongeveer 1740 stappen. Dus per mm 200 stappen. Voor 8,7 mm zijn bijna 22 omwentelingen nodig.  Na 1 omwenteling zijn 0,4 mm afgelegd, dus 80 stappen. Per stap is de draaing dus 4 graden, en de verplaatsing 5 micrometer. Net als bij normale stappenmotors, is het in theorie zelfs mogelijk door microstappen een 2, 4, 8 of 16 maal hogere precisie te halen. Dat lijkt me echter niet nodig.

Opgemerkt moet worden dat door speling in de lagers in de praktijk een precisie van 5 micrometer nooit gehaald zal worden. Voor het aansturen van armseinen is de precisie echter meer dan voldoende, en zeker beter dan we met servo motoren kunnen bereiken.

De gelijkstroomweerstand van de motoren is ongeveer 14 Ohm. Op een aantal plaatsen lees ik dat sommige mensen deze motoren rechtstreeks op een Arduino aansluiten en met 5V aansturen. Alhoewel dat in een aantal gevallen vast wel zal lukken, is dat volgens mij een slechte methode. Ten eerste kan de Arduino kapot gaan door de spanningspieken die ontstaan als de motor wordt aangestuurd. Ten tweede is de benodigde stroom van tientallen mA duidelijk hoger dan een Arduino kan leveren. En als door een programmeerfout of wat dan ook de puls niet tijdig wordt uitgezet, dan zal er een stroom van 5 (Volt) gedeeld door 14 (mA) is 350mA  gevraagd worden. Geen enkele Arduino overleeft dat.

Het is (volgens mij) dus belangrijk dat er tussen de Arduino en de motor een driver komt. Die bestaan in vele vormen, maar ik heb gekozen voor de wel bekende A4988 drivers, die je voor ongeveer 80 cent al bij Ali kan kopen. Deze zogeheten Stepstick printjes worden veel gebruikt voor CNC freesmachines en 3D printers. De A4988 driver is al lang op de markt en er zijn duidelijk betere drivers te koop (DRV 8825, TMC2209). Deze nieuwere drivers zijn echter wat duurder, en hebben voor de aansturing van de microsteppers geen extra voordelen.

De drivers hebben een voedingsspanning nodig van minimaal 8V. Ik heb gekozen voor ongeveer 16V, zodat ik het (gelijkgerichte) DCC signaal kan gebruiken. Voor de niet-elektrotechnici lijkt 16V misschien erg veel voor dit soort kleine motortjes, maar men moet weten dat de drivers ervoor zorgen dat de motoren niet gestuurd worden door er een bepaalde spanning op te zetten (spanningsbron), maar door er een bepaalde hoeveelheid stroom door de sturen (stroombron). Door het verhogen van de spanning op de drivers, kan er kortstondig meer stroom door de motoren lopen, zodat ze meer kracht kunnen ontwikkelen. Over kracht gesproken, deze motoren hebben meer dan voldoende kracht voor allerlei andere modelbaan toepassingen, zoals het omzetten van wissels.

Op de A4988 stepper drivers printjes heb ik de maximale stroom beperkt tot 400mA. Dat lijkt veel, maar voor ieder stapje wordt slechts kort stroom benodigd. Als de motoren in beweging zijn, is de gemiddelde stroom iets als 60mA.

Zoals hierboven al is geschreven, wil ik de stepper motoren gebruiken ter vervanging van de Viessmann 4551 aandrijving. Ik heb daarom een 3D houder ontwikkeld, die op de voet van de Viessmann seinen past. Hieronder een foto van een eerste versie van deze houder, met daarnaast de Viessmann aandrijving.


Om te voorkomen dat het sein kapot gaat, moet ervoor worden gezorgd dat de beweging nooit meer is dan 3,5mm. Op onderstaande foto is goed te zien dat er daarom een nokje op de houder zit die deze beweging tot 3,5mm beperkt. Ook is het schroefje te zien waarmee de steldraad voor het bewegen van het sein gefixeerd wordt. Dat gaat erg makkelijk: als de motor tegen het bovenste nokje aanloopt, heeft het zijn maximale positie bereikt. Op die positie moet het sein in rust zijn, en kan de steldraad eenvoudig worden vastgeschroefd. Verdere afstelling is niet nodig; volgens mij is dat (naast de prijs) één van de grootste voordelen van deze aanpak!


Misschien ten overvloede: deze stepper motoren kan je zonder problemen korte tijd tegen de mechanische begrenzing aan de onder- dan wel bovenkant laten aanlopen. Er gaat daarbij niets kapot. Het is dus ook niet nodig om aan het einde van een treinsessie de positie van de seinen te onthouden; tijdens een volgende sessie kan je ze gewoon even heen en weer bewegen, waarna je ze weer in een gedefinieerde stand hebt staan.

Alle files om de houder zelf met een 3D drukker te maken heb ik op Printables.com gezet: https://www.printables.com/model/607339-microsteppers-for-model-train-signals-version-1

Opgemerkt moet worden dat dit een eerste versie is, die ik al wel enige dagen getest heb, maar het is nog niet de uiteindelijke versie is. Ik wil namelijk nog een kleine decoder print maken met daarop een "Arduino-achtige" processor (AVR DxCore) en een A4988 driver IC. Daarvoor zal ik tzt een tweede versie maken, en de printplaat voor geïnteresseerden via OSHWLab beschikbaar stellen. Ook zal ik dan een kleinere variant van de Wattenscheider Signalschacht moeten maken. Maar voordat dat zover is. wil ik eerst nog wat andere projecten afronden. Wordt dus vervolgd.

Voordat ik het vergeet: ik heb ook een video gemaakt waarin ik (nou ja, een door AI gegenereerde stem) alles nog een keertje vertel: https://youtu.be/WzQ2PCh7Bec
https://www.youtube.com/v/WzQ2PCh7Bec


Dat was het voor vandaag. Ik hoop dat ik hierdoor weer anderen inspireer om ook zelf met dit soort micro-steppers te gaan experimenteren.

Aiko



...

Overet

Hartelijk dank voor het uitgebreid delen van jouw ervaringen met dit alternatief voor een servo aandrijving. Interessant! Ik ga mij er in verdiepen.

Tom
Plannen voor baan tijdperk III naar DB-voorbeeld. Roco Multi-maus/Maus2/MausR3, Z21, Mardec, Koploper of Rocrail?

Robkop

Interessant verhaal, mss heb ik ook nog wel zo'n ding liggen uit een gesloopte compactcamera.
De groeten van Rob

bask185

CiteerHet is dus ook niet nodig om aan het einde van een treinsessie de positie van de seinen te onthouden
Misschien niet, maar het kan wel dus waarom ook niet? Ik denk dat je met 100.000 write cycles van je EEPROM nooit tegen de lamp zal lopen. En anders bestaan er nog simpele truukjes om dat over meer bytes te smeren. Met 1.000.000x onthouden zit je zeker weten wel goed.

unused memory is wasted memory

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


momfer

Mooie toepassing en duidelijk filmpje!
Groet,
Rico (momfer)

Centrale: DCC-EX | Arduino Mega + Motorshield + WiFi bridge
Besturing: EX-RAIL | Engine Driver | Traintastic | Rocrail | DecoderPro (JMRI)
Bouwbeschrijving van mijn Kerstbaantje

Eric v C

#6
Aiko,

Geweldig.
Jij hebt gewoon gedaan wat ik zou willen.
Klasse. Ik ga dit ook proberen.
Het lost mijn inbouwhoogte probleem op.
Als ik tenminste de micro stepper gebruik waarbij de motor niet achter de schroefdraad maar naast de schroefdraad is geplaatst.



en de link https://de.aliexpress.com/item/4001186825999.html

Dank voor de inspiratie en het delen van je kennis.

Eric (y) (y) (y)

AP3737

Beste allemaal

In de eerste plaats dank voor jullie positieve reacties. Dat motiveert altijd weer om verder te gaan  (y)

@Bas: Ik ben het met je eens dat 100.000 schrijf operaties waarschijnlijk nooit gehaald worden. Ik vermoed ook dat ik in mijn code later de positie wel gewoon zal opslaan, maar het is altijd goed te weten dat je de steppers gewoon "door kan laten lopen", ook al komen ze tegen de begrenzer aan.
Citaat van: bask185 op  8 oktober 2023 23:49
anders bestaan er nog simpele truukjes om dat over meer bytes te smeren.
Ik ben benieuwd of die truukjes ook werken als je maar 1 (binaire) byte waarde hoeft op te slaan?

@Eric
Citaat van: Eric v C op  9 oktober 2023 13:17
Het lost mijn inbouwhoogte probleem op.
Als ik tenminste de micro stepper gebruik waarbij de motor niet achter de schroefdraad maar naast de schroefdraad is geplaatst.
Ik denk dat je inderdaad heel weinig diepte nodig hebt. De door jouw getoonde steppers zijn een stuk minder lang dan die ik heb gebruikt, maar zouden ook prima moeten werken.
Omdat je daarvoor (misschien) een nieuwe houder gaat ontwerpen, hierbij nog een tip. Ik heb zelf veel tijd verloren met mijn pogingen om met de digitale schuifmaat de precieze maten op te nemen. Na meer dan een uur realiseerde ik mij dat ik in het 3D teken programma (ik gebruik Fusion 360) ook een foto op de achtergrond (Canvas) kan leggen. Die kan je heel makkelijk calibreren, waarna het vooral "overtrekken" van vormen is.

Misschien zijn er mensen die denken dat de programmering van de Arduino vast heel moeilijk zal zijn. Voor hen hieronder een stukje "demo code"


// Test for microsteppers
// No external libraries are used

// Adjust pins, steps and time as needed
const byte stepPin = 2;              // GRBL X-steps
const byte dirPin = 5;               // GRBL X-Dir
const byte enablePin = 8;            // GRBL Enable

const unsigned int delayOn = 2000;   // in microseconds
const unsigned int delayOff = 2000;


void run(long NumberOfSteps, byte Direction) {
  digitalWrite(dirPin, Direction);
  digitalWrite(enablePin, LOW);
  for (long i = 0; i < NumberOfSteps; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(delayOn);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(delayOff);
  }
  digitalWrite(enablePin, HIGH);
}

void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  pinMode(enablePin, OUTPUT);
  run(2000, HIGH);
  delay(4000);            // waits for 4 second
}

void loop() {
  run(700, LOW);
  delay(4000);            // waits for 4 second
  run(710, HIGH);
  delay(10000);            // waits for 10 seconds

}

Bovenstaande code is vooral ter illustratie hoe simpel het kan. Ik zal het later zeker anders doen, zodat ik ook "nawippen" en andere ongein kan doen. Ook gebruik ik in mijn "productie code" nooit zaken zoals "delayMicroseconds" en "delay", die de rest blokkeren. Voor wat betreft het "nawippen" zal ik de aanpak van het OpenDCC forum overnemen (https://www.opendcc.de/elektronik/opendecoder/opendecoder_sw_segment.html).

Groet, Aiko

Eric v C

Aiko,

ik kom met specifieke vragen (via een PB) op de lijn bij je .
Mooi dat je zo uitgebreid op dit forum informeert. (y)
Zo kunnen we meer mensen profiteren.

Eric

NS2408

Dag Aiko, zeer geïnteresseerd, dus ga ik je volgen. Vraagje; ik zie naar mijn idee Duitse seinen maar kan dit ook met Nederlandse seinen ( in hO)? Alvast dank voor je antwoord, groet, NS2408

AP3737

Dag NS2408

Dank  :)
Citaat van: NS2408 op 13 oktober 2023 19:42
Vraagje; ik zie naar mijn idee Duitse seinen maar kan dit ook met Nederlandse seinen ( in hO)?
Dat zou volgens mij geen probleem moeten zijn. Alle armseinpalen die ik ken zou je ermee kunnen bedienen.
Groet, Aiko

Bert55

Top Aiko  (y)
Zeer interessante informatie.
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Bouw Witmoosdorf met zoon Rutger: 
  https://forum.beneluxspoor.net/index.php?topic=103485.msg3222322200#top

Monobrachius

Aiko,

Fijn dat je je ervaring en kennis hier deelt. Ik kijk graag mee en laat me graag inspireren.
Ik heb al een tijd deze motortjes liggen met het idee om er ooit iets mee te doen, maar als iemand er al mee begint, blijft er meer tijd over voor andere projectjes. :-)

Henk
K.Bay.Sts.B

Montanbahn

#13
Zou je dit ook kunnen gebruiken met 'normale' digitale componenten (denk hierbij aan ESU of YaMorC)? Mogelijk zelfs ook mbv loc- of functiedecoders (dan denk ik aan het openen van duren in goederenwagens, bewegen van pantografen ect.).
En zo ja, welke aansturing gebruik je dan?
MB

It's weird having the same age as old people...........

bouwdraadje

Bert55

Wij doen dat met DCCnext van Arcomora net als de wissels en veel meer, €gunstig
Met vriendelijke groet, Bert
Märklin, DCCnext, ECOS
Bouw Witmoosdorf met zoon Rutger: 
  https://forum.beneluxspoor.net/index.php?topic=103485.msg3222322200#top