Martzis USB HID Interface kortti Linux EMC:lle ja Mach 3:lle

Posted on Marraskuu 15th, 2008 in Uncategorized by martzis

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 Linux EMC (Enhanced Machine Controller) 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.

Martzis USB HID Interface

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:

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 EMC

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 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″
(Alä kopioi riviä suoraan tästä. “-merkki kopioituu luultavasti vääränä merkkinä rules tiedostoon ja sääntö ei sen takia toimi. Varmista että ” merkki tulee saman näköiseksi kuin tiedoston muillakin riveillä.)

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ä: http://martsola.com/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

MPG konfiguraatioesimerkki

http://www.cnc-tekniikka.com/CNC-forum1/index.php?topic=391.msg3794#msg3794

Ubuntu 6.06 & Python 2.4

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

Linux_event.py: http://martsola.com/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)

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://martsola.com/Muhi.m3p

Hallintaikkuna:
Mach3 Muhi Plugin

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

MPG-panel

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:

1.jpg

Avaa Config Plugins -valikko:

2.jpg

Valitse Muhi -plugin:

3.jpg

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.

4.jpg

Mene Ports and Pins -valikkoon:

5.jpg

Aktivoi MPG1:

6.jpg

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:

7.jpg

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

windowscpanel_muhi.jpg

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.

KeyGrabber

Yllä oleva kyva 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

Post a comment