Stránka 3 z 4

Re: Arduinorailwaycontrol

PříspěvekNapsal: stř 11 zář, 2019 7:54 pm
od belgarat
:) nic ve zlem ... my v praci strasne tajnustkarime a obcas mi z toho hrabe ...

Re: Arduinorailwaycontrol

PříspěvekNapsal: stř 11 zář, 2019 10:13 pm
od Pater
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í.

Re: Arduinorailwaycontrol

PříspěvekNapsal: čtv 12 zář, 2019 4:43 am
od Ondřej
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.

Re: Arduinorailwaycontrol

PříspěvekNapsal: čtv 12 zář, 2019 5:42 am
od hopeter
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:

Re: Arduinorailwaycontrol

PříspěvekNapsal: čtv 12 zář, 2019 6:45 am
od belgarat
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 :)

Re: Arduinorailwaycontrol

PříspěvekNapsal: čtv 12 zář, 2019 9:58 am
od JenikPluto
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

Re: Arduinorailwaycontrol

PříspěvekNapsal: čtv 12 zář, 2019 11:11 am
od hopeter
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...

Re: Arduinorailwaycontrol

PříspěvekNapsal: čtv 12 zář, 2019 11:28 am
od JenikPluto
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

Re: Arduinorailwaycontrol

PříspěvekNapsal: čtv 12 zář, 2019 11:53 am
od hopeter
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. :)

Re: Arduinorailwaycontrol

PříspěvekNapsal: čtv 12 zář, 2019 12:11 pm
od JenikPluto
To souhlasi, drzim palce.

JP

Re: Arduinorailwaycontrol

PříspěvekNapsal: čtv 12 zář, 2019 1:34 pm
od hopeter
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.

Re: Arduinorailwaycontrol

PříspěvekNapsal: čtv 12 zář, 2019 1:48 pm
od belgarat
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.

Re: Arduinorailwaycontrol

PříspěvekNapsal: pát 13 zář, 2019 5:48 pm
od hopeter
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:

Re: Arduinorailwaycontrol

PříspěvekNapsal: pát 13 zář, 2019 6:17 pm
od workous
Ahoj Honzo, tak vidim, že už jsi v tom jako doma...tak super držím palce do dalšího vývoje.

Re: Arduinorailwaycontrol

PříspěvekNapsal: pát 13 zář, 2019 6:58 pm
od hopeter
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.