Cómo leer las RPM de un ventilador de 3 hilos - PIC18F4550

2

Estoy trabajando en un proyecto PIC µC. Estoy usando el ventilador de PC 12VDC (Coolermaster) para mi aplicación. Una parte del proyecto es devolver el RPM del tercer cable del ventilador a una pantalla LCD.

En primer lugar, ¿cómo puedo leer la señal? ¿Es una especie de pulsos cada rotación? Además, ¿necesito usar un pin ADC o solo uno digital sería suficiente? Encontré muchos diagramas que indican que se debe conectar una resistencia de extracción a + 5V. ¿Por qué?

Un código de ejemplo de cómo funciona esto será útil.

Gracias.

    
pregunta Mohammed Nafie

5 respuestas

3

Leyendo la señal

Elprincipalpuntoatenerencuentaesquelasalidadeltacómetrodelosventiladoresde3hiloscambiade0a12V.SiseconectadirectamentealaentradadelPIC,superaríalatensiónnominaldeldispositivo.Conectarlasalidadeltacómetroaunafuentede5Vatravésdeunaresistencianoevitaríaquesuperelos5voltios,yaqueesaresistenciasimplementeformaríaundivisordepotencialconR1ydejaríalasalidadeltacómetroaunvoltajeentre12y5voltios.Unacomprobaciónrápidaconunosciloscopioovoltímetroverificaríaestevoltaje.

Parareducirlasalidaaunimpulsode0-5VadecuadoparalaentradaPIC,podría:

(i)Useunaresistencia(R2)atravésdelasalida(unvalorligeramentemáspequeñoqueR1)paraobtenerunmáximode5Venlasalida(soluciónrápidaysucia)(R2deberíaseraproximadamente0.7R1paradarunasalidade5V)

(ii)Conecteuntransistornpndeseñalpequeña-basealasalidadeltacómetro.Conecteunaresistenciapull-updesucolectora5V.Emisoratierra.Tomelanuevasalidadetacómetro(invertida)delcolectoralalíneadeentradaPIC.

(iii)Conecteunaisladorópticoconunaresistenciadeextracciónalalíneade5V(pin2,4atierra(0V),tiredelaresistenciadesde5Valpin5.Tomelasalidadelpin5.Elpin6sedejadesconectado)Estecircuitoinvertirálaseñaldepulso,peroalcontarlospulsosnoimporta.TambiénprotegelaentradaPICdemásde5V.

    
respondido por el JIm Dearden
3

Aquí hay una especificación para los ventiladores de 4 cables (controlados por PWM) de formfactors.org "que trajo Intel": enlace

  

Señal de salida del tacómetro El ventilador proporcionará la señal de salida del tacómetro   con las siguientes características:

     
  • Dos pulsos por revolución
  •   
  • Salida de colector abierto o de drenaje abierto
  •   
  • La placa base tendrá un tirón de hasta 12V, máximo 12.6V
  •   

Tenga en cuenta que se supone que el pull up está en la placa base, es decir, no en el ventilador.

    
respondido por el joeforker
2

Por lo general, el tercer cable (del tacómetro) se conecta a tierra "n" veces por revolución, donde "n" varía entre los modelos de ventilador, pero generalmente 2 o 4 veces por revolución. (La hoja de datos del ventilador debe especificar esto).

Necesitará agregar una resistencia de pull-up para obtener una señal de onda cuadrada que pueda ingresar a una entrada digital. Deberá medir el período de la onda cuadrada o contar las transiciones por segundo para calcular el RPM.

Por ejemplo, suponga 6000 RPM y 4 pulsos por revolución, verá 400 pulsos por segundo y el período promedio de un pulso (de vanguardia a vanguardia) sería de 2,5 ms (1/400).

En cuanto a la lectura del pin, la forma más sencilla sería configurar una interrupción en una transición (hacia arriba o hacia abajo) y registrar el valor de un temporizador de alta resolución en un búfer, que puede leer en su línea principal para calcular el período promedio a lo largo de varios ciclos. Alternativamente, puede agrupar el pin en forma de bucle en busca de cambios y registrar los valores del temporizador.

Edit: Jim Deardan nota correctamente que en la mayoría de los ventiladores, el cable del tacómetro ya está a + 12V y el voltaje debe reducirse antes de conectarse a una entrada en el PIC. Por favor lee su comentario.

    
respondido por el DoxyLover
2

La forma más segura es forzar que la salida del tacómetro del ventilador se comporte solo como colector abierto agregando un diodo y luego utilizando su propio pullup:

simular este circuito : esquema creado usando CircuitLab

De esa manera, no importa si el ventilador tiene una resistencia de extracción o cuál es su voltaje de alimentación, no puede jalar su pin MCU demasiado alto. Puede usar la funcionalidad "pullup débil" en sus pines MCU si los admite, o agregar una resistencia externa como se muestra en la imagen.

Los fanáticos de las computadoras generalmente producen 2 pulsos por revolución, pero hay variaciones. Incluso un ventilador bastante rápido (6000 RPM) tiene solo 100 Hz, lo que significa pulsos a 200 Hz. La forma habitual de medir la velocidad es utilizar una función de "captura de entrada" en un temporizador, es decir, dejar que un temporizador de funcionamiento libre vaya bastante rápido (decenas de kHz) configurado para capturar el valor del temporizador en el borde descendente de la entrada, luego restar Valores capturados consecutivos para medir el tiempo entre pulsos. No olvide que también debe detectar la interrupción por desbordamiento del temporizador y calcularlo en los cálculos de su período.

    
respondido por el William Brodie-Tyrrell
1

Elaborando sobre la respuesta de DoxyLover. Puede usar el módulo Capture / Compare / PWM (CCP) para esto. Básicamente, el modo de captura hace exactamente lo que DoxyLover describió, registra el valor de un temporizador basado en un evento programable en un pin (en este caso, es probable que desee que registre el flanco descendente). Por lo tanto, puede hacer que se ejecute el temporizador asociado, hacer que el módulo registre el valor del temporizador en el flanco descendente y luego leer el valor de ese registro de captura cuando lo desee. De esta manera, no es necesario que haya una interrupción por cada vez que se pulsa el contacto del ventilador, y el resultado no depende de cosas como la latencia de la interrupción.

    
respondido por el Zuofu

Lea otras preguntas en las etiquetas