Messen Sie die VDD-Eingangsspannung des PIC mit dem ADC

8
  • Prozessor: PIC18F66K22
  • Compiler: C18 (XC8 ist auch in Ordnung)

Ich habe gerade Code erstellt (und erfolgreich getestet), um die Spannung am analogen AN4-Pin zu messen.

Jetzt möchte ich etwas anderes ausprobieren, nicht ganz sicher, ob es theoretisch möglich ist.

Mein Testboard verfügt über einen PIC-Prozessor mit VDD, AVVD, der an eine Stromversorgung angeschlossen ist (von 0 (wenn die Batterie leer / nicht angeschlossen ist) bis 4,2 (volle Batterie).

Kann ich mit ADC den VDD (-in) meines Boards messen?

Warum nicht?:

  • Es ist kein ANx-Pin, nicht sicher, wie der ADC ihn messen soll? (Kanal?)
  • Wenn die Spannung an VDD (-in) abfällt, fällt dann auch meine ADC-Referenzspannung ab? (Wenn mein PIC also nur 3,3 V erhält, sagt der ADC immer noch, dass er 100% beträgt (als maximale Spannung auf dem Chip beträgt auch die Referenz 3,3 V).

Warum / was fragst du?:

  • Kann ich nur Kanal 30 (VDDCORE) messen?
  • Könnte ich meine Vref auf Vdd einstellen und mit dem A / D-Wandler eine präzise Spannungsreferenz messen? (Nicht sicher wie)
  • Oder könnte ich einen Draht von VDD-In zu einem ANx-Pin hinzufügen?

  • Bleibt der interne VREF + (4,096 V) 4 + V, wenn der VDD-Eingang bei 3,4 V liegt? Gibt es eine Art Transformator, der das so macht?

  • Internes VREF + (4,096 V) ist etwas niedriger als das Maximum der Batterie (4,2 V). Bedeutet dies, dass ich den ADC beschädigen kann? Oder nur, dass das Ergebnis maximal ist, wenn der Akku voll ist. (4,2 V von 4.096 V)

Bitte beachten Sie, dass meine Kenntnisse der Elektronik "gering" sind. Ich habe in meiner Ausbildung viel mehr über den Softwareteil gelernt, aber ich würde gerne mehr über (eingebettete) Elektronik erfahren, da dies ein entscheidender Bestandteil des Embedded Engineering ist. (Es ist traurig, dass meine Schule das nicht sieht.)

Paul
quelle

Antworten:

14

Dieser PIC verfügt über eine interne 1,024-V-Bandlückenreferenz, die durch Setzen der Kanalauswahlbits auf 11111 ausgewählt wird.
Wenn Sie also die Referenz Ihres ADC-Moduls auf Vdd setzen und es dann anweisen, die 1,024-V-Ehrfurcht zu messen, können Sie auf das zurückgreifen, was Ihr Vdd tatsächlich ist ist.

Normalerweise würden Sie die Spannung an einem Pin, den Sie A2D haben, mit etwas wie:
Vin = (ADCval / ADCrange) * Vref berechnen

Aber in diesem Fall ist es Vin, das Sie kennen (1.024v) und das Sie für Vref (Ihr Vdd) lösen möchten, also:
Vref = (Vin * ADCrange) / ADCval
oder genauer für Ihren Fall:
Vdd = (1.024 * 4096) / ADCval

brhans
quelle
Ich werde es versuchen! ((morgen) und geben Sie dies als Antwort, wenn es funktioniert) Ein anderes Kollegium wies darauf hin, dass es eine "Bandgap-Referenz" hatte. Vielen Dank für den Einblick in die Berechnung für die 'Skala', wusste das nicht!
Paul
Perfekt! Vielen Dank für die Theorie in Kombination mit den spezifischen Details. Dies wurde in wenigen Minuten behoben. Das Nachdenken und Testen dauerte länger als die eigentliche Entwicklung (nach Ihrer Antwort).
Paul