Skip to main content

Sensorizando maquina de impactos con Arduino

Sensorizando maquina de impactos con Arduino

Algunas de las propiedades de las maquinas de impactos deben verificarse para ver que siguen en sus rangos antes de usarla en algún ensayo

Muchas maquinas deben ser testeadas de vez en cuando para confirmar que los valores de fabrica permanecen entre los limites establecidos. Esta semana pasada me encargaron confirmar estos valores de una maquina de impactos con los valores establecidos en el Anexo A de la norma ISO 140-7:1998, una norma para la mediciones acústicas en edificaciones.

Una maquina de impactos tiene es una cosa como lo de la imagen de arriba pero del que yo he tomado medidas es esta de abajo.

 


El experimento de la izquierda mide la distancia entre un sensor de ultrasonidos y el uno de los martillos, lo cual me ha valido para estudiar la gráfica de distancia contra tiempo, el experimento de la derecha mide con un sensor de infrarrojos la revoluciones por minuto del cigueñal de la maquina, lo cual sirve para inferir el numero de golpeos del martillo por minuto, y el experimento de abajo sirve para medir la distancia de dos martillos con respecto de dos sensores simultaneamente para medir el tiempo entre imapctos de martillos consecutivos.

En la norma se especifica que:

  1. El tiempo medio entre impactos debe ser de 100 ms con un margen de mas menos 5 ms.
  2. El tiempo entre el impacto de un martillo y su elevación debe ser menor a 80 ms.
  3. El tiempo entre el impacto de dos martillos consecutivos debe ser de 100 ms mas menos 20 ms.

¿Como lo he hecho?

Usando un microcontrolador de Arduino con un código hecho para la ocasión que recoge la infromación de los sensores y la vuelca a un archivo de texto. También hay que afinar la precisión de los sensores para que respondan a lo que se quiere que respondan, especialmente el sensor de infrarrojos del cual hay que asegurarse que reciba la luz rebotada en una superficie blanca pero no en una superficie negra.

El tiempo medio entre impactos lo he medido indirectamente midiendo la velocidad de giro del cigueñal, sabiendo que por cada vuelta de cigueñal hay 10 golpes de martillo es sencillo saber el tiempo medio entre impactos.

El código de Arduino para este experimento es el siguiente, al contrario de mis otros códigos este está escrito en C y no en Python.

unsigned long myTime;
int wave;
int sensor = 3;

void setup() {
Serial.begin(9600);
pinMode(sensor, INPUT);
}

void loop() {
wave = digitalRead(sensor);
myTime = millis();
Serial.print(myTime);
Serial.print(" ");
Serial.println(wave);
delay(1);
}

Ejecutando este código tendría impresor por el monitor serial de la pantalla el tiempo en milisegundos y la señal binaria del receptor de infrarrojos, una vez tenía este archivo listo haré los calculos en un Notebook de Jupyter con Python.

El codigo de abajo es el que usado para medir los requisitos segundo y tercero, especificamente para el tercer los experimentos de los fotos.

int trigPin4 = 8;
int echoPin4 = 9;
int trigPin5 = 10;
int echoPin5 = 11;

unsigned long myTime;

void setup()
{
Serial.begin(9600);
pinMode(trigPin4, OUTPUT);
pinMode(echoPin4, INPUT);
pinMode(trigPin5, OUTPUT);
pinMode(echoPin5, INPUT);
}

void loop()
{
myTime = millis();

long duration4, distance4;
digitalWrite(trigPin4, LOW);
delayMicroseconds(2);
digitalWrite(trigPin4, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin4, LOW);
duration4 = pulseIn(echoPin4, HIGH);
distance4 = (duration4 / 2) / 2.91;

long duration5, distance5;
digitalWrite(trigPin5, LOW);
delayMicroseconds(2);
digitalWrite(trigPin5, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin5, LOW);
duration5 = pulseIn(echoPin5, HIGH);
distance5 = (duration5 / 2) / 2.91;

Serial.print(myTime);
Serial.print(" ");
Serial.print(distance4);
Serial.print(" ");
Serial.println(distance5);

}

Los es quemas de ambos circuitos son como los que se enseñan abajo, el de lz izquierda mide la distancia y habría que añadirle otro snesor y el de la derecha mide si una superficie refleja o no una luz infrarroja.











Tratamiento de la señal

Los datos crudos consistían en miles de lineas de texto así que hace falta tratarlas para obtener resultados utiles. Para esto, he empezado a trabajar con Python, la cual creo que es la herramienta adecuada para este tipo de tareas.

Aquí abajo se puede ver el código que he usado y los resultados finales en gráficas con una breves reseñas en las anotaciones del cuaderno de Jupyter

Resultados

Una revolución tarda de media 99.63 ms, dado que idealmente debería ser de 100 ms con un margen de mas menos 5 ms, en este aspecto la maquina cumple perfectamente. El tiempo mediano entre los impactos de los martillos 3 y 4 es de 108 ms  e idealmente debería ser 100 ms con un margen de mas menos 20 ms, y el tiempo que transcurre entre el impacto del martillo y sus elevación es de 58 ms, en este apartado el unico requisito es que esté por debajo de 80 ms con lo cual cumple perfectamente también.

En lo que respecta la cinemática de la maquina todos sus parametros cumplen con lo establecidos en el Anexo A de la norma que he mencionado antes, quedan otros de medir pero se refieren mas a temas de diemsniones y cosas así.

Jupyter Notebook





Calculadora RPM Calculadora RPM

Comments

Post a Comment

Popular posts from this blog

A first approach to IoT, connecting my 3D printer to the internet

My first approach to the IoT, connecting my 3D printer to the internet IoT is one of those fancy words that people like to talk about in conferences and in TedTalks without (apparently) having too much idea of what it is all about. Set up to manage the 3D printer through the internet This one is going to be a short entry where I don't go through code or anything, just wanted to talk about a bit about how I connected my 3D printer to the internet.  I've been in the 3D printing thing for a while now, about a year and I haven't stopped printing ever since I bought my Ender 3. Fortunately enough, I live in a big house where my room/working place is on the fourth floor and my 3D printing is on the first one. You might be thinking as well: "OK Pablo but where do you want to bring us? Go to the point" Well, as you might have noticed there are two floors in betw...

Advent of Code, day 2

We made it to Day 2 of Advent of Code I have kept my promise for 2 days in a row. As weird as it seems for this day and age, I have kept my promise and today is the day 2 of the Advent of Code, this time with elves involved. There you go, the statement of today's first problem down below: And usual, my solution: import pandas as pd import re import numpy as np filepath = "/content/input 1.txt" with open (filepath, 'r' ) as file :     lines = [line.strip() for line in file .readlines()] lines_split = [] for line in lines:   token = re.findall(r '\w+|[^\s\w]' , line)   lines_split.append(token) blue_list = [] green_list = [] red_list = [] for line in lines_split:   blue,green,red = 0 , 0 , 0   for ix, word in enumerate (line):     if word == "blue" :       if blue < int (line[ix -1 ]):         blue = int (line[ix -1 ])     if word == "green" :       if green < int (...

Computer vision to fight against Covid-19

Computer vision to fight against Covid-19 In this era technology can be very helpful in many ways, here is an example of how to reduce close contacts in the working place thanks to computer vision Welcome Manuela 15:04 (left side) and Not authorized Javier 15:05 (right side) There are many scientific publications that show how Covid-19 can survive in non-porous surfaces for some hours ( https://www.cdc.gov/coronavirus/2019-ncov/more/science-and-research/surface-transmission.html ) this might be a problem especially if those surfaces are touched by a large number of people in a short period of time. That is the case of the clock-in machine that still exist in many working places all around the world, like this one below. If not most, many of them rely on physical contact for the employee to clock-in, either it is a finger-print scan, a card that you punch-in once you arrive, or NFC devices such as cards or tokens, but not many exist that use other methods such as face recognition or ...