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

Afscheidsrit ICR rijtuigen 27 september 2025 door StefanNL_Plays
Vandaag om 04:56:20
Big Scale Trains - NS SLT in H0 door Sven
Vandaag om 01:14:06
Bouw van tijdperk 1 HSM en SS rijtuigen door janw
Vandaag om 00:16:58
Een secundair lijntje in de Puy de Dome en de (Haute) Loire anno 1968 door Ronald69
Vandaag om 00:04:11
NS 3502 van zwart naar groen door Ivo tB
29 September 2025, 23:30:30
Minibaan Visserskaai H0 door gdh
29 September 2025, 23:04:35
Ketelwagens, welke hebben jullie? door Pauldg
29 September 2025, 22:49:52
4 oktober modelspoorbeurs Houten door sncf231e
29 September 2025, 22:46:21
IMA 2025 (40e) / Marklin Tage 2025 door Jan-Peter
29 September 2025, 22:44:21
Onlangs gespot - gefotografeerd, de foto's door Jan-Peter
29 September 2025, 22:08:23
Big Scale Trains - NS 2400 in Spoor G (1:27) door Sebastiaan Pot -- Big Scale Trains
29 September 2025, 22:03:47
MB-module: "Charleroi Route de Mons" door Benelux795
29 September 2025, 21:52:28
Alweer is de Weller soldeerbout defect door Ronald Halma
29 September 2025, 21:42:05
11e Grote Modelspoorexpo Leuven, 27 en 28 september door Falcon10
29 September 2025, 21:29:42
Leubachtalbahn door Krokodil68
29 September 2025, 21:18:42
NS-1000 in spoor-1 door Bahn-AG
29 September 2025, 21:10:29
Raadplaatje door henk
29 September 2025, 21:01:53
Materieel ombouw, aanpas en verbouw zooi. door Simplex
29 September 2025, 20:48:26
Pendel module door Te 2/2
29 September 2025, 20:41:15
Vijfhuis (v.h. Frotterdam) door Ben
29 September 2025, 20:17:32
Gewoon wat busfoto's door R1954
29 September 2025, 20:14:54
Ombouw/Pimpen Bolle neuzen door neudalhausenstadbahn
29 September 2025, 19:52:10
Materieel verzameling van Michiel(NDS) door neudalhausenstadbahn
29 September 2025, 19:45:21
Bahnbetriebswerk "Altendorf" door puntenglijder
29 September 2025, 19:34:29
Die Sauerlandbahn - Tijdperk III door puntenglijder
29 September 2025, 19:31:57
Cornfield Junction / Boulder Crossing - Afsluiten Topic door RobVille
29 September 2025, 19:02:28
Sprinter SLt Big scale Trains door Reinout van Rees
29 September 2025, 18:44:38
Arlbergbahn.. ? door Benelux795
29 September 2025, 17:36:51
Dubbelom, een boekenplankspoorbaan in H0 door spoorijzer
29 September 2025, 17:13:54
Het bouwen van een Philotrain 2400 kit door niels1093
29 September 2025, 17:05:28
  

Auteur Topic: Wisselaandrijving met stappenmotor  (gelezen 3284 keer)

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Wisselaandrijving met stappenmotor
« Gepost op: 27 January 2017, 21:13:03 »
Naar aanleiding van een opmerking in het Mardec topic over het omzetten van wissels met een stappenmotor, heb ik als proof of concept wat uitgeprobeerd volgens dit schema;



De processor is een Basic Stamp BS2sx, deze kijkt naar de eindschakelaar en de signaalpin waar de Mardec/Arduino op zit. Ook gaan er 4 uitgangen via een ULN2003 naar een goedkoop stappenmotortje. De LEDs (in een LEDdisplay) zijn niet nodig maar geven aan welke fasen van de stappenmotor worden aangestuurd.
Een schakelaartje simuleert het H/L Mardec signaal.
De eindschakelaar en de puntstukschakelaar zitten op de stappenmotor geschroefd en worden samen ingedrukt. Aan de as van de stappenmotor moet dan nog een stangetje naar de wissel.

Het programma doet niets anders dan naar de Arduinopin kijken of deze 0 (L=links) of 1 (H=rechts) is en of dit overeenkomt met de actuele wisselstand. Als dit niet zo is wordt de stappenmotor een halve slag naar links of naar rechts verdraaid.

Dat ziet er dan zo uit:
<a href="https://www.youtube.com/v/oayCW41L008" target="_blank" class="new_win">https://www.youtube.com/v/oayCW41L008</a>

Dit is het programma;
'   {$STAMP BS2sx}
'   {$PBASIC 2.5}
'
' -----[ I/O Definitions ]-------------------------------------------------
fasepins         VAR OUTA      ' fase output pins 0,1,2,3
arduinopin       PIN 4         ' signaal wissel L/R van Arduino
schakelpin       PIN 5         ' terugkoppeling, schakelaar voor motor in nulstand

' -----[ Constants ]-------------------------------------------------------
stepdelay          CON 5     ' delay voor draaisnelheid
vertraging         CON 64    ' ingebouwd in stappenmotor
stappenperrondje   CON 64    ' 360/11,25 graden = 32 stappen, x vertraging = 2048 stappen per omw
links              CON 0     ' wisselstanden
rechts             CON 1

' -----[ Variables ]-------------------------------------------------------
index              VAR Word    ' stappenteller
halfrondje         VAR Word    ' aantal stappen voor halve asomwenteling
fase               VAR Nib     ' fase index
stepsFT            VAR Nib(4)  ' fasen Full Torque; 2 spoelen, trekt meer stroom
stepsLT            VAR Nib(4)  ' fasen Low Torque; 1 spoel, minder stroom
stepsHS            VAR Nib(8)  ' fasen Half Step; langzamer maar nauwkeuriger
wisselstand        VAR Bit     ' actuele wisselstand

' -----[ step data ]-----------------------------------------------------
stepsFT(0) = %1100             ' fasen Full Torque
stepsFT(1) = %0110
stepsFT(2) = %0011
stepsFT(3) = %1001

stepsLT(0) = %1000             ' fasen Low Torque
stepsLT(1) = %0100
stepsLT(2) = %0010
stepsLT(3) = %0001

stepsHS(0) = %1000             ' fasen Half Step
stepsHS(1) = %1100
stepsHS(2) = %0100
stepsHS(3) = %0110
stepsHS(4) = %0010
stepsHS(5) = %0011
stepsHS(6) = %0001
stepsHS(7) = %1001

' -----[ Initialisatie ]--------------------------------------------------
DIRA = %1111                   ' maak P0..P3 output
DIRB = %0000                   ' maak P4..P7 input
fase = 0                       ' set willekeurige fase index
halfrondje = vertraging * stappenperrondje / 2   ' 32 * 64 /2 = 1024 stappen

GOSUB beginstand               ' draai rechtsom totdat schakelaar ingedrukt
PAUSE 100                      ' even wachten

' -----[ Main ]-----------------------------------------------
' kijk wat de arduinopin aangeeft, vergelijk met acuele
' wisselstand en zet wissel om naar gewenste stand
DO
  IF (arduinopin = links) AND (wisselstand = rechts) THEN GOSUB draailinksom
  IF (arduinopin = rechts) AND (wisselstand = links) THEN GOSUB draairechtsom
  '  anders L=L of R=R, niets doen
LOOP

' -----[ Subroutines ]-----------------------------------------------------
'
beginstand:                      ' draai rechtsom tot schakelaar ingedrukt = 0
  DO WHILE schakelpin = 1
    fase = (fase + 1) // 4         ' wijs naar volgende stap (modulus 4)
    GOSUB DoStepLT               ' draai motor één stap
  LOOP                           ' schakelaar ingedrukt = beginstand = wisselstand R
  wisselstand = rechts      ' nieuwe wisselstand bereikt
RETURN
'-------------------------
draailinksom:                    ' draai halve slag linksom
  FOR index = 1 TO halfrondje
    fase = (fase + 3) // 4       ' wijs naar vorige stap
    GOSUB DoStepLT
  NEXT
  fasepins = %1111               ' motor stroomloos
  wisselstand = links           ' nieuwe wisselstand bereikt
RETURN
'-----------
draairechtsom:                   ' draai halve slag rechtsom
  FOR index = 1 TO halfrondje
    fase = (fase + 1) // 4       ' wijs naar volgende stap
    GOSUB DoStepLT
  NEXT
  fasepins = %1111               ' motor stroomloos
  wisselstand = rechts           ' nieuwe wisselstand bereikt
RETURN
'-----------
' stuur fase naar output pins (Low Torque)
DoStepLT:
  fasepins = stepsLT(fase)       ' output fase bits 0..3
  PAUSE stepDelay                     ' pause tussen stappen
RETURN
'-----------
' stuur fase naar output pins (Full Torque)
DoStepFT:
  fasepins = stepsFT(fase)          ' output fase bits 0..3
  PAUSE stepDelay                     ' pause tussen stappen
RETURN



« Laatst bewerkt op: 28 January 2017, 12:05:40 door 72sonett »
El Carrilet
"te dom om te poepen"
MH

Hans van de Burgt

  • Onshape Gebruikersgroep
  • Offline Offline
  • Berichten: 6552
Re: Wisselaandrijving met stappenmotor
« Reactie #1 Gepost op: 27 January 2017, 21:39:14 »
@72sonett,

Fijn dat je een apart draadje hebt geopend. Met de aansluiting van de Arduino, bedoel je denk ik het aansluiten op een van de pinnen van het Mardec Shield. Is hiermee het in de Mardec draad genoemde bezwaar dat niet altijd duidelijk is wat de beginstand is van de stappenmotor geëlimineerd?

Gr, Hans

Robert E

  • Offline Offline
  • Berichten: 909
    • Robert’s Modelspoor Pagina
Re: Wisselaandrijving met stappenmotor
« Reactie #2 Gepost op: 27 January 2017, 21:41:18 »
Met zo'n drivertje kun je met drie signalen de motor ook perfect aansturen.

https://www.martoparts.nl/A3967-V44-EasyDriver

Je kunt zelf tot micro step gaan zonder zelf patronen te moeten maken.
Een kloksignaal, richtingssignaal en enable/disable....

Positie zou je dan moeten tellen door interrupt te zetten op timer die het kloksignaal maakt...

Zou je zelfs meerdere stappenmotors kunnen aansturen.....

In het verre oosten zullen de printen nog wel goedkoper zijn :)

Mvg

Robert
MDRRC-II (Lite) goedkope DIY centrale voor DCC en MM.
Heb je een vraag, stuur me dan een mail via mijn site ipv persoonlijk bericht...

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: Wisselaandrijving met stappenmotor
« Reactie #3 Gepost op: 27 January 2017, 23:55:42 »
Citaat van: Hans van de Burgt
...Met de aansluiting van de Arduino, bedoel je denk ik het aansluiten op een van de pinnen van het Mardec Shield. Is hiermee het in de Mardec draad genoemde bezwaar dat niet altijd duidelijk is wat de beginstand is van de stappenmotor geëlimineerd?
Ja & ja.
De Mardec maakt die pin hoog (1) of laag (0) om aan te geven of de wissel naar rechts of links moet staan.

Bij inschakelen draait de motor eerst helemaal naar rechts totdat een microschakelaartje wordt ingedrukt (signaal gaat van 1 naar 0). De stappenmotor moet dan zo gemonteerd worden dat de wissel dan ook in stand rechts staat.
Als je voor de processor een Arduino neemt, of een ATtiny of een Picaxe of iets soortgelijks, kost het hele spul nog geen 10 euro.

De processor die ik voor deze test gebruikt heb is een Basic Stamp, omdat ik die nu eenmaal heb en veel makkelijker te programmeren vind dan een Arduino (Basic vs C++), maar de goedkoopste versie daarvan kost ca US$50, dus dat is geen optie.

Bovendien vind ik de oplossing met een stappenmotor helemaal een doodlopend spoor; de aansturing is ingewikkelder dan met een servo of elektromotortje met wat microschakelaartjes. Zoals in het Mardec topic al aangegeven kun je veel makkelijker en goedkoper die I2C 16-servokaart gebruiken.

Citaat van: Robert E
Met zo'n drivertje kun je met drie signalen de motor ook perfect aansturen.
https://www.martoparts.nl/A3967-V44-
Maar die is voor  bipolaire stappenmotoren, die in mijn voorbeeld is een unipolaire, met andere aansturing   :'(
« Laatst bewerkt op: 28 January 2017, 21:13:10 door 72sonett »
El Carrilet
"te dom om te poepen"
MH