Forum: Mikrocontroller und Digitale Elektronik MCP3208 - Problem Digit Werte


von Tim M. (tim90)


Angehängte Dateien:

Lesenswert?

Hallo Forumsgemeinde,

benötige wieder einmal Eure Hilfe...
Habe hier einen MCP3208 12Bit ADC der nicht nachvollziehende Werte 
liefert.
Habe euch im Anhang den momentanen Aufbau angehängt.
Zur Zeichnung ist noch zu ergänzen das CH1-7 ebenfalls mit Widerstand 
und Kondensator aufgebaut sind und an einem Poti hängen.

Ich bekomme folgende Werte:

Wert[Digits] Ist[mV] nachgemessen[mV]
35 10.5 2.90
45 13.5 3.60
79 23.7 6.10
473 141.8 35.60
!127 38.1 59!
!206 61.8 65!

Wieso wird der Digit Wert weniger - bei steigender Spannung?
Das gleiche passiert auch bei höheren Spannungen... z.B. 600mV

Die Referenzspannungsquelle beträgt 1228mV.
Habe auch schon testweise einen Kondensator (100nF) an die 
Referenzspannung gehängt - leider kein Erfolg...

Momentan fällt mir nichts mehr ein was noch helfen könnte...

Könnt Ihr mir da bitte ein wenig weiterhelfen.


Gruß
Tim

von Frickelfritze (Gast)


Lesenswert?

Tim M. schrieb:
> Könnt Ihr mir da bitte ein wenig weiterhelfen.

Wenn du uns dein Programm nicht zeigst - wohl kaum.

von Tim M. (tim90)


Lesenswert?

>Wenn du uns dein Programm nicht zeigst - wohl kaum.
Ja klar - Programm ist aber sehr übersichtlich ;)

Da ich zwischenzeitlich schon Zweifel an meiner SPI / MCP3208 Library 
hatte, habe ich testweise auf einen Arduino umgestellt.
Aktuell also Arduino Nano mit externer Library 
(https://github.com/MajenkoLibraries/MCP3208)
Die Werte dich ich bekomme sind identisch mit denen die ich mit meiner 
Library und dem Attiny bekomme.
Der Code sollte es daher nicht sein...

Der aktuelle Code sieht wie folgt aus:
1
#include "MCP3208.h"
2
#include <SPI.h>
3
MCP3208 adc(10);
4
5
void setup() 
6
{
7
 adc.begin();
8
 Serial.begin(9600);
9
}
10
11
void loop() 
12
{
13
 Serial.println(adc.analogRead(2));
14
 delay(100);
15
}

Edit: Evtl. wäre der Thread im "Analogtechnik" Bereich besser 
aufgehoben(?)

Gruß
Tim

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Tim M. schrieb:
> Der aktuelle Code sieht wie folgt aus:

 Aha.
 Und die aktuellen Werte ?

von Tim M. (tim90)


Lesenswert?

> Aha.
>Und die aktuellen Werte ?

Die Werte, die oben stehen ;)

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Tim M. schrieb:
>> Aha.
>>Und die aktuellen Werte ?
>
> Die Werte, die oben stehen ;)

> !127 38.1 59!
> !206 61.8 65!

 So ?
 Bist du dir ganz sicher ?

von Tim M. (tim90)


Lesenswert?

>So ?
>Bist du dir ganz sicher ?
ja... leider

Habe jetzt Vcc als REF Spannung getestet...
Vcc = 4.2V (USB Port)
Wenn ich jetzt 2.1V am Poti einstelle müssten ca 2047 rauskommen - ich 
bekomme aber den Wert 1440.

Hab auch schon ein zweites Messgerät dran - Poti Spannung stimmt...

Edit: Das IC wurde ebenfalls schon einmal getauscht...

: Bearbeitet durch User
von Frickelfritze (Gast)


Lesenswert?

Tim M. schrieb:
> void loop()
> {
>  Serial.println(adc.analogRead(2));
>  delay(100);
> }

Du liest Kanal 2, hast aber das Poti an Kanal 0 angeschlossen?

von Frickelfritze (Gast)


Lesenswert?

Tim M. schrieb:
> Könnt Ihr mir da bitte ein wenig weiterhelfen.

An welchem Pin von welchem Arduino ist dein CS angeschlossen?

von Tim M. (tim90)


Lesenswert?

>Du liest Kanal 2, hast aber das Poti an Kanal 0 angeschlossen?
>An welchem Pin von welchem Arduino ist dein CS angeschlossen?
War alles richtig angeschlossen :)

Hab jetzt den Fehler gefunden...
Meine Library sowie die externe von Github hatten einen Fehler.
Hab die eigene Library überarbeitet - jetzt läufts :)

Dieser Code funktioniert einwandfrei: 
http://playground.arduino.cc/Code/MCP3208


Gruß
Tim

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.