SVETELEKTRO

28. januára 2009   Verzia pre tlač Verzia pre tlač

Riadenie motorčeka z hardisku – vyrobte si hračku


FUBU

Tento článok sa venuje motorčeku vymontovaného z hardisku. Na vymontovaný motorček som nalepil ceruzkovú hračku s hlavou na pružinke. To som urobil preto aby sa ilustrovalo to, ako ľahko a hlavne lacno sa dá urobiť pekná hračka. Pre potenciálnych záujemcov skonštruovať takéto niečo som vytvoril aj špeciálny prekladač a riadiaci obvod. Jednoducho napíšete program pre motorček, aký pohyb má robiť. Tento program sa preloží do formátu vhodný pre mikrokontrolér PIC. Pomocou sériového rozhrania počítača sa to nahraje do EEPROM pamäte mikrokontroléra.
Ten to interpretuje a ovláda posun motorčeka. Takáto hračka potom nemusí byť pripojená k počítaču. Ale samozrejme ak chcete zmeniť pohyb hračky tak, to znova pripojíte ku počítaču a pomocou prekladača si naprogramujete nový pohyb. Celá ta sranda vyšla celkom lacno a je napájaná zo 4 tužkových NiMH článkov.

🙂 ako tu už raz bolo spomenuté v inom článku od iného autora:
„Táto konštrukcia nespasí svet.“ Ale aspoň budete mať úsmev na tvári. 🙂



Tak poďme zaradom. K tomu aby sme rozkrútili hdd motorček potrebujeme tieto ingrediencie: motorček z hardisku, budič a riadiaci mikrokontrolér. V našom prípade ide o PIC 16F628A od firmy Microchip. Nebudem bližšie opisovať tento mikrokontrolér, na to slúži katalógový list, ktorý nájdete na stránkach výrobcu www.microchip.com .

Takto táto hračka vyzerá, ešte ten motorček treba upevniť o nejakú krabičku. Do tej krabičky treba schovať elektroniku a hotovo.

Tu je pohľad na spodok hračky teda samotný motorček z hardisku.

Prepojenie s budičom motorčeka a s riadiacim obvodom. Samotný budič nemusí byť tak veľký. Strašne záleží na použitom obvode alebo zapojení budiča. A samozrejme budič je napojený na riadenie.

Detail na motorček z hardisku. Netreba rozoberať funkčné hardisky stačí si zohnať nejaký taký, ktorý sa nedá použiť v počítači. Každopádne mal by sa hodiť každý hardisk, ktorý patrí do skupiny 3,5 palcových, teda tie čo sa používajú v stolných počítačoch. Motorčeky s 2,5 palcových a menších diskov, ktoré sa používajú v notebookoch som netestoval ale predpokladám, že nebudú moc vhodné. Tento motorček v hardisku roztáča platňu s magnetickým záznamom a preto má dostatočnú silu aj na takéto hračky bez prevodovky.

No a takto vyzerá celý komplet. Upozorňujem, že to ešte nemá krabičku a rovnako tak ani návrh plošného spoja. Totiž schéma je tak jednoduchá, že to ani zmysel nemalo. Tak som to naletoval buď samonosne ako v prípade budiča – tam všetko pokope drží vďaka chladiču. Alebo do vývojovej dosky v prípade riadiacej časti.

Budič – slúži na vybudenie cievok motorčeka. Možností ako urobiť budič je veľa, od použitia bipolárnych tranzistorov cez MOSFETy alebo integrované obvody resp. lineárne zosilňovače. Ja som siahol po šuflíkových zásobách a objavil som MBA810DAS. Starý známi NF zosilovač. Keďže ho už nemá zmysel používať ako NF zosilovač a zároveň má vyhovujúce vnútorné zapojenie ako budič s obmedzením výstupného prúdu, tak dokonale vyhovoval. A ešte k tomu má fajné pásikové vývody ktorými sa dá bezproblémovo upevniť k chladiču. No a ešte výhodne je to, že tento obvod je vhodný aj na napájanie z baterií. Ale kľudne môžete navrhnúť vlastný obvod budiča, na tomto mieste môžete laborovať. Napríklad je možné použiť aj TDA2030A, alebo iné zosilňovače. U budiča je vhodné aby vedel obmedziť prúd, lebo inak pri nižších otáčkach motorčeka sa Vám bude prehrievať, resp. môže sa poškodiť cievka motorčeka.


No a nakoniec sme sa dopracovali k riadiacej časti teda mozgu celého zapojenia, ktorý tvorí mikrokontrolér PIC 16F628A. Keď si všimnete obrázok, tak vydno že samotné zapojenie riadenia je chudobné na súčiastky a preto si myslím, že zapojiť to musí zvládnuť každý. Ako som spomenul, netreba vyrábať zbytočne plošný spoj, stačí takáto vývojová doštička a poprepájať podľa schémy. PIC 16F628A pracuje s externým RC oscilátorom, ktorý tu tvorí keramický kondenzátor a trimer. Výhodne je že takýmto zapojením vieme nastaviť takt hodín pre mikrokontrolér a tým pádom aj rýchlosť krokov pre motorček. Upozorňujem však, že je vhodné pri komunikácií s počítačom a nahrávaní nového programu do EEPROM, zvýšiť frekvenciu hodín na maximum. Riadiaci obvoc sa pripája ku počítaču cez sériové rozhranie RS232.


Ja osobne používam notebook. Môj notebook nemá sériové rozhranie RS232. Preto využívam prevodník USB na RS232, ktorý som kúpil dávnejšie za dve stovky korún. Ale kľudne môžete využiť aj obvody od firmy FTDI konkrétne FT232BM. Táto súčiastka Vám spraví prevod medzi USB a sériovým portom a hlavne nestojí veľa. Nie je treba programovať špecialne ovládače. Po stiahnutí ovládača od firmy FTDI pre súčiastku FT232BM a po jeho nainštalovaní sa táto súčiastka mapuje do virtuálneho COM portu, s ktorým môj program v počítači vlastne pracuje. Ale aj tak sa mi pre začiatočníkov zdá najľahšie používať sériový port RS232 na stolnom počítači alebo ak majú notebook, tak potom kúpiť prevodník z USB na RS232 ako je tento na obrázku.

No a na následujúcom obrázku je dlho očakávaná schéma zapojenia.

Alebo si to stiahnite v originálnom formáte pre program ExpressSchematic
návrh schémy.

Popis schémy
Schéma je tak jednoduchá, že popíšeme iba tie najdôležitejšie aspekty. Takt hodín pre mikrokontrolér sa nastavuje trimrom R2 s názvom osc. tune. Čím ma tento trimer nižší odpor tým rýchlejší je takt hodín pre mikrokontrolér. Pri komunikácií s počítačom je vhodné nastaviť mikrokontrolér na najrýchlejší takt, teda trimer na najnižší odpor. Aby ste sa vyhli zbytočným chybám pri komunikácii s počítačom. Nastavenie trimra R2 zas nie je kritické. Treba si to vyskúšať. Komunikácia je totiž nastavená na auto bitrate na strane mikrokontroléra. Čiže mikrokontrolér sa do určitej miery vie prispôsobiť zmene taktu hodín a tým pádom mení časovanie pri komunikácií s počítačom. Ďalším dôležitým prvkom je kondenzátor C, s hodnotou 1000uF. Je dôležitý najmä ak motorček zdieľa spoločné napájanie s riadiacim obvodom. Nižšiu hodnotu jeho kapacity moc nedoporučujem. Na schéme je zakreslená dvojvývodová dvojfarebná LED dióda. Na čipe vlastne obsahuje dve antiparalelne zapojené LED diódy, teda jednu červenú a jednu zelenú. Tu rovnako môžete použiť buď dve nezávislé LEDky alebo jednu dvojfarebnú dvojvývodovú. Táto LEDka Vás bude informovať o stave komunikácie medzi počítačom a riadiacim obvodom. Po zapnutí tohto obvodu by nemala svietiť žiadna farba, teda maximálne zelená. No keď to pripojíte na sériový port a v programe na počítači kliknete na tlačítko odoslať, tak by sa mala rozsvietiť červená LEDka, ktorá informuje o tom, že mikrokontrolér prijíma dáta z počítača. Keď prenos zo strany počítača skončí, mikrokontrolér sa načítané údaje pokúsi zapísať do svojej vnútornej pamäti EEPROM. Ak sa mu to podarí tak to potvrdí zmenou farby LEDky, teda rozsvieti sa zelená farba. Ak sa mu to nepodarí, tak buď naďalej svieti červená farba, alebo červená farba zhasne. Vtedy to treba skúsiť znova alebo skontrolovať pripojenie káblu atď. .

V programovacom programe v počítači existuje príkaz
AK DIGITAL (VSTUP1) AND (VSTUP2) SKOK navestie: ,
ktorý nám zabezpečuje zasahovať do behu programu cez vonkajšie piny mikrokontroléra. Pri kľúčovom slovíčku DIGITAL sa jedná práve o dva digitálne vstupy ktoré sú na schéme označené ako W1 a W2 (digital inputs for branch). Využitie to má rôzne. Buď tieto vstupy nevyužijeme vôbec, kľudne možu byť nezapojené, ak sa vyššie spomínaný príkaz AK DIGITAL nepoužil. Ale napríklad ak chceme zmeniť smer pohybu z vonku. Tak vytvoríme podmienku a na tento VSTUP1 si zapojíme prepínač. No a pri prepínaní si môžeme definovať napríklad smer otáčania alebo rýchlosť otáčanie. Jednoducho fantázií sa medze nekladú. A je na Vás ako tento digitálny vstup použijete. Príkaz AK bude vysvetlený nižšie rovnako tak aj ukážka programu. Treba ešte upozorniť na to, že DIGITAL vstupy reagujú na log. 1 alebo log. 0 úroveň napätia. Je nutné pozrieť do katalógového listu alebo si zmerať úrovne voltmetrom, na ktoré mikrokontrolér na týchto vstupoch reaguje.
No ale predstavme si, že chcem ovládať motorček nejakým analógovým signálom. Napríklad ak zatlieskam, tak nech urobí nejaký pohyb, alebo ešte lepšie, nech zatancuje na hudbu. Tak nie je to až ťažké ako sa na prvý pohľad zdá, totiž pri príkaze vetvenia AK ešte existuje druhé kľúčové slovíčko, ktoré nahradzuje DIGITAL. A to je kľúčové slovíčko KOMPARATOR. Vlastne funguje podobne ako digitálne vstupy akurát je tu zapojená dvojica komparatorov. Jeden vstup je vyhodnocovaný symetrickým vstupom jedného komparátora a druhý vstup pomocou druhého komparátora. Treba si všimnúť vývody W3 ako neinvertujúci vstup prvého komparátora, W4 ako invertujúci vstup prvého komparátora a W5 ako neinvertujúci vstup druhého komparátora, W6 ako invertujúci vstup druhého komparátora. Pomocou komparátorov vieme porovnať veľkosť napätí na týchto analógových vstupoch, teda ka je na neinvertujúcom vstupe vyššie napätie ako na invertujúcom, tak na výstupe komparátora bude logická 1. A naopak, ak na invretujúcom vstupe bude vyššie napätie ako na neinvertujúcom, tak potom na výstupe bude logická 0. V schéme je slovíčko invertujúci vstup nahradené symbolom mínusu – . A neinvertujúci vstup zase symbolom plus +. Zapojenie komparátorov v mikrokontroléry vidno na následujúcom obrázku.

Takže v samotnom príkaze
AK KOMPARATOR (VSTUP1) OR (VSTUP2) SKOK navestie:
VSTUP1 patrí stavu logickej hodnote výstupu komparátora C1Vout a podobne VSTUP2 patrí stavu logickej hodnote výstupu komparátora C2Vout. Tie výstupy sú zakreslené na obrázku s komparátormi. Čiže prakticky tieto vstupy komparátorov mikrokontroléra môžete nechať nezapojené ak ich nepotrebujete. No ale ak chcete vytvoriť takú halušku, že motorček bude reagovať na zvuk, tak komparátor je ideálny na prevod analógovej veličiny na digitálnu. Jednoducho na invertujúci vstup zapojíte trimer, ktorým nastvíte prahové napätie. No a na neinvertujúci vstup zapojíte predzosílený signál napríklad z mikrofónu s jednotranzistorovým zosilňovačom. Citlivosť potom nastavujeme trimrom, ktorý je zapojený na invertujúci vstup.

Ďalším doležitým prvkom zapojenia je budič. Ako som už vyššie spomínal, pri budiči motorčeka sa dá laborovať, teda navrhnúť si nejaké vlastné zapojenie budiča. V schéme je príklad použitia komplementárných bipolárnych tranzistorov BC639 a BC640. Tieto tranzistory nepotrebujú chladič ale treba použiť obmedzujúci rezistor. Hodnota rezistora je vypočítaná na napájacie napätie 5V. Treba použiť výkonové rezistory aspoň 1W. To je jedna z možností zapojenia budiča. Všetky tri vetvy sú identické. Môžete použiť aj MOSFETy napríklad BS170 a BS250, ale netreba zabudnúť na obmedzenie prúdu a to buď jednoduchým rezistorom alebo sofistikovanejším prúdovým zdrojom. Ja som použil 3 obyčajné lineárne NF zosilovače MBA810DAS ako som spomínal vyššie. Tento obvod obmedzuje výstupný prúd, takže sa na to hodí. Je možne použiť aj iné lineárne zosilňovače.

No a nakoniec zapojenie motorčeka. Je zapojený do hviezdy. Obsahuje tri cievky,ktoré sú v jednom bode spojené. Tento bod je napojený na záporný pól zdroja. Ostatné konce sú napojené na jednotlivé vetvy budiča, ktoré ako som už spomínal sú identické. Krokový motorček z hardisku sa pohybuje okolo osky po 30 stupňovom kroku pri priamom prepínaní cievok (v jednom kroku magnetické pole vytvára iba jedna cievka), alebo po 15 stupňovom kroku pri prechode medzipolohou, ked sú zapojené obidve cievky naraz (v jednom kroku magnetické pole vytvára jedna cievka alebo v medzikroku dve cievky).

Program na vytváranie riadiacich programov pre motorček:

Popis programu a jeho použitie
Program som napísal pre zjednodušenie riadenia motorčeka. Pomocou niekoľkých slovenských príkazov viete rozkrútiť motorček, alebo naprogramovať nejaký zložitejší pohyb. Napríklad naučiť tancovať červeného kúzelníka z ceruzky.
Okno programu obsahuje tri plochy. Jednu bielu s názvom Editovacie okno programu, tam sa píše program pre ovládanie motorčeka. A dve čierne plochy Výpis priebehu prekladu a prípadných chýb, kde program vypisuje chyby a stav prekladu do binárneho tvaru a plocha s názvom Binárny výstup pre mikrokontrolér PIC tu sa zobrazuje samotný binárny kód, ktorý sa za pomoci tlačítka odoslať cez sériové rozhranie RS232 zapíše do vnútornej pamäte mikrokontroléra PIC.
Postup pri vytvorení programu a odoslaní je jednoduchý. Napíšeme program pomocou známych príkazov. Nastavíme časovanie. Pokúsime sa preložiť program do binárneho súboru pomocou tlačítka Prelož program do binárneho tvaru. Ak preklad prebehol neúspešne, tak vyhľadáme chyby a znova sa pokúsime o preklad zdrojového kódu. Potom skúsime pripojiť riadiaci obvod s mikrokontrolérom na sériové rozhranie RS232 a vyberieme COM port, na ktorom je zariadenie pripojené. Potom stlačíme tlačítko pripojiť. Ak sa nám sprístupní tlačítko odoslať, tak môžeme náš riadiaci program odoslať do mikrokontroléra. No ak sa nám nesprístupní tlačítko odoslať treba skúsiť zmeniť COM port. Alebo skontrolovať či je pripojený kábel.

Popis príkazov a programovania motorčeka

Tu si popíšeme všetky platné príkazy a ich spôsob použitia. Príkazy sa píšu výhradne veľkými písmenami.

Zoznam príkazov a ich popis

PROGRAM je príkaz, ktorý označuje začiatok programu. Za týmto príkazom musí následovať jedna medzera a názov programu, za ktorým je ukončenie znakom dvojbodky.
Príklad: PROGRAM kuzelnik:

KONIEC je príkaz, ktorý ukončuje program, teda označuje koniec programu. Všetko čo je napísané za týmto príkazu prekladač nepreloží. Na konci programu je nutné zadať tento príkaz.

RESET je príkaz, ktorý vykoná skok na začiatok programu. Jednoducho ako keby ste zresetovali mikrokontrolér.

CASOVANIE je príkaz, ktorý umožňuje v programe dynamicky zmeniť pôvodné časovanie zadané Základnym nastavením časovača preddeličku časovača a periódu časovača. Teda ak napríklad potrebujeme zmeniť rýchlost kroku alebo rýchlosť rotácie. Za slovíčko CASOVANIE ide medzera a potom hodnota od 0 do 7 čo udáva nastavenie preddeličky časovača. Čím vyššie číslo tým je časovanie dlhšie. Za týmto číslom bezprostredne následuje symbol čiarka a medzera. Potom slovíčko PERIODA medzera a číslo s hodnotou od 1 do 253, ktoré udáva periódu časovača. Čím je táto hodnota vyššia, tým je časovanie rýchlejšie.
Príklad: CASOVANIE 4, PERIODA 200

VYSTUP je príkaz, ktorý priamo mení logickú hodnotu na výstupných pinoch mikrokontroléra, ktoré sú napojené na budič motorčeka. Jednoducho je to základný príkaz na ovládanie motorčeka. Píše sa VYSTUP(0,0,0) CAS 200 . Kde hodnoty v zátvorke oddelené čiarkami udávajú stav na výstupoch. Ak je tam hodnota 0 tak na výstupnom prisluchajúcom pine bude nulové napätie a naopak ak tam bude hodnota 1 tak na výstupnom prisluchajúcom pine bude napätie 5V. Teda môžeme vytvárať rôzne kombinácie výstupných hodnôt. Za pravou zátvorkou je medzera a slovíčko CAS, za ním je znova medzera a hodnota v rozsahu od 1 do 253, ktorá udáva ako dlho bude trvať tento príkaz, kým sa nevykoná ďalší. Teda časový krok tohto príkazu. Čím je táto hodnota dlhšia, tým dlhšie bude tento príkaz trvať.
Príklad: VYSTUP(0,1,0) CAS 150

OPAKUJ je príkaz, ktorý nám umožňuje vytvárať cykly. Teda ak nechceme zbytočne písať veľa riadkov opakujúceho sa kódu. Príkaz sa zapisuje OPAKUJ navestie: pocet. Teda za slovíčkom OPAKUJ ide medzera, potom návestie v programe ukončené znakom dvojbodky a za ním medzera a počet cyklov. Počet cyklov je v rozsahu 1 do 253. Tento cyklus musí mať definované návestie pred samotným príkazom OPAKUJ v kóde. Inak vám prekladač vypíše chybu, že nenašiel návestie a aj v tom prípade, že návestie ste označili za príkazom OPAKUJ.
Príklad:
cyklus:
VYSTUP(1,0,0) CAS 100
VYSTUP(0,1,0) CAS 100
VYSTUP(0,0,1) CAS 100
OPAKUJ cyklus: 55
Tento sled príkazov vám rozkrúti motorček 🙂 a po 55 krokoch skončí a vykonáva následujúce príkazy ak nejaké sú.

ROTUJ je príkaz, ktorý patrí do skupiny komplexnejších príkazov. Umožňuje rozkrútiť motorček do vyšších otáčok za pomoci rozbehu. Za slovíčkom ROTUJ ide medzera a potom slovíčko, ktoré určuje či sa motorček má točiť stále alebo nie, teda ROTUJ STALE alebo len ROTUJ. Zase nasleduje medzera a ďalšie slovíčko, ktoré nám určuje smer otáčania teda DOPRAVA alebo DOĽAVA. Potom nasleduje symbol čiarky a zase medzera. No a slovíčko ROZBEH medzera a hodnota rozbehu od 0 do 15, ktorá určuje pomer rozbehu ku konečným otáčkam. Čím je toto číslo vyššie, tým je pomer vyšší. Za týmto slovíčkom nasleduje už známe slovíčko CAS. Za ním medzera a hodnota od 1 do 253. Čím je táto hodnota vyššia, tým bude vnútorná zmena výstupu dlhšie trvať podobne ako to bolo pri príkaze VYSTUP.

Príklady:
ROTUJ DOPRAVA, ROZBEH 2 CAS 200
Tento príklad len rozbehne motorček. Za ním sa vykonahú ďalšie príkazy.
ROTUJE STALE DOLAVA, ROZBEH 2 CAS 250
Tento príklad rozbehne motorček do vyššých otáčok a zotrváva v rotácií naďalej. Po rozbehu sa testuje následujúci príkaz. Ak následujúci príkaz je podmienka AK, tak sa testuje a môže sa vyvolať skok na návestie, teda na iné miesto v programe. Takto vieme ukončiť túto stálu rotáciu. Ak je za príkazom OPAKUJ slovíčko STALE, tak sa následujúce príkazy, okrem príkazu vetvenia AK, ignorujú.

AK je príkaz, ktorý nám umožňuje vetvenie programu podľa stavu na digitálnych vstupoch mikrokontroléra alebo na analógových vstupoch vnútorného komparátora mikrokontroléra. Je to nástroj, ktorý nám umožní zasahovať do priebehu programu. Za slovíčkom AK nasleduje medzera a potom výber typu vstupov. Slovíčkom DIGITAL definujeme, že chceme snímať stav na digitálnych vstupoch, označených v schéme ako W1 a W2. Alebo slovíčkom KOMPARATOR definujeme, že chceme testovať logický výstup vnútorného komparátora, ktorý porovnáva analógové hodnoty na svojich vstupoch W3 W4 alebo W5 W6. Za týmto slovíčkom definujúcim typ vstupu nasleduje medzera a prvá zátvorka, v ktorej je buď (VSTUP1) alebo (NEG_VSTUP1). Teda podľa toho či daný vstup chceme priami VSTUP1 alebo negovaný NEG_VSTUP1. Nasleduje ukončenie zátvorky a medzera. Potom následujúlogické spojky. Teda slovíčko AND pre logický súčin, NAND pre negovaný logický súčin, OR pre logický súčet, NOR pre negovaný logický súčet. Za týmto ide znova medzera a zátvorka. V zátvorke musí byť párový príkaz VSTUP2 pre priami druhý vstup alebo NEG_VSTUP2 pre negovaný druhý vstup. Nie je možne aby VSTUP1 bol v kombinácií s NEG_VSTUP2 a naopak v týchto dvoch zátvorkách medzi logickou spojkou, inak vám prekladač vypíše chybu. A ak využívate len jeden vstup, druhy treba pripojiť buď k 0V alebo 5V. Podľa toho akú logickú spojku využívate. Za druhou zátvorkou nasleduje medzera a slovíčko SKOK za ním medzera a návestie kam sa má skočiť ukončené symbolom dvojbodky. Návestie môže byť kdekoľvek v programe.

Príklady:
AK DIGITAL (VSTUP1) AND (VSTUP2) SKOK navestie:
Otestuje priame digitálne vstupy, urobí logický súčin vstupov a ak je výsledkom logická hodnota 1, tak sa vykoná skok na návestie: .

AK DIGITAL (VSTUP1) OR (VSTUP2) SKOK navestie:
Otestuje priame digitálne vstupy, urobí logický súčet vstupov a ak je výsledkom logická hodnota 1, tak sa vykoná skok na návestie: .

AK DIGITAL (VSTUP1) NAND (VSTUP2) SKOK navestie:
Otestuje priame digitálne vstupy, urobí negovaný logický súčin vstupov a ak je výsledkom logická hodnota 1, tak sa vykoná skok na návestie: .

AK DIGITAL (VSTUP1) NOR (VSTUP2) SKOK navestie:
Otestuje priame digitálne vstupy, urobí negovaný logický súčet vstupov a ak je výsledkom logická hodnota 1, tak sa vykoná skok na návestie: .

AK DIGITAL (NEG_VSTUP1) AND (NEG_VSTUP2) SKOK navestie:
Otestuje negované digitálne vstupy, urobí logický súčin vstupov a ak je výsledkom logická hodnota 1, tak sa vykoná skok na návestie: .

AK DIGITAL (NEG_VSTUP1) NAND (NEG_VSTUP2) SKOK navestie:
Otestuje negované digitálne vstupy, urobí negovaný logický súčin vstupov a ak je výsledkom logická hodnota 1, tak sa vykoná skok na návestie: .

AK KOMPARATOR (VSTUP1) AND (VSTUP2) SKOK navestie:
Otestuje priame výstupy z vnútorných komparátorov, urobí logický súčin vstupov a ak je výsledkom logická hodnota 1, tak sa vykoná skok na návestie: .

AK KOMPARATOR (NEG_VSTUP1) OR (NEG_VSTUP2) SKOK navestie:
Otestuje negované výstupy z vnútorných komparátorov, urobí logický súčet vstupov a ak je výsledkom logická hodnota 1, tak sa vykoná skok na návestie: .

Tu vidno, že vzhľadom na počet príkazov nebude programovanie tak náročné. Treba sa naučiť len 8 príkazov a môžete sa pustiť do tvorby programov pre svoje hračky s motorčekom z hardisku, alebo aj s iným motorčekom, ktorý používa 3 cievky. Teraz ešte ukážem ako jednoducho sa programuje v mojom navrhnutom programovacom jazyku pre motorček z HDD.

Ukážky programov pre motorček

Ukážka programu pre jednoduché otáčanie s krokom 30 stupňov

PROGRAM krok 30 stupnov:

// komentar mozete pisat za lomitkom //

//zapni prvu cievku a ostatne nechaj vypnute a cakaj 100

VYSTUP(1,0,0) CAS 100
//zapni druhu cievku a ostatne nechaj vypnute a cakaj 100

VYSTUP(0,1,0) CAS 100
//zapni tretiu cievku a ostatne nechaj vypnute a cakaj 100

VYSTUP(0,0,1) CAS 100

// ked program narazi na koniec, tak sa zacne vykonavat odznova, ako keby bol
//v nekonecnom cykle, cize tato trojica
prikazov sa bude vykonavat donekonecna

KONIEC

Ukážka programu pre jednoduché otáčanie s krokom 15 stupňov

PROGRAM krok 15 stupnov:

VYSTUP(1,0,0) CAS 10
VYSTUP(1,1,0) CAS 10
VYSTUP(0,1,0) CAS 10
VYSTUP(0,1,1) CAS 10
VYSTUP(0,0,1) CAS 10
VYSTUP(1,0,1) CAS 10

KONIEC

Predchádzajúce príklady boli ukážky toho ako jednoducho vieme rozkrútiť motorček s krokom 30 stupňov alebo s krokom 15 stupňov. Nebolo nutné starať sa koľko krát sa má posun krokov vykonať,pretože program je nekonečná slučka a teda sled príkazov bol vykonávaný donekonečna. Takto sme vytvorili pomocou cievok v krokovom motorčeku točivé magnetické pole. Následujúce príklady ukážu zložitejšie pohyby. Ukážeme si ako jednoducho sa dajú využívať cykly alebo podmienky. A ako vytvárať zložitejšie pohyby.

Ukážka programu pre striedavé otáčanie po 30 stupnoch v cykle 20 krat 90 stupnov doprava a 30 krat 90 stupnov dolava .

PROGRAM striedave otacanie:

doprava:
VYSTUP(1,0,0) CAS 100
VYSTUP(0,1,0) CAS 100
VYSTUP(0,0,1) CAS 100
OPAKUJ doprava: 20

dolava:
VYSTUP(0,0,1) CAS 100
VYSTUP(0,1,0) CAS 100
VYSTUP(1,0,0) CAS 100
OPAKUJ dolava: 30

KONIEC

Ukážka vnoreného cyklu, divoký pohyb

PROGRAM divoky pohyb:

doprava:
VYSTUP(1,0,0) CAS 100
VYSTUP(0,1,0) CAS 200
VYSTUP(0,0,1) CAS 150
OPAKUJ doprava: 20

velky cyklus:
VYSTUP(0,0,0) CAS 50
VYSTUP(1,1,1) CAS 10
VYSTUP(1,0,1) CAS 30

vnoreny cyklus dolava:
VYSTUP(0,0,1) CAS 100
VYSTUP(0,1,0) CAS 250
VYSTUP(1,0,0) CAS 60
OPAKUJ vnoreny cyklus dolava: 30

OPAKUJ velky cyklus: 100

KONIEC

Ešte si ukážeme program, ktorý využíva vetvenie. Jednoduchý program, ktorý na základe stavu na digitálnych vstupoch W2 a W3 roztočí motorček doprava alebo doľava.

PROGRAM podmieneny pohyb:

AK DIGITAL (VSTUP1) NOR (VSTUP2) SKOK dolava:

doprava:
VYSTUP(1,0,0) CAS 100
VYSTUP(0,1,0) CAS 100
VYSTUP(0,0,1) CAS 100

AK DIGITAL (VSTUP1) OR (VSTUP2) SKOK doprava:

dolava:
VYSTUP(0,0,1) CAS 200
VYSTUP(0,1,0) CAS 200
VYSTUP(1,0,0) CAS 200

KONIEC

No a nakoniec si ukážeme podobný príklad ako predchádzajúci, ale s použitím príkazu ROTUJ s rozbehom.

PROGRAM podmieneny pohyb s rozbehom:

doprava:
ROTUJ STALE DOPRAVA, ROZBEH 2 CAS 150
AK DIGITAL (VSTUP1) AND (VSTUP2) SKOK dolava:

dolava:
ROTUJ STALE DOLAVA, ROZBEH 2 CAS 160
AK DIGITAL (VSTUP1) NAND (VSTUP2) SKOK doprava:

KONIEC

Po týchto príkladoch vidíte, že naprogramovať motorček nie je vôbec náročné. Snažil som sa o najväčšiu jednoduchosť programovacieho jazyka. Dúfam že sa mi to podarilo. A teraz sa pozrieme na výsledok tejto práce. Nasledujú videá, kde som natočil niektoré pohyby mojej skvelej hračky 🙂

video 1
video 2
video 3
video 4
video 5
video 6
video 7
video 8
video 9
video 10

Dúfam, že sa Vám videa páčili a dúfam, si to niekto postaví. naozaj to stojí za to 🙂 .
Videá mam aj na YOU TUBE ale nešiel sem dostať odkaz – debilná bezpečnostná politika tejto webstránky. No co už. Spojím sa zo ZAWINom lebo on tam vo svojom článku má odkaz. Tak dúfam, že to urobí aj mne.

Takže tu si môžete posťahovať všetko čo k tejto skvelej hračke a vôbec k Vaším budúcim projektom s motorčekom z hardisku potrebujete:

aplikácia pre tvorbu programov – exe súbor

aplikácia pre tvorbu programov – zip súbor

zdrojový kód aplikácie pre tvorbu programov – zip

HEX súbor pre mikrokontrolér PIC 16F628A

zdrojový kód programu pre mikrokontrolér PIC 16F628A

Je to absolútne FREE vytvoril som to viac menej pre zábavu a aby som si precvičil tvorbu prekladačov. 🙂 Takže kľudne si to veselo sťahujte. A ak sa niekomu podarí vytvoriť peknú hračku alebo niečo užitočnejšie, tak mi môžete poslať fotku či video na fubu@pobox.sk .

A ak sa Vám to veľmi páčilo a možno Vám to pomohlo a chcete sa mi zavďačiť, tak mi pošlite nejakú peknú pohľadnicu na túto adresu:
Matej Baran
Nemcovce 82
08212 Kapušany

Ďakujem a teším sa na ďalšie podobné projekty 🙂

Ako sa vám páčil tento článok?
  • Páči sa mi (0)
  • Súhlasím (0)
  • Zábavné (0)
  • Informatívne (0)
Najnovšie články od FUBU (zobraziť všetky)

Komentáre (7)

  1. Robio píše:

    priznám sa že som ten článok ešte nečítal ale pokiaľ ja viem tak v HDD sú 3fazové motory a nie krokové…
    Možno sa mýlim a sú aj také a také…

  2. enigma píše:

    zaujímavé .

    a nemohlo by sa týmto motorčekom otáčať aj “ podium “ na ktorom by som mal maketu auta v mierke 1: 43 … cca 10 cm autíčko ?

Pridaj komentár