Paso 6: Pensamientos adicionales...
Este sensor sólo da dos eventos medibles por la revolución, así que si tienes una relación de engranaje de baja velocidad puede que no sea un sensor ideal para usted. En mi caso, la caja de cambios de taladro es una reducción bastante alta por lo que una baja resolución en el eje del motor da todavía una resolución justa a la salida. Puede considerar agregar un offset de sensor hall adicional por 90 grados. No he probado esto todavía, pero supongo que le daría una salida de cuadratura que usted podría obtener resolución adicional, así como ser capaces de leer la dirección de rotación. Significa más procesamiento en el microcontrolador pero podría arrojar mejores resultados.En cuanto al código, hay muchas maneras de hacer un circuito de retroalimentación de velocidad del motor. La que estoy probando es un circuito de corrección de error simple que determina la diferencia entre la velocidad real (medida en Hz) y la velocidad deseada. El error es multiplicado por un escalar (0.05, para una respuesta más lenta, menos agresiva) y agregado a un valor de punto flotante de la velocidad que luego se convierte en un tipo uint8 y poner en OCR0A/OCR0B en reloj del AVR para ajustar la salida PWM. Esto funciona como se esperaba. Agarrar el eje del motor y el agarre firmemente a aplicar una carga y la velocidad se reducirá, pero aumentará rápidamente poder corregirlo. Dejar ir y brevemente girará sobre la velocidad como disminuye la potencia hasta que la velocidad se instala en el nivel deseado. Desconecte el sensor y el error continuamente se acumula, incrementando la potencia hasta el límite donde permanecerá hasta que se volvió a conectar una señal de velocidad. Estoy utilizando temporizador/contador 1 en el modo de captura de entrada para medir la velocidad del motor con las tasas de actualización rápida. Esto es mejor que contar pulsos por segundo, ya que le da mucho más fina resolución y actualizaciones mucho más rápidas. Experimentar con diferentes filtros matemáticos si desea un valor RPM promedio asumido cierta cantidad de tiempo.