Arduino - analogové ovládání pro servo přestavníky

Schémata, zapojení, návody, dotazy a postupy k využití v železničním modelářství.

Moderátoři: Michal Dalecký, Jarda H., Rudolf, 123.marek

Arduino - analogové ovládání pro servo přestavníky

Příspěvekod peTTr » úte 18 zář, 2012 8:52 am

Ahoj kolegové,

v současné době hledám ideální plán pro stavbu svého kolejiště. Je to návrat po téměř 1/4století a za tu dobu se toho opravdu hodně změnilo. Ve svých úvahách jsem dospěl k tomu, že bych výhybky rád ovládal pomocí modelářských serv. Samotná realizace přestavníku je k nalezení na mnoha místech různě po internetu, takže toto řešit nebudu a použiji některý z již vymyšlených způsobů. Ale v elektronice řízení jsem se pustil "svojí cestou". K počítačům mám totiž velice blízko, a proto jsem si koupil jedno Arduino Duemilanove, které jsem začal testovat jako analogový ovladač výhybek.

Pro neznalé stručně popíšu o co se jedná :
Arduino je hodně zjednodušeně řečeno "jednočipový mikropočítač" ( je v něm použit čip ATMega328 ), který má 14 digitálních vstupů/výstupů (každý z nich lze programově nastavit buďto jako vstup nebo jako výstup) a šest analogových vstupů ( tyto vstupy umí měřit vstupní napětí v rozsahu 0-5V ).
Moje řešení předpokládá ovládání celkem 6 serv, kdy se na analogové vstupy připojí 6 spínacích tlačítek/přepínačů a na digitální výstupy se pak připojí 6 LEDek pro signalizaci stavu výhybky a na dalších 6 digitálních výstupů se připojí 6 serv.

Stav mého projektu :
Software je zatím velice jednoduchý a funguje následovně:
- čeká se na stisk tlačítka
- po stisku se provede postupné otočení serva o 90°, kontrolní LED během této doby bliká
- po otočení serva kontrolní LED svítí = výhybka je nastavena na odbočení
- po dalším stisku tlačítka postupné otočení serva zpět na 0°, kontrolní LED během této doby opět bliká
- po dokončení LED zhasne = výhybka je nastavena na směr rovně
V současnosti mám bohužel k dispozici pouze jedno servo se kterým jsem vytvořil testovací zapojení a to funguje :-)

Co tedy bude dál :
- software není problém upravit na zapojení přepínačů = trvalé sepnutí/rozepnutí spínacího vstupu
- taktéž není problém nastavit jinou výchylku serva
- potřebuji otestovat plné zapojení se 6 servy (teoreticky by neměl nastat problém, ale praxe může být jiná :( )

A teď dotazy do publika:
- je tohle pro někoho z vás zajímavé?
- je takové řešení smysluplné, nebo byste navrhovali nějaké změny?
- byl by tu někdo ochoten se se mnou sejít a půjčit mi serva pro kompletní otestování?

peTTr
peTTr (TT, analog, III/IV)
Plánuji a připravuji RONOV v TT
peTTr
 
Příspěvky: 20
Registrován: stř 29 srp, 2012 1:15 pm
Bydliště: Praha 1

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod navratil02 » úte 18 zář, 2012 10:44 am

nejsem si jist, zda to není už trochu pozdě. Těchto ovladačů je na trhu několik a pokud si pamatuji minimálně dvě konstrukce jsou dostupné i na tomto fóru. Jednak od Fuldy (tuším že odkaz je www.honzikovyvlacky.cz) a potom od Seidla (www.alchladice.cz). Každý z nich umí něco trochu jiného a možná ti nějaká jejich konstrukce bude vyhovovat. Asi bych se vážně zabýval, zda vývoj nového zařízení má ještě význam. Pokud bys to dělal pro svoji zábavu a nemáš jinak co dělat, tak proč ne. Jinak nevím....
navratil02
 
Příspěvky: 39
Registrován: sob 17 pro, 2011 7:57 pm

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod peTTr » stř 19 zář, 2012 10:07 am

navratil02 :
souhlasím, že hotových řešení už existuje opravdu hodně. Já jsem si v prvé řadě hlavně chtěl vyzkoušet Arduino (nejprve to bylo bez spojitosti s vláčky) a když už jsem se do něho trochu zavrtal, tak jsem zjistil, že je k němu moc hezká SW knihovna pro ovládání modelářských serv a od tohoto zjištění byl už jenom krůček k přestavníkům... :D
Moje realita je prostě taková, že dlouhé roky jsem si hrál s počítači a s vláčky začínám od nuly - stejně jako v roce 1977 ("U" kolejivo k ničemu, výhybky mají spálené přestavníky, mašinky skoro nepojízdné, trafo kaput).
peTTr (TT, analog, III/IV)
Plánuji a připravuji RONOV v TT
peTTr
 
Příspěvky: 20
Registrován: stř 29 srp, 2012 1:15 pm
Bydliště: Praha 1

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod Martin Ostruszka » pát 21 zář, 2012 12:38 pm

Martin Ostruszka
 
Příspěvky: 30
Registrován: úte 19 črc, 2011 2:15 pm

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod KE-pavuk » úte 25 zář, 2012 7:45 pm

Jeden odkaz pridam aj ja. Dokaze ovladat 5 serv s moznostou nastavenia vychylky a rychlosti otacania kazdeho serwa+ kontrola polohy cez SW.
http://www.ttworld.sk/product/analogovy ... estavniky/
KE-pavuk
 
Příspěvky: 97
Registrován: sob 20 srp, 2011 4:51 am
Bydliště: Košice

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod fulda » pon 29 dub, 2013 7:30 am

Ještě v tomhle někdo pokračuje? Dneska jsem narazil na TUHLE polskou hračku. TADY je částečnej překlad do češtiny. To se dá použít jako slušnej základ pro analogisty a taky jako studijní materiál.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 4851
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod rawen » pon 29 dub, 2013 3:47 pm

Původně jsem u arduinu uvažoval, ale teď mám analogové řešení založené na Pickách se zpětnými LED vazbami pro deset servopřestavníků ovládaných páčkovými přepínači v podstatě zadarmo.
Zrovna dneska přišla serva z ebay, takže po smontování publikuji ve svém vlákně.

Umí to nastavit krajní polohy pro každé servo, rychlost přestavení je neměnná, nicméně vyhovující. Neumí to (zatím) stavět vlakové cesty anebo kontrolovat jakékoliv vazby. Tyhle funkce ale nepožaduji, ale je možné je jednoduše naprogramovat. Anebo složitěji použít I2C vazby na jakékoliv periferie...

Radek
rawen
 
Příspěvky: 1693
Registrován: stř 08 dub, 2009 10:42 am
Bydliště: Prostějov

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod tragedcz » ned 07 pro, 2014 11:12 pm

Vzhledem k tomu že je arduino uno na ebay za 100kč a servo za 50 se jedná zatím o nejlevnější řešení:)
tragedcz
 
Příspěvky: 36
Registrován: čtv 15 bře, 2007 12:54 pm
Bydliště: Přerov

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod mizl » ned 07 pro, 2014 11:28 pm

Musíš být velký nadšenec, aby se ti to vyplatilo. A nebo velmi zdatný programátor. Znám spousty lidí, kteří se zabývali programováním serv přes tento mikrokontrolér a vzdali to. Nepovedlo se jim vyřešit zákmity serva při startu. Tito lidé sami uznali, že za ten strávený čas při laborování za to nestojí. Tím tě samozřejmě nechci nijak podceňovat, nebo odrazovat při tvorbě vlastního programu.

Michal
TT, III. - IV., DCC -> LENZ, Mikrolayout, Rajče, Staré kolejiště
Uživatelský avatar
mizl
 
Příspěvky: 1726
Registrován: ned 19 čer, 2011 7:17 pm
Bydliště: Chomutice

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod hp_baxxter » sob 07 úno, 2015 8:24 pm

Skuste to http://thenscaler.com/wp-content/upload ... h-leds.jpg
skusam to aj ja funguje to. :) :)
hp_baxxter
 
Příspěvky: 1
Registrován: úte 15 lis, 2011 11:41 am

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod rawen » sob 07 úno, 2015 8:44 pm

hp_baxxter píše:Skuste to http://thenscaler.com/wp-content/upload ... h-leds.jpg
skusam to aj ja funguje to. :) :)

Schéma je to pěkné a obecně známé. Co software k tomu, který umí nastavit rychlost přesunu, koncové polohy serva, v nečinnosti odpojit napájení (dobře, toto je HW)...?
Pokud jsi nám něco neutajil, je toho zatím málo.

Radek
rawen
 
Příspěvky: 1693
Registrován: stř 08 dub, 2009 10:42 am
Bydliště: Prostějov

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod look23 » sob 07 úno, 2015 10:06 pm

http://thenscaler.com/wp-content/uploads/2014/12/Servo-Control-by-Button-with-leds.jpg


Navíc pozor na to kolik má servo spotřebu proudu, Arduino bez poškození má maximální výstupní proudovou zatížitelnost 40mA na pin.
V praxi jsem výstupy arduina připojoval raději přes odpor do tranzistorového pole ULN2803A tzv. pro jistotu.
Lepší zničit součástku za 14 Kč než desku řádově dražší.

PS: Arduino má přímo knihovnu věnovanou servům http://arduino.cc/en/reference/servo
TT/H0, ČSD epocha IV, V - z21+MM
look23
 
Příspěvky: 1177
Registrován: ned 17 lis, 2013 2:20 pm

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod JenikPluto » pon 29 úno, 2016 3:39 pm

Téma je sice už nějakou dobu ve stavu klinické smrti, nicméně se třeba následující informace někomu hodí.

Zbastlil jsem na základě čínského klonu mega Arduina digitální non-DCC ovladač pro své kolejiště s 24 servy (který lze ovšem v případě potřeby úpravou kódu a předřazením DCC interface přetvořit na DCC ovladač, což nemám výhledově v plánu). Zatím ovládá pouze serva, nicméně zbylo ještě pár pinů pro hraní s indikací polohy serv (nepřímou) nebo něčím podobným.

Serva mají nezávislé napájení tímhle zdrojem. Všechna serva jsou doplněna RC filtrem od Viktora Pohořelého. Zákmit při zapnutí napájení řeší program přenastavením všech serv při startu do poslední známé polohy (uložené v EEPROM). Serva mají signální vodič primárně neaktivní (při ruční manipulaci nekladou odpor), aktivuje se pouze po stisknutí ovládacího tlačítka. Sekvence spouštění celé sestavy je serva-arduino-napájení kolejí. Kód je rámcově následující (snad jsem na nic nezapomněl, vykopíroval jsem jen část z kódu).

První zápis hodnot do EEPROM probíhá buďto podmíněnou částí programu nebo programem, který jen zapíše hodnoty do paměti a pak je nahrazen samotným programem pro ovládání serv.

JP

Kód: Vybrat vše
/* Ovladani serv
*/
#include <Servo.h>
#include <EEPROM.h>

// Piny pro serva

const int Servo1Pin = 53;   // Cisla pinu pouzitych pro pripojeni jednotlivych serv
const int Servo2Pin = 52;

//Piny pro tlacitka

const int Button1Pin = 54;   //Analogovy input jako digitalni vstup - piny od 54 vys

//Promenne pro tlacitka

int Button1State = 0;

//Promenne pro serva

int Servo1Position = EEPROM.read(1);   //Poloha serva 1 je ulozena na adrese 1
int Servo2Position = EEPROM.read(2);

//Inicializace serv

Servo Servo1;
Servo Servo2;

void setup()
{
// Aktivace pinu pro tlacitka

pinMode(Button1Pin, INPUT_PULLUP);

//Pripojeni a nastaveni serv po restartu

Servo1.attach(Servo1Pin);          //Aktivace serva
Servo1.write(Servo1Position);      //Nastaveni polohy serva (ve stupnich)
delay(200);                        //Rychlost prestaveni serva vyjadrena v dobe potrebne ke zmene polohy v ms
Servo1.detach();                   //Deaktivace serva

Servo2.attach(Servo2Pin);
Servo2.write(Servo2Position);
delay(200);
Servo2.detach();

}

void loop() {                                //Hlavni smycka

//Vyhybky 1 + 2

Button1State = digitalRead(Button1Pin);

    if (Button1State == HIGH) {             //Pri stisku tlacitka 1...
     
      Servo1.attach(Servo1Pin);             //...pripoj servo 1...
      Servo2.attach(Servo2Pin);             //...a servo 2...

      switch (Servo1Position) {             //...v zavislosti na poloze prvniho serva zmen polohu obou serv...
        case 25:
        Servo1.write(45);
        delay(300);                         //...pozadovanou rychlosti (cim vyssi hodnota, tim nizsi rychlost prestaveni)
        Servo2.write(45);
        delay(300);
        Servo1Position = 45;
        EEPROM.update (1, 45);              //...zapis nove polohy do EEPROM...
        EEPROM.update (2, 45);
        break;

        case 45:
        Servo1.write(25);
        delay(300);
        Servo2.write(20);
        delay(300);
        Servo1Position = 25;
        EEPROM.update (1, 25);
        EEPROM.update (2, 20);
        break;
      }
     
      Servo1.detach();                          //... a deaktivuj serva
      Servo2.detach();
             
    }
}   
JenikPluto
 
Příspěvky: 439
Registrován: pát 08 lis, 2013 10:19 am
Bydliště: Kladno

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod zdeno » pon 29 úno, 2016 3:55 pm

Tezko nekdo muze tvrdit, ze programovat neumim ;-)
Po nekolika rocich a pokusech na servech jsem dosel k zazoru, ze je nejlepsi serva vykuchat a pouzit jen motorek s prevody a potenciometr (potak).
Pokud ma Arduino vstupy A/D, byla by obrovska skoda je nevyuzit a pomoci toho nastavovat serva.
Serva v klasickem provedeni uz vubec nepouzivam a tim jsem odstranil vsechny nectnosti s tim vzpominane.
http://www.railnet.sk/view.php?cisloclanku=2015010001
Uživatelský avatar
zdeno
 
Příspěvky: 3003
Registrován: pon 11 črc, 2011 8:54 am

Re: Arduino - analogové ovládání pro servo přestavníky

Příspěvekod Martin Libansky » úte 13 zář, 2016 1:46 pm

na tohle chci pouzit nasledujici vec
http://www.hobbytronics.co.uk/servo-controller-12ch-ht
nebo
https://www.adafruit.com/product/815

s timhle se da uz ovladat i docela velke kolejiste
Martin Libansky
 
Příspěvky: 3
Registrován: ned 13 úno, 2011 10:24 pm

Další

Zpět na Elektrika a elektronika

Kdo je online

Uživatelé procházející toto fórum: Radek Strnad a 8 návštevníků