Paso 3: Trabajo y código
El trabajo es sencillo en principio. El sensor de efecto hall genera señal cuando los imanes está conectado a su eje de rotor de (internamente). Dependiendo del número de imanes conectados, para cada rotación de 360 grados del rotor, se generarán señales 1,2,4. Estas señales son recogidas por arduino pin (pin aquí 12). Para calcular las revoluciones por minuto o RPM, contamos el número de señales recibidas en 1 segundo multiplicado por 60 y el resultado dividido por el número de señales recibidas en la 1 rotación.
Línea 74: Velocidad = ((garrapatas * 60)/fanspace[fan].fandiv);
En mi fan tengo dos imanes conectados, por lo tanto, obtener dos señales por la revolución. He seleccionado {1,2} en la siguiente parte de mi código,
Línea 33: fanspec fanspace [3] = {{0,1}, {1,2}, {2,8}}; ventilador de char = 1; que significa tipo de ventilador 1 tener 2 señales por la revolución.
Código y algoritmo actual da exactitud razonable de alrededor de 10 RPM y velocidad de cambio de alrededor de 1 segundo. Mediante la optimización de código tanto pueden optimizarse para una respuesta más rápida y mayor precisión. Esto se discutirá en futuros proyectos.
Al principio tuve el problema de tener ceros o pantalla LCD retención dígitos viejo para una velocidad más baja p. ej. velocidad real desciende de 330 rpm a 60 rpm, todavía mostraba a 360 rpm. Esto es problema estándar de izquierda relleno o ceros. Para superar esto yo he añadido después de código-
Línea 87: / / convertir entero velocidad a una cadena ASCII de 4 caracteres acolchado izquierda
char SpeedString [4]; Buffer para almacenar la cadena de 4 caracteres + terminación 0
sprintf (SpeedString, "4% d", velocidad); cambiar esto a %3, 4, 5 etc. dependiendo de su velocidad máxima lcd.print(SpeedString);
Aquí he convertido la velocidad calculada en forma de número entero a cadena y luego enviado al LCD, de esta manera LCD imprime velocidad teniendo en cuenta todos los dígitos como una sola cadena o datos de texto.
El código final está disponible en mi página de github aquí.
Diviértete con arduino...
Agradecimientos-
código original por Crenn de http://thebestcasescenario.com
proyecto original de Charles Gantt de http://themakersworkbench.com