Martzis USB HID Interface kortti LinuxCNC:lle ja Mach 3:lle

Martzis USB HID Interface, eli lyhyesti MUHI, on USB lisäkortti joka näkyy PC:lle kahtena peliohjaimena joissa kummassakin on 32 nappia ja 4 akselia. Kortti toimii Windows ja Linux ympäristöissä ja on tarkoitettu pääasiallisesti käytettäväksi LinuxCNC http://www.linuxcnc.org/ kanssa. Kortille on olemassa myös plugin jolla se saadaan toimimaan Windows ympäristössä toimivaa Mach 3 -ohjelman kanssa. Mach 3 ohjelman Keygrabber toimii myös kortin kanssa rajoitetuin ominaisuuksin.



Liitännät:


Peliohjaimien nappien tilaa ohjataan MUHI-kortilla olevilla 64:llä digitaalisella 5V logiikkasisääntulolla (LS TTL). Sisääntulot ovat ylösvedettyjä ja niihin voidaan kytkeä suoraan kytkimiä. Kytkimien toinen jalka kytketään maahan.

Ensimmäisen PC:lle näkyvän peliohjaimen akselit ovat 4 analogisisääntuloa 0-5V jännitteelle. Näihin voidaan liittää suoraan potentiometri. Potentiometrin keskimmäinen jälka kytketään analogisisääntuloon ja laitimmaisista toinen maahan ja toinen 5V jännitteeseen.

Toisen ohjaimen 4 akselia ovat enkooderisisääntuloja jotka toimivat joko 1x tai 2x moodissa. Sopivia enkoodereja ovat esimerkiksi:

http://www.damencnc.com/
http://homanndesigns.com/

Enkooderitulojen A-kanavat toimivat myös 1X-moodissa nousevien tai laskevien reunojen laskureina jos B-kanavan kytkee kiinteästi ylös tai alas. 2X-moodissa saadaan kortti laskemaan sekä nousevat että laskevat reunat kytkemällä laskettava signaali kumpaankin kanavaan.

Jumpperit:

Kortilla on viisi jumpperia joiden toiminta on seuraava (jumpperien arvot luetaan kortin käynnistyessä):

JP1 = Poistaa analogikanavat ovat pois käytöstä. Jos analogikanavia ei käytetä, tämä poistaa turhan kytkemättömistä analogikanavista aiheutuvan liikenteen

JP2 = Muuttaa enkooderikanavat 1 ja 2 toimimaan 1X moodissa. Ilman jumpperia toimitaan 2X moodissa.

JP3 = Sama kuin edellinen kanavalle 3.

JP4 = Sama kuin edellinen kanavalle 4.

JP5 = Muuttaa nappisisääntulojen toiminnan käänteiseksi jolloin 5V jännite vastaa painettua nappia.

Linux CNC


Ominaisuudet:

kaikki napit näkyvät ja toimivat (input.0-1.btn_1-btn_32
potentiometrit/analogitulot näkyvät absoluuttiarvoina 1-254 välillä (input.0.abs_1-4
enkooderit kasvattavat tai pienentävät omaa arvoaan sen mukaan miten pyörittelee (input.1.rel1-4)

Ubuntu 10.04 & Python 2.6


Tiedostoon /etc/udev/rules.d/40-permissions.rules tarvitaan tällainen rivi jotta EMC pääsee laitteeseen kiinni:
ATTRS{idVendor}=="04d8", SYSFS{idProduct}=="0666", MODE:="0660", GROUP="plugdev"
Tiedoston voi ladata tästä:
/python2.6/40-permissions.rules


linux_event.py (linux_event.py) vaatii pieniä muutoksia jotta inputit tulevat oikein nimetyiksi. Muutettu versio kopioidaan /usr/lib/python2.5/dist-packages/ -hakemistoon. Muutetun version voi ladata täältä:
python2.6/linux_event.py

Tämä HAL-komento lataa kortin käyttöön:
loadusr -W hal_input Martzis:0 Martzis:1

Ubuntu 8.04 & Python 2.5


Tiedostoon /etc/udev/rules.d/40-permissions.rules tarvitaan tällainen rivi jotta EMC pääsee laitteeseen kiinni:
SUBSYSTEM=="input", GROUP="plugdev", MODE="0660"

linux_event.py (http://git.linuxcnc.org/gitweb?p=emc2.git;a=blob_plain;f=lib/python/linux_event.py;hb=HEAD) vaatii pieniä muutoksia jotta inputit tulevat oikein nimetyiksi. Muutettu versio kopioidaan /usr/lib/python2.5/site-packages/ -hakemistoon. Muutetun version voi ladata täältä:
/python2.5/linux_event.py

Tämä HAL-komento lataa kortin käyttöön:
loadusr -W hal_input Martzis:0 Martzis:1

Hienosäädöt


Absoluuttiakseleilla on oletuksena kuollut alue keskellä. Se saadaan pois seuraavin komennoin:

setp input.0.abs-1-flat 0
setp input.0.abs-2-flat 0
setp input.0.abs-3-flat 0
setp input.0.abs-4-flat 0

Tarvittaessa potentiometreille voi asettaa kortin omaa hystereesiä isomman arvon (normaalisti ei tarvitse).

setp input.0.abs-1-fuzz 5
setp input.0.abs-2-fuzz 5
setp input.0.abs-3-fuzz 5
setp input.0.abs-4-fuzz 5

Ubuntu 6.06 & Python 2.4


/etc/udev/rules.d/plugdev.rules:
SUBSYSTEM=”input”, mode=”0660″, group=”plugdev”

Linux_event.py: /python2.4/linux_event.py

/usr/bin/hal_input vaatii pienen korjauksen. Ilman korjausta analogiakselien arvo on kiinteä 127 kunnes akselin arvo muuttuu ensimmäisen kerran. Muokattu versio täällä.

Kortin lataus:
loadusr hal_input 1f.4-2/input0 1f.4-2/input1
(Numerot riippuvat fyysisestä nimestä joka löytyy komennolla: cat /proc/bus/input/devices)

MPG konfiguraatioesimerkki


http://www.cnc-tekniikka.com/CNC-forum1 ... 94#msg3794

Windows XP SP2/SP3 & Muhi Plugin


Olen parantanut kortin soveltuvuutta Mach3:n kanssa käytettäväksi tekemällä kortille Mach-pluginin.

Tällä hetkellä 64 inputtia toimivat ja enkooderit sekä potentiometrit voidaan asettaa ohjaamaan mm. MACH3:n sisäistä MPG-laskuria sekä Feed ja Spindle Override -asetuksia. Huom. Mach3:n sisäinen MPG on enabloitava Machin asetuksista jotta se toimii.

Plugin on ladattavissa:
http://Muhi.m3p

Hallintaikkuna:


MPG-pyörän hallintaikkuna (aukeaa VAIHTO/TAB -napilla):



Pluginin konfigurointi toimimaan MPG -pyörän kanssa



Enkooderipyörän pitää olla sellainen joka tuottaa 5V TTL signaalia ja pitää löytyä seuraavat liitännät: +5V, GND, A ja B. Nämä kytketään muhi kortille vastaaviin liittimiin. A ja B voidaan liittää haluttuun enkooderikanavaan, esimerkiksi kanavalle yksi liittimiin E1A ja E1B. Joissain enkoodereissa on myös invertoidut lähdöt /A ja /B.

Asenna plugin Machiin kaksoisklikkaamalla sitä hiirellä. Liitä Muhi USB-porttiin ja käynnistä Mach. Jos kaikki on kunnossa näyttää status rivi seuraavalta:



Avaa Config Plugins -valikko:



Valitse Muhi -plugin:



Kokeile pyörittää enkooderipyörää. Lukuarvo juoksee sillä enkooderikanavalla johon enkooderi on kytketty. Muuta tarvittaessa 1X/2X-moodi -jumpperia, jotta saat mekaaniset pykälät vastaamaan yhden lukuarvon muutosta. Jumpperimuutos vaatii kortin irroittamisen USB-väylästä.

Valitse enkooderikanavan toiminnoksi MPG1. MPG2 ja 3 eivät toimi Machin niissä versioissa joita olen testannut. Toivottavasti tähän saadaan Machin tekijältä korjaus.



Mene Ports and Pins -valikkoon:



Aktivoi MPG1:



Ohjelman settings välilehdellä (Alt-6) pitäisi MPG1 arvon nyt muuttua enkooderia pyörittäessä.

Paina seuraavaksi Tab-nappia. Laita aukeavan ikkunan asetukset kuvan mukaisiksi:



Keltainen valo oikeaan kohtaan Jog Mode -napilla, vihreä valo Multi-Step -kohtaan ja MPG Axis Alt A -napilla x, y tai z akselille. Huomaa, että Multi-step on ainoa moodi jossa Mach liikkuttaa akselia yhtä paljon kuin enkooderia on liikutettu!

Jos liike jatkuu enkooderin pyörittämisen lopettamisen jälkeen, johtuu se siitä, että moottorin säädöt eivät salli riittävän nopeaa liikettä. Tätä voi korjata Config->Motor Tuning -valikosta jos vain ohjaimet ja moottorit sallivat nopeamman liikkeen.

Windows XP SP2/SP3 & Mach3 Keygrabber


kaikki napit näkyvät ja toimivat
potentiometrit toimivat kuin normi joystick (Potentiometrin voi asettaa esimerkiksi säätämään feed ratea tai spindle speediä.)
enkooderit eivät toimi kovin järkevästi Mach Keygrabberin kanssa.





Windowssin Controlpanel->Game Controllers ikkunassa enkoodereilla saa akseleita liikuteltua moitteetta, mutta Mach keygrabberissa tämä ei toimi juurikaan. Enkooderin askeleet eivät tunnistu hid napeiksi. Joystick akseliksi enkooderi tunnistuu, mutta käytännössä enkooderin nopea pyörittäminen vastaa tavallisen peliohjaimen hyvin pientä kallistusta pois keskiasennosta.



Yllä oleva kuva esittää kuinka potentiometri saadaan KeyGrabberin avulla säätämään spindle speediä, feed ratea tai muita säädetäviä arvoja. Esimerkiksi 20% gain asetuksella saadaan säätö 1-199%.

Piirilevy ja firmware


Piirilevy Eagle-muodossa ja mikrokontrollerin firmware: MuhiBoardFirmware.zip