ADC-Auswertung kleiner/größer

OP #3624211
Lesenswert?
• ▲
▼
Frohe OSTERN - mal an dieser Stelle  ;-)

Ich bastel nun seit Tagen wieder mit meinen Codes rum und bin mal wieder 
beim ADC angekommen. Einlesen und damit was auslösen funzt ja bereits. 
Mein jetziges Anliegen liegt eigentlich darin, eine Auswertung des 
Vorherigen Zusatandes zu machen.
Ich benutze ein Labornetzteil, bei dem ich ziemlich genau und 
gleichbleibend in mV-Bereich einstellen kann.
Angenommen ich habe eine Spannung von 1,524 V anliegen. Nun lasse ich 
eine Mittelwertmessung laufen. Um jetzt den µC die Auswertung auf 
größer, kleiner, gleich des vorherigen Messwertes ermöglchen zu können, 
speicher ich meinen ADCW in einer Hilfvariablen ab. Anschließend starte 
ich erneut eine Messung. Dieser ADCW kann ja nun einen dieser drei 
Zustände haben. Jetzt würde ich einen Vergleich anstellen mit 
Hilfsvariablen zu ADCW.

Problem dabei scheint nur, dass auch bei Verminderung des 
Spannungseinganges mein neuer ADCW größer wie die Hilfsvariable ist und 
das kann eigentlich nicht sein. Dies ist aber auch nur der Fall wenn 
wirklich meine Verringerung nicht mehr wie 20mV sind. Aber dies ist 
leider nicht akzeptabel, da ich eine Auflösung von 2mV habe.
Wenn ich gar keine Änderung am Eingangssignal vornehme, dann würde ich 
eine nach Gauß Verteilung erwarten. Doch habe ich eine enorme Gewichtung 
das ADCW größer Hilfsvariable ist.

Hat jemand damit schon Erfahrungen gesammelt durch gleiche 
Problemstellung und eine bessere Lösung oder dufte Tipps für 
Verbesserungsvorschläge meiner Überlegungen???

Also eigentlich möchte ich eine Vergleichsgenauigkeit von 4mV (also 
eigentlicher Wert +/- 2mV Schwankung) und eben den Vergleich der 
Vorherigen Messung und noch cooler auch der davor um eine 
Richtungsaussage machen zu können.
Damit möchte ich späeter meine PWM-Signale erhöhen oder verringern, also 
eben in Abhängigkeit des ADCW.

Wenn man so möchte eine einfache Regelung des PWMs zu ADCW.

Vielen lieben Dank und gut Eier suchen

LG
OP #3625017
Lesenswert?
• ▲
▼
Mein Problem liegt gerade darin, dass bei einer Verminderung des 
Spannungseingangs von 1-20mV der gemessene ADCW größer wie der vorherige 
Messwert sein soll. Zumindest wertet das mein µC so aus. ???

Und dann hatte ich noch die Frage ob es einen anderen Weg des 
ADCW-Vergleichens gibt. ???
OP #3625127
Lesenswert?
• ▲
▼
Hubert G. schrieb:
> Wie groß ist denn der Rauspegel auf deiner Meßspannung?
> Das wird dein größeres Problem sein.
Das mit dem Rauschen müsste eigentlich durch die 100 Messungen doch 
ziemlich gut rausgemittelt werden. Meine Anzeige steht auch sehr gut 
still ohne ständig die Einer-mV-Stelle zu ändern. wenn ich am 
Labornetzteil nichts anfasse sollte dies schon "gleichbleibend" sein. 
Meine Anzeige bleibt auch nach Minuten schön ruhig stehen.
Ein Rauschen und damit eine Messung zwischen +/-2mV würde ich deswegen 
noch verstehen. Aber eine falsche Auswertung bei einer echten Änderung 
(adcval kleiner werdend um ca. 20mV) ist nicht wirklich akzeptabel. Alle 
LCD-Ausgaben kommen daher, damit ich im Prozess überprüfen kann wo der 
µC wann wohin gesprungen und ausgeführt hat. Mit dem Simulieren und 
Watchdog etc. habe ich leider noch keine Berührungen gemacht. Sollte 
aber ja nicht zur Sache tun, denn so überprüfe ich ja gleich mit 
entsprechender Hardware.

ganz einfach so:
1
g = 1024;
2

3
 while (1)
4
 {
5
          if (g >= adcval)
6
          {
7
            if (adcval <=5 )
8
            {
9
              m--;
10
              n++;
11
              lcd_setcursor(0,3);
12
              lcd_string("kleiner 5");
13
              _delay_ms(1000);
14
            }
15
            else if (adcval > 5 && adcval <= 10)
16
            {
17
              m -= 2;
18
              n += 2;
19
              lcd_setcursor(0,3);
20
              lcd_string("kleiner 10");
21
              _delay_ms(1000);
22
            }
23
            else if (adcval > 10 && adcval <= 100)
24
            {
25
              m -= 5;
26
              n += 5;
27
              lcd_setcursor(0,3);
28
              lcd_string("kleiner 100");
29
              _delay_ms(1000);
30
            }
31
            lcd_setcursor(0,2);
32
            lcd_string("Einmal rauf gegangen");
33
            _delay_ms(1000);
34
          }
35

36
          if (g<adcval)
37
          {
38
            if (adcval <=5 )
39
            {
40
              m++;
41
              n--;
42
              lcd_setcursor(0,3);
43
              lcd_string("kleiner 5");
44
              _delay_ms(2000);
45
            }
46
            else if (adcval > 5 && adcval <= 10)
47
            {
48
              m += 2;
49
              n -= 2;
50
              lcd_setcursor(0,3);
51
              lcd_string("kleiner 10");
52
              _delay_ms(2000);
53
            }
54
            else if (adcval > 10 && adcval <= 100)
55
            {
56
              m += 5;
57
              n -= 5;
58
              lcd_setcursor(0,3);
59
              lcd_string("kleiner 100");
60
              _delay_ms(2000);
61
            }
62
            lcd_setcursor(0,1);
63
            lcd_string("Einmal runter gegangen");
64
            _delay_ms(10000);
65
          }
66

67
  g = adcval;
68
  for (f=0; f<800; f++)
69
  adcval = ADC_Read_Avg(0, 100);      //Mittelwertübergabe aus 100 Einzelmessungen - Kanal 0
70
  }

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.