formas de controlar la resistencia por microcontrolador

P. Tengo un indicador (de combustible) que acepta un rango de resistencia configurable (0-500 ohmios, 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 dudo en agregar otro dispositivo en el bus SPI, ya que el bus CAN es bastante crítico para la misión. es decir, no quiero perderme los mensajes CAN. También requiere bastantes cables.
  • También ya uso i2c, agregar un dispositivo i2c sería sencillo en esta aplicación. Menciono esto porque veo potenciómetros digi i2c 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. Sin embargo, esta pregunta probablemente tiene su propio tema, así que olvídalo por ahora a menos que sea una respuesta de una oración.
  • Idealmente, los componentes requeridos son agujeros pasantes/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? ¿Podría hacerse de alguna manera usando la salida analógica de Arduino? Al investigar, me encontré con Digi-Pots, DAC y JFET. Pero la aplicación nunca fue la misma que estoy haciendo, a menudo usando PWM y más orientada 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 5 V, 17-19 mA (para aquellos que quieran saber, es un medidor Speedhut).
  • Arduino es de 5 V y, según el pin PWM analógico que utilice, emite una señal PWM a 490 Hz o 977 Hz. 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 indicadores son de 12 V, alimentados por un pequeño controlador Buck. El indicador tiene un microcontrolador y sospecho que funciona a 5V.

Actualizar; salida no como se esperaba:

Estoy midiendo una constante de ~ 19 kOhm en la salida del circuito (multímetro entre el cable de "salida" y tierra). Esperaría que varíe a medida que cambia 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. He conectado mi multímetro en su lugar. Tal vez simplemente no funciona así, ¿tal vez la salida de corriente del multímetro es demasiado débil?

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

Adjunto una foto del diseño de mi protoboard. Mi teléfono no tiene una gran cámara, así que agregué los nombres de los componentes. Lo que no está claro en la foto es que tanto la resistencia de 10k que proviene del LM como el pin 3 del Mosfet están en la misma fila 10, la pequeña resistencia de 10pF está en las filas 10 y 11. Creo que he copiado el esquema con bastante precisión. . No tenía algunos valores de resistencia exactos, así que usé valores cercanos, que creo que deberían ser lo suficientemente buenos para ver el resultado.

No solo estoy tirando mi problema por la cerca, sino que cualquier sugerencia sería bienvenida, todavía tengo solo unos meses en esto. :) ¡Gracias!Diseño de tablero

*error tipográfico: 10pf = 10nf

La "precisión relativa" probablemente se describa mejor como "tolerancia de valor" en este caso, es decir, su valor de salida está dentro de ± 20% del valor real (error como una relación o porcentaje del valor real). Tanto los reóstatos como los potenciómetros pueden tener una forma cónica lineal. Los reóstatos usan solo dos terminales y funcionan como resistencias de valor variable. Los potenciómetros usan los tres y funcionan como un divisor de voltaje variable.
un LDR acoplado con un LED controlado por PWM me ha funcionado bien en tales situaciones; ofrecen un rango de voltaje + ohmios mucho más amplio que los potenciómetros digitales de nivel lógico, son baratos y fáciles de calibrar/compensar/personalizar. un "optoaislador analógico"
@Aceite. Todavía no estoy seguro de si esto es un problema, entonces... Puedo configurar el rango de ohmios en el indicador y puedo definir el rango de ohmios que envío. Si la diferencia de precisión es constante, puedo compensarla. Pero no estoy seguro de si lo es.
@dandavis. apareamiento LDR; Esa es una idea muy interesante que definitivamente consideraré. Gracias por la idea.
@svenema No hay una constante de precisión fija debido a la naturaleza mecánica por la cual se cambia la resistencia (movimiento de un contacto de limpiaparabrisas a lo largo del elemento resistivo). Debido a que no hay forma de garantizar físicamente la ubicación exacta del limpiaparabrisas cada vez, configurar el potenciómetro en una posición determinada varias veces no siempre producirá exactamente el mismo valor de resistencia.
@svenema no puede medir la salida de este circuito como una resistencia. es demasiado complejo Para realizar la prueba, obtenga una fuente de alimentación de 5V y una resistencia de aproximadamente 150-240 ohmios. conecte la resistencia entre +5 V y el drenaje del MOSFET y luego mida el voltaje en el drenaje. Esta fuente de 5 V con la resistencia emulará cómo se ve el indicador desde este circuito. El condensador en mi esquema es 10nF (sobre ese valor). 10pF es demasiado pequeño y no hará nada, pero este es el siguiente paso para lograr una mejor estabilidad. Debería ver el cambio de voltaje con el cambio de PWM si conecta la salida como dije anteriormente.
10pF fue un error tipográfico, en realidad usé un límite de 10nF ;-). La salida PWM está cambiando el voltaje en la entrada, por lo que parece estar bien. Conecté 5V -> Resistencia de 180 ohmios -> Drenaje, y sí, veo que el voltaje cambia en el drenaje en correspondencia con la salida PWM, por lo que se ve bien. Lo suficientemente seguro de que no volaré nada, conecté el indicador. Pero no hay suerte, la aguja no se mueve. Si no tiene más sugerencias, intentaré ponerme en contacto con el fabricante e intentaré ver qué piensa del esquema, tal vez haya algo de magia negra dentro de la unidad...
@svenema Cuando conecta el medidor, ¿cambia el voltaje con PWM? ¿Alimentaste el medidor correctamente?
Este sensor speedhut.com/ecommerce/product/681/… afirma que se puede usar directamente con sus calibres, mientras genera voltaje, no resistencia. Puede probar la configuración con el suministro de 5 V y la resistencia de 180 ohmios y luego conectar el medidor al drenaje del MOSFET.
Interesante. Mi fuente es un Arduino porque hice un bus CAN (aparentemente soy mejor en programación que en electrónica): P para reducir el cableado. Estoy usando el remitente de existencias de automóviles a otro Arduino en la red CAN. Para ser precisos, este es el indicador que estoy usando: speedhut.com/gauge/GRM4-DUALGPS-SF-01/1/… . Todo lo que puedo decir ahora es que si simplemente inserto un potenciómetro, entonces eso hace girar la aguja, es por eso que me subí al vagón de resistencia... Mi cerebro se ha apagado por esta noche, lo revisaré mañana después de una noche de sueño. ;-)
Usé un barrido de prueba de ciclo PWM más lento, que lo arregló; es una aguja bastante lenta. -- Establecido en el rango máximo de 0-500 ohmios, el medidor oscila entre aproximadamente 0-3,2 V, de Vacío a Lleno. Realmente no es lo que esperaba, pero puedo hacer que el software use solo una parte del ciclo de trabajo o recalcule R4 y C1. Pero, un problema mayor: la aguja tiene muchos baches, así que he estado jugando con C2. Lo subí al límite más alto no polarizado que tenía a 0,1 uf. sin mucha suerte. ¿Podría usar una gorra polarizada aquí? --- wow, que viaje es este..

Respuestas (1)

Si el rango es de 0 a 500 ohmios para un vehículo de 12 V, eso significa que la corriente máxima es de 15 V/500 mA = 0,03 A. 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 opamp de colector abierto y hacer retroalimentación de voltaje. Podría usar su salida analógica Arduino que, hasta donde yo sé, es en realidad una salida PWM, para controlar este circuito. En el firmware de su MCU, puede asignar PWM a % de combustible para obtener una mayor precisión.

esquemático

simular este circuito : esquema creado con CircuitLab

Actualización: las entradas de LM393 son bastante buenas con voltajes cercanos a 0, pero su salida se saturará a 100-200 mV (máximo 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 temperatura amplia. versión o mejor NCV2903 - versión automotriz.

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

R 3 = R 1 | | R 2 = R 1. R 2 R 1 + R 2
Cada OpAmp tiene alguna (pequeña) corriente de polarización de entrada. Si la resistencia en ambas entradas, como las ve el OpAmp, no es igual, se producirá un error de voltaje en la salida del OpAmp. El valor calculado debe ser 5k en este caso, pero es aceptable usar el valor estándar más cercano de 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 ampliar la capacidad de corriente de salida utilizando un MOSFET de pequeña señal de esta manera:

esquemático

simular este circuito

R5 actúa como una resistencia pull-up para la salida de colector abierto de OpAmp. Si usa otro OpAmp con salida completa, puede omitir esta resistencia, pero asegúrese de que el OpAmp pueda reducir su salida a 1V 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 retroalimentación de CC de la salida del circuito. El diodo Zener D1 (12V) limita el voltaje máximo aplicado en la puerta del MOSFET. Debido a que M1 invierte la polaridad de la señal, las entradas de OA1 deben invertirse en comparación con el esquema anterior.

Hola Todor, gracias por la respuesta. Lamento mucho no haber podido responder antes porque surgió algo. Proporciono al indicador 12 V exactos a través de un convertidor reductor (en realidad es un vehículo de 24 V, pero los indicadores son de 12 V), pero podría ser que el indicador use tal vez 5 V o 3,3 V internamente. Conecté los cables de combustible de los indicadores a mi multímetro y marca 18,27 mA.
accidentalmente presioné enter.... Conecté los cables de combustible del indicador a mi multímetro y se lee 5.07V, 18.27mA. Las salidas analógicas de Arduino son de hecho PWM. La aplicación es de hecho automotriz. Todavía no me he enredado con OpAmps, así que me informaré un poco y volveré aquí lo antes posible.
¡Excelente! Acepté tu respuesta, esto funcionará. Estoy ordenando los amplificadores operacionales ahora :). El Arduino apagará 5V en el pin analógico a 490Hz (o 976Hz en otro pin). Usando 490 Hz y un ciclo de trabajo del 50 %, los valores proporcionados para R4 y C1 deberían ser perfectos. ¿Podría quizás explicar el uso de R3 (no obtengo el símbolo || aquí) y R1 y R2? Estoy alimentando el OpAmp Vcc con 24 V (es un vehículo de 24 V y está dentro de las especificaciones del LM2903 y NCV2903). ¿Hay alguna advertencia oculta que deba tener en cuenta?
@svenema ver publicación actualizada.
Casi estoy entendiendo el circuito completamente ... creo. Pero no todo todavía. Lo que más me confunde ahora es el flujo de corriente, tal vez tengo alguna idea fundamental confundida. ¿El indicador emite 5 V, 18 mA, para detectar la resistencia? (creo/supongo). Si esto fluye hacia la salida del amplificador operacional, ¿entonces sale a través de la salida de tierra? Y un pequeño punto de preocupación, relacionado con el flujo de corriente: ¿La entrada de 24 V en el amplificador operacional no fluirá hacia el medidor y lo destruirá? -- He estado leyendo durante horas y horas sobre amplificadores operacionales, pero hay tantos tipos y escenarios... perdón por mi ignorancia ;-).
ah ... acabo de enterarme de que la "fuente de alimentación" del amplificador operacional no puede fluir hacia la salida. Además, creo que la corriente enviada por el medidor fluirá a tierra a través de R2. :D
Si usa un OpAmp de colector abierto, como Lm393/2903, solo puede absorber corriente de salida a tierra. No puede generar corriente desde la fuente de alimentación hasta la salida, porque no hay un transistor que proporcione esa ruta de corriente; consulte la hoja de datos de OnSemi de LM393, página 1, esquema representativo.
LM393 no es un opamp, es un comparador. El circuito interno es conceptualmente similar, pero las aplicaciones son diferentes: un opamp está optimizado para una operación lineal de circuito cerrado, generalmente con retroalimentación negativa. Se pueden utilizar como comparadores (bastante lentos) en bucle abierto o con realimentación positiva. Los comparadores son bastante no lineales y están diseñados para usarse en bucle abierto o con retroalimentación positiva, con salida saturada.
LM393 no es un amplificador operacional. Funcionará muy mal en lugar de un amplificador operacional. Un LM324 y los de su tipo funcionarán bien. Necesitan un menú desplegable en la salida para trabajar cerca del suelo en la salida. 2k-10k, dependiendo de cuánto rango de gama alta esté dispuesto a sacrificar.