Hola me gustaría realizar un proyecto para mostrar y guardar la velocidad instantánea que tiene un eje que manda un pulso digital a una entrada GPIO. ¿Como puedo medir la frecuencia de esos pulsos que llegan a la entrada de mi raspberry?
Gracias, espero vuestras respuestas.
Hola,
Para medir las RPM necesita configurar una Interrupción en un Pin Digital y contar el tiempo en microsegundos que pasa entre cada flanco (ya sea ascendente o descendente) y con ese valor calcula las RPM.
Para medir RPM y hacer un control PID con un Arduino, un motor de 5kW y un Variador Mitsubishi hice lo que le comento y este es un fragmento del código en Arduino para que tenga una mejor idea:
void ISR_PULSES_RPM(){
pulseActual=micros();
tPulse=pulseActual-pulseOld;
rpmPV=(60*(1000000.0/(1.0*tPulse)));
pulseOld=pulseActual;
//Serial.println("rpm"); //Solo para prueba no se debe dejar habilitado.
}
Si requiere implementarlo en Raspberry tal vez deba usar Python u otro código pero el objetivo es el mismo y los pasos son los mismos, configurar una Interrupción en Flanco Ascendente o Descendente, medir el tiempo entre el flanco actual y el anterior y aplicar el cálculo para sacar el valor de las rpm.
Si lo hace con Arduino puede enviar por puerto serial a MyOpenLab el valor de las RPM medidas y hacer que guarde en un archivo .csv los valores cada cierto tiempo, si lo hace todo en la Raspberry le toca hacer el código del GPIO en Python y hacer un script de una sola ejecución que calcule las RPM y las envíe por la terminal de linux para poder usar dicho script desde MyOpenLab.
Cordial saludo,
Javier Velásquez