Jau rašiau, kad ištraukiau kelis žingsninius variklius ir kiek su jais pažaidžiau. Poto pažiūrėjau į internetą, radau daug ten grožybių… tačiau grožybės arba reikalavo labai jau advanced softo ir super-duper draiverių, arba naudojo printerio (LPT) portą. Mano kompo LPT portas ir taip jau susvilintas, o su papildoma plokšte nekiekvienas softas sugeba dirbti. O ir tas LPT metodas man nepatinka. Todėl nutariau išrasti dviratį. Pasiėmiau savo seniausią ATMEGA16 testinę plokštelę su USB lizdeliu, prikabinau jau aprašytus raktus ir kiek paprograminau. Gavosi toks niekalas:
Sistemos principas- stepus valdo ATMEGA, didelis kompas per USB siunčia komandas ir gali nusiskaityti kai kurių registrų būklę- nu kad atbulinis ryšis. Didelis kompas siunčia komandą- steperį numeris vienas pasuk per 1056 žingsnius pagal laikrodžio rodyklę ant 5 greičio, o steperį numeris du pasuk per 38 žingsnius prieš laikrodžio rodyklę ant 15 greičio. Kol steperiai sukasi, didelis kompas gali nuskaityti komandos bitus, kiek liko žingsnių ir A porto (ir dalį B porto) bitų būkles. Ant tų portų galima užkabinti galinukus ar kokius trumpo jungimo bei termo daviklius.
Dar yra komanda “atleisti vadžias”- tada nutraukiama srovė per motorų apvijas ir juos lengvai galima sukinėti. Nes kai įjungtas stabdis, kai kurie labai priešinasi.
Beja, filmukyje matosi, kad motorai ant didžiausio greičio nepasisuka. Reikia eksperimentiškai sužinoti savo turimo motoriuko ribas.
Viskas primityvu ir paprasta. Atiduodu source kodus, todėl vietoje motoriukų lengvai galite valdyti ką tik norit- softas visiškai paprastas. Beja, valdymas tik command line, be jokių langelių. Tačiau softas kompiliuojasi ir ant windows ir ant Linux. Beja, USB įrenginukas draugiškas sistemai ir naudoja HID draiverius.
Full source code and HEX.
Reali oscilograma ant motoro gnybtų:
O tarkim taip, išjungiam visus matinimus, pasukinėjam steperius ranka. Ar yra galimybė nustatyti kokioj padėty yra steperis? ar tiesiog viską įjungus reikia pasukt per kelis stepus?
Patys steperiai neturi jokio padėties daviklio. Todėl dažniausiai naudojamas parkavimas- nuvažiuoja iki kažkokios zonos ir ten suveikia galinukas. Tada priimama ši vieta kaip nulinė koordinatė ir nuo jos viskas skaičiuojama.
Tiesa yra toks daiktas kaip absoliutus padėties daviklis. Buna jis ir pas steperius. Steperiui tai būtų kažkoks permodamas diskas su nepermatomais sektoriais. Diską peršviestu keli ar net keliolika šviesos diodų ir detektuotu fotodetektoriai. Priklausomai nuo rašto, galima nustatyti kaip pasisuko ašis. Yra dar galimybė uždėti judesio detektorių (veikia panašiu principų) tada įjungtas kompiuteris galėtu pastebėti kiek ašis buvo pasukta ranka ar pvz. neužstrigo koks velenas. Tačiau galinukai vistiek reikalingi, nes įjungus prietaisą kompiuteris nežinotu pradinio atskaitos taško.
Tačiau lengviausia naudoti parkavimo variantą.
Sveikas,
O gal pasidalintum schema sito valdiklio?
Taigi schema tikriausiai šita:
http://www.vabolis.lt/2007/09/15/atmega-usb-001/
arba senesnė versija. Visa schema matosi pagal source failus. O raktų plokštės schemos nėra. Tai po du lauko tranzus nuosekliai.
Kiek tobulesnis softas čia:
http://www.vabolis.lt/2011/04/28/printerio-zulintuvas/