formas de controlar la resistencia con un microcontrolador

1

P. Tengo un indicador (de combustible) que acepta un rango de resistencia configurable (0-500 ohm, dos cables, uno a tierra), que quiero controlar con un microcontrolador ( Arduino Pro Mini o Nano con un Atmel 328P).

Algunas consideraciones:

  • Ya estoy usando SPI para un bus CAN, y no me atrevo a agregar otro dispositivo en el bus SPI, ya que el bus CAN es bastante crítico para la misión. es decir, no quiero perder los mensajes CAN. También requiere una gran cantidad de cables.
  • También ya uso i2c, agregar un dispositivo i2c sería sencillo en esta aplicación. Menciono esto porque veo i2c Digi Pots por ahí.
  • La precisión es algo necesaria (digamos < 10%). He visto que la mayoría de los potenciómetros digitales tienen una precisión relativa de un máximo de ~ 20%. Sin embargo, continúan explicando que la precisión relativa es baja, pero no estoy seguro de lo que eso significa ... esta pregunta probablemente incluye su propio tema, así que olvídalo por ahora a menos que sea una respuesta de una oración.
  • Idealmente, los componentes requeridos son orificio pasante / DIP, pero esto no es un requisito difícil.

Creo que el indicador está diseñado para ser controlado por un reóstato, ya que requiere un rango de resistencia lineal, corríjame si mi suposición es incorrecta).

¿Cuáles serían mis opciones? ¿Se podría hacer de alguna manera utilizando la salida analógica de Arduino? Al investigar, me he encontrado con Digi-Pots, DAC y JFET. Pero la aplicación nunca fue lo mismo que lo que estoy haciendo, a menudo usando PWM y más orientado a voltajes que a resistencia ...

Actualizar; Algunos detalles más:

  • El indicador de combustible tiene dos cables, uno positivo y otro negativo. El cable positivo envía una corriente de 5V, 17-19mA (para aquellos que quieran saberlo, es un indicador Speedhut).
  • Arduino es de 5 V y, según el pin analógico de PWM que utilice, emite una señal PWM a 490Hz o 977Hz. El ciclo de trabajo es controlable en el código entre 0-100%.
  • La aplicación es automotriz. El vehículo es de 24V. Los medidores son de 12 V, alimentados por un controlador pequeño. El indicador tiene un microcontrolador, y sospecho que se ejecuta a 5V.

Actualizar; salida no como se esperaba:

Estoy midiendo una constante de ~ 19kOhm en la salida del circuito (multímetro entre "salida" - cable y tierra). Espero que varíe a medida que cambie el ciclo de trabajo de PWM.

  • Todavía no he conectado el indicador de combustible, ya que primero quiero asegurarme de que el circuito esté bien. En cambio, he conectado mi multímetro. Tal vez simplemente no funciona así, ¿quizás la salida de corriente del multímetro es demasiado débil?

  • La salida PWM es correcta de acuerdo con mi multímetro; me da un buen ciclo de trabajo de 490Hz 0-100%.

He adjuntado una foto de mi diseño de tablero. Mi teléfono no tiene una gran cámara, así que agregué los nombres de los componentes. Lo que no queda claro en la foto es que tanto el resistor de 10k que viene del LM como el pin 3 del Mosfet están en la misma fila 10, el pequeño resistor de 10pF está en los renglones 10 y 11. Creo que he copiado el esquema bastante preciso . No tenía algunos valores exactos de resistencia, así que utilicé valores cercanos, lo que creo que debería ser lo suficientemente bueno para ver la salida.

No solo estoy tirando mi problema por encima de la valla, sino que cualquier sugerencia sería bienvenida, aún me quedan solo unos meses para esto. :) ¡Gracias!

* error tipográfico: 10pf = 10nf

    
pregunta svenema

1 respuesta

4

Si el rango es de 0-500 ohm para un vehículo de 12V, eso significa que la corriente máxima de 15V / 500mA = 0.03A. Lo más probable es que sea una fuente de corriente constante de 10 mA y 500 ohmios hace 5V.

Podría ir por el camino difícil y hacer una resistencia variable, pero también podría usar un colector abierto y hacer retroalimentación de voltaje. Podría usar su salida analógica de Arduino que, por lo que sé, es en realidad una salida PWM, para controlar este circuito. En el firmware de su MCU, puede asignar PWM a% combustible para obtener una mejor precisión.

simular este circuito : esquema creado usando CircuitLab

Actualización: las entradas del LM393 son bastante buenas con voltajes cercanos a 0, pero su salida se saturará a 100-200 mV (máx. 700 mV en el rango de temperatura más amplio), por lo que obtendrá menos precisión cerca de cero . Si la aplicación es automotriz, puede usar Lm2903 de ancho. Versión o mejor NCV2903 - versión automotriz.

Actualización 2: El || El símbolo es una forma corta para representar la resistencia paralela equivalente.

$$ R3 = R1 || R2 = \ frac {R1.R2} {R1 + R2} $$ Cada OpAmp tiene una corriente de polarización de entrada (pequeña). Si la resistencia en ambas entradas, tal como la ve OpAmp, no es igual, se producirá un error de voltaje en la salida de OpAmp. El valor calculado debe ser 5k en este caso, pero es aceptable usar el valor estándar más cercano 5.1k.

Una cosa más : si la corriente máxima es de 18-19 mA, puede ser demasiado alta para la salida de LM393 / LM2903. Puede extender la capacidad de corriente de salida usando un MOSFET de pequeña señal de esta manera:

simular este circuito

R5 actúa como una resistencia de pull-up para la salida del colector abierto de OpAmp. Si usa otra OpAmp con salida completa, puede omitir esta resistencia, pero asegúrese de que la OpAmp pueda reducir su salida a 1 V con respecto a tierra (-Vss). C2 limita la ganancia de CA del transistor, puede experimentar su valor para obtener la máxima estabilidad. R1 está conectado al drenaje del transistor para cerrar el circuito de realimentación de CC de la salida del circuito. El diodo Zener D1 (12V) limita el voltaje máximo aplicado en la compuerta del MOSFET. ¡Debido a que M1 invierte la polaridad de la señal, las entradas de OA1 deben ser invertidas en comparación con el esquema anterior!

    
respondido por el Todor Simeonov

Lea otras preguntas en las etiquetas