Jindra Fučík

Přesuvna

V textu používám jméno "přesuvna", přestože popisuji zařízení, které je použitelné jak pro přesuvny, tak pro segmentové točny nebo segmentové výhybky, nebo klidně i pro další zařízení.

Úvod

Při jednom tradičním zasedání modelářské besedy v Nagánu vytáhl Honza segmentovou točnu od Ndetailu s tím, že je potřeba s ní začít hýbat v kolejišti. Nejprve jsem zvažoval použití jednoduchého lineárního modelářského serva a k němu běžný dekodér pro modelářská serva.
Toto řešení má několik nedostatků. Modelářská serva nejsou dostatečně dlouhá a jejich přesnost také není velká.
Proto jsem se nakonec rozhodl použít krokový motor se závitovou tyčí. Těch je na ebay k dispozici opravdu velké množství. Pravděpodobně pochází ze starých DVD mechanik, nebo disketových jednotek. Většina má stejné parametry motoru: 4 vývodový krokový motor, 5V cca 1A, 18 ° na krok. Dají se najít různé varianty šroubovice. Tedy různé délky a různá stoupání. Rovnou bych chtěl upozornit všechny, kdo si myslí, že si šroubovici vymění. Tak na to zapomeňte, neboť motor nemá "přední ložisko", šroubovice prochází celým motorem a ložisko je až na konci. Kdo se bojí o přesnost, tak jen připomenu, že šroub má stoupání menší než 5mm, takže při dvaceti krocích na otáčku je délka plného kroku 5/20=0,25mm.
Honza statečně přidělal pohon k segmentové točně. Podstatné je také k jednomu kraji přidělat koncový spínač, od kterého se odpočítává poloha. Je jasné, že stejný motor lze použít také pro přesuvnu, nebo jiné podobné zařízení.

Když byla mechanika poskládaná (Honzův popis ZDE), přišel na řadu problém co s elektronikou. Honza trval na analogovém ovládání. To je v určitém smyslu jednodušší, zejména pro konstruktéra, protože se nemusí řešit nic okolo. Prostě jen pár tlačítek a nikomu nevadí, že to nelze propojit s jiným systémem. Takže jsem postavil řídící elektroniku, která má následující funkce.

Traverser Controll

I'm using only one name "traverser", although the description is about device useful for traversers, segment turntables, transfer tables and optionaly other similar devices

Introduction

Once upon a time in traditional discussion in Nagáno restaurant Honza present segment segment turntable by Ndetail. Honza has question, how to create movement for this table in layout. First of all I proposed use of simple linear model servo with usual servo decoder.
But this solution have few problems. Model servos are not long enough, and also accuracy of servo is not that good.
Then I decided to use stepper motor with screw rod. They are available in many variants on ebay. I expect they are coming from old DVD or floppy drives. They usually have same motor parameters: 4 wire stepper motor, 5V cca 1A, 18 ° per step. They are available in many variants of screw rod. It mean various length and various pitch. I would like to inform everybody, who think, thet will be able to change rod. You can forget about it. Stepper motor have no "front bearing", rod coming though all motor and bearing is at the end of rod. Who is interested in accuracy, Then I have to inform you, that rod have pitch smaller than 5mm, then with 20 steps per rotation is one step long 5/20=0.25mm.
Honza bravely joined movement to segment turntable. It is mandatory to add end-switch to one edge. This end switch is used to count position. It is evident, that same movement can be used for segment turntable, transfer table as well as traverser and other similar devices.

When mechanical part was done, we have to solve problem, what we will done with electronic. Honza stand on analogue control. It is in some cases easier, especially for developer. It is no necessary check other environment. Simply few buttons and no one is confused, that it is not possible to connect it to other system. Then I was make controlling electronic with following functions.

Funkce zařízení

Aktuální funkce zařízení.
  • Ovládání jednoho krokového motoru s lineárním posunem
  • Analogové ovládání tří poloh
  • Tři tlačítka pro jednotlivé polohy
  • Každá poloha je individuálně nastavitelná

Hardware

Z hlediska hardware se jedná o velice jednoduché zařízení. Jen procesor, k němu budič krokového motoru a potřebná tlačítka. Aby nebylo zařízení tak fádní, přidal jsem na něj alespoň dvě další ledky a konektor pro programování procesoru (ICSP). Všimněte si, že jsem použil různé délky tlačítek pro určení polohy (1,2,3) a pro programování (Prog). To je proto, že předpokládám, že nastavení se provede při otevřené škatulce ve které je zařízení umístěno, zatímco při provozu je víčko krabičky zavřené. Případně pokud si myslíte, že budete zařízení nastavovat častěji, pak mohu doporučit udělat do krabičky dírku a stisk tlačítka pro nastavování provádět pomocí drátku nebo třeba propisky (tak jak jsou řešena například reset tlačítka různých switchů a routerů).

Device functions

Current version support following functions:
  • Control of one stepper motor with linear movement
  • Analogue control of three positions
  • Three buttons for three positions
  • Every position can be individually configured

Hardware

From hardware point of view the device is very simple. Only one processor, plus one stepper motor driver and requested buttons. To have device more advanced, I was added two more LEDs and header for MCU programming (ICSP). Take a look, that I was used different length of buttons for select position (1,2,3), and shorter for programming (Prog). It is because I expect, that configuration will be done with opened box where device is located, but normal operation will be done with full covered box. Once you expect you will change settings of device more than one time, I can recommend you to drill small hole to box and for press button use small wire or for example pen (as it is usual for reset buttons on various switches and routers).

Software

Na straně software se také nejedná o komplikovanou konstrukci. Za pozoruhodnou se dá považovat vyhledávání koncového spínače a práce s ofsetem krokového motoru, pak také fakt, že posuvna počítá polohu jako 16 bitové číslo (maximálně 65535 kroků) na osmibitovém procesoru, takže se všude provádí přepočet.
Vytváření polovičních kroků přímo na procesoru asi nebude pro nikoho kdo používá krokové motory žádným překvapením.

Z čistě praktických důvodů jsem vytvořil program ve dvou variantách. Liší se pouze tím, na kterou stranu otáčí motorem. Směr otáčení se dá sice změnit i prohozením vodičů, ale já mám raději správně nacvakané vodiče a použití konektorů se zámkem, proto se mi úprava software zdála jako jednodušší.

První spuštění a nastavení

Pokud mohu doporučit, tak je vhodné nejprve provést hrubé nastavení podle použitého pohonu, bez vlastní přesuvny (budu používat pojem přesuvna bez ohledu na to, jestli se jedná o segmentovou točnu, přesuvnu, nebo jiné zařízení). Jedná se hlavně o to, abychom předešli nepříjemnostem v případě, že špatně odhadneme polohy a přesuvna bude mít snahu jet někam za hranice. Proto nejprve připojte pouze motor s připevněným koncovým spínačem a vyzkoušejte si první zapnutí.
Po samotném zapnutí přesuvna nic nedělá. Je to proto, aby se po nečekaném výpadku napájení nepokoušela posouvat v případě, že máme mašinu zaparkovanou částečně na přesuvně a částečně mimo. Takže k prvnímu posunu dojde až po stisku tlačítka. Přesuvna se vždy nejprve rozjede směrem ke koncovému spínači (pokud se ta vaše rozjede opačným směrem, tak použijte druhý software). Po dojetí "na spínač" se přesuvna rozjede směrem ke zvolené poloze. Jako první vyzkoušejte polohu 1, ta je ve výchozím stavu velmi blízko spínače, takže se motor nerozběhne nikam daleko. Následně vyzkoušejte polohy 2 a 3 a ověřte, že jsou všechny polohy dostupné bez poškození přesuvny.
Pokud je některé poloha mimo možnosti vaší přesuvny, je potřeba ji na hrubo nastavit do rozsahu (viz kapitola Nastavení za provozu). Pokud je některé poloha mimo možnosti vašeho motoru, pak je nutné upravit nastavení pomocí přímého zápisu do eeprom paměti procesoru. Na následujícím obrázku je screenshot z programovacího nástroje s obrazem paměti eeprom.

Software

From software point of view the construction is also not complicated. As interesting can be understand finding of end-switch and work with offset of stepper motor. Interesting can be also fact, that software calculate position as 16 bit number (maximum 65535 steps) on 8 bit processor, then re-calculation is used everywhere.
I suppose, that use of half steps in software is nothing interesting for anybody, who using stepper motors.

From realy practical reasons I was created program in two variants. The difference is only in direction used for stepper motor. I know, that it is possible to change direction by exchange of wires, but I prefer to keep wires fixed in connectors with lock, then I was changed the software.

First run and configuration

Once I can recommend, it is better to pass rough setting respecting used movement without traverser itself. (I'm using name "traverser" as general name, it is same for segment turntable, transfer table or other device.) It is recommended especially to avoid unexpected surprise in case, that you will incorrectly chose positions and traverser will try to go over the edge. Then first of all connect only motor with mounted end-switch and try first warm up.
After connecting electricity the traverser do nothing. It is to avoid problems, after unexpected black out with locomotive parked one half on traverser and one half outside. First move will start after pressed of button. First move of traverser is always to find end-switch (once your one start move opposite direction, then use second one software). After "reach the switch" traverser start move to selected position. As a first try position 1. This position is close to end-switch, then motor will not go far away. Next try positions 2 and 3 and check, that all of them are available without damage of traverser.
Once any of position is out of your traverser, it must be roughly configured into traverser edges (see Configuration during operation). Once any of position is out of range of your motor (screw), then you must correct configuration using direct write into processor eeprom. On following figure is screenshot from programming tools with display of eeprom memory.
V červeném rámečku je dvojice hodnot, které udávají polohu prvního výjezdu. Hodnoty se ukládají jako little endian což trochu mate při čtení. V našem případě tedy hodnota 00:0A = 000Ah = 10. Tedy první poloha je deset kroků od spínače. Druhá poloha je uvedena v zeleném rámečku (00:C8 = 200) a třetí poloha je uvedena modrém rámečku (01:90 = 400). Hodnoty je možné si upravit tak, aby se posun vešel do délky motoru.

Nastavení za provozu

Pokud potřebujeme upravit některou z poloh, lze to celkem jednoduše udělat kdykoli za provozu. Nejprve zvolíme polohu, kterou bychom chtěli nastavit. Například první polohu tlačítkem "1". Počkáme, až přesuvna dojede do této polohy. Pak stiskneme tlačítko "Prog". Tím se rozsvítí žlutá LED a přesuvna je v nastavovacím režimu. U tlačítek platí jejich alternativní funkce, tedy tlačítko "1" má funkci "+", tlačítko "2" má funkci "-", tlačítko "3" má funkci "OK" a tlačítko "Prog" má funkci "Esc". Pomocí tlačítek "+" a "-" posouváme přsuvnu až do potřebné polohy a stiskem tlačítka "OK" tuto polohu zapíšeme. Pokud se rozhodneme, že polohu nechceme zapsat, jdnoduše stiskneme tlačítko "Esc" a přesuvna se vrátí na původní místo. Pokud potřebujete posunout o větší vzdálenosti, jednoduše stiskněte a držte tlačítko "+" nebo "-", přesuvna se plynule rozjede zvoleným směrem.
Jednotlivé polohy nemusí dodržovat žádné pořadí, pokud vám nevyhovuje fakt, že poloha 1 je nejblíže ke koncovému vypínači, klidně jí přesuňte až na samý konec, To samé s polohou 3, klidně jí můžete nastavit těsně vedle spínače. Také poloha 2 nemusí být mezi polohami 1 a 3, ale nejsem si úplně jistý, jestli je to pro někoho praktické.

Závěr

Jednoduché zařízení které dobře oživuje model segmentové točny a může sloužit i pro celou řadu dalších modelů. Konstrukce a program jsou tak jednoduché, že je možné je považovat za školní příklady. Proto bych byl rád, aby toto zařízení sloužilo ostatním pro pochopení problému a ne jako zdroj komerce.
In red rectangle are two variables that define position of 1st exit. Values are stored as little endian. That fact can little misunderstand during reading. In our case the value is 00:0A = 0000Ah = 10d. It mean, that first output is 10 steps far from switch. The 2nd exit is defined in green rectangle (00:C8 = 200). And the 3rd exit is defined in blue rectangle (01:90 = 400). Values must be corrected to fit motor length.

Configuration during operation

Once we need to correct any of exit, we can do it at any time during operation. At the begin chse position you want to change. For example first exit by pressing button "1". Then we wait until traverser reach this position. Then press button "Prog". It light up yellow LED and switch traverser to configuration mode. It mean, that buttons using their alternative functions. Then button "1" have function "+", button "2" have function "-", button "3" using function "OK" and button "Prog" using function "Esc". By using buttons "+" and "-" you can move traverser to reach requested position and then press button "OK" for save this position. Once you decide you do not want to save position, you can simple press "Esc" button and traverser will go back to original position. Once you need to move to bigger distance, simply press and hold button "+" or button "-"; traverser will start moving smoothly in chosen direction.
Used exits don't have to use any order. Once you do not like fact, that position 1 is near to end-switch, it can be simple moved to oposite end. The same for position 3; it can be moved next to the switch. The same for exit 2; it didn't have to be in between 1 to 3, but I'm not sure, it is helpful for anybody.

Conclusion

We done simple device, that boost up segment turntable model and can be helpful together with many other models. Construction and software are that simple, that they can be understand as school class lesson. Than I would be happy, once device will be used to anybody for understanding of problem and not as commercial resource.


Donwnload: Programy PCB