Taula de continguts:

Eina de mesurament de la velocitat d'alimentació CNC fabricada amb ferralla: 5 passos
Eina de mesurament de la velocitat d'alimentació CNC fabricada amb ferralla: 5 passos

Vídeo: Eina de mesurament de la velocitat d'alimentació CNC fabricada amb ferralla: 5 passos

Vídeo: Eina de mesurament de la velocitat d'alimentació CNC fabricada amb ferralla: 5 passos
Vídeo: Calefacció estacionària DIESEL ( REVISION COMPLETISIMA !! ) Hcalory 2024, Juliol
Anonim
Eina de mesurament de la velocitat d'alimentació CNC fabricada amb ferralla
Eina de mesurament de la velocitat d'alimentació CNC fabricada amb ferralla

Algú ha volgut mai mesurar la velocitat d'avanç real en una màquina CNC? Probablement no, fins que els bits de fresat estiguin intactes després d'un treball CNC … però quan comencen a trencar-se regularment, potser és el moment d'investigar. En aquest instructiu podeu seguir una missió per determinar la velocitat d’avanç real d’una màquina CNC. Cobrirà la part d’enginyeria inversa d’una impressora, el microprogramari arduino, el programari de PC i els resultats que vaig obtenir amb l’ajut dels meus companys i una paperera convertida en tresor.

Pas 1: materials, eines i dispositius que s’utilitzen per fer funcionar el projecte

Quan vaig començar a treballar-hi, vaig pensar una breu llista de les coses que necessitarem:

  • mecanisme de transport de la impressora desmuntat
  • eines manuals per modificar-ho
  • soldador, soldadura, cables
  • multímetre
  • oscil·loscopi o analitzador de lògica: això no és del tot necessari
  • Font d'alimentació
  • microscopi
  • Arduino nano + pinout
  • PC amb Arduino IDE, instal·lades eines de Visual Studio 2008 Express + MS Charting
  • (MPU6050: he acabat sense utilitzar-lo)
  • disposat a buscar tot allò que no sap fer

Al principi, vaig pensar que una placa MPU6050 em permetria mesurar la velocitat d’avanç dels tres eixos alhora. Tenint l’acceleròmetre dins, estava segur que la suma de les dades de l’acceleròmetre em donaria el valor desitjat: la velocitat en cada eix. Després de descarregar i modificar un fragment d'Arduino que mostrava dades brutes al monitor sèrie, vaig escriure un petit programa de PC a Visual Studio que processava les dades i les vaig representar en un gràfic per facilitar-ne la interpretació. Vaig haver de descarregar Visual Studio C # Express 2008 i les eines de gràfics per a això.

Després de codificar una estona i de buscar totes les coses que necessitava per a la comunicació en sèrie, vaig acabar amb els valors representats, però fos el que fes, no era útil. Els moviments petits però sobtats es traduirien en grans pujades, mentre que els viatges més llargs ni tan sols apareixerien a les llistes. Després de dos dies martellant el MPU6050, finalment em vaig donar per vençut i vaig recórrer a una altra cosa: el mecanisme de retroalimentació de la posició de la impressora desmuntada.

Pas 2: Coses de maquinari que calia fer

Coses de maquinari que calia fer
Coses de maquinari que calia fer
Coses de maquinari que calia fer
Coses de maquinari que calia fer
Coses de maquinari que calia fer
Coses de maquinari que calia fer
Coses de maquinari que calia fer
Coses de maquinari que calia fer

Enginyeria inversa

Per descomptat, el mecanisme de la impressora no tenia cap número de peça que pogués haver utilitzat per determinar les seves propietats exactes, hi havia una mica d’enginyeria inversa per arribar allà on volíem. Després d’examinar de prop el mecanisme i l’electrònica, vaig decidir que el primer ha de ser la identificació dels pins del sensor òptic. Això s'havia de fer per connectar tot el conjunt a l'Arduino. Vaig desmuntar la part de plàstic negre, vaig extreure el PCB i vaig examinar el sensor: hi havia escrit ROHM RPI-2150. Això em va fer feliç, l’esperança era elevada de trobar un full de dades. Malauradament, es tracta d'una peça antiga o personalitzada; no es trobava cap full de dades en cap lloc del web. Això volia dir que havia de prendre les coses en mans pròpies: sabent que aquests sensors solen tenir un LED d’infrarojos i dos fototransistors a l’interior, vaig agafar un multímetre, el vaig configurar en mode de mesura de díodes i vaig començar a mesurar entre pins.

Els pins d'alimentació solen ser fàcils de trobar: tindran condensadors a través d'ells i, generalment, es connecten amb grans traces als PCB-s. Les traces de terra sovint es connecten a diversos coixinets per a un millor rebuig del soroll.

No obstant això, els pins d'entrada i sortida no són tan trivials. Quan es mesura a través d’un díode, el mesurador mostrarà la seva tensió cap endavant en una direcció i la sobrecàrrega (infinita) a l’altra. Vaig poder identificar quatre díodes entre pins, vaig concloure que el quart díode havia de ser algun tipus de díode zener o TVS, ja que estava just entre els pins de potència del component. Localitzar l’emissor d’infrarojos era fàcil, hi havia una resistència 89R en sèrie. Em van quedar dues mesures de díode als dos pins restants, havien de ser els dos receptors.

Nota: Aquests sensors tenen dos receptors per poder determinar la direcció del moviment a més de determinar la posició comptant els impulsos. Aquestes dues formes d'ona de sortida estan desfasades a 90 °, s'utilitza per produir un impuls de compte enrere o de compte enrere. Seguint el nombre d’aquests polsos, es pot determinar la posició exacta del capçal d’impressió.

Quan es van localitzar l’emissor i els dos receptors, vaig soldar cables als seus pins, de manera que puc connectar el sensor amb l’Arduino. Abans de fer-ho, he subministrat el sensor amb 3,3 V, he estirat la tira entre el sensor un parell de vegades i he observat l’ona quadrada a les sortides. La freqüència de l'ona quadrada va variar amb la velocitat del moviment, i vaig concloure que el sistema de mesura ja està llest per connectar-se a l'Arduino.

Connexió de l'Arduino

Connectar aquest nou "sensor" és molt fàcil. Només heu de connectar les sortides del sensor a D2 i D3 (pins capaços d’interrompre!), I les línies d’alimentació i la codificació pot començar.

Pas 3: Codificació Arduino

Codificació Arduino
Codificació Arduino

El codi Arduino és bastant senzill. He assignat una funció que s'executa cada vegada que D2 veu una vora ascendent, aquesta és la funció que passa del codi Arduino que he adjuntat. Si mireu els senyals d’un codificador quadràtic, veureu això:

  • en una direcció, la fase A és lògica a totes les fases ascendents de la fase B.
  • a l'altra direcció, la fase A és lògicament baixa en totes les fases ascendents de la fase B.

Aquesta va ser la propietat del codificador que vaig aprofitar: atès que la funció elapse s'executa cada vegada que D2 té una vora ascendent, acabo d'escriure un si això augmenta un comptador quan D3 és alt i el decrementa quan D3 és baix. Això va funcionar al primer intent, vaig enviar el valor del comptador al monitor sèrie i el vaig veure augmentar / disminuir quan vaig moure el capçal de la impressora a l’eix.

En resum, el firmware fa el següent a la funció de bucle:

  1. comprova la memòria intermèdia de recepció de sèrie per si hi ha dades entrants
  2. si hi ha dades entrants, comproveu si és un '1' o no
  3. si és un '1', vol dir que el programari de l'ordinador sol·licita el valor del comptador
  4. envieu el valor del comptador al PC via sèrie
  5. tornar a començar a la 1.

Amb això, la pilota ja està al camp del programari de PC. Entrem-hi!

Pas 4: programari Visual Studio C #

El propòsit del programa VS C # era desplaçar la càrrega computacional de l’Arduino al PC. Aquest programari rep les dades que proporciona Arduino, calcula i mostra la velocitat en forma de gràfic.

El que vaig fer per primera vegada va ser buscar a Google com es feia la comunicació en sèrie en C #. Vaig trobar molta informació a MSDN.com juntament amb un bon exemple, i després vaig llançar allò que no necessitava, bàsicament tot, excepte la part de lectura. Vaig configurar el port COM i la velocitat perquè coincidís amb el de l'Arduino, després vaig provar-ho i vaig deixar tot el que venia al port sèrie en un quadre de text de diverses línies.

Després de llegir els valors, només podria fer servir les funcions readto & split per aïllar unes mesures entre si i dels caràcters delimitadors. Aquests es van representar en un control de gràfics i els valors van començar a aparèixer a la pantalla.

Si no podeu veure el control de gràfics a la vostra caixa d’eines VS, podeu cercar el problema i trobar la solució aquí (busqueu la resposta núm. 1): enllaç

El principi de mesura

Per trobar la connexió entre el nombre de recomptes i la distància que recorre el cap, hem posat a zero el valor del recompte, hem mogut el capçal de la impressora 100 mm a mà i hem observat el canvi en els recomptes. Finalment vam arribar a la proporció següent: 1 recompte = 0,177094 mm.

Com que podem consultar la distància i podem mesurar el temps entre les mostres, podem calcular la velocitat a la qual passa el desplaçament de posició: podem calcular la velocitat.

Hi ha un temps aproximat de programari de 50 ms gràcies a TMR0, però hem observat que aquests temps no eren massa precisos. De fet, després d'algunes mesures de velocitat del programari, vam trobar que els 50 ms cronometrats no són en absolut 50 ms. Això significava que les mostres no es prenien a intervals fixos, de manera que el càlcul de velocitat tampoc no podia utilitzar una base de temps fixa. Un cop vam trobar aquest problema, va ser fàcil continuar: vam agafar la diferència de distància i la diferència de temps i vam calcular la velocitat com a D_distància / D_ temps (en lloc de D-distància / 50 ms).

A més, com que la nostra equació retornaria la velocitat en unitats de mm / 50 ms, hem de multiplicar-la per 1200 per obtenir la distància que recorreria el cap en un minut, en [mm / minut].

Nota: el programari de control de molí CNC Mach 3 defineix les velocitats d’avanç en unitats de [mm / minut]

Filtratge

A partir d’aquest moment, les mesures semblaven ser bastant precises, però hi havia una mica de soroll al senyal mesurat. Vam sospitar que això es deu a inconsistències mecàniques a l'eix, l'acoblament de l'eix, etc., així que vam decidir filtrar-lo, per obtenir un bon valor mitjà del que es mesura.

Fins ajustos al programari

Per tal de canviar la freqüència de mostreig i la freqüència de filtratge durant l'execució, es van afegir barres de desplaçament, una per a cadascuna. També es va introduir la possibilitat d’amagar les trames.

Pas 5: Resultats

Resultats
Resultats
Resultats
Resultats
Resultats
Resultats
Resultats
Resultats

Un cop preparades les peces de maquinari i programari, vam realitzar tres conjunts de mesures amb el programari mach 3 + my, podeu veure els resultats a les imatges adjuntes. Els experiments posteriors van mostrar una millor precisió, amb un augment de la velocitat de filtratge i de mostreig. Els gràfics mostren la velocitat mesurada amb vermell continu i la mitjana amb blau amb punts.

Dit això, sembla que Mach 3 gestiona aquests paràmetres de velocitat amb força precisió, però ara ho sabem amb seguretat:)

Espero que us hagi agradat aquest breu instructiu sobre enginyeria inversa i convertir l'aigua en vi.

Ànims!

Recomanat: