ADC gibt nur mist aus

Gast #1148343
Lesenswert?

Nabend


Ich habe ein kleines Problem mit meinem ADC und einem Spannungsteiler, 
ich hoffe ihr könnt mir weiterhelfen

ich habe einen Spannungsteiler mit einem 10 und einem 1K ohm

ich gebe als Uges 12 volt drauf. Als U2 bekomme ich 1.102V raus, die 
gehen direkt auf ADC0

wie rechne ich in bascom jetzt um, sodass auf meinem display die 12V mit 
2 nachkommastellen auftauchen ?

mein prog sieht ungefähr so aus:

Config ADC = Single , Prescaler = Auto , Reference = AVCC
Start ADC

Dim Volt as Single

Do
W = Getadc(0)

Volt = W * 0.0025
Cls
Lcd W
Lcd Volt ; "Volt"
Waitms 200

Loop
End

Ich hoffe ihr könnt mir helfen, ich sitze schon mehrere stunden hier und 
bastel mir einen zurecht. ich bekomme lediglich nur zahlensalat auf dem 
display. ich habe auch schon als Reference internal genommen, aber da 
verändert sich nix besonderes

Vielen Dank
useless
Gast #1148371
Lesenswert?

Schau mal in der Bascom Hilfe nach "fusing", das erlaubt Dir die 
formatierte Ausgabe eines Single, damit ist der Zahlenwust weg.

GetADC sollte bereits einen korrekten Wert ausgeben, den Du eigentlich 
nicht mehr irgendwie teilen musst.

Versuch mal den Wert ohne Multiplikator auszugeben. Sollte dann um die 
1.1 Volt anzeigen. Du musst daraufhin mit ca. 10.9 multiplizieren um 
wieder auf 12 V zu kommen. Warum du mit 0.0025 mal nimmst (/400 teilst) 
verstehe ich nicht.

Auf interne Ref zu stellen ist schlecht, wenn ARef mit VCC verbunden 
bleibt, soll lt. Datenblatt unterbleiben, schließt int. Ref. kurz.
Gast #1148407
Lesenswert?

$regfile = "m8def.dat"
Config Lcdpin ...
Config Lcd = 16*2
$baud = 9600


Config ADC = Single , Prescaler = Auto , Reference = AVCC
Start ADC

Dim W As Word
Dim Volt As Single

Do
W = Getadc(0)

Volt = W * 10.9
Cls
Lcd W
Lcd Volt ; "Volt"
Waitms 500

Loop
End

Das is mein ganzer code
Gast #1148410
Lesenswert?

Ok, gerade selbst ausprobiert. Programmiere zwar in Bascom, spreche aber 
die Register meist per Asm an, verwende GetADC so gut wie nicht, deshalb 
ungewohnt für mich.

GetADC gibt Werte zwischen 0 - 1024 aus, 1024 entspricht bei >Reference 
= AVCC< Deiner VCC, also Versorgungsspannung (5V?). 1,102 wären dann ein 
Wert von W = 226. Wenn dieser Wert nicht kommt, oder stark schwankt bei 
sauberer Eingangsspannung von 12V, ist woanders der Wurm drin.

Wenn Du erst einen Wert von 226 angezeigt bekommst, dann musst Du den 
nur durch 18,833 teilen, um auf 12 zu kommen.

Weise aber erst den den Wert >W< einer Single zu und teile dann erst 
durch 18,833, kannst dann fusing nehmen, um die Single zu formatieren.

Probier mal das:

W = Getadc(0)
Volt = W ' Erst der Single den Word-Wert zuweisen
Volt = Volt / 18.833
S = fusing(Volt , "#.##")
LCD S

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren