Talaan ng mga Nilalaman:

Tool sa Pagsukat ng rate ng feed ng CNC na Ginawa Mula sa Scrap: 5 Mga Hakbang
Tool sa Pagsukat ng rate ng feed ng CNC na Ginawa Mula sa Scrap: 5 Mga Hakbang

Video: Tool sa Pagsukat ng rate ng feed ng CNC na Ginawa Mula sa Scrap: 5 Mga Hakbang

Video: Tool sa Pagsukat ng rate ng feed ng CNC na Ginawa Mula sa Scrap: 5 Mga Hakbang
Video: Pwede ba pang miss universe #MissIgado 2024, Nobyembre
Anonim
Ang Tool sa Pagsukat ng rate ng feed ng CNC na Ginawa Mula sa Scrap
Ang Tool sa Pagsukat ng rate ng feed ng CNC na Ginawa Mula sa Scrap

Mayroon bang nagnanais na sukatin ang aktwal na feed-rate sa isang CNC machine? Marahil hindi, hanggang sa ang paggiling ng mga piraso ay buo pagkatapos ng isang trabaho sa CNC … ngunit kapag nagsimula silang masira sa isang regular na batayan, marahil oras na upang magsiyasat. Sa itinuturo na ito maaari mong sundin ang isang pakikipagsapalaran sa pagtukoy ng totoong feed-rate ng isang makina ng CNC. Saklaw nito ang bahagi ng reverse-engineering ng isang printer, arduino firmware, PC software, at ang mga resulta na nakuha ko sa tulong ng aking mga kasamahan, at ang isang basurahan ay naging kayamanan.

Hakbang 1: Mga Materyales, Tool, Device na Ginamit upang Mapatakbo ang Project

Nang magsimula akong magtrabaho dito, naisip ko ang isang maikling listahan ng mga bagay na kakailanganin namin:

  • disassembled na mekanismo ng karwahe ng printer
  • mga tool sa kamay upang mai-tweak iyon
  • soldering iron, solder, wires
  • multimeter
  • oscilloscope o logic analyzer - hindi ito ganap na kinakailangan
  • supply ng kuryente
  • mikroskopyo
  • Arduino nano + pinout
  • Ang PC na may Arduino IDE, na-install na mga tool ng Visual Studio 2008 Express + MS Charting
  • (MPU6050 - Napunta ako sa hindi paggamit nito)
  • handang mag-browse para sa lahat ng bagay na hindi mo alam kung paano gawin

Sa simula, naisip ko na ang isang board ng MPU6050 ay papayagan akong sukatin ang feed-rate sa lahat ng tatlong palakol nang sabay-sabay. Ang pagkakaroon ng accelerometer sa loob nito, sigurado ako na ang pag-buod ng data ng accelerometer ay magbibigay sa akin ng nais na halaga - ang bilis ng bawat axis. Matapos ang pag-download at pagbabago ng isang Arduino snippet na ipinapakita ang hilaw na data sa serial monitor, nagsulat ako ng isang maliit na programa ng PC sa Visual Studio na nagproseso ng data, at inilagay ito sa isang tsart para sa mas madaling interpretasyon. Kailangan kong i-download ang parehong Visual Studio C # Express 2008 at ang mga tool sa pag-chart para dito.

Matapos ang pag-coding ng ilang sandali at pagtingin sa lahat ng mga bagay na kailangan ko para sa serial na komunikasyon, natapos ko ang mga halagang binubuo, ngunit anuman ang gawin ko, hindi ito magagamit. Ang maliliit ngunit biglaang paggalaw ay magreresulta sa napakalaking mga spike, habang ang mas mahabang paglalakbay ay hindi rin magpapakita sa mga tsart. Matapos ang dalawang araw na pagmamartilyo ng MPU6050, sa wakas ay sumuko ako at lumipat sa ibang bagay - isang mekanismo ng feedback na posisyon ng isang disassembled na printer.

Hakbang 2: Hardware Stuff Na Kailangan Gawin

Hardware Stuff Na Kailangang Gawin
Hardware Stuff Na Kailangang Gawin
Hardware Stuff Na Kailangang Gawin
Hardware Stuff Na Kailangang Gawin
Hardware Stuff Na Kailangang Gawin
Hardware Stuff Na Kailangang Gawin
Hardware Stuff Na Kailangang Gawin
Hardware Stuff Na Kailangang Gawin

Reverse Engineering

Siyempre, ang mekanismo ng printer ay walang bahagi na numero na maaari kong magamit upang matukoy ang eksaktong mga katangian nito, kailangan ng kaunting reverse-engineering upang makarating sa gusto namin. Matapos masusing suriin ang mekanismo at ang electronics, napagpasyahan kong ang unang bagay ay dapat na makilala ang mga pin ng optical sensor. Ito ay kailangang gawin upang mai-interface ang buong bagay sa Arduino. Inalis ko ang bahagi ng itim na plastik, kinuha ang PCB, at sinuri ang sensor: mayroon itong nakasulat na ROHM RPI-2150. Na napasaya ako, mataas ang pag-asa na makakahanap ako ng isang datasheet. Sa kasamaang palad ito ay alinman sa isang luma, o isang pasadyang bahagi - walang datasheet na matatagpuan kahit saan sa web. Nangangahulugan ito na kailangan kong gawin ang mga bagay sa sariling mga kamay: alam na ang mga sensor na ito ay karaniwang may isang infrared LED at dalawang mga photo-transistor sa loob, kinuha ko ang isang multimeter, itinakda ito sa diode mode ng pagsukat, at nagsimulang magsukat sa pagitan ng mga pin.

Ang mga power pin ay karaniwang madaling hanapin - magkakaroon sila ng mga capacitor sa kabuuan ng mga ito, at kadalasang konektado sila sa malawak na mga bakas sa PCB-s. Ang mga bakas sa lupa ay madalas na konektado sa maraming pad para sa mas mahusay na pagtanggi sa ingay.

Ang input at output pin ay hindi gaanong mahalaga, gayunpaman. Kapag sumusukat sa isang diode, ipapakita ng metro ang pasulong na boltahe nito sa isang direksyon, at labis na karga (walang katapusan) sa isa pa. Nakilala ko ang apat na diode sa pagitan ng mga pin, napagpasyahan ko na ang ika-apat na diode ay dapat isang uri ng zener o TVS diode, dahil ito ay nasa pagitan ng mga power pin ng sangkap. Ang paghahanap ng infrared emitter ay madali, mayroong isang 89R risistor na serye kasama nito. Naiwan ako sa dalawang sukat ng diode sa natitirang dalawang pin, iyon ang dapat na dalawang tatanggap.

Tandaan: Ang mga sensor na ito ay mayroong dalawang mga tatanggap upang matukoy ang direksyon ng paggalaw bilang karagdagan sa pagtukoy ng posisyon sa pamamagitan ng pagbibilang ng mga pulso. Ang dalawang output na alon na ito ay 90 ° wala sa yugto, ginagamit ito upang makabuo ng isang count-up o isang count-down na pulso. Sa pamamagitan ng pagsunod sa bilang ng mga pulso na ito, matutukoy ang eksaktong posisyon ng pag-print ng ulo.

Kapag ang emitter at ang dalawang mga tagatanggap ay matatagpuan, nag-solder ako ng mga wire sa kanilang mga pin, upang ma-interface ko ang sensor sa Arduino. Bago gawin iyon, inalok ko ang sensor na may 3.3V, hinila ang strip sa pagitan ng sensor nang maraming beses, at naobserbahan ang square square sa mga output. Ang dalas ng square square ay magkakaiba sa bilis ng paggalaw, at napagpasyahan kong ang sistema ng pagsukat ay handa na ngayong ikonekta sa Arduino.

Pagkonekta sa Arduino

Ang pagkonekta sa bagong 'sensor' na ito ay napakadali. Ikonekta lamang ang mga output ng sensor sa D2 at D3 (makagambala na may kakayahang mga pin!), At ang mga linya ng supply ng kuryente, at maaaring magsimula ang pag-coding.

Hakbang 3: Arduino Coding

Arduino Coding
Arduino Coding

Ang Arduino code ay medyo simple. Nagtalaga ako ng isang pagpapaandar na nagpapatupad sa bawat oras na nakikita ng D2 ang isang tumataas na gilid, ito ang pagpapaandar ng elaps mula sa inilagay kong Arduino code. Kung titingnan mo ang mga signal ng isang quadratic encoder, makikita mo ito:

  • sa isang direksyon phase A ay mataas ang lohika sa bawat yugto B tumataas na gilid
  • sa kabilang direksyon phase A ay mababa ang lohika sa bawat yugto ng B na tumataas ang gilid

Ito ang pag-aari ng encoder na sinamantala ko: dahil ang elaps function ay nagpapatupad sa tuwing may tumataas na gilid ang D2, nagsulat lamang ako ng kung magpapataas ng counter kapag ang D3 ay mataas, at mababawasan ito kapag mababa ang D3. Gumana ito sa unang pagsubok, ipinadala ko ang halaga ng counter sa serial monitor, at pinanood itong tumaas / bumaba nang ilipat ko ang ulo ng printer sa baras.

Mahabang kwento, ginagawa ng firmware ang sumusunod na bagay sa pag-andar ng loop:

  1. sinusuri ang serial na makatanggap ng buffer para sa anumang papasok na data
  2. kung may papasok na data, suriin kung ito ay isang '1' o hindi
  3. kung ito ay isang '1', nangangahulugan ito na ang PC software ay humihiling ng counter na halaga
  4. ipadala ang halaga ng counter sa PC sa pamamagitan ng serial
  5. magsimula muli sa ika-1.

Sa pamamagitan nito, ang bola ay nasa korte ng PC software ngayon. Pasok tayo diyan!

Hakbang 4: Visual Studio C # Software

Ang layunin ng programa ng VS C # ay upang ilipat ang computational na pasanin mula sa Arduino patungong PC. Natatanggap ng software na ito ang data na ibinibigay ng Arduino, kinukwenta at ipinapakita ang bilis sa anyo ng isang grap.

Ang una kong ginawa ay ang google kung paano gumawa ng serial komunikasyon sa C #. Natagpuan ko ang maraming magagandang impormasyon sa MSDN.com kasama ang isang magandang halimbawa, pagkatapos ay itinapon ko lamang ang hindi ko kailangan - karaniwang lahat maliban sa bahagi ng pagbabasa. Inayos ko ang COM port at ang bilis upang tumugma sa Arduino, pagkatapos ay binigyan lamang ito ng ilang pagsubok at itinapon ang lahat na dumating sa serial port sa isang multi-line text box.

Matapos basahin ang mga halaga, maaari ko lang gamitin ang readto & split na mga function upang ihiwalay ang isang sukat mula sa bawat isa, at mula sa mga character na delimiter. Ang mga ito ay naka-plot sa isang kontrol sa Tsart, at nagsimulang lumitaw ang mga halaga sa screen.

Kung hindi mo makita ang kontrol ng Tsart sa iyong toolbox ng VS, maaari mong i-google ang problema at hanapin ang solusyon dito (hanapin ang sagot # 1): link

Ang prinsipyo ng pagsukat

Upang makita ang koneksyon sa pagitan ng bilang ng mga bilang at distansya na naglalakbay ang ulo, nilagyan namin ng zero ang halaga ng bilang, inilipat ang ulo ng printer ng 100mm sa pamamagitan ng kamay, at sinusunod ang pagbabago sa mga bilang. Sa wakas ay nakarating kami sa sumusunod na proporsyon: 1 count = 0.17094mm.

Dahil maaari naming query ang distansya at maaari naming sukatin ang oras sa pagitan ng mga sample, maaari naming kalkulahin ang rate kung saan nangyari ang shift ng posisyon - maaari nating kalkulahin ang bilis!

Mayroong isang magaspang na tiyempo ng software na 50ms salamat sa TMR0, ngunit napansin namin na ang mga timing na ito ay hindi masyadong tumpak. Sa katunayan, pagkatapos ng ilang mga pagsukat sa bilis ng software, nalaman namin na ang nag-time na 50ms ay hindi 50ms talaga. Nangangahulugan ito na ang mga sample ay hindi kinuha sa nakapirming agwat, kaya't ang pagkalkula ng bilis ay hindi maaaring gumamit ng isang nakapirming time-base din. Kapag nahanap namin ang isyung ito, madali itong magpatuloy: kinuha namin ang pagkakaiba sa distansya at pagkakaiba sa oras at kinakalkula ang bilis bilang D_distance / D_time (sa halip na D-distansya / 50ms).

Gayundin, dahil ibabalik ng aming equation ang bilis sa mga yunit ng mm / 50ms, kailangan naming i-multiply ito ng 1200 upang makuha ang distansya na pupunta ang ulo sa isang minuto, sa [mm / minuto].

Tandaan: ang Mach 3 CNC mill na kumokontrol ng software ay tumutukoy sa mga feed-rate sa mga yunit ng [mm / minuto]

Pagsala

Mula sa puntong ito, ang mga sukat ay tila medyo tumpak, ngunit mayroong ilang ingay sa sinusukat na signal. Pinaghihinalaan namin na ito ay dahil sa hindi pagkakapare-pareho ng mekanikal sa baras, pagkabit ng baras, atbp, kaya nagpasya kaming i-filter ito, upang makakuha ng isang magandang halaga ng halaga ng kung ano ang sinusukat.

Mga magagandang pagsasaayos sa software

Upang mabago ang rate ng sample at rate ng filter habang runtime, idinagdag ang mga scrollbars - isa para sa bawat isa. Gayundin, ipinakilala din ang kakayahang itago ang mga plots.

Hakbang 5: Mga Resulta

Mga Resulta
Mga Resulta
Mga Resulta
Mga Resulta
Mga Resulta
Mga Resulta
Mga Resulta
Mga Resulta

Matapos ang mga bahagi ng hardware at software ay handa na, nagpatakbo kami ng tatlong mga hanay ng mga sukat sa mach 3 + aking software, maaari mong makita ang mga resulta sa mga nakalakip na larawan. Nagpakita ang mga eksperimento sa paglaon ng mas mahusay na kawastuhan, na may parehong rate ng filter at sample na tumaas. Ipinapakita ng mga plots ang sinusukat na bilis na may solidong pula, at ang average na may dash-dotted blue.

Sinabi na, mukhang pinangangasiwaan ng Mach 3 ang mga setting ng bilis na ito nang tumpak, ngunit alam na alam natin ngayon:)

Inaasahan kong nasiyahan ka sa maikling turo na ito tungkol sa reverse-engineering at ginawang alak ang tubig!

Cheers!

Inirerekumendang: