Arduino CNC pendant

Tento projekt vznikol v mojich zaciatkoch programovania a tiez pri prvych skusenostiach s domacou DIY cnc frezou. Niektore postupy a metody by som dnes uz riesil inaksie, ale vtedy mi to prislo najjednoduchsie a cas vylepsit to, uz neprisiel.

Ide o rucny ovladac domacej cnc frezy. Pripaja sa cez usb port notebooku, na ktorom bezi linuxcnc. Rucny ovladac ma v sebe arduino uno, potenciometer s jemne aretovanou stredovou polohou, graficky LCD displej a 16 tlacidlovu membranovu klavesnicu. V tomto clanku predstavim samotny ovladac a program pre arduino.

Cela komunikacia je primitivna a pozostava z retazca hodnot oddelenych “specialnym” znakom, v tomto pripade bodkociarka. Tento cely retazec sa posiela cez seriovu linku a opakuje sa donekonecna (az kym sa nevypne arduino, kedze je to v loop-e). Kazda pozicia hodnoty znamena iny parameter. Krokovacia rychlost (jog) sa v realnom case nastavuje potenciometrom a zaroven sa zobrazuje na displeji statusbarom. Kedze je hodnota v m/min, tak je analogova hodnota v rozsahu 0-1023 tak ako ju nacita arduino na analogovom vstupe. Hodnota tejto rychlosti je na prvom mieste v retazci.
Nasledne sa v retazci posielaju hodnoty pre tieto parametre:

  • pohyb osi X do minusu
  • pohyb osi X do plusu
  • pohyb osi Y do minusu
  • pohyb osi Y do plusu
  • pohyb osi Z do minusu
  • pohyb osi Z do plusu
  • toggle on – aktivuje sa kratkym stlacenim
  • home vsetkych osi
  • pohyb osi A do plusu
  • pohyb asi A do minusu
  • touch X osi – nastavi aktualnu poziciu osi X na nulu
  • spindle on – zapina sa dlhym podrzanim
  • spindle off – vypina sa kratkym stlacenim
  • toggle off – aktivuje sa dlhym podrzanim
  • prepinanie modu – MDI, JOINT, MANUAL, AUTO
  • touch Y
  • touch Z – nastavi aktualnu poziciu osi Z na +7.0mm

Je to mozno komplikovane a urcite je sposob ako to zjednodusit ci vylepsit.

Podobne sa spracuva retazec, ktory prichadza z notebooku. Posiela ich skript v pythone pocas behu aplikacie emc2.
Po spracovani prichadzajuceho retazca sa na displeji zobrazuju tieto informacie:

  • Online/Offline – spojenie rucneho ovladaca s aplikaciou
  • Aktualny mod – MDI, JOINT, MANUAL, AUTO
  • Stav zariadenia-On, Off, Idle, E-stop, Running

Tieto moznosti ovladania obsadili celu klavesnicu a na moje pouzivanie su uplne postacujuce. Pouzivanie aplikacie na notebooku je takto obmedzene len na nacitanie gkodu a spustenie frezovania. Vsetko ostatne viem spravit rucnym ovladacom.
Krabicka je vytlacena na 3D tlaciarni a prepojovaci kabel je USB-B a rucny ovladac sa s nim da aj rovno programovat a lahko nahravat vylepsenia.

Na zaver pridavam kod pre arduino. Kazdy si moze kod upravit tak ako mu vyhovuje pripadne sa inspirovat a vytvorit si vlastny.