Cuprins:

Instrument de măsurare a vitezei de avans CNC fabricat din resturi: 5 pași
Instrument de măsurare a vitezei de avans CNC fabricat din resturi: 5 pași

Video: Instrument de măsurare a vitezei de avans CNC fabricat din resturi: 5 pași

Video: Instrument de măsurare a vitezei de avans CNC fabricat din resturi: 5 pași
Video: Foxalien Vasto XXL Cnc Router - Ballscrews, Linear Rails Build, Test & Review 2024, Decembrie
Anonim
Instrument de măsurare a vitezei de avans CNC fabricat din resturi
Instrument de măsurare a vitezei de avans CNC fabricat din resturi

A vrut cineva vreodată să măsoare viteza reală de alimentare pe o mașină CNC? Probabil că nu, până când biții de frezare nu sunt intacti după o lucrare CNC … dar când încep să se rupă în mod regulat, poate că este timpul să investigăm. În acest instructable puteți urmări o căutare în determinarea vitezei reale de alimentare a unei mașini CNC. Acesta va acoperi partea de inginerie inversă a unei imprimante, firmware-ul arduino, software-ul pentru PC și rezultatele obținute cu ajutorul colegilor mei, precum și un coș de gunoi transformat în comoară.

Pasul 1: Materiale, instrumente, dispozitive utilizate pentru executarea proiectului

Când am început să lucrez la acest lucru, am gândit o scurtă listă a lucrurilor de care vom avea nevoie:

  • mecanism de transport a imprimantei dezasamblat
  • unelte manuale pentru a modifica asta
  • fier de lipit, lipit, fire
  • multimetru
  • osciloscop sau analizor logic - acest lucru nu este absolut necesar
  • alimentare electrică
  • microscop
  • Arduino nano + pinout
  • PC cu Arduino IDE, Visual Studio 2008 Express + MS Charting instrumente instalate
  • (MPU6050 - Am ajuns să nu folosesc acest lucru)
  • dispus să căutați tot ce nu știți să faceți

La început, am crezut că o placă MPU6050 îmi va permite să măsoară viteza de avans pe toate cele trei axe simultan. Având accelerometrul în interior, eram sigur că însumarea datelor accelerometrului îmi va oferi valoarea dorită - viteza pe fiecare axă. După descărcarea și modificarea unui fragment Arduino care afișa date brute pe monitorul serial, am scris un mic program de calculator în Visual Studio care prelucra datele și le-am trasat pe o diagramă pentru o interpretare mai ușoară. A trebuit să descarc atât Visual Studio C # Express 2008, cât și instrumentele de diagramă pentru acest lucru.

După ce am codificat o vreme și am căutat toate lucrurile de care aveam nevoie pentru comunicarea în serie, am ajuns cu valorile reprezentate, dar indiferent de ce am făcut, nu a fost utilizabil. Mișcările mici, dar bruște, ar duce la creșteri uriașe, în timp ce călătoriile mai lungi nici măcar nu ar apărea pe grafice. După două zile de ciocănit cu MPU6050, am renunțat în cele din urmă și m-am orientat spre altceva - mecanismul de feedback de poziție al unei imprimante dezasamblate.

Pasul 2: Lucruri hardware care trebuiau realizate

Lucruri hardware care trebuiau realizate
Lucruri hardware care trebuiau realizate
Lucruri hardware care trebuiau realizate
Lucruri hardware care trebuiau realizate
Lucruri hardware care trebuiau realizate
Lucruri hardware care trebuiau realizate
Lucruri hardware care trebuiau realizate
Lucruri hardware care trebuiau realizate

Inginerie inversă

Desigur, mecanismul imprimantei nu avea niciun număr de piesă pe care să-l fi putut folosi pentru a-i determina proprietățile exacte, era nevoie de puțină inginerie inversă pentru a ajunge unde doream. După ce am examinat îndeaproape mecanismul și electronica, am decis că primul lucru trebuie să fie identificarea pinilor senzorului optic. Acest lucru trebuia făcut pentru a interfața totul cu Arduino. Am dezasamblat partea neagră din plastic, am extras PCB-ul și am examinat senzorul: avea pe acesta scris ROHM RPI-2150. Asta m-a bucurat, speranța a fost mare că voi găsi o fișă tehnică. Din păcate, aceasta este fie o piesă veche, fie personalizată - nu a fost găsită nicio fișă de date nicăieri pe web. Acest lucru a însemnat că a trebuit să iau lucrurile în propriile mâini: știind că acești senzori au de obicei un LED în infraroșu și doi foto-tranzistori în interior, am luat un multimetru, l-am setat în modul de măsurare a diodei și am început să măsoară între pini.

Pinii de alimentare sunt de obicei ușor de găsit - vor avea condensatori peste ei și sunt de obicei conectați cu urme largi pe PCB-uri. Urmele la sol sunt adesea conectate la mai multe plăcuțe pentru o respingere mai bună a zgomotului.

Cu toate acestea, pinii de intrare și de ieșire nu sunt atât de banali. La măsurarea pe o diodă, contorul își va arăta tensiunea înainte într-o direcție și supraîncărcarea (infinită) în cealaltă. Am reușit să identific patru diode între pini, am concluzionat că a patra diodă trebuie să fie un fel de zener sau diodă TVS, deoarece era chiar între pinii de putere ai componentei. Localizarea emițătorului cu infraroșu a fost ușoară, a existat un rezistor 89R în serie cu acesta. Am rămas cu două măsurători ale diodei pe restul de doi pini, aceștia trebuiau să fie cei doi receptori.

Notă: Acești senzori au două receptoare pentru a putea determina direcția de mișcare pe lângă determinarea poziției prin numărarea impulsurilor. Aceste două forme de undă de ieșire sunt defazate la 90 °, aceasta este utilizată pentru a produce un impuls de numărare înapoi sau un impuls de numărare înapoi. Urmărind numărul acestor impulsuri, se poate determina poziția exactă a capului de imprimare.

Când emițătorul și cele două receptoare au fost localizate, am lipit fire pe pinii lor, astfel încât să pot interfața senzorul cu Arduino. Înainte de a face acest lucru, am furnizat senzorul cu 3.3V, am tras banda de senzor de două ori și am observat unda pătrată pe ieșiri. Frecvența undei pătrate a variat cu viteza de mișcare și am ajuns la concluzia că sistemul de măsurare este acum gata să fie conectat la Arduino.

Conectarea Arduino

Conectarea acestui nou „senzor” este foarte ușoară. Doar conectați ieșirile senzorului la D2 și D3 (pini care pot întrerupe!), Și la liniile de alimentare, iar codarea poate începe.

Pasul 3: Codificare Arduino

Codificare Arduino
Codificare Arduino

Codul Arduino este destul de simplu. Am atribuit o funcție care se execută de fiecare dată când D2 vede o margine ascendentă, aceasta este funcția de expirare din codul Arduino pe care l-am atașat. Dacă aruncați o privire asupra semnalelor unui codificator pătratic, veți vedea acest lucru:

  • într-o direcție, faza A este logică ridicată pe fiecare margine ascendentă a fazei B.
  • în cealaltă direcție, faza A este logică scăzută pe fiecare margine ascendentă a fazei B.

Aceasta a fost proprietatea codificatorului pe care l-am profitat: deoarece funcția elapse se execută de fiecare dată când D2 are o margine ascendentă, tocmai am scris un dacă crește un contor când D3 este ridicat și îl scade când D3 este scăzut. Acest lucru a funcționat la prima încercare, am trimis valoarea contorului pe monitorul serial și am urmărit cum crește / scade când am mutat capul imprimantei pe arbore.

Pe scurt, firmware-ul face următorul lucru în funcția de buclă:

  1. verifică tamponul de recepție serial pentru orice date primite
  2. dacă există date primite, verificați dacă este sau nu un „1”
  3. dacă este „1”, înseamnă că software-ul computerului solicită valoarea contorului
  4. trimiteți valoarea contorului către PC prin serial
  5. începe de la 1.

Cu aceasta, mingea se află acum în terenul software-ului computerului. Să intrăm în asta!

Pasul 4: software Visual Studio C #

Scopul programului VS C # a fost de a muta povara de calcul de la Arduino la PC. Acest software primește datele furnizate de Arduino, calculează și afișează viteza sub forma unui grafic.

Ceea ce am făcut mai întâi a fost să fac google pe cum să fac comunicarea în serie în C #. Am găsit o mulțime de informații bune pe MSDN.com împreună cu un exemplu bun, apoi am aruncat doar ceea ce nu aveam nevoie - practic totul, cu excepția părții de lectură. Am configurat portul COM și viteza pentru a se potrivi cu cea a Arduino, apoi i-am dat câteva încercări și am aruncat tot ce a venit pe portul serial într-o casetă de text cu mai multe linii.

După ce valorile au fost citite, aș putea folosi doar funcțiile readto & split pentru a izola o măsurătoare una de alta și de caractere delimitatoare. Acestea au fost trasate pe un control Chart, iar valorile au început să apară pe ecran.

Dacă nu puteți vedea controlul Diagramă în caseta de instrumente VS, puteți căuta problema Google și găsi soluția aici (căutați răspunsul nr. 1): link

Principiul de măsurare

Pentru a găsi legătura dintre numărul de numărări și distanța pe care o parcurge capul, am redus valoarea de numărare, am mutat capul imprimantei cu 100 de mână și am observat schimbarea numărărilor. În cele din urmă am venit cu următoarea proporție: 1 număr = 0.17094mm.

Deoarece putem interoga distanța și putem măsura timpul dintre eșantioane, putem calcula rata la care se întâmplă schimbarea poziției - putem calcula viteza!

Există o sincronizare software aproximativă de 50 ms datorită TMR0, dar am observat că aceste temporizări nu au fost prea exacte. De fapt, după câteva măsurători ale vitezei software, am constatat că 50ms cronometrat nu este deloc 50ms. Aceasta a însemnat că eșantioanele nu au fost luate la intervale fixe, astfel încât calculul vitezei nu a putut utiliza nici o bază de timp fixă. Odată ce am găsit această problemă, a fost ușor să mergem mai departe: am luat diferența de distanță și diferența de timp și am calculat viteza ca D_distance / D_time (în loc de D-distance / 50ms).

De asemenea, deoarece ecuația noastră ar întoarce viteza în unități de mm / 50ms, trebuie să înmulțim aceasta cu 1200 pentru a obține distanța pe care ar merge capul într-un minut, în [mm / minut].

Notă: software-ul de control al morii CNC Mach 3 definește viteza de avans în unități de [mm / minut]

Filtrare

Din acest moment, măsurătorile păreau a fi destul de exacte, dar pe semnalul măsurat se auzea ceva zgomot. Am bănuit că acest lucru se datorează inconsecvențelor mecanice ale arborelui, cuplajului arborelui etc., așa că am decis să îl filtrăm, pentru a obține o valoare medie frumoasă a ceea ce este măsurat.

Ajustări fine ale software-ului

Pentru a modifica rata de eșantionare și rata de filtrare în timpul rulării, s-au adăugat bare de defilare - câte una pentru fiecare. De asemenea, a fost introdusă și capacitatea de a ascunde parcelele.

Pasul 5: Rezultate

Rezultate
Rezultate
Rezultate
Rezultate
Rezultate
Rezultate
Rezultate
Rezultate

După ce componentele hardware și software au fost gata, am efectuat trei seturi de măsurători cu software-ul mach 3 + my, puteți vedea rezultatele pe imaginile atașate. Experimentele ulterioare au arătat o precizie mai bună, cu atât rata de filtrare, cât și rata de eșantionare crescută. Graficele arată viteza măsurată cu roșu continuu, iar media cu albastru punctat.

Acestea fiind spuse, se pare că Mach 3 gestionează aceste setări de viteză destul de precis, dar acum știm sigur:)

Sper că ți-a plăcut acest scurt instructabil despre inginerie inversă și transformarea apei în vin!

Noroc!

Recomandat: