Voltmeter-Schaltung mit automatischer Bereichswahl und PIC-uC-ADC

Ich möchte ein Voltmeter mit automatischer Bereichswahl mit einem PIC-Mikrocontroller und seinem ADC entwerfen.

Anforderungen:

  • Messen Sie Spannungen von +0,2 V bis +50 V
  • Schützen Sie sich vor umgekehrten Eingängen oder geringfügig höheren Spannungen
  • Die Eingangsimpedanz kann ziemlich niedrig sein und bis zu einigen mA ziehen.
  • Genauigkeit von etwa 1 % oder besser (obwohl bei kleineren Spannungen nicht erforderlich)
  • Abtastzeit von etwa 0,5 ms oder besser

Ich habe eine Schaltung im Sinn und würde mich über Feedback freuen. Vielleicht gibt es einfachere Schaltungen, die ich verwenden könnte. Der PIC wird mit 5 V versorgt. Ich würde wahrscheinlich einen einfachen, billigen Operationsverstärker verwenden, der mit 0 V und einer + 12 V-Schiene betrieben wird. Die Tristate-uC-Ausgänge würden entweder die Eingangsspannungsteiler einstellen oder die Verstärkung der Operationsverstärkerschaltung auf höher als Eins ändern.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Sieht das vernünftig aus?

Antworten (2)

Ich bin nicht 100%ig darin, aber ich denke, die meisten PIC-ADCs sind 10 Bit (1 in 1024 Auflösung), können aber eine Ungenauigkeit von bis zu 10x LSBs aufweisen - das bedeutet, dass Sie sich gerade in der Genauigkeitsphase von 1% befinden, ohne Widerstandsgenauigkeiten zu berücksichtigen.

Die Verwendung von PIC-Ausgängen als Pulldowns ist auch keine gute Idee, da Leckströme von den Pins auftreten, die über die Widerstände eine Spannung zum Signal hinzufügen / subtrahieren. Außerdem scheinen Sie sich darauf zu verlassen, dass PIC-Ausgänge genau auf Masse gehen, aber dies ist nicht der Fall, und Ihre Genauigkeit im niedrigsten Bereich wird beeinträchtigt.

Ich denke auch, dass der Zener nicht benötigt wird, da R1 den Strom in den Operationsverstärker begrenzt und sich selbst schützt - 50 V über 50 k ergeben 1 mA, und die meisten Operationsverstärker können diese Art von Strom mithilfe ihrer internen Dioden verarbeiten . Ich würde den Operationsverstärker auch mit 5 V betreiben - dies bedeutet, dass keine Chance besteht, dass eine Killerspannung (6 V oder mehr) in den PIC-ADC-Pin gesteckt wird. Verwenden Sie so etwas wie einen AD8605 - es ist Rail-to-Rail, aber da Sie nicht genau 5 V erreichen können, skalieren Sie die Dinge um 10% herunter und stellen Sie die CPU mit einem Kühlfaktor wieder her.

Ein selbstschützender Operationsverstärker (aufgrund der 50k) bedeutet, dass auch negative Spannungen geschützt sind, aber lesen Sie die Datenblätter auf dem Operationsverstärker, um absolut sicher zu sein. Wenn Sie immer noch glauben, dass Sie den Zener brauchen, bedenken Sie, dass ein Zener bei Spannungen deutlich unter 5 V Strom zieht - es ist keine Ein-Aus-Sache, sobald Sie 4,99 Volt erreichen.

Danke schön. Ich werde die Leckströme und die digitalen Ausgänge mit logischem 0-Pegel der uC-Pins untersuchen. Vielleicht könnte ich NPN-Transistoren verwenden, um Leckströme für die Pulldowns zu minimieren, und deren Abfall in Betracht ziehen. Mit etwas Glück kann ich jedoch die Leckage und die Pulldown-Spannung ungleich Null der uC-Pins in der Software kompensieren
Ich würde MOSFETs oder analoge Schalter verwenden - sie schalten ohne große Leckage und ihr Einschaltwiderstand beträgt einen Bruchteil eines Ohms, wenn Sie den richtigen auswählen.
Mein Ansatz wäre, jeden Bereich separat zu entwerfen (möglicherweise mit einem gemeinsamen Frontend), jeden an einen anderen A / D-Pin anzuschließen und den PIC seinen A / D-Eingang nach Bedarf umschalten zu lassen.
@WoutervanOoijen Ich glaube, ich erinnere mich, dass Sie (oder jemand) dies letztes Jahr zu einer Frage vorgeschlagen haben. Der Vorteil besteht darin, dass Sie keine IO-Pins benötigen, um durch Kurzschließen von Widerständen eine andere Verstärkung zu erzwingen - ADC1 arbeitet bis zu 50 V und ADC2 arbeitet bis zu 5 V (oder 10 V).
Richtig. Der Chip hat bereits einen Mux, warum also nicht den verwenden? Der Haken an der Sache ist, dass der/die Eingang(e) mit höherer Verstärkung nichts außerhalb von 0 .. Vcc in die A/D-Eingänge ausgeben dürfen, selbst wenn sie nicht ausgewählt sind.
Persönlich würde ich, sofern die Kosten kein Problem darstellen, einen guten seriellen ADC mit einem Verstärker mit programmierbarer Verstärkung verwenden. Etwas wie ti.com/lit/gpn/ads1146 . Mit weniger als 3 US-Dollar sind die Kosten möglicherweise nicht einmal ein so großes Problem, wenn man die große Änderung der Komponentenanzahl berücksichtigt.

Die meisten Bildmikrocontroller haben einen 10-Bit-ADC und dafür müssen Sie ihn nach einer Formel wie folgt umwandeln:

v A l u e = v A l u e ( R e F e R e N C e M v 2 10 1 )

v A l u e = v A l u e ( 5000 1024 1 )

v A l u e = v A l u e 4,89

oder Sie besuchen diesen Link , sie haben es sehr gut mit C-Code erklärt.

Wenn Sie in irgendeiner Weise mit diesem Blog verbunden sind, legen Sie dies bitte offen offen, da Eigenwerbung auf dieser Website veraltet ist.
@clabacchio Warum denkst du das?
@Butzke basierend auf dem Beitragsverlauf, hier und auf Stack Overflow. Er verlinkt wiederholt auf Blogseiten von derselben Website.
Ganz zu schweigen davon, dass der Code wie in Ihrem letzten Blogbeitrag schrecklich ist und außerhalb von mikroC auf keinem Standard-C-Compiler kompiliert werden kann.