|
optomann
2 Beiträge
 Neuer Benutzer
|
31-03-2010 16:03
Hallo Freaks, habe an Atmel 128 eine LCD und 12 bit ADC angelötet, soll ein Voltmeter werden. Der 12 Bit Wandler wird über SPI (Bascom) abgefragt. Voltmeter zeigt aber nur 0 Volt und 5 Volt richtig an - dazwischen auch groben Unfug (aber immer zwischen 0 und 5).
Mache ich da mit der Umrechnerei was total falsches? Code angehängt.
Bin dankbar für einen heißen Tipp.
Voltmeter.bas
|
|
Pit999
16 Beiträge
 Neuer Benutzer
|
11-04-2010 12:17
Hallo
12 bit Wandler und V als singel ??????????
dat funzt nicht
viel Spass
|
|
optomann
2 Beiträge
 Neuer Benutzer
|
13-04-2010 16:12
Hallo pit999, mit V als Single ist schon richtig, denk ich mal, Spannung wird ja vorher als Word geholt und dann umgerechnet. Problem liegt tiefer. Fast fünf Volt am Eingang liefern 65407 für "Spannung"(nicht ganz richtig_ sollten nur fast 4096 sein - und 0 Volt 0 -OK) Irgendwie würfelt SPI die Bits durcheinander. Idee ???
|
|
Pit999
16 Beiträge
 Neuer Benutzer
|
14-04-2010 22:47
Hallo
rein rechnerisch schon aber du liest aus 12 bit nur 8 bit aus und holst dir 12 bit rein.
definiere die 12 bit auf 8 bit oder lies die 12 bit aus und dein ergebniss passt. du bekommst so ein ergebniss aus nirwanadaten
die in den 12 bit stehen. Bit 1 von den 8 bit steht dann wo es lust hat und nich an der stelle wo du auslesen willst um das ergebniss
sauber zu bekommen
dein V liest also 8 bit irgendwo aus 12 bit aus - was dann meistens nicht stimmt und oft komplett falsch interpretiert wird und dann als 0 oder 5 ausgegeben weil so definiert und weil dein wert nicht passt.
setz einfach dein V auf 12 bit und sieh dir an was rauskommt
wenn das ergebniss passt setz den 12 bit wandler auf 8 bit und das ergebniss passt. wie das funzt steht im datenblatt.
gruss
|
|
schube2
12 Beiträge
 Neuer Benutzer
|
15-04-2010 19:01
Hallo Optomann,
ich hätte zuerst vermutet das beim einlesen der Daten über die SPI-Schnittstelle die Reihenfolge des Lowbytes und des Highbytes nicht richtig beachtet wird.
Ich denke das eigendliche Problem ist der falsche Ansatz einer Dreisatzrechnung.
Du gehst davon aus das 5V einen Digitalwert von 65536 entspricht, also 16 Bit.
Der AD-Wandler liefert einen maximalen Wert im 12 Bit breite, also einen Digitalwert von 4096. Die SPI-Schittstelle überträgt zwar 16 Bit aber der AD-Wandler liefert nur einen Wert von 12 Bit und die restlichen 4 Bit bleiben Null.
Folglich müßtest du die 5V erst durch 4096 teilen und dann mit den Wert aus dem AD-Wandler multiplzieren.
Wenn schon eine LCD-Anzeige vorhanden ist dann laß doch den Wert aus dem AD-Wandler mit anzeigen. So lassen sich die Rechenwerte besser kontrollieren.
Gruß Bernd
|