Pagaliau šiek tiek toliau pajudinau savo bandymus su XY-4140 ploteriu. Tiksliau pasidariau šiokią tokią žingsninių varikliukų bandymo sistemą. Tam prireikė Arduino UNO, analoginio džoistiko (nuo kažkokio žaidimų valdiklio, pirkto už gal 2$) ir ankščiau surinktos žingsninių variklių valdymo plokštės.
Džoistiką primontuojame prie maketinės plokštės, potenciometrus jungiame galiniais išvadais lygiagrečiai, jungsime tarp GND ir +5 V, išėjimo įtampą nuimame nuo vidurinio potenciometrų išvado. Dar čia yra mygtukas ateičiai.
Gavosi kažkas tokio:
Visas "setup'as" atrodo taip:
Toliau programa, kitaip vadinant Arduino skečas.
Visų pirma - norėjau pasidaryti ateičiai tinkamą daiktą, pvz mechaninės CNC sistemos testavimui. Dėl to iš karto galvojau apie džoistiko panaudojimą ar ten kalbainių vadinamą linksmalazdę. Tai yra džoistikui esant normalioje padėtyje niekas nevyksta. Judinant svirtelę viena ašim - įsijungia vienas žingsninis varikliukas ir sukasi atitinkamai į vieną ar kitą pusę (atsiranda valdymo impulsai draiverių plokštei), judinant kita ašimi - įsijungia kitas žingsninis varikliukas. Judinant svirtelę įstrižai - įsijungia abu varikliukai. Kuo daugiau palenkta sivrtelė - tuo greičiau. Programoje galima nustatyti minimalų bei maksimalų sukimosi greičius. Taip pat padariau šiokią tokią "0" toleranciją, jei analoginiuose įėjimuose yra labai nežymus svyravimas - niekas nevyksta. Tolerancija pasirinkau 10 vienetų (visas įėjimo reikšmių diapazonas nuo 0 iki 1023). Bet vistiek pasijungus varikliukus pastebėjau retkarčiais pasitaikančius pavienius "žingsniukus" ne į temą. Per serijinį portą pamačiau gana žymius analoginių įėjimų svyravimus, t.y. pralenda triukšmai iš varikliukų į analognius įėjimus. Kondensatoriai ant Arduino įėjimų ir laidų "sutvarkymas" greičiausiai padėtų šioje vietoje. Programa parašyta taip kaip gavosi per porą prisėdimų, gali būti ir kokių klaidų, jei randate - rašykite komentaruose.
Dar vienas dalykas - greičio valdymo priklausomybė turėtų būti logaritmiška, t.y. kuo daugiau palenkiant svirtelę, tuo turėtų staigiau didėti greitis, bet tai jau palieku kitam kartui. Dabar pakanka ir taip kaip yra.
Programoje, pagrindinai derinimui, yra galimybė įsijungti duomenų stebėjimą per Serial Monitor (115200 bps), tam reikia nusiimti komentarų ženklus trijose vietose.
Už pagrindą ėmiau Easy Driver Examples ir dar kelis pavyzdžius.
Taigi pati programa:
// Define the steppers and the pins it will use
// Define our maximum and minimum speed in steps per second void blink() { //Joystick out of range void loop() { // We only want to read the joystick every time in main loop (because it takes a long time we don't Serial.print("analog_val.:"); // This will run the stepper at a constant speed |
Na ir video:
Čia matosi, tiksliau girdisi, kaip barška dantračiai sukantis vienam varikliukui mažu greičiu, tai visiškai normalu. Jei būtų bent šioks toks dantračių įtempimas, apkrova, barškėjimo praktiškai nebeliktų.
Pasikeikus dirbant su idiotiška programa window$ movie maker (turimame kompe nieko geriau kol kas nebuvo) padariau antrą filmuką.
Testas su XY-4140 motoriukais arba kam išvis tai buvo reikalinga:
Beje, kai yra įjungtas duomenų siuntimas per serijinį portą ir greičiui esant didesniam, nei panašiai 500 impulsų, atsiranda motoriukų trukčiojimai, dėl kurių gali jie net sustoti. Čia viskas dėl to, kad duomenų siuntimas "suvalgo" nemažai procesoriaus taktų, kurių metu nebevykdoma pagrindinė programa su impulsų siuntimu. Taigi jei duomenys terminale nėra reikalingi - geriau siuntimą išjungti.