BALLBAR DIY CON ARDUINO PARTE 1
En el mundo de la máquina herramienta disponer de un sistema de medición ballbar es muy importante para tener controlados como la máquina realiza los movimientos, a continuación detallo como construir uno de forma artesana y funcional, con una precisión aprox. 0.02 a 0.03 mm el material que nos hará falta, es un proyecto entretenido y el resultado final nos puede sorprender.
- Arduino UNO
- 4 pins para Arduino
- cable USB tipo A tipo B
- resistencia 200 ohm
- condensador 10 micros.
- led rojo
- cable apantallado 4 hilos 0.25mm 1,5 mt
- Regla medición o calibre digital
- base magnética
- Base rodamiento angular de 8 o 10 mm
Yo hice el proyecto con una regla de medición que se utiliza en taladros, pero se puede hacer perfectamente con un calibre o pie de rey LCD económico.
La conexión del calibre con el Arduino ya se hizo anteriormente, y es la que yo he utilizado, funciona bien tanto como el script de Arduino, solo hay que modificar unas líneas que detallaré más adelante.
Puedes encontrar información para realizar la conexión aquí, en inglés.
Recordad que muchos dispositivos de este tipo posen un puerto mini USB B, este puerto en realidad no es un USB y si lo conectas al ordenador romperás el calibre.
Utilizando una regla medición china que es igual que un calibre digital.
Conexión
Una vez que hemos conectado nuestro calibre a Arduino, cargamos el script en nuestra tarjeta Arduino utilizando él, idle de Arduino.
Página oficial https://www.arduino.cc/
Utiliza este script para que la lectura sea en milímetros y los datos más rápidos.
------------------------------------------------------------------------------------------------------------------
volatile int count = 0;
int total = 0;
char data[14];
int dataPin = 4;
int gauge = 0; // display of calipers reading
int linea = 1; // separa línea
int factor = 0;
unsigned long sec;
void setup(){
pinMode(dataPin, INPUT); //DATA line goes to Arduino digital pin 4 conectamos cable data
Serial.begin(115200);
delay(300);
//attachInterrupt(0,getBit,FALLING); //CLOCK digital pin 2 conectamos cable clock
}
void loop(){
int i,time;
for(i=2;i<14;i++){ //initialize array of bits to 0
data[i]=0;
}
do{time = pulseIn(2, LOW);} //repeatedly get the length of LOW pulses until one is longer than 130uS
while(time < 130);
attachInterrupt(0,getBit,FALLING); //start watching data line
while(count < 14){} //wait till all bits are filled in
detachInterrupt(0);
count = 0;
for(i=2;i<14;i++){
}
gauge = 1; //the following is code for converts least significant bit first binary to decminal, units are thousandths of an inch
factor = 2;
for(i=2; i<14; i++){
gauge += data[i]*factor;
factor = factor*2;
}
sec = millis();
Serial.print(gauge/100.0);// muestra 2 decimales
Serial.print(",");
Serial.print(linea+gauge/100);//Precision entera
Serial.print(",");
delay(30);
Serial.println();
}
void getBit(){
char sample = 1
; //variable used for "triple sampling"
if(digitalRead(dataPin) == HIGH) //here the dataPin is checked three times for a HIGH value.
sample++;
if(digitalRead(dataPin) == HIGH)
sample++;
if(digitalRead(dataPin) == HIGH)
sample++;
if(sample > 1) //if the pin was HIGH at least twice, a 1 is recorded
data[count] = 1;
count++; //increment count so main() knows when the entire string of bits is ready
}
-----------------------------------------------------------------------------------------------------------------
Una vez programado nuestro Arduino ya debería funcionar, podéis probar con el serial monitor de idle de Arduino, debéis conectar el apantallamiento del cable al GND del Arduino para que no oscilen los números del calibre, si no os funciona revisar los pins 2 y 4 del Arduino.
COMO VISUALIZAR LOS DATOS
Es este cometido, he probado muchos programas y de momento me quedo con un serial osciloscopio que es fácil de manejar y gratuito, se pueden utilizar otros.
Serial oscilloscope v1.5
Puedes encontrarlo aquí
Lo primero que hacemos es seleccionar nuestro puerto com, la velocidad Baud rate si se a utilizado el script anterior ya viene por defecto a 115700.
Si nos aparece esto es buena señal, pulsamos la tecla puesta a cero de nuestro calibre o regla de medir. Abrimos osciloscopio y elegimos canal 1 y 2.
Nos abre la pantalla osciloscopio y muestra canal 1 y canal 2
canal uno muestra medida en formato 0,00 y canal 2 muestra 1 digito, separada en un 1 mm.
Entre 0 y canal 2 hay una separación de 1 mm en fracciones de 0,05 mm. esto nos sirve de guía, la medición seguirá en todo momento podemos generar un archivo de puntos en formato XML, podemos aumentar rejilla, velocidad, colores y podemos salvar esos datos para no tener que configurar cada vez, en esta primera etapa no se muestra círculos ya lo veremos más adelante recordad que la medición de un ballbar en un círculo no varía, así que una línea recta nos valdrá de momento para ver el estado de nuestra máquina.
La parte mecánica es ya a elección de cada uno, yo utilizo una base magnética de reloj comparador unida a unos rodamientos basculantes en ambos extremos, esto funciona extremadamente bien, pero ojo no hay seguridad si mueves erróneamente la máquina lo rompes.
Una vez en máquina debemos representar un círculo para obtener la medición con nuestro ballbar este es un ejemplo de código G, se deben hacer medición en ambos sentidos, para observar diferencias, tome precauciones y ensaye en vacío.
Importante una vez colocado el ballabar en posición de medición a X -29.50 Y0 y con el cabezal en su sitio, pulse el botón 0 de su regla o calibre y asegúrese que el osciloscopio está activado.
G17 G90 (circunferencia de diametro 120 mm)
G1 F200 (velocidad de giro)
G1 X-59.5 F500 (poner el calibre a cero)
M01 (parada, requiere pulsar ciclo start)
G1 X-60. (índica comienzo de medición en el osciloscopio habrá un salto que indica comienzo)
G02 I60. (hace el círculo orario)
M01 (parada)
G03 I60. (hace el círculo anti orario)
G1 X-59.5 (desactiva medición, habrá otro escalón)
M30
NOTA:El programa g code puede no funcionar en determinadas máquinas, adáptelo siguiendo el mismo orden para medición ordenada.
Y de momento esto es todo, iremos incorporando nuevas prestaciones próximamente.
Ballbar diy arduino Parte 1
No hay comentarios:
Publicar un comentario