GCode simuliatorius GSim (atnaujinimas)

31 07 2012

Prieš kurį laiką jau pristačiau GCode simuliatoriaus programą kurios paskirtis buvo pasipraktikuoti braižyti linijas pasitelkus GCode instrukcijas čia https://mindogas.wordpress.com/2012/07/13/g-code-simuliatorius/. Kaip jau minėjau programos pradžioje nebuvo planuota jos tobulinti, nes visas šias instrukcijas vėliau perims Arduino. Jame bus programinė įranga panaši į RepRap ar Grbl, kuri per Serial sąsają gautas instrukcijas valdys mini CNC stakles. Tačiau šias instrukcijas kažkas turės jam nusiųsti. Pradžioja galvojau, kad tam sukursiu paprastutę programėlę, tačiau vėliau sugalvojau kodėl gi nepanaudojus GSim šiam reikalui.

Taigi padirbėjus kelias dienas laivu laiku GSim atsinaujino į versiją 1.1 kurioje atsirado šie pakitimai:

  • Programos nustatymai bei pagrindiniai valdymo elementai perkelti į Meniu;
  • Satatistinė informacija (dabartinė instrukcija, progresas procentais, darbo laikas ir likęs laikas) yra pateikiama Status Bar lauke programos apačioje;
  • Intergruotas Serial duomenų siuntimas pasirinktu portu;
  • Pakeista sąsajos spalvos į mėlinos lentos (angl. Blue Board) temą;
  • Atsirado galimybė keisti pieštukų (tiek pagrindinio, tiek orinio) dydžius;
  • Simuliuojamas piešinys piešiamas tokio dydžio koks yra programos langas automatiškai;
  • Simuliuojamas piešinys nedingsta sumažinus ar velkant langą;
  • Galimybė išsaugoti simuliavimo paveiksiuką PNG, BMP ar JPG formatais;
  • Atnaujintas liniju sekimo algoritmas;
  • Keli kosmetiniai pakeitimai (ikona, failo rodymas antraštėje, atidaromų failų filtravimas pagal plėtinius itr t.t.);

Programos langas atrodo taip:

gsimmain Skaityti pilną įrašą »





GCode simuliatorius GSim

13 07 2012

Šiuo metu esu užsisėdėjęs su mažo CNC gamyba iš gauto davanu Canon iP4600 rašalinio spausdintuvo. Norėdamas prasisukti pigiai kaip kontroleri panaudoti tikiuosi Arduino, tačiau kilo viena bėda: printerio X ir Y ašys valdomos pasitelkus DC servo variklius su enkoderiais, o visi rasti Arduino projektai naudoja stepper tipo variklius. Arduino noriu naudoti kaip G-Code suprantantį ir jo komandas paverčiantį į variklių judesius kontrolerį. Kadangi taip jau atsitiko kad tokio G-Code interpretatoriaus kuris valdo DC variklius su enkoderiais niekas nepagamino, tai as pasigaminisiu savo šioki toki ekspermentinį gaminį. Pradžiai nusprenžiau pasidaryti nedidelę Gcode analizę pasigamindamas PCB schemų braižimo simuliatorių.

G-Code

CNC pasaulyje tai gan populiarus protokolas ašių krypčių valdymui. Kodas aprašo naujas koordinates bei atskirus veiksmus tam tikrai įrangai, kaip aušinimas, gręžtas ir pan., valdyti. Daugiau apie jį galite pasiskaityti Wikipedia puslapyje: http://en.wikipedia.org/wiki/G-code

Kadangi aš pats noriu naudoti savo CNC PCB plokščių frezavimui ar bent jau paišymui su markeriu, tai mano atveju Gcoda’s valdys tris ašis, o X ir Y ašių valdymo judesiai bus keičiami komandomis G00 bei G01 iškarto vienu metu. Tai padaryti nėra lengva.

Linijos sekimas

Turint pradies koordinates X0 Y0 mums reikia tiesiausia linija nukeliauti į tašką X1 Y2. Šiuos du taškums mums nurodo G-Code seka. Įvykdyti šį sprendimą sugalvojau kelis būdus:

  • Apskaičiuojant X ir Y variklių greičius taip, kad sukant šias ašis tam tikrą laiką atsidursime X1 Y1 ašyje. Problematika – mikrokontroleriui vienu metu sunku sekti enkoderio parodymus, tad įmanoma nukrypti nuo X1 ar Y1 gautinio taško nes tuo metu buvo apdrojamas kitas enkoderis. Steperio variklio atveju aplamai šis būdas negalimas, nes vienu metu galime valdyti tik vieną variklį.
  • Pažingsniui atitinkamai keičiant X arba Y pozicijas į reikimą koordinačių pusę kol atsidursime X1 ir Y1 taške. Problema tame, kad taip susiduriame su tam tikra linija tampa laiptuota dėl variklių žingsnelių dydžių. Šia problema teks spręsti pasirenkant gerą algoritmą apsiprendimui kurią kriptimi vis keisime ašis per vieną žingsnį kad atsirastume galiausiai tiklse per kuo mažiau išdarkytą liniją.

800px-Bresenham.svg Skaityti pilną įrašą »