Forum: Mikrocontroller und Digitale Elektronik ADC Masseproblem?


von Christian M. (krusti)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich hänge weiterhin an meinem Projekt
Beitrag "ATmega8 ADC-Durchschnittsberechnung"

Der Code wäre soweit eigentlich fertig. Ich bekomme aber den ADC einfach 
nicht vernünftig zum laufen. Es fällt mir schwer das Problem zu 
beschreiben.
Im Grunde kann man sagen mein ADC flackert im Normalbetrieb. Die Werte 
springen wild +/-10-15 Bitwerte herum.

Habe auch schon von meinem ursprünglichen ADC0 auf ADC7 gewechselt, weil 
ich befürchtete, dass mein Display das Signal beeinflusst. Keine 
Veränderung. Es fällt mir sogar auf, dass der ADC7 11 Bitwerte tiefer 
liegt als der ADC0 mit dem exakt selben Signal.

Wollte das Signal am ADC also nachmessen mit dem Oszi. Schließe ich die 
Masse an beruhigt sich das Signal und schwankt nur noch minimal um ein 
oder zwei ADC-Werte. Somit lässt sich auch die extreme Schwankung nicht 
mehr messen. Habe ich ein Masseproblem? Ist die Masse zu "klein"?

Ein Verdacht den ich habe, zu wenige Kondensatoren verbaut. Aber in den 
Datenblättern werden z.B. die Spannungsquellen eigentlich nicht mit 
Kondensatoren beschaltet. Außer die Beschaltung des ADCs im Datenblatt 
des Atmega. Die habe ich nachträglich hinzugefügt, bringt aber auch 
keine Verbesserung.

Ich hänge das Board, den Schaltplan und Programme die mit dem ADC zu tun 
haben mal an.

von test (Gast)


Lesenswert?

10 bit werte, meinst du  jetzt 2^11 Werte oder wirklich 11 counts.

ich nehm mal an das ist ein 12bit ADC intern vom Atmel, dann sind 11 
counts Schwankung sicherlich sehr gut.
Also kein Problem.

falls viel mehr, immer testen an einer 1,4V Batterie und Kurzschliessen, 
dann sollten halbwegs stabile nicht schwankende Werte rauskommen.

Kannst du intern den Atmel debuggen, im Programmcode, also die RAW ADC 
Werte sehen, oder nur an deinem angeschlossenen Display? weil dann 
weisst du ja schonmal garnicht wirklich wo dein Fehler entsteht, falls 
es wirklich ein Fehler ist.

von spess53 (Gast)


Lesenswert?

Hi

>ich nehm mal an das ist ein 12bit ADC intern vom Atmel, dann sind 11
>counts Schwankung sicherlich sehr gut.

AVRs haben 10-Bit-ADCs.

@ Christian M.

Was für ein Drucksensor ist das?

Mach mal 100n parallel zum ADC-Eingang.

MfG Spess

von Christian M. (krusti)


Lesenswert?

> Was für ein Drucksensor ist das?
http://www.metallux.de/fileadmin/specs/Drucksensoren/CPS-1184-Z-Keramische-Drucksensoren-Metallux.pdf
Es handelt sich um die 250bar-Variante.

> Mach mal 100n parallel zum ADC-Eingang.
Das bringt eine minimale Veränderung aber eben nicht so viel wie mit der 
großen Masse.

kann ja jetzt schlecht immer das Oszi oder ähnliches mit dran hängen 
lassen :-)

von M. K. (sylaina)


Lesenswert?

Wo ist denn der Puffer-/Siebkondensator für die Spannungsversorgung?

von Carsten R. (kaffeetante)


Lesenswert?

Sehe ich das richtig? Hast du AREF mit der Versorgung verbunden? Oder 
habe ich die Bezeichnung nur mißverstanden?

von M. K. (sylaina)


Lesenswert?

Carsten R. schrieb:
> Sehe ich das richtig? Hast du AREF mit der Versorgung verbunden?
> Oder
> habe ich die Bezeichnung nur mißverstanden?

Stimmt, das ist auch noch falsch...

von Christian M. (krusti)


Lesenswert?

Carsten R. schrieb:
> Sehe ich das richtig? Hast du AREF mit der Versorgung verbunden? Oder
> habe ich die Bezeichnung nur mißverstanden?
An AREF geht meine +5V/ADC. Das ist eine gesonderte Spannung aus einem 
LT1021. Diese wird ausschließlich für den ADC bzw. den Drucksensor 
genommen.

M. K. schrieb:
> Wo ist denn der Puffer-/Siebkondensator für die Spannungsversorgung?
Da ist eben die Frage, wo ich mir unsicher bin. Die Datenblätter gaben 
nichts dazu an, dass ich eine Beschaltung davor machen soll. Verwundert 
hat es mich auch, habe mich aber entschieden dem Datenblatt zu 
vertrauen. Ich weiß auch, dass der TSR-1 nicht der sauberste 
Spannungsregler ist, aber er ist der einzige der mit der 
Leistungsaufnahme der drei Anzeigen zurecht kommt ohne zu heiß zu werden 
und sich per thermischer Sicherung abzuschalten. Aber deswegen habe ich 
ja noch auf anraten hier im Forum den LT1021 genommen.

Im TSR-1 Datenblatt steht zwar im Falle von EN 55022, Klasse A (also 
ESD) eine Beschaltung für den  Eingang dran aber ich hoffte, ich 
benötigte diese nicht.

von test (Gast)


Lesenswert?

du hast immer noch nicht gesagt wie deine Werte jetzt schwanken und wie 
du sie auslesen kannst, du kannst mir da ruhig vertrauen, in 90% der 
Fälle sitzt der Fehler 30cm vorm Gerät :)

Bis du anderes erzählst, gehe ich davon aus dass dein Gerät haargenau 
das macht zu was du es aufgebaut hast, also eigentlich "Fehler"frei 
arbeitet. Nur weil nicht das passiert was du erwartest heisst ja nicht 
dass dein Aufbau nicht funktioniert.

von Christian M. (krusti)


Lesenswert?

test schrieb:
> du hast immer noch nicht gesagt wie deine Werte jetzt schwanken und wie
> du sie auslesen kannst, du kannst mir da ruhig vertrauen, in 90% der
> Fälle sitzt der Fehler 30cm vorm Gerät :)
>
> Bis du anderes erzählst, gehe ich davon aus dass dein Gerät haargenau
> das macht zu was du es aufgebaut hast, also eigentlich "Fehler"frei
> arbeitet. Nur weil nicht das passiert was du erwartest heisst ja nicht
> dass dein Aufbau nicht funktioniert.
Entschuldigung, habe ich überlesen.

>Kannst du intern den Atmel debuggen, im Programmcode, also die RAW ADC
>Werte sehen, oder nur an deinem angeschlossenen Display? weil dann
>weisst du ja schonmal garnicht wirklich wo dein Fehler entsteht, falls
>es wirklich ein Fehler ist.
Nein ich sehe das nur auf einem Display. Einen Debugger habe ich leider 
nicht. Ich gebe den Wert des ADCs direkt an diese Funktion.
1
void outValue(uint16_t wert)   {
2
  uint8_t hunderter, zehner, einer;
3
4
  hunderter = wert / 100;
5
  zehner = wert / 10 % 10;
6
  einer = wert % 10;
7
  
8
  //Übergabe an das Arrays zur Anzeige auf der Segementanzeige
9
  digit [0] = numbers [einer];
10
  digit [1] = numbers [zehner];
11
  digit [2] = numbers [hunderter];
12
}
Diese beschreibt dann das Display.
Die angezeigten Werte kommen schon hin. Nur das schwanken um den Wert 
herum stört. a)kann ich den Wert dann nicht so schön ablesen. Will die 
Aktualisierungsrate des Displays nicht verändern und b) mach ich 
außerdem noch eine Max-Wert Auswertung. und das Flackern beeinträchtigt 
meinen Max-Wert. Das ist der Hauptgrund.

von Joachim B. (jar)


Lesenswert?

Christian M. schrieb:
> An AREF geht meine +5V/ADC. Das ist eine gesonderte Spannung aus einem
> LT1021. Diese wird ausschließlich für den ADC bzw. den Drucksensor
> genommen.

soweit ich das Datenblatt verstanden hatte darf die ext. AREF nicht 
größer werden als die VCC/AVCC bei 5V externer AREF ist das aber auf 
Kante wenn du nicht sicherstellen kannst das deine VCC oder AVCC immer 
passt.

Ich wähle dann lieber externe AREF von 2,5V +- o.ä.

Deine Analogwerte kannst du ja mit Spannungsteiler herab setzen um den 
Messbereich bis 5V zu erhalten.

auch 8-32 ADC Werte einzulesen und durch shift oder Teilung wieder auf 
den gemittelten ADC Wert zu kommen kann helfen.

Analog GND und Digital GND sollten extra ausgelegt werden und nur an 
einem Punkt zusammen geschaltet werden, oder alle GND Verbindungen 
einzeln sternförmig in einem Punkt zu Versorgung GND zusammenlaufen 
lassen

: Bearbeitet durch User
von Jörn P. (jonnyp)


Lesenswert?

Joachim B. schrieb:
> soweit ich das Datenblatt verstanden hatte darf die ext. AREF nicht
> größer werden als die VCC/AVCC bei 5V externer AREF ist das aber auf
> Kante wenn du nicht sicherstellen kannst das deine VCC oder AVCC immer
> passt.

Das wird viel zu wenig beachtet. Wenn du eine hohe REF willst, nimm doch
4,096Volt.

von test (Gast)


Lesenswert?

ok, also wie viel bit dein Wert schwankt ist mir immer noch unklar,
Aber wenn du eine normale Batterie dranhängst müsste eine sehr 
Rauschfreie Anzeige auftreten.
Dann weisst du schonmal dass dein Sensor zB das Rauschen verursacht.
Wenn dann auch noch Rauschen drauf ist, weisst du dass deine ADc 
Einstellungen oder Beschaltungen das Rauschen verursachen usw...

von Christian M. (krusti)


Lesenswert?

test schrieb:
> ok, also wie viel bit dein Wert schwankt ist mir immer noch unklar,

Der Wert schwankt zwischen dem ADC-Wert (also der den ich auslese mit 
ADCW) in meinem Fall jetzt z.B. zwischen 97 und 109.
Klemme ich eine Masse an bewege ich mich zwischen 103 und 104, hin und 
wieder 105.

Ich werde morgen, dass mit der Batterie ausprobieren und die anderen 
Überlegungen mit der Masse weiter verfolgen.
Danke schon mal für die Überlegungen.

von M. K. (sylaina)


Lesenswert?

Christian M. schrieb:
> Klemme ich eine Masse an bewege ich mich zwischen 103 und 104, hin und
> wieder 105.

Hö, wo schließt du eine Masse an?

von test (Gast)


Lesenswert?

10bit bei 5V Referenz sind also pro bit 4,88 mV

Jetzt sagen wir 20counts Rauschen, das sind dann fast 100mV , das klingt 
schon ein wenig viel.

Aber wie gesgt erstmal ausschließen, dass es vom Sensor selber kommt, 
vielleicht sieht das Signal ja auch einfach so aus.

Du kannst ja auch mal testweise 500 Mittelungen einfügen und sehen ob es 
glatter wird usw

von Karl M. (Gast)


Lesenswert?

Hallo Christian,

https://www.mikrocontroller.net/attachment/291038/ADC_Read.c

Warte mal 1µs oder mehr nach setzen des Kanals.
1
void ADC_SetChannel(uint8_t channel) {
2
  ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
3
 _delay_us(1);
4
}

Ich würde das Setzen eines Kanals als eigene Procedure 
ADC_SetChannel(uint8_t); implementieren.

So kannst Du dir dies hier sparen
1
sum += ADC_Read( channel );
 und schreiben:
1
uint16_t ADC_ReadValue()   {
2
  cli();
3
  ADCSRA |= (1<<ADSC);
4
  while (ADCSRA & (1<<ADSC)) { } 
5
  sei();
6
  return ADCW;
7
}
1
uint16_t ADC_Read_Avg( uint8_t channel, uint8_t nsamples )   
2
{
3
  uint32_t sum = 0;
4
  ADC_SetChannel(channel);
5
6
  for (uint8_t i = 0; i < nsamples; ++i )
7
  {
8
    sum += ADC_ReadValue();
9
  }
10
  return (uint16_t)( sum / nsamples );
11
}

von Christian M. (krusti)


Lesenswert?

Karl M. schrieb:
> Hallo Christian,
>
> https://www.mikrocontroller.net/attachment/291038/ADC_Read.c
>
> Warte mal 1µs oder mehr nach setzen des Kanals.
>
1
void ADC_SetChannel(uint8_t channel) {
2
>   ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
3
>  _delay_us(1);
4
> }

Was hat die Wartezeit dann für einen Sinn? Ich vermute mal, dass es eine 
Art Sicherheit ist, damit sich der ADC korrekt initialisiert.
Ich habe einfach mal 20µ genommen. Aber leider bewirkt das auch nichts.

von Thomas E. (picalic)


Lesenswert?

Für mich sieht das Layout ... na, ich würde mal vorsichtig sagen 
"suboptimal" aus.
Die Masse-Verbindung zwischen dem Controller und dem Sensor-Anschluss 
ist alles andere, als direkt. Eine Drahtbrücke zwischen der Analog-Masse 
am Controller und dem Masse-Anschlusspad vom Sensor dürfte bestimmt 
helfen.

von Carsten R. (kaffeetante)


Lesenswert?

Hast du schon einmal einen einfachen Spannungsteiler ganz nahe des 
Boards anstelle des Sensors angeschlossen?

: Bearbeitet durch User
von Carsten R. (kaffeetante)


Lesenswert?

Oh, ich sehe gerade daß der Sensor mit von der Referenz versorgt wird. 
Schau mal in die Datenblätter von Sensor und der Spannungsreferenz nach 
dem Strom.

von Thomas E. (picalic)


Lesenswert?

Stell' Dir vor, Du wärest ein Elektron und müsstest einen Weg vom 
GND(Sensor) zum GND(Mikrocontroller) finden. Die GND-Plane ist keine 
Ground-Plane, sondern der reinste Irrgarten!

von Christian M. (krusti)


Lesenswert?

test schrieb:
> Aber wie gesgt erstmal ausschließen, dass es vom Sensor selber kommt,
> vielleicht sieht das Signal ja auch einfach so aus.

Also, habe zwei Batterien in Reihe angeschlossen und einen sauberen 
ADC-Wert von 683 auf dem Display (1 Digit flackert manchmal). Das passt. 
Ich bin mit 3 Digits daneben aber das ist ok.
Ziel ist es ja das flackern weg zu bekommen.

Es sieht für mich nach Sensor aus.
Bringt es etwas wenn ich Oszibilder vom Sensor liefere? Mal Drucklos und 
mal mit  einem Druck? Denn in der 100mV/div Einstellung knallen mir 
schon ein paar Peaks rein, die 100mV erreichen

: Bearbeitet durch User
von test (Gast)


Lesenswert?

ist immer die Frage wie real deine Oszimessung ist, wenn ich messe habe 
ich auch oft hochfrequente Peaks auf der MEssung, was aber real nicht 
vorhanden sein wird.

immer dran denken 5mV machen bie dir ein count aus, vlt schwankt dein 
Druck ja tatsöchlich so arg, vielleicht ist das einfachste du mittelst 
über 1000 Werte, dann nimmt dein Anzeigefehler logischerweise ab, so 
machen das selbst die ganz großen, weils die Bediener meistens auch 
nicht interessiert wie real sie wirklich am Ergebnis sind.

von test (Gast)


Lesenswert?

PS: deine 20 counts Schwankungen im Display passen sehr genau auf deine 
100mV peaks im Oszi, jetzt wäre noch zu klären wie breit die 100mV peaks 
sind und ob du die wirklich messen kannst, also ob das zeitlich passt, 
kann ja sein dass sie physisch vorhanden sind, deine ADC MEssung das 
aber niemals mitbekommt usw.

von Christian M. (krusti)


Angehängte Dateien:

Lesenswert?

test schrieb:
> PS: deine 20 counts Schwankungen im Display passen sehr genau auf deine
> 100mV peaks im Oszi, jetzt wäre noch zu klären wie breit die 100mV peaks
> sind und ob du die wirklich messen kannst, also ob das zeitlich passt,
> kann ja sein dass sie physisch vorhanden sind, deine ADC MEssung das
> aber niemals mitbekommt usw.

Habe jetzt mal ein Oszibild, welches ich vorhin, vor deiner Antwort 
einfach mal gemacht habe. Hierbei handelt es sich um das direkte Signal 
aus dem Druckaufnehmer, ohne das die Signalleitung in der Schaltung ist. 
Diese Peaks sind unterschiedlich intensiv und selbst mit nem Single-Shot 
nicht immer da.

Gibt es Werte wie lange ein Signal stabil anstehen muss, damit der ADC 
das Signal sauber erkennt?

> immer dran denken 5mV machen bie dir ein count aus, vlt schwankt dein
> Druck ja tatsöchlich so arg, vielleicht ist das einfachste du mittelst
> über 1000 Werte, dann nimmt dein Anzeigefehler logischerweise ab, so
> machen das selbst die ganz großen, weils die Bediener meistens auch
> nicht interessiert wie real sie wirklich am Ergebnis sind.
Aber das ganze hätte Auswirkungen auf meinen Max-Hold-Wert, muss ich 
dann aber sowieso noch einen Kompromiss mir suchen. Etwas geglättet 
hätte ich den Wert schon, aber davor wäre es schön wenn die extreme 
Schwankung raus wäre.

von Christian M. (krusti)


Lesenswert?

Thomas E. schrieb:
> Stell' Dir vor, Du wärest ein Elektron und müsstest einen Weg vom
> GND(Sensor) zum GND(Mikrocontroller) finden. Die GND-Plane ist keine
> Ground-Plane, sondern der reinste Irrgarten!

Ja das leuchtet mir ein, da werde ich das nächste Mal besser darauf 
achten. Habe jetzt vom Sensoranschluss zum ADC_GND eine direkte Leitung 
gezogen. Geholfen hat es nicht.

von Joachim B. (jar)


Lesenswert?

Christian M. schrieb:
> Also, habe zwei Batterien in Reihe angeschlossen und einen sauberen
> ADC-Wert von 683 auf dem Display (1 Digit flackert manchmal). Das passt.
> Ich bin mit 3 Digits daneben aber das ist ok.
> Ziel ist es ja das flackern weg zu bekommen.
>
> Es sieht für mich nach Sensor aus.

das scheint doch widersprüchlich, saubere Versorgung sauberes Signal 
kann also nicht am Sensor liegen!

von Christian M. (krusti)


Lesenswert?

Joachim B. schrieb:
> Christian M. schrieb:
>> Also, habe zwei Batterien in Reihe angeschlossen und einen sauberen
>> ADC-Wert von 683 auf dem Display (1 Digit flackert manchmal). Das passt.
>> Ich bin mit 3 Digits daneben aber das ist ok.
>> Ziel ist es ja das flackern weg zu bekommen.
>>
>> Es sieht für mich nach Sensor aus.
>
> das scheint doch widersprüchlich, saubere Versorgung sauberes Signal
> kann also nicht am Sensor liegen!

Wieso ein Widerspruch? Wenn ich eine Batterie als Ersatz für den Sensor 
anschließe, dann hab ich nen sauberen Wert im µC. Schließe ich den 
Sensor an nicht.
Klemme ich eine externe Masseverbindung, woher auch immer, zusätzlich an 
beruhigt sich das Signal auf 2-3 Digits. Lasse ich meine (nicht optimale 
Masse) so laufen, schwingt mein Wert mit ca 10 Digits.

Oder habe ich da was falsch verstanden?

von test (Gast)


Lesenswert?

er hat die Batterie vermessen und nicht einen Sensor, dene r mit zwei 
Batterien versorgt.

Also ADC stimmt, am Sensor liegt das Problem, bzw. kann ja auch sein 
dass der einfach schwankt, sind ja alles analoge Werte, kann also 
durchaus sein, wie lange ist denn das Kabel von Sensor zum ADC, kannst 
du den Sensor mal räumlich sauber so ca 1cm vom ADC anlöten, vlt ist es 
dann schon gelöst.

von Joe F. (easylife)


Lesenswert?

1.)
Wo kommt denn die Versorgungsspannung 5V her?
Stecknetzteil mit langem Kabel?
100nF sind hier viel zu wenig. Löte mal einen 22-47uF Elko direkt an die 
5V Buchse.

2.)
Dein ADC hat keinen Tiefpass am Eingang.
Wie schnell ändert sich dein Sensorsignal?
Bei einem Drucksensor gehe ich jetzt einfach mal von max. 15 Hz aus.
Baue einen Tiefpass zwischen Sensor und ADC. Du hast ja eh schon 0R 
Serienwiderstände.
Den tauscht du gehen 10K, und schaltest auf der ADC Seite noch einen 1uF 
Kondensator zwischen ADC Input und GND.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Christian M. schrieb:
> Wieso ein Widerspruch?

weil es genausogut heissen konnte du versorgst den Sensor mit Batterie,

deswegen sind Schaltbilder die Worte des Technikers, aus wortreicher 
Prosa wird doch keiner schlau und was du meinstest sieht man nicht.

von Rasputin (Gast)


Lesenswert?

Datenblatt schrieb:
> Ausgangslastwiderstand 1...5kOhm

Schalt mal +/-2.2k zwischen Signal nach Masse. Vermutlich kommt der 
Verstärker nicht damit klar eine so komplexe (rein induktive/kapazitive) 
"Last" zu treiben. Ausserdem mal 100nF nahe beim Sensor zwischen Vcc und 
Gnd.

von Joachim B. (jar)


Lesenswert?

Christian M. schrieb:
> Also, habe zwei Batterien in Reihe angeschlossen und einen sauberen
> ADC-Wert von 683 auf dem Display

ich dachte du meinst die Sensorversorgung, das ist es ja mit solch 
präzisen Angaben.

von Joe F. (easylife)


Lesenswert?

Zusätzlich zu Punkt 1 (Pufferung Stromversorgung) und 2 (Tiefpass):

3)
Du hast unterschiedliche LDOs für +5V/ADC und AVCC.
Warum?

- Verbinde AVCC statt mit +5V mit +5V/ADC


4) Dein LT1021 ist eine Spannungsreferenz basierend auf Zenerdioden.
Die kann max. 10mA liefern, und benötigt auch einen Mindeststrom.
Wie viel Strom benötigt dein Sensor?

Ich denke dein gesamtes Design benötigt ein wenig Überarbeitung.

: Bearbeitet durch User
von M. K. (sylaina)


Lesenswert?

Joe F. schrieb:
> Du hast unterschiedliche LDOs für +5V/ADC und AVCC.
> Warum?

Weil 5 V für den ADC andere Anforderungen hat als 5 V für AVCC

Joe F. schrieb:
> - Verbinde AVCC statt mit +5V mit +5V/ADC

Auf keinen Fall, das wäre ein grober Fehler.

von Christian M. (krusti)


Lesenswert?

Ok, das sind jetzt viele Vorschläge. Ich werde diese heute und morgen 
mal der Reihe nach ausprobieren.

test schrieb:
> Also ADC stimmt, am Sensor liegt das Problem, bzw. kann ja auch sein
> dass der einfach schwankt, sind ja alles analoge Werte, kann also
> durchaus sein, wie lange ist denn das Kabel von Sensor zum ADC, kannst
> du den Sensor mal räumlich sauber so ca 1cm vom ADC anlöten, vlt ist es
> dann schon gelöst.

Meine Leitung ist ungefähr 15 bis 20 Zentimeter lang, ungeschirmt. Eher 
15. Baulich wird es wohl nicht kürzer werden. Ich kann nur den Weg auf 
der Platine verkürzen, indem ich direkt an den ADC gehe.

Habe jetzt den Sensor einen Zentimeter vom µC weg. Und der Wert ist um 
einiges stabiler.

von test (Gast)


Lesenswert?

ja analoge Schaltungen immer mit Fingern betatschen und bewegen, 
klopfen, drücken, alles machen und Werte beobachten, falls zu 
empfindlich gibts irgendwo Probleme, kann auch eine schwache Löststelle 
sein etc.

Crosstalk halt auch ein Thema bei hochohmigen langen Leitungen, dein 
100mV peak kann ja durch irgendwelche Schaltungen, zB auch 
Vorschaltgerät Beleuchtung herkommen, einfacher Test mla einen Lötkolben 
an und ausschalten und Werte beobachten, die Rauschen meistens in viele 
Leitungen rein, zumindest hier bei mir.

von Joe F. (easylife)


Lesenswert?

M. K. schrieb:
> Joe F. schrieb:
>> - Verbinde AVCC statt mit +5V mit +5V/ADC
>
> Auf keinen Fall, das wäre ein grober Fehler.

Ah sorry, mein Fehler. Dachte die Referenzspannung wird hier genommen, 
liegt ja aber an AREF an.

Trotzdem sollte man mal gucken, ob der Strombedarf des Sensors mit der 
gewählten Spannungsreferenz überhaupt funktioniert.

Was für ein Sensor ist das denn genau?

von Carsten R. (kaffeetante)


Lesenswert?

Christian M. schrieb:
> Meine Leitung ist ungefähr 15 bis 20 Zentimeter lang, ungeschirmt.

Sind die 3 Leitungen miteinander verdrillt?

von Christian M. (krusti)


Lesenswert?

Vorab schon mal vielen Dank für die ganzen Tipps.

Habe jetzt mal meinen ursprünglichen Aufbau wieder hergestellt, d.h 
meine 15cm lange Leitung. Es ist wieder die reinste Achterbahn auf dem 
Display.

Carsten R. schrieb:
> Christian M. schrieb:
>> Meine Leitung ist ungefähr 15 bis 20 Zentimeter lang, ungeschirmt.
>
> Sind die 3 Leitungen miteinander verdrillt?
Jetzt ja :-), brachte aber keine nenneswerte Verbesserung, aber sinnvoll 
ist es trotzdem.

Joe F. schrieb:
> Trotzdem sollte man mal gucken, ob der Strombedarf des Sensors mit der
> gewählten Spannungsreferenz überhaupt funktioniert.
Also ich messe einen Strom von 0,85 mA. Die werden konstant gehalten. 
Laut Datenblatt ist der Strom unter 2,5 mA
> Was für ein Sensor ist das denn genau?
http://www.metallux.de/fileadmin/specs/Drucksensoren/CPS-1184-Z-Keramische-Drucksensoren-Metallux.pdf

Rasputin schrieb:
> Datenblatt schrieb:
>> Ausgangslastwiderstand 1...5kOhm
>
> Schalt mal +/-2.2k zwischen Signal nach Masse. Vermutlich kommt der
> Verstärker nicht damit klar eine so komplexe (rein induktive/kapazitive)
> "Last" zu treiben. Ausserdem mal 100nF nahe beim Sensor zwischen Vcc und
> Gnd.

Also ich habe das Gefühl, dass die ganzen Maßnahmen es langsam 
verbessern. Der Ausschlag ist jetzt nicht mehr so groß aber immer noch 
heftig am zittern. Die beste Lösung, bleibt die "Vergrößerung" der 
Masse. Kann das was mit dem Netzteil zu tun haben? Ich stelle ja eine 
parallele Verbindung über mein Oszi oder dem Programmer + Rechner zu 
Erde her.

Joe F. schrieb:
> 1.)
> Wo kommt denn die Versorgungsspannung 5V her?
> Stecknetzteil mit langem Kabel?
> 100nF sind hier viel zu wenig. Löte mal einen 22-47uF Elko direkt an die
> 5V Buchse.
Die Spannung kommt von einem +24V Netzteil mit langem Kabel und geht 
dann einmal auf den normalen V-Reg und einmal auf den LT2105.  Habe 
einen 47µ mal an die +24V gelegt.

> 2.)
> Dein ADC hat keinen Tiefpass am Eingang.
> Wie schnell ändert sich dein Sensorsignal?
> Bei einem Drucksensor gehe ich jetzt einfach mal von max. 15 Hz aus.
> Baue einen Tiefpass zwischen Sensor und ADC. Du hast ja eh schon 0R
> Serienwiderstände.
> Den tauscht du gehen 10K, und schaltest auf der ADC Seite noch einen 1uF
> Kondensator zwischen ADC Input und GND.
Habe was aufgebaut, allerdings bin ich etwas verwundert. Die Spannung 
ist zwischen ADC und R höher als das Signal zwischen Sensor und R. Und 
zwar das 2,5-fache. Iwas stimmt da noch nicht.
So wollte ich es Anschließen
         R = 10k
ADC--+--|==|----- Sensor
     |
     =  C = 0,88µ
     |
    GND

Noch eine andere Frage die mir gerade einfällt.
Wenn ich den ADC0 an PC0 nicht verwende. Wie muss ich den Port dann 
indern schalten? Als Ausgang? Eingang? Ich benutze für diese Versuche 
gerade die Pads mit und hoffe doch das der Controller sich durch die 
beiden parallelen Ports nicht selber beeinflusst.

: Bearbeitet durch User
von Christian M. (krusti)


Angehängte Dateien:

Lesenswert?

Und noch eine Frage, die eventuell mein ganzes Problem löst.

Was machen die beiden Metallkontakte auf der Keramik? Sie haben zu 
nichts weiter Kontakt nicht mal die beiden miteinander?

Schließe ich meine Masse der Platine, an meine (Alu-) Verschraubung für 
den Sensor an, beruhigt sich mein ADC. Die Verschraubung wird wohl 
Kontakt haben mit den Kontakten auf der Kermaik
Werde das morgen nochmal genauer Untersuchen.

von Stefan S. (mexakin)


Lesenswert?

Also dein interner ADC hat auf jedenfall einen Widerstand zu GND und 
dadurch baust du immer einen Spannungsteiler mit deinem Tiefpass auf, 
vor allem wenn deine Widerstände eben ungefähr gleich sind. Der interne 
Widerstand des ADCs ist irgendwo im Datenblatt genannt, ich stell mal 
40kOhm in den Raum, irgendwas grob in der Region +- 40kOhm wirds schon 
sein :)


Dein Sensor hat ein Leitendes Gehäuse, was mit Sicherheit ein wenig eine 
Antenne ist, ich hab meistens auf meinen ADc MEssungen ohne MAsse bei 
empfindlichen Eingängen eine 50Hz Netzschwebung drauf, das erklärt zwar 
nicht deine Störungspeaks, aber das Rauschen meiner Schaltungen :)


Du kannst mal versuchen einfach mit einer Klemme Schutzerde auf dein 
Sensorgehäuse zu verbinden, einfach drandrücken und kucken obs stabiler 
wird.

Wie schon gesagt, analoges Zeug muss man immer experimentieren,viel in 
die HAnd nehmen um ein Gefühl für das Rauschen und Störungen zu 
bekommen.

Masse GND Schutzerde, sind natürlich auch immer interessante Sachen, 
aber dafür braucht man Schaltplan und Hardware vor sich und muss genau 
wissen was wann wie wo angeschlossen ist und eben ein Oszi.

von spess53 (Gast)


Lesenswert?

Hi

>Also dein interner ADC hat auf jedenfall einen Widerstand zu GND...

Wo?

MfG Spess

von Stefan S. (mexakin)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Also dein interner ADC hat auf jedenfall einen Widerstand zu GND...
>
> Wo?
>
> MfG Spess

ich glaube der gute Spess hat Recht, also ich dachte bei meinem MSP430 
hätte ich das mal im Datenblatt gelesen, aber das betrifft nur serielle 
Widerstände durch den MUX, den der Atmel wohl auch haben wird, also ist 
das erstmal Quatsch, allerdings gitb es eben durch den ADC SAR betrieb 
und die seriellen Impendanzen doch gewisse Zeiten die man minimum 
Einhalten sollte um stabile ADC Werte intern zu erhalten.

Das weiss ich jetzt nicht ob du das beachtet hast, das muss dann im 
Programmcode enthalten sein.

von Christian M. (krusti)


Lesenswert?

Also so wie es aussieht, hat einfach die Verbindung auf das Gehäuse, wo 
der Sensor drin ist, gefehlt. Die Werte sind recht stabil, habe auch die 
Zusatzbeschaltungen entfernt und es funktioniert. Werde aber trotzdem 
ein paar Kondensatoren einbauen und, falls nochmal Platinen gemacht 
werden, die ADC-Masse etwas besser legen.

Es gibt aber weiterhin eine Differenz zwischen ADC0 und ADC7 von 10 
Digits. Das ist seltsam. Habe aber das Gefühl, dass der ADC7 der 
korrekte(re) Wert ist.

: Bearbeitet durch User
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.