Mida el voltaje de entrada de VDD de PIC con ADC


8
  • Procesador: PIC18F66K22
  • Compilador: C18 (XC8 también está bien)

Acabo de hacer (y probé con éxito) el código para medir el voltaje en el pin analógico AN4.

Ahora quiero probar otra cosa, no estoy muy seguro de si es teóricamente posible.

Mi placa de prueba tiene un procesador PIC, con VDD, AVVD conectado a una fuente (que varía de 0 (si la batería está vacía / desconectada) a 4,2 (batería llena).

¿Puedo usar ADC para medir el VDD (-in) de mi placa?

¿Por qué no?:

  • No es un pin ANx, ¿no está seguro de cómo hacer que el ADC lo mida? (¿Canal?)
  • Si el voltaje en VDD (-in) cae, ¿mi voltaje de referencia ADC también caerá? (Entonces, cuando mi PIC solo obtiene 3,3 V, el ADC seguirá diciendo que es 100% (como el voltaje máximo en el chip, también la referencia es 3,3 V).

¿Por qué / qué preguntas ?:

  • ¿Puedo medir el canal 30 (VDDCORE)?
  • ¿Podría configurar mi Vref en Vdd y medir una referencia de voltaje de precisión con el convertidor A / D? (No estoy seguro de cómo)
  • ¿O podría agregar un cable de VDD-in a un pin ANx?

  • ¿El VREF + interno (4.096V) se mantendrá 4 + V cuando la entrada VDD sea de alrededor de 3,4V? ¿Hay algún tipo de transformador que lo haga así?

  • El VREF + interno (4.096V) es un poco más bajo que el máximo de la batería (4,2V), ¿significa esto que puedo dañar el ADC? O simplemente que el resultado será máximo cuando la batería esté llena. (4,2V de 4,096V)

Tenga en cuenta que mi conocimiento de electrónica es "bajo". Aprendí mucho más sobre la parte del software en mi educación, pero me gustaría saber más sobre la electrónica (integrada), ya que es una parte crucial en la ingeniería integrada. (Es triste cómo mi escuela no ve esto).

Respuestas:


14

Ese PIC tiene una referencia interna de banda de 1.024V, seleccionada al establecer los bits de selección de canal en 11111.
Entonces, si configura la referencia de su módulo ADC a Vdd y luego le dice que mida la reverencia de 1.024V, puede inferir de nuevo a lo que su Vdd realmente es.

Normalmente, calcularías el voltaje en un pin que has usado con A2D con algo como:
Vin = (ADCval / ADCrange) * Vref

Pero en este caso es Vin lo que conoce (1.024v) y desea resolver para Vref (su Vdd), entonces:
Vref = (Vin * ADCrange) / ADCval
o más específicamente para su caso:
Vdd = (1.024 * 4096) / ADCval


Voy a intentar esto! ((mañana) y ponga esto como respuesta si funciona) Otra colega señaló que tenía una "referencia de Bandgap" ¡Gracias por la información sobre el cálculo de la 'escala', no lo sabía!
Paul

¡Perfecto! Gracias por la teoría en combinación con los detalles específicos, esto se solucionó en cuestión de minutos, el pensamiento y las pruebas tomaron más tiempo como el desarrollo real (después de su respuesta).
Paul
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.