Forum: Mikrocontroller und Digitale Elektronik ADC gibt nur mist aus


von useless (Gast)


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

von 4421 (Gast)


Lesenswert?

Eine sicher zielfuehrende Methode waere unter anderem den multiplikator 
iterativ anzupassen ? Schneller waere ein Gleichungssystem.

von useless (Gast)


Lesenswert?

kannst du das evtl. ein bisschen erläutern ? stehe im mom ziehmlich auf 
dem schlauch

von MWS (Gast)


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.

von useless (Gast)


Lesenswert?

ich habe jetzt nur den Getadc(0) ohne multiplikator da stehen

jetzt schmeisst er mir werte zwischen 4790 und 8000 aus

ich schnalle das echt nicht....

von MWS (Gast)


Lesenswert?

Hast Du das Beispiel ausprobiert, das bei Bascom dabei ist ? ADC 
gestartet ? Poste mal kompletten Code.

von useless (Gast)


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

von MWS (Gast)


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

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.