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


von Schwank (Gast)


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) ?

von THM (Gast)


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?

von Schwank (Gast)


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

von THM (Gast)


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?

von Schwank (Gast)


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..?

von Schwank (Gast)


Lesenswert?

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

von THM (Gast)


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.

von Jan B. (Gast)


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

von Schwank (Gast)


Lesenswert?

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

von Schwank (Gast)


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!

von Schwank (Gast)


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.

von THM (Gast)


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.

von Schwank (Gast)


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.

von peter-neu-ulm (Gast)


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.

von Schwank (Gast)


Lesenswert?

Daran wird es wohl liegen, so bekomme ich unabhängige 2.77V
1
int main(void) 
2
{
3
  ADCSR = (1<<ACD) | (1<<ADEN) | (1<<ADPS2) | (1<<ADPS0);
4
  ADMUX = (1<<REFS1) | (1<<REFS0) |(1<<MUX3) | (1<<MUX1) | (1<<MUX0);
5
  while(1)
6
  {
7
    
8
  }
9
}

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

von Schwank (Gast)


Lesenswert?

@ peter-neu-ulm

nein, das ist mit sicherheit nicht der fall.

von Kevin K. (nemon) Benutzerseite


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.

von I_ H. (i_h)


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

von Schwank (Gast)


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.

von Schwank (Gast)


Lesenswert?

toller satz, aber ihr wisst, was ich meine.. :-)

von I_ H. (i_h)


Lesenswert?

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

von Schwank (Gast)


Lesenswert?

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

von Schwank (Gast)


Angehängte Dateien:

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:
1
Resolution: 10 bits (1024 steps)
2
Gain: 20
3
Reference voltage: 2.56V
4
Current sense resistor: 0.1 Ohm
5
6
32 values of 32 total.
7
8
ADC    U[mv]    I[mA]   Increase[%]
9
   0    0.00     0.00     NaN
10
   1    0.13     1.25     Inf
11
   2    0.25     2.50   100.0
12
   3    0.38     3.75    50.0
13
   4    0.50     5.00    33.3
14
   5    0.63     6.25    25.0
15
   6    0.75     7.50    20.0
16
   7    0.88     8.75    16.7
17
   8    1.00    10.00    14.3
18
   9    1.13    11.25    12.5
19
  10    1.25    12.50    11.1
20
  11    1.38    13.75    10.0
21
  12    1.50    15.00     9.1
22
  13    1.63    16.25     8.3
23
  14    1.75    17.50     7.7
24
  15    1.88    18.75     7.1
25
  16    2.00    20.00     6.7
26
  17    2.13    21.25     6.3
27
  18    2.25    22.50     5.9
28
  19    2.38    23.75     5.6
29
  20    2.50    25.00     5.3
30
  21    2.63    26.25     5.0
31
  22    2.75    27.50     4.8
32
  23    2.88    28.75     4.5
33
  24    3.00    30.00     4.3
34
  25    3.13    31.25     4.2
35
  26    3.25    32.50     4.0
36
  27    3.38    33.75     3.8
37
  28    3.50    35.00     3.7
38
  29    3.63    36.25     3.6
39
  30    3.75    37.50     3.4
40
  31    3.88    38.75     3.3
41
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..

von Schwank (Gast)


Angehängte Dateien:

Lesenswert?

und so gegenüber masse.

von Schwank (Gast)


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

von Schwank (Gast)


Angehängte Dateien:

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..

von Schwank (Gast)


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?

von Benedikt K. (benedikt)


Lesenswert?

Poste doch mal die Schaltung und den Code. Alles andere hat keinen Sinn.

von Schwank (Gast)


Angehängte Dateien:

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

von Schwank (Gast)


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).

von Benedikt K. (benedikt)


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...

von Schwank (Gast)


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?

von Benedikt K. (benedikt)


Lesenswert?

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

von Schwank (Gast)


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!

von Schwank (Gast)


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!

von Schwank (Gast)


Lesenswert?

Ist ja praktisch eine Wheatstone-Brücke..Mhh.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.