www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik -30V...+30V per ATMega128 messen


Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich muß eine Spannung im Bereich von -30V bis +30V messen.

Ich habe als Testschaltung folgendes realisiert: (funktionsfähig)
Eingang mit hochohmigen Spannungsteiler durch Faktor 12 teilen. Dann
diese Spannung per Impedanzwandler "verstärken" und einem
Summierverstärker zuführen. Als 2. Summierspannung wird eine Referzenz
von -2,5V verwendet. Summierverstärkungsfaktor liegt bei 1.

Als Ergebnis erhalte ich eine Spannung von 0 bis 5V. Nach ersten
Stress-Test scheint die Schaltung sogar (halbwegs) stabil zu sein.

Leider erreiche ich mit dieser Lösung nur eine Auflösung von etwa
58,5mV bezogen auf eine Differenz von 60V und den 10Bit.


Was ich mir jetzt noch überlegt hätte:
Ich müsste irgendwie dedektieren, ob die Spannung pos. oder negativ ist
und dann dementsprechend die Spannung invertieren oder eben nicht.
Dadurch könnte ich die 10Bit-Auflösung vom AD-Wandler bereits für die
30V aufteilen, was eine Auflösung von etwa 29mV ergibt.

Wie könnte ich diese "Umschaltung" realisieren? :)

Die Spannung ist statisch, d.h. es muß nichts schnelles gemessen
werden.


Oder gibt es noch eine andere günstige Möglichkeit (ATMega128 ist
bereits vorgegeben und 3 AD-Kanäle wären noch frei; Referenz auf 5V)
die Auflösung "hochzudrehen"? ;)

Gruß,
Techniker

Autor: Azrael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit einem schmittrigger einmal ermitteln obs positiv ist oder
negativ,
am ausgang hast du dann +V oder -V
dann zum ausgang +V addieren, dadurch solltest du dann die -V weg
bekommen, gleichzeitig noch /6 rechnen.
das ergebnis kannst du dann an einem digitalen port abfragen.

oder,
mit schmittrigger wieder als impedanzwanlder nehmen,
und mit einer diode verhindern das eine negative spannung
an den uC kommt, dahinter noch einen pull down-widerstand
damit die spannung auch wirklich auf 0V geht wenn die diode sperrt

Ich hoffe das funktioniert so^^

mfg Azrael

Autor: Azrael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mir fällt grad ein das das noch nix an der auflösung ändert

wenn du erkennst obs pos, oder neg ist,
kannst du auch zum addierer von den -2.5 gehn, und dort
je nachdem +0 oder +2.5V

so in der art...

mfg Azrael

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Azrael:

Danke für deine Beiträge! :)

Leider kann ich dir aber nicht ganz folgen, was du genau meinst! :-/
Könntest du bitte mal eine Skizze zeichnen?

----

Ich habe geade nochwas anderes ausprobiert:
Ich habe mittels eines Operationsverstärkers ermitelt, ob die Spannung
pos. oder neg. ist. Ich erhalte somit P15 bzw. N15 am Ausgang des OPs.

Mittels einer Diode (Kathode zum OP), nachgeschalteter 5V1 Z-Diode
gegen Masse sowie 100k-Widerstand gegen Masse erhalte ich
(theroretisch) eine Spannung zwischen 0V und -5,1V welche ich dann zum
Summierer geben könnte.

In der Praxis ist das jedoch nicht so einfach, da die Spannung über die
5V1 Z-Diode nicht stabil genug ist. Sie driftet extrem Temperaturabhänig
um +/- 200mV bei Soll = -5,1V -> absolut inakzeptabel! :(
(Die Begrenzung auf 0V wäre ok -> 1,8mV)


Hat nochwer einen Tipp für mich?

Gruß,
Techniker

Autor: EZ81__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Billigvorschlag, wenn Du zwei AD-Kanäle benutzen kannst:

Messspannung über 1/6 Spannungsteiler herunterteilen,
einmal direkt an AD-Eingang Nr 1., einmal über einen OP mit v = -1 an
AD-eingang Nr.2., den Rest im Programm erledigen (ADC1=0, ADC2=1023 =>
-30V). Die Begrenzung machen die internen Schutzdioden der Eingänge in
Verbindung mit geeigneten Vorwiderständen, das würde ich zur SIcherheit
aber nochmal nachlesen.

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@EZ81__:

Das mit den 2 Kanälen hatte ich mir auch schon überlegt. Kanäle sind ja
noch frei und die Aufbereitung per Software ist kein Thema.

Was mir aber "Bauchschmerzen" bereitet ist die neg. Spannung am µC.
Bzw. eine Möglichkeit die Spannung auf 0V zu begrenzen.

Laut Datenblatt (wenn ich das richtig erkenne) halten die Eingänge max.
-1V aus. D.h. es müsste reichen, wenn ich vom OP-Ausgang über 10k und
eine Schutzdiode gegen Masse zum A/D-Eingang vom µC gehe, oder?

Irgendwie gefällt mir aber diese Lösung nicht richtig... :-/

Was macht eigendlich der A/D-Wandler, wenn am Eingang etwa -0,5V
(Spannungsfall der Schutzdiode) anliegen? Bzw. welchen Wert meldet er
zurück? 0?

Softwaremässig müsste ich dann nur schauen, welcher der beiden Kanäle
einen Wert führt. Der andere müsste autom. immer 0 sein!?!

Gruß,
Techniker

Autor: Schau Mal (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
EZ81 meinte es so :  von 0Volt bis 30V ---> Kanal 1

die negative Spannung 0V bis -30V werden bis auf -5V heruntergeteilt
und dann pr OPV Invertiert, Was +5 Volt ergibt. Mit dem Kanal 2 kannst
Du diesen Wert messen und ein neg. Vorzeichen dazugeben.

ich habe fertig

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Schau Mal:
Das habe ich schon kappiert! ;)

Was ich mich aber (noch) frage:
Was macht der ADC mit -0,5V am Eingang?
(Die -0,5V kommt von der externen Schutzdiode gegen GND, die die neg.
Spannung begrenzt)

Und vor allem: Überlebt es der ADC dauerhaft mit den -0,5V am Eingang?
(liegt ja an einem Kanal immer an)

Gruß,
Techniker

Autor: Azrael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich hab mal ein kleines spice netzwerk zusammen gebaut:
zuerst über spannungsteile 1/12 für +-5V

Dann wird das ganze gleich gerichtet mit 2 schaltungen
1te:
opv als invertierender verstärker

--|__|-----|__|-------
        |         |
        |---|>|----   Diode
        |         |
        |-- +OpV---
-OpV geht auf masse


die zweite schaltung funktioniert fast gleich,
nur das das ergebnis nochmal invertiert wird

Am ausgang ensteht dadurch eine minimale spannung von 0,7V
mit einer shotky-diode könnte man auf 0,35V runter kommen
maximale spannung ist 5V
danach sollte es per software nichtmehr schwer sein heraus zu finden
welche welche spannung ist

die Themperaturabhängigkeit der diode sollte egal sein, da sie
normal in sperrichtung betrieben wird.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal eine ganz dumme Frage, warum nimmst du anstatt mit irgendwelchen
Tricks die Auflösung zu erhöhen nicht einfach einen externen AD Wandler
mit einer höheren Auflösung? Wahrscheinlich wird die Genauigkeit deiner
Messung unter dieser Bastelschaltung am Eingang leiden, so das du zwar
theoretisch eine höhere Auflösung hast, diese aber praktisch nie
erreichen wirst. Wie hoch soll die Auflösung denn überhaupt sein? So
schlecht sind 60mV Auflösung auf 60V ja nun auch nicht, also für
Messungen an einem Motor o.ä. würds wohl reichen.

Gruß
Michael

Autor: EZ81__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Techniker,

die externe Schutzdiode kannst Du dir sparen, wenn der Vorwiderstand
groß genug ist:
http://www.atmel.com/dyn/resources/prod_documents/...

Im AtMega8 Datenblatt steht:

Voltage on any Pin except RESET with respect to Ground -0.5V to
VCC+0.5V

das gilt also auch für die ADCs (zumindest beim AtMega8); was der ADC
bei -0.5V macht, weiß ich nicht, es würde mich aber sehr wundern, wenn
nicht 0 herauskommt.

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@EZ81__:
Hast recht! :-/

Bin auf die Schnauze gefallen, als ich nach "atmega128.pdf" gesucht
habe und dieses alte DataSheet gefunden hab:
http://www.ee.lut.fi/fi/opi/kurssit/Sa2910210/ATMega128.pdf
(Da steht auf Seite 321 noch -1.0V)

Im aktuellen auf www.atmel.com: (Suchbegriff "atmega128 pdf")
http://www.atmel.com/dyn/resources/prod_documents/...
steht auf Seite 321 schon -0.5V. Anscheinend gabs da mal irgendwelche
Probleme...


Ich werde morgen das mal ausprobieren, was der Mega128 macht, wenn ich
ihm eine neg. Spannung zum wandeln gebe. Da es aber auf eine Diode mehr
oder weniger auch nicht ankommt, werd ich dem Mega128 schon jeweils eine
Schottky-Diode spendieren. Dadurch erreiche ich nur so um die -0.3V, was
dem Port hoffentlich nix ausmacht. :)

Ich melde mich dann wieder, obs hinhaut oder nicht... ;)


@Michael:
Auch wenn ich mir noch einen externen (teuren) A/D-Wandler "gönne",
so muß ich immer noch die -30V..+30V per OP-Schaltung aufbereiten.
Dadurch kann ich auch gleich anfangen zu tricken, oder etwa nicht? ;)

Gruß,
Techniker

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wärs mit Software?
Reines Oversampling sollte reichen wenn die Ergebnisse des ADCs
genügend schwanken oder man erzeugt sich per PWM ein entsprechendes
Ditherrauschen.
http://www.atmel.com/dyn/resources/prod_documents/...

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Wollte nur kurz berichten, dass der Mega128 anscheinend keinerlei
probleme mit -0,2V an einem A/D-Eingang hat. Er liefert als Wandlerwert
konstant 0.

:-)

Gruß,
Techniker

Autor: EZ81__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke fürs Ausprobieren :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.