Misura la tensione VDD-in di PIC con ADC


8
  • Processore: PIC18F66K22
  • Compilatore: C18 (anche XC8 va bene)

Ho appena creato (e testato con successo) il codice per misurare la tensione sul pin analogico AN4.

Ora voglio provare qualcos'altro, non sono sicuro che sia teoricamente possibile.

La mia scheda di test ha un processore PIC, con VDD, AVVD collegato a un'alimentazione (che va da 0 (se la batteria è scarica / scollegata) a 4,2 (batteria carica).

Posso usare ADC per misurare il VDD (-in) della mia scheda?

Perchè no?:

  • Non è un pin ANx, non sai come misurare l'ADC? (Canale?)
  • Se la tensione su VDD (-in) diminuisce, anche la mia tensione di riferimento ADC diminuirà? (Quindi quando il mio PIC ottiene solo 3,3 V, l'ADC continuerà a dire che è al 100% (dato che la tensione massima sul chip, anche il riferimento è 3,3 V).

Perché / cosa chiedi ?:

  • Posso semplicemente misurare il Canale 30 (VDDCORE)?
  • Potrei impostare il mio Vref su Vdd e misurare un riferimento di tensione di precisione con il convertitore A / D. (Non sono sicuro di come)
  • Oppure potrei aggiungere un filo da VDD-in a un pin ANx?

  • Internal VREF + (4.096V) rimarrà 4 + V quando il VDD-in è intorno a 3,4V? C'è una specie di trasformatore che lo rende così?

  • Il VREF interno + (4.096 V) è leggermente inferiore al massimo della batteria (4,2 V), significa che posso danneggiare l'ADC? O solo che il risultato sarà massimo quando la batteria è piena. (4,2 V su 4.096 V)

Tieni presente che la mia conoscenza dell'elettronica è "bassa". Ho imparato molto di più sulla parte software nella mia formazione, ma mi piacerebbe saperne di più sull'elettronica (integrata) in quanto è una parte cruciale dell'ingegneria integrata. (È triste come la mia scuola non lo veda.)

Risposte:


14

Quel PIC ha un riferimento di larghezza di banda 1.024V interno, selezionato impostando i bit Channel Select su 11111.
Quindi, se si imposta il riferimento del modulo ADC su Vdd e gli si dice di misurare la riverenza 1.024V, si può dedurre a ciò che il proprio Vdd effettivamente è.

Normalmente potresti calcolare la tensione su un pin che hai A2D con qualcosa del tipo:
Vin = (ADCval / ADCrange) * Vref

Ma in questo caso è il suo Vin che conosci (1.024v) e che vuoi risolvere per Vref (il tuo Vdd), quindi:
Vref = (Vin * ADCrange) / ADCval
o più specificamente per il tuo caso:
Vdd = (1.024 * 4096) / ADCval


Ci proverò! ((domani) e metti questo come risposta se funziona) Un altro collega ha sottolineato che aveva un "riferimento di Bandgap" Grazie per la comprensione del calcolo per la "scala", non lo sapevo!
Paul

Perfetto! Grazie per la teoria in combinazione con i dettagli specifici, questo è stato risolto in pochi minuti, pensando e test ci è voluto più tempo rispetto allo sviluppo effettivo (dopo la tua risposta).
Paul
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.