Pokiaľ máte záujem o iné ako analógové ovládanie svojho koľajiska, ale digitálne ovládanie všetkých vlakov a príslušenstva Vám pripadá podobne ako mne cenovo dosť nedostupné, v tomto článku Vám popíšem celkom zaujímavú alternatívu. Ide o takzvané pulzné ovládanie. Je to niečo medzi analógom a digitálom. Ide o to, že digitálny výstup z arduina je logická 0 alebo logická 1. Pokiaľ túto logickú 0 a 1 prepínate dostatočne rýchlo, dokážete vytvoriť plynulú reguláciu rýchlosti vlaku z digitálneho výstupu. Volá sa to PWM.
Nie je to nič zložité, niečo také vyhotoviť. Potrebujete k tomu arduino (jednoprocesorový programovateľný mikrokontroler), mostík L293D a samozrejme málo zručnosti. Zapojenie môžete vidieť na priloženej schéme.
Zo schémy je zrejmá možnosť zapojenia až 2 nezávislých úsekov alebo tratí (napríklad hlavná trať a lokálka) na jeden integrovaný obvod. Vnútorné zapojenie mostíka je približne také, že obsahuje set rýchlo spínaných tranzistorov.
Mostík L293D je napájaný 5V jednosmerných (nožička číslo 16). Na pin číslo 8 mostíka môžete priviesť jednosmerné napätie potrebné pre chod motorov lokomotívy, teda napríklad +12V jednosmerných. Popíšem zapojenie 1 úseku, resp. trate. Nožička číslo 1 na mostíku je priamo pripojená na PWM výstup arduina. Rýchlosť vlaku teda určujeme digitálnym výstupom s funkciou analógového zápisu hodnoty PWM (0-255). Nožičky mostíka číslo 2 a 7 sú dôležité pre určenie smeru jazdy vlaku. Nikdy nesmú byť obe na hodnote 0 alebo hodnote 1. Vždy musia byť proti sebe opačne. Teda napríklad na pin č.2 nastavíme logickú 1 a pin č.7 logickú 0. Vlak teda pôjde jedným smerom. Keď tieto hodnoty znegujeme, vlak pôjde opačne. Celkom jednoduché a logické. Výstup z mostíka, teda nožičky číslo 3 a 6 pripojíme priamo ku koľajniciam, každú k jednej. Celý mostík uzemníme (tzv. GND) nožičkami čísla 4,5,12 a 13.
Pokiaľ máme všetko takto pripojené, vlak môžeme ovládať priamo cez arduino, pričom vstup – pokyny môžeme vymyslieť podľa našej fantázie. Napríklad potenciometer, diaľkové ovládanie, počítač a podobne.
Program pre arduino v jazyku C++ nájdete tu:
int switchPin = 7;
int motor1Pin = 3;
int motor2Pin = 4;
int speedPin = 9;
int potPin = A0;
int speed = 0;
int val = 0;
int val2 = 0;
void setup() {
Serial.begin (9600);
pinMode(switchPin, INPUT);
pinMode(motor1Pin, OUTPUT);
pinMode(motor2Pin, OUTPUT);
pinMode(speedPin, OUTPUT);
digitalWrite(speedPin, HIGH);
}
void loop() {
if (digitalRead(switchPin) == HIGH) {
digitalWrite(motor1Pin, LOW);
digitalWrite(motor2Pin, HIGH);
speed = analogRead(potPin);
val = map(speed, 0, 1023, 65, 254);
if (val < val2) val2=val2-1;
if (val > val2) val2=val2+1;
analogWrite (speedPin, val2);
//Serial.println(speed);
Serial.println(val2);
delay (55);
}
if (digitalRead(switchPin) == LOW) {
digitalWrite(motor1Pin, HIGH);
digitalWrite(motor2Pin, LOW);
speed = analogRead(potPin);
val = map(speed, 0, 1023, 65, 254);
if (val < val2) val2=val2-1;
if (val > val2) val2=val2+1;
analogWrite (speedPin, val2);
//Serial.println(speed);
Serial.println(val2);
delay (55);
}
}
Program je písaný v prostredí Arduino IDE. Keď si program prezriete, tak je zrejmé, že na digitálny pin arduina číslo 7 je pripojený spínač, ktorým meníme smer vlaku. Analógový vstup číslo A0 má pripojený potenciometer. Na rýchlosť vlaku je použitá funkcia map, nakoľko vstup z potenciometra je v rozpätí 0-1023 ale PWM výstup je 0-255. Táto funkcia namapuje presne a spoľahlivo tieto rozpätia dokopy, teda podľa polohy potenciometra bude výstup na PWM a teda aj rýchlosť vlaku súvisle regulovateľná v dostatočne citlivých krokoch. Na plynulé rozbiehanie ako aj spomaľovanie súpravy je tam použitá ešte jedna premenná navyše – val2. Tá má za úlohu to, že keď rýchlo prestavíte potenciometer, tak val2 – teda rýchlosť vlaku sa pripočítava postupne, pokým nedosiahne rýchlosť, ktorú ste nastavili a naopak zase pri zastavovaní.
Myslím, že toto zapojenie nie je až tak zložité, keď si to prezriete a otestujete, zistíte, že by ste na to prišli aj sami. Pokiaľ je niečo nejasné, kľudne mi napíšte do komentára.
Marek Duda