mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Referenz über welchen Bereich stabil?


Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier kommt immer derselbe Wert bei einer Strommessung raus, das kann 
aber nicht sein, weil der Strom nicht der gleiche ist.
Liegt es an der Meßschaltung oder hängt Vref doch stark von VCC ab (3V / 
5V) ?

Autor: THM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Langsam, wir kennen deine Aufgabenstellung nicht. Erklär erst mal was du 
da vorhast und wo der Fehler ist, wir sind in dein Projekt nicht so 
involviert wie du.

Schaltplan? Welcher µC? Was soll gemessen werden? Code?

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huhu, ich sollte mich kürzer fassen:

tiny26, 10 bit Messung bei zwei Betriebspannungen, 3V und 5V. 
Differentiell bezogen auf 2.56V interne Referenz.
Die Werte sind gleich, die gemessene Spannung ist es aber nicht
-> irgendwas ist falsch:

Entweder die Referenz verändert sich mit VCC oder
die gemessene Spannung ist irgendwie gestört

Autor: THM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin mir jetzt nicht ganz sicher, aber ich denke, er kann die interne 
Referenz von 2.56V bei Vcc=3V nicht aufrecht erhalten. Dreh' die Vcc mal 
langsam 'runter und schau, bei welcher Vcc die gemessene Spannung 
wegdriftet.
Vermutlich läuft die gemessene Spannung hoch, oder?

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um noch genauer zu sein:

Die Spannung wird über einem 0.1 Ohm Meßwiderstand gemessen, der in 
Serie mit einer LED (3.8V @ 110mA) am Ausgang des Schaltreglers hängt, 
den das ganze darstellt.

Das Erstaunliche ist, daß mit einigen LEDs+Vorwiderstands parallel, bei 
eine höheren Ausgangsspannung (-12V) und kleinerem Strom (20mA) die 
Meßwerte mit der Realität fast übereingestimmt haben, und zwar 
unabhängig von der Versorgungsspannung.

Vielleicht habe ich Glück, und du kannst das Phänomen erklären..?

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Äh, das macht irgendwie Sinn, ich muss das alles nochmal prüfen.. danke.

Autor: THM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du das Signal mal mit dem Oszi angeschaut?
Wenn das ein Schaltregler ist, kann es sein, dass da Ziemlich viel Mist 
(Störungen) auflaufen. Dar AVR misst haltimmer nur den Momentanwert.

Autor: Jan B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
du kannst die Ref.-Spannung einfach nachmessen.
Wenn du die Bits REFS0 und REFS1 im Register ADMUX beide auf 1 setzt,
dann erscheint die Referenzspannung an Pin 17 des Tiny26.
Da kannst du sie mit einem hochohmigen Multimeter messen.
Du kannst Vcc variieren und testen, was mit Vref passiert.

Gruß Jan

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich werde mal versuchen V_ref gegen V_BG zu messen, während ich an der 
Versorgung drehe.

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Spannung über dem Shunt habe ich nicht mit dem Oszi messen können, 
ich weiß nicht warum - aber mit dem ADC habe ich stabile und richtige 
Werte bekommen. Wird irgendwie mit der Last zusammenhängen, ich habe 
eben schon die Ausgangskapazität verdoppelt, aber das hat nichts 
verändert.

Danke für die Tips!

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also hier stimmt was nicht (1MR Messinstrument)

Vcc   Vref

4.9   4.28
3.8   3.6
3     3
2.4   2.8


Die Messung erfolgt alle 99µs für 9µs mit 9.3 Hz, nach umschalten der 
MUX und dummy readout.

Autor: THM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim Umschalten des MUX (insbesondere der Betriebsart) unbedingt das 
Timing beachten! Betriebsartumschaltung (differentiell-singleended) min. 
120µs Pause machen. Bei differentiell Kanalwechsel habe ich 40µs als 
kritische Zeit 'rausgemessen.

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVR120, S. 10

"When using the internal voltage reference with the ADC, the accuracy of 
this reference must be considered. The internal voltage reference is 
proportional to the bandgap voltage, which is characterized in the 
devices’ datasheets. The characteristics show that the bandgap voltage 
is slightly dependent on supply voltage and operating temperature."

Ich versuch's mal ohne alles andere.

Autor: peter-neu-ulm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Vcc,Vref-Messwerte
Die Messwerte zeigen doch, dass als Referenz für den Wandler die VCC 
eingeschaltet ist und nicht die Referenzspannungsquelle im IC, sonst 
würde doch als Vref 2,54 V anstehen.

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daran wird es wohl liegen, so bekomme ich unabhängige 2.77V
int main(void) 
{
  ADCSR = (1<<ACD) | (1<<ADEN) | (1<<ADPS2) | (1<<ADPS0);
  ADMUX = (1<<REFS1) | (1<<REFS0) |(1<<MUX3) | (1<<MUX1) | (1<<MUX0);
  while(1)
  {
    
  }
}

Dann weiß ich ja, wo ich suchen muss. Danke!

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ peter-neu-ulm

nein, das ist mit sicherheit nicht der fall.

Autor: Kevin K. (nemon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
11mV fallen bei 110mA und 0,1ohm als shunt ab. bei 2,56v 
referenzspannung und 10 bit auflösung macht das 2,5mV/schritt. die 11mV 
liegen also in etwa im 5. schritt, von offsetfehler usw. einmal 
abgesehen. nun sagen wir mal, dass durch den offsetfehler die gemessene 
spannung genau an der unteren grenze vom 5. bit liegt. nun kannst du die 
spannung um 2,5mV erhöhen, bis du ins 6. bit kommst. das sind satte 23%, 
um die der strom sich ändern kann, bis du es überhaupt merkst.
was könnte man ändern? wenn du den vorwiderstand auf 1 ohm erhöhst, 
fallen da 0,11 volt ab. damit liegst du im 44. bit. wenn du die spannung 
um 2,5mv erhöhst, also 112,5mv an den eingang gibst, rutschst du aufs 
45. bit. die änderung ist dann nur noch 2,3%, bis dein programm etwas 
bemerkt.
=> wenn du die möglichkeit hast, erhöh den vorwiderstand, dass du ne 
ganze hand voll schritte vom nullpunkt wegkommst.
und wenn deine interne referenzspannung stark schwankt, erzeug dir eine 
externe. so krass, wie du es schilderst, ist die billige lösung mit 
einer zenerdiode und vorwiderstand schon deutlich zuverlässiger, als die 
interne variante, aber auch da gibt es raum für verbesserung, stichwort 
temperaturkompensation usw. usf.

Autor: I_ H. (i_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der tiny26 sollte doch einen integrierten 20x Verstärker haben, der auch 
differenziell misst. Also klemm beide Enden vom Widerstand an den ADC 
und miss die Differenz mit 20x.
Hast du auch einen Kondensator an Vref gehängt?

@peter-neu-ulm

Hätte ja nicht gedacht, dass sich hier so schnell noch jemand aus 
Neu-Ulm findet

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huch, ich dachte, ich hätte gestern noch gepostet. Wohl geschrieben und 
dann nicht geposted..

Die Referenzspannung ist wohl softwareseitig durchs Umschalten irgendwie 
durcheinandergeraten, auch wenn ich mir das nicht erklären kann. 
Jedenfalls war sie gestern abend stabil auf 1/100 bei 2.77V über den Vcc 
Bereich 3-5V.

Der Regler hielt den Strom so, dass gemessenen recht konstant der 
Sollwert gehalten wurde (@i_h: die Messung ist differentiell mit 20x).
Nur, der tatsächliche Strom unterscheidet sich in der Größenordnung 30% 
vom Meßwert.

Ich hatte noch geschrieben, daß der Meßwiderstand an beiden Enden mit 
einem 1:1 Spannungsteiler nach Vcc hochgezogen wird, aber das kann ja 
wohl nicht die Ursache sein. Spannungsmäßig liegen die dann nämlich im 
Bereich der Referenz, aber es wird ja differentiell gemessen..

Dann habe ich tollerweise auch noch eine €8 LED geschrottet, weil wohl 
ein Wackelkontakt die Spannung im Ausgangskondensator auf unverträgliche 
26V gestiegen ist..

Was vielleicht auch merkwürdig ist: mit einer anderen Last stellt sich 
ein anderer tatsächlicher Strom ein, obwohl die Meßgröße gleich bleibt.

Ich nehme deswegen an, daß da doch irgendwas schwingt und die Messung 
daher Mist ist.

Ich probier's mal mit einem größeren Widerstand, nur leider steigt dann 
auch die Verlustleistung..

Danke jedenfalls für's miträtseln.

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
toller satz, aber ihr wisst, was ich meine.. :-)

Autor: I_ H. (i_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Widerstände vom Spannungsteiler groß genug? Sonst fließt über den auch 
Strom. Bzw. wird der Strom dann recht groß.

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
10K
Ich hatte auch schon mal perfekte Werte, die mit dem Strom sehr gut 
übereinstimmten. So ist das Leben.. :-(

Autor: Schwank (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
An das durch die Auflösung im unteren Bereich verursachte Problem habe 
ich nicht gedacht, danke für den Hinweis nochmal.
Hier mal die ersten 32 Werte:
Resolution: 10 bits (1024 steps)
Gain: 20
Reference voltage: 2.56V
Current sense resistor: 0.1 Ohm

32 values of 32 total.

ADC    U[mv]    I[mA]   Increase[%]
   0    0.00     0.00     NaN
   1    0.13     1.25     Inf
   2    0.25     2.50   100.0
   3    0.38     3.75    50.0
   4    0.50     5.00    33.3
   5    0.63     6.25    25.0
   6    0.75     7.50    20.0
   7    0.88     8.75    16.7
   8    1.00    10.00    14.3
   9    1.13    11.25    12.5
  10    1.25    12.50    11.1
  11    1.38    13.75    10.0
  12    1.50    15.00     9.1
  13    1.63    16.25     8.3
  14    1.75    17.50     7.7
  15    1.88    18.75     7.1
  16    2.00    20.00     6.7
  17    2.13    21.25     6.3
  18    2.25    22.50     5.9
  19    2.38    23.75     5.6
  20    2.50    25.00     5.3
  21    2.63    26.25     5.0
  22    2.75    27.50     4.8
  23    2.88    28.75     4.5
  24    3.00    30.00     4.3
  25    3.13    31.25     4.2
  26    3.25    32.50     4.0
  27    3.38    33.75     3.8
  28    3.50    35.00     3.7
  29    3.63    36.25     3.6
  30    3.75    37.50     3.4
  31    3.88    38.75     3.3
ADC    U[mv]    I[mA]   Increase[%]



Allerdings ist das wohl nicht das Problem, weil ich Werte um 25 regeln 
möchte; da ist die Differenz zwischen anliegenden Stufen nicht so groß.
Bei 3V Vcc stimmt es auch, 25 = 33.8mA, gemessen 32.7mA
Bei 5V wird auf ADC 25 runtergeregelt, aber trotzdem fließt ein Strom 
von 54mA

Der Fehler liegt also im Signal. So was doofes. Das sieht nämlich so 
aus..

Autor: Schwank (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
und so gegenüber masse.

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was mir noch eingefallen ist: die Toleranzen der 
Spannungsteilerwiderstände können natürlich einen Offset verursachen.

Ansonsten gilt wohl: je größer die Einschaltzeit der Induktivität, desto 
besser die Messung

Autor: Schwank (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
eben sah die messung dann so aus. vielleicht hat mein oszi ne macke.

trotzdem verstehe ich nicht, warum anscheinend bei einem kleineren 
tastverhältnis die messung schlechter wird.

ich werde wieder versuchen, viele messwerte zu mitteln. hoffentlich 
vermurkst das nicht die referenzspannung..

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übrigens ist die Last samt Shunt parallel zu einer Kapazität an dem 
Ausgang des Schaltreglers. Die Last besteht aus 6 roten LEDs a 1.8V.

Mit steigender Eingangsspannung wird der Impuls aus dem oben angehängten 
Bild nur länger, nicht größer.

Eingang    3V       5V
Ausgang    13.3V    14.5V
Tastgrad   25.1%    21%
Strom      23mA     41.2mA
Impuls     2µs      2.5µs
ADC        16       16     (istwert 8 messungen gemittelt seriell 
ausgelesen)
Vref       2.778V   2.84V

Rechnerisch ergibt sich aus dem ADC-Wert die Größenordnung 23mA

15    2.03    20.29     7.1
16    2.16    21.64     6.7
17    2.30    22.99     6.3
18    2.43    24.35     5.9

Versteht das jemand?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste doch mal die Schaltung und den Code. Alles andere hat keinen Sinn.

Autor: Schwank (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hast ja recht, war schon in Arbeit!

Schaltung:

{pre]



                                                           VCC
              |                                          .-----.
              ^                                          |     |
             ---                          '------.      .-.    |
     .-------+ +--------.                 |      |      | |    |
VCC  |                  .---------|<------'      |      |10K   |
     |                  |                 |      -      '-'    |
     |                  |                 |      ^ ->    |     |
     |                  C|               ---     |     diff-  .-.
     |                  C|               ---    6 LEDs  .-.   | |
    /+\                 C|                |      -      | |   |10K
   (   )                |                 |      ^ ->   |10K  '-'
    \-/                 |                 |      |      '-'    |
     |                  |                 |      '-------|     diff+
     |                  |                 |     .-.           .-.
     |                  |                 |     | |           | |
     |                  |                 |     | |           |10K
     |                  |                 |     '-' 0.1       '-'
     |                  |                 |      |             |
     '------------------------------------|--------------------'

                                  GND
(created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)

[/pre]

code:

tiny26 4MHz intern

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
diff- geht an pin 19, PA1 (ADC1)

diff+ geht an pin 20 PA0 (ADC0)

momentan ist die referenz noch nach aussen geschaltet, damit ich messen 
kann. (die hängt in der luft).

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie genau sind deine 10k Widerstände ? Selbst bei 0,1% ergibt sich worst 
case ein Messfehler von +/-60mA (wenn ich richtig gerechnet habe) !
Außerdem hat ACD nichts im ADCSR Register zu suchen...

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Glück ist das dieselbe Bitnummer wie ADEN .. was ein D ausmachen 
kann..

Das ist wohl der Knackpunkt, ich hatte angenommen, daß sich da nichts 
verschiebt. Die müssten 1% haben.

Dann ist die Toleranz pro Teiler aber auch nur 1%, d.h. der Maximalwert 
unterscheidet sich vom Minimalwert um 2%

Bei 5V ist die maximale Differenz 0.05V, bei 3V 0.03, das sind 
tatsächlich 60%

AHA!

Vielen Dank!

Wie kann ich das verhindern, außer mit einem relativ feinen Poti?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du schonmal versucht, die Widerstände ganz wegzulassen ?
Laut Datenblatt liegt der Eingangsspannungsbereich bei GND bis Vcc.

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am Ausgang ist die Spannung negativ, das geht leider nicht. Ich 
versuch's erstmal mit nem Poti.
Oder man mißt die Eingangsspannung als Korrekturfaktor.

Na mal sehen, ich werde jetzt erstmal wieder am Programm rumdoktorn.

Vielen Dank für die Hilfe!

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, habe eben einen zusätzlichen 5K Spindeltrimmer zwischen die 
bestehenden 10K Widerstände eingebaut und zwar an dem Spannungsteiler 
für ADC0, der positiven Seite.
Habe schon ein langes Gesicht gemacht, weil es nichts gebracht hat, an 
den Grenzen den Strom auf den tatsächlichen Wert zu stellen.
Aber in der Mitte bei 4V eingestellt, hält er den Wert jetzt auf ein 
paar mA genau.

Juchu. Leider ist das alles eine sehr heikele Angelegenheit - wenn ich 
den Trimmer am Kunststoffgehäuse anfasse gibt's schon starke 
Veränderungen im Strom.

Alternativ könnte man den Schaltregler so aufbauen, dass er nicht 
invertiert, und anstelle der Masse Vcc als Bezugspunkt benutzt wird.

Also vielen Dank nochmal Benedikt!

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist ja praktisch eine Wheatstone-Brücke..Mhh.

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.