Arduinorailwaycontrol

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

Re: Arduinorailwaycontrol

Příspěvekod belgarat » stř 11 zář, 2019 7:54 pm

:) nic ve zlem ... my v praci strasne tajnustkarime a obcas mi z toho hrabe ...
TT ep. IVa-b; analog + NanoX, DR5000. Pseudoprogramator, pindac nesmyslu
http://modelwiki.klfree.net
belgarat
 
Příspěvky: 2367
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Arduinorailwaycontrol

Příspěvekod Pater » stř 11 zář, 2019 10:13 pm

sidlo píše:Ta černá součástka je tranzistorové pole a převádí logický signál +5V (zelené vodiče) z Arduina na výkonový signál +16 V (fialové vodiče). Výhybky jsou přestavovány právě tím "silovým" +16V napětím.

Tranzistorové pole spíná zem, nikoli +16V. Proto potřebují mít přestavníky přivedeno napájecí napětí.
N, DCC, NanoX, Rocrail, Paterweb
Uživatelský avatar
Pater
 
Příspěvky: 471
Registrován: stř 20 črc, 2011 4:52 pm
Bydliště: Karviná

Re: Arduinorailwaycontrol

Příspěvekod Ondřej » čtv 12 zář, 2019 4:43 am

Myslím, že je problém v tom, že pro ovládání serv i PWM jsou použité jednotky čítačů-časovačů. Jeden se používá na generování hodin (millis, delay..). Pak zbývají už jen tři a to je na tři serva a PWM málo. Problém by vyřešila asi přídavná deska s HW generováním pulsů pro serva.
Uživatelský avatar
Ondřej
 
Příspěvky: 243
Registrován: čtv 22 úno, 2007 12:48 pm
Bydliště: Roztoky - PZ

Re: Arduinorailwaycontrol

Příspěvekod hopeter » čtv 12 zář, 2019 5:42 am

Už se v tom docela ztrácím. Co je myšleno jednotkou časovače ? Jako přídavnou desku jsem uvažoval výše uvedený driver pro 16 serv ale objednávat ho chci až toho bude více , protože nechci všechny investice do pokusů věnovat poště. :wink:
TT a G , epocha III / IV , jen si tak hraju ...,V jednoduchosti je síla... HOnza PETERa
Uživatelský avatar
hopeter
 
Příspěvky: 3038
Registrován: pát 20 pro, 2013 3:03 pm
Bydliště: Červený Kostelec

Re: Arduinorailwaycontrol

Příspěvekod belgarat » čtv 12 zář, 2019 6:45 am

Knihovna Servo pouziva Timer1 z arduina. Taktez ten sketch pouziva Timer1 a navic mu natvrdo nastavuje delicku hodin
Kód: Vybrat vše
// Set PWM frequency for D9 & D10
// Timer 1 divisor to 256 for PWM frequency of 122.55 Hz
  TCCR1B = TCCR1B & B11111000 | B00000100;.

Neco podobneho obsahuje standardni knihovna Servo; takze se potlucou. Servo vyhraje, protoze se to dela uvnitr Servo::attach(). Resenim je pouzit pro rizeni PWM jine timery nez jake pouziva servoknihovna; Arduino ma celkem 3, pro ruzne piny; viz napriklad https://www.robotshop.com/community/for ... upts/13072

SoftwareServo je rozumny "test" jestli je to zpusobeno timto (na 99% ano). Pokud nebude pohyb serva trhany, nechal bych to jako trvale reseni. Pokud trhany bude, jsou dalsi moznosti. I2C rozhrani (pro ten led driver cos posilal) nepouziva zadny timer, ale musis jej posadit na piny oznacene SDA, SCL. Softwarova emulace je mozna, ale bude mit podbne problemy jako SoftwareServo. Nestahuj gate (nekupuj hardware) dokud je to resitelny softwarove :)
TT ep. IVa-b; analog + NanoX, DR5000. Pseudoprogramator, pindac nesmyslu
http://modelwiki.klfree.net
belgarat
 
Příspěvky: 2367
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Arduinorailwaycontrol

Příspěvekod JenikPluto » čtv 12 zář, 2019 9:58 am

Podobny problem jsem resil ve smyslu servo + Loconet. Neco malo tady. Videl bych zmineny problem (jak uz koneckoncu pise belgarat) presne v tomhle. V mem pripade softwarovy timer (resp. software servo) nepomohl, nicmene uprava zminena v odkazu ano (ovsem funguje to na A-Mega s vice casovaci). ServoLibrary pouziva 16bitovy casovac (Timer 1), rekl bych ze s 8bitovym (Timer 2) se nespokoji. Pro PWM ovladani by ale 8bitovy casovac stacit mohl, mozna by stacilo prohodit zavislost PWM z Timer 1 na Timer 2.

JP

Edit: Tak po lehkem nahlednuti do kodu a taky sem mi pripada, ze by mohlo pomoci nahradit v setupu radek:

Kód: Vybrat vše
 TCCR1B = TCCR1B & B11111000 | B00000100;

za
Kód: Vybrat vše
TCCR2B = TCCR2B & B11111000 | B00000110;

a zaroven vstupy/vystupy na pinech 9 a 10 prepojit na 3 a 11.

JP
JenikPluto
 
Příspěvky: 439
Registrován: pát 08 lis, 2013 10:19 am
Bydliště: Kladno

Re: Arduinorailwaycontrol

Příspěvekod hopeter » čtv 12 zář, 2019 11:11 am

Já pracuji s programem "second sketsch" kde L298 zabírá piny 9,10,11 a pin 3 obsazuje světlo návěstidla. Chápu změnu časovače timer1 (16 bit) na timer2 ( 8 bit ) ale nevím kam přepojit piny L298 aby to bralo timer2. No něco zkusím jestli to pobere ten 8bit časovač. :wink:
Když vidím ty problémy s Uno a Nano tak hold asi přikoupím desku Mega ( ona se na něco hodí ) a zkusím i ten driver na šestnáct serv...
TT a G , epocha III / IV , jen si tak hraju ...,V jednoduchosti je síla... HOnza PETERa
Uživatelský avatar
hopeter
 
Příspěvky: 3038
Registrován: pát 20 pro, 2013 3:03 pm
Bydliště: Červený Kostelec

Re: Arduinorailwaycontrol

Příspěvekod JenikPluto » čtv 12 zář, 2019 11:28 am

Pokud by melo byt pripojene servo (maximalne dve), tak ho (je) bude kontrolovat pin 9 a/nebo 10 (tyhle piny kontroluje Timer1). Cili pro pripojeni L298, jednoho serva a navestidel (bez rele) by to mohlo vypadat treba takhle:

Kód: Vybrat vše
// SIGNALS
#define SIGNAL_B_RED 2
#define SIGNAL_B_GREEN 7
#define SIGNAL_A_RED 4
#define SIGNAL_A_GREEN 5

// L298
#define L298_IN1 8
#define L298_IN2 11
#define L298_ENA 3

//SERVO
#define SERVO_PIN 9


A-Mega ma tu vyhodu, ze tech 16bitovych timeru ma vic (4) a kazdy ma vystup na 12 pinu, cili teoreticky se s nim da ovladat az 48 serv (Servo library si s tim poradi). Pokud bys na tom ladil tyhle sketche, tak musis nektere soubory v Servolibrary upravit tak, aby prislusny timer ignorovala (Timer1, 3, 4, 5). Pripadne pro L298 pouzit nektery z 8bitovych, tipnul bych si, ze by to melo jit.

JP
JenikPluto
 
Příspěvky: 439
Registrován: pát 08 lis, 2013 10:19 am
Bydliště: Kladno

Re: Arduinorailwaycontrol

Příspěvekod hopeter » čtv 12 zář, 2019 11:53 am

Tak jak jsem si rozluštil v odkazu by to mělo být takhle: Pin 6 a 5 pro timer0 (8bit) nepoužiju , pin 9 a 10 pro timer1 (16bit) použiju na dvě serva, pin 3,11 pro timer2 (8bit) zkusím použít na L298 ( a třetí bude pin 8 ).
Večer zkusím a když nepřijedou hasiči dám vědět výsledek. :)
TT a G , epocha III / IV , jen si tak hraju ...,V jednoduchosti je síla... HOnza PETERa
Uživatelský avatar
hopeter
 
Příspěvky: 3038
Registrován: pát 20 pro, 2013 3:03 pm
Bydliště: Červený Kostelec

Re: Arduinorailwaycontrol

Příspěvekod JenikPluto » čtv 12 zář, 2019 12:11 pm

To souhlasi, drzim palce.

JP
JenikPluto
 
Příspěvky: 439
Registrován: pát 08 lis, 2013 10:19 am
Bydliště: Kladno

Re: Arduinorailwaycontrol

Příspěvekod hopeter » čtv 12 zář, 2019 1:34 pm

Jak jsem napsal tak jsem udělal a ejhle funguje to. :)
L298 maká na timer2 přes piny 3 a 11 ( plus pin 8 ) a serva na timer1 přes piny 9 a 10.
Jenom to kazí škubání serv. Jsou třídy TG9 a zatím bez odrušení. Ještě zkusím jiná serva nebo odrušovače.
Ještě mě zbývá zprovoznit přepínač příslušenství v aplikaci ale zatím jsem nenašel proměnnou, která ho tlumočí arduinu :?
Každopádně se ale vydám cestou větší nebo přídavné desky abych mohl přidat více serv.
TT a G , epocha III / IV , jen si tak hraju ...,V jednoduchosti je síla... HOnza PETERa
Uživatelský avatar
hopeter
 
Příspěvky: 3038
Registrován: pát 20 pro, 2013 3:03 pm
Bydliště: Červený Kostelec

Re: Arduinorailwaycontrol

Příspěvekod belgarat » čtv 12 zář, 2019 1:48 pm

Mas-li volne nozicky a staci Ti v jeden okamzik jedine servo, muzes proste jenom pridat 1:8 demultiplexer -- https://www.gme.cz/cmos-4051-dip16-texas-instruments a pres ten nasmerujes servo-PWM vystup k zadoucimu cili.
TT ep. IVa-b; analog + NanoX, DR5000. Pseudoprogramator, pindac nesmyslu
http://modelwiki.klfree.net
belgarat
 
Příspěvky: 2367
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: Arduinorailwaycontrol

Příspěvekod hopeter » pát 13 zář, 2019 5:48 pm

Tak už mám zprovozněné i uživatelské tlačítko. Tohle je to zaklínadlo:

if (inputString.charAt(0) =='f') {
if (inputString.charAt(1) =='a') {
if (inputString.charAt(2) =='1') {
digitalWrite(SIGNAL_B_RED, HIGH); // tlačítko rozsvítí diodu
} } }

if (inputString.charAt(2) =='0') {
digitalWrite(SIGNAL_B_RED, LOW); // tlačítko zhasne diodu
}


Je to stejné jako přepínače výhybek ale místo "j" se doplní "f"

Tady je soupis proměnných https://arduinorailwaycontrol.com/docs/OrangeBook23.pdf

Teď mě ještě čeká dořešit nějak kulturně plošný spoj a to škubání serv. :wink:
TT a G , epocha III / IV , jen si tak hraju ...,V jednoduchosti je síla... HOnza PETERa
Uživatelský avatar
hopeter
 
Příspěvky: 3038
Registrován: pát 20 pro, 2013 3:03 pm
Bydliště: Červený Kostelec

Re: Arduinorailwaycontrol

Příspěvekod workous » pát 13 zář, 2019 6:17 pm

Ahoj Honzo, tak vidim, že už jsi v tom jako doma...tak super držím palce do dalšího vývoje.
Roco Geoline/DCC DR5000 + RocRail/JMRI momentálně v pauze..
Uživatelský avatar
workous
 
Příspěvky: 2139
Registrován: sob 15 lis, 2008 12:05 pm

Re: Arduinorailwaycontrol

Příspěvekod hopeter » pát 13 zář, 2019 6:58 pm

Bez pomoci kolegů z fóra bych to dokupy nedal , tak bych chtěl touto cestou poděkovat všem co mě pomohli se tím prokousat. :)

Chtěl bych to zkusit prakticky na Nudli http://diskuze.modely.biz/viewtopic.php?f=51&t=11277 .
Ještě je tam výzva s přesuvnou ale to už bude nutný Junior Pro a Arduino Mega... Zatím bude přesuvna na tlačítka a druhé arduino Uno nebo Nano.
TT a G , epocha III / IV , jen si tak hraju ...,V jednoduchosti je síla... HOnza PETERa
Uživatelský avatar
hopeter
 
Příspěvky: 3038
Registrován: pát 20 pro, 2013 3:03 pm
Bydliště: Červený Kostelec

PředchozíDalší

Zpět na Elektrika a elektronika

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 4 návštevníků