Estoy realizando un proyecto simple alimentado por batería que mide el flujo de agua con un medidor de flujo de líquido y transmite el valor con un nRF24L01 + . El microcontrolador que he elegido es un TI MSP430FR2110 ( hoja de datos de la familia ), que incluye un temporizador asíncrono (Timer_B) y un modo de suspensión de baja potencia (LPM4) que desactiva la CPU y todos los relojes .
El medidor de flujo de líquido comprende un imán simple y un sensor de efecto Hall para emitir 450 pulsos por litro. De lo que he recopilado de la hoja de datos de la familia (Figura 13-1, pág. 385), conectaré la señal de pulso (reducida a DVCC, máx.) Al pin TB0CLK para la operación de conteo, borraré los bits TBSSEL y estableceré los divisores ID e IDEX a 1.
Aquí está mi plan de operación de alto nivel:
- Ponga MSP430 en reposo mientras se incrementan los pulsos del medidor de flujo TB0
- Despierte el microcontrolador después de, digamos, 8s (1L / min - > 60 pulsos / 8s)
- Lea el valor TB0 en variable, desactive TB0
- Enviar variable con nRF24L01 +
- Repetir
Pregunta: ¿Es este un enfoque razonable? He probado la mayoría de las piezas de forma aislada, pero me gustaría asegurarme de que no me faltan grandes errores antes de ordenar las piezas.
TI proporciona un diseño de referencia del medidor de agua con más timbres y silbatos de los que cuido, pero la operación básica parece ser la misma (sección 3.2.2, pág. 9).
El principio de medición usa MSP430 Timer0_A3 como contador de impulsos. Timer0_A3 funciona sin ninguna intervención de la CPU, lo que permite que la CPU permanezca en modo de bajo consumo. La CPU luego se activa y lee el registro TA0R una vez por segundo. El valor TA0R será el flujo instantáneo.
(Dado que mi aplicación es más para la detección de operaciones anormales (por ejemplo, flujo inesperado o falta de ella) puedo salir con un período de reposo más largo para reducir el consumo de la batería).