Ich glaube du hast die Referenz vergessen
REFERENCE
Value may be OFF , AVCC or INTERNAL. See the data sheets for the different modes.
d.h.
Die Zeile müsste bei dir heissen
Config Adc = Single , Prescaler = Auto , Reference = AVCC
MfG Matthias
Hey Leute,
ich versuche gerade einen Analog Eingang einzulesen.
Sinn -> ich will ein Poti als Regler verwenden um z.b. ein Wert (sekunden) "hochdrehen" zu können.
Ich will dazu ein Poti verwenden (50k).
Außen VCC & GND und Schleifer ist an PA7.
leider bekomme ich immer nur eine 0 ausgegeben!
Am Schleifer liegen ca 2 V an.
Was mach ich vllt falsch?
Lcd usw geht alles, nur steht halt immer ne 0 da!Code:$regfile = "m16def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 $baud = 9600 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Cls Config Adc = Single , Prescaler = Auto Start Adc Dim W As Word , Channel As Byte Channel = 7 Do W = Getadc(channel) Locate 1 , 1 Lcd "ADC-Pin " ; Channel ; Locate 2 , 1 Lcd "Wert: " ; W Waitms 500 Cls Loop End
Mfg Lenox
Ich glaube du hast die Referenz vergessen
REFERENCE
Value may be OFF , AVCC or INTERNAL. See the data sheets for the different modes.
d.h.
Die Zeile müsste bei dir heissen
Config Adc = Single , Prescaler = Auto , Reference = AVCC
MfG Matthias
habs hinzugefügt, geht leider auch nicht
jawohl ich habs, AREF hatte keinen richtigen Kontakt, funktioniert jetzt, aber der Wert schwankt leider stark ca (166-185).
166-185 das sind kein 2 %
Wie genau ist Deine Referenz ?
1 % ist 'normal' an wackeln ohne Mittelwertbildung,schwer abhängig vom Prescaler und Auto finde ich da eher die schlechte Wahl.
Gento
Hallo Leute, habe fast das gleiche Problem...
Bei mir wird jedoch immer 255 Angezeigt. Außerdem habe ich das Prinzip noch nicht ganz verstanden. Vielleicht könnt ihr mir da weiterhelfen
Also ich habe einen Sensor, der wie ein Poti agiert, d.h. er liefert mir 0 - 5 V ausgangsspannung am port. versort wird er mit 5 V (is ja klar).
So, nun habe ich in vielen Datenblättern nachgelesen, das die interne Referenzspannung bei 2,56 V (oder 2,54 V) liegt, und dass man nicht höher an dem Port gehen darf, sonst schießt man ihn ab...
Ob das stimt weiß ich allerdings nicht. Außerdem, ich verwende einen Mega 168.
So, nun weiter in der Problematik... Wo, wenn ich jetzt die interne Referenzspannung nicht nehme, müsste ich die externe dranhängen. Wozu sollte man einen Prescaler verwenden?
Ich möchte mit diesem Sensor Winkel messen. Und dafür brauche ich volle 360°. Da ich aber anscheinend nur eine Auflösung von 256 Bit habe ist das doch extremst schlecht... Da ist doch dann 1 Bit 1,4° groß und das ist sehr ungenau...
Oder hab ich da schon wieder ein Denkfehler drin?, könnte man die Auflösung größer machen?
So, ich hoffe ich hab euch nich allzu arg verwirrt...
Ich bin irgendwie verzweifelt, ich hoffe mir kann jemand mit meinem Problem weiter helfen, denn alle Anleitungen, Bücher oder auch das RN-Wissen helfen mir nicht weiter
Gruß Felix
Die ATMegas halten eine Eingangspannung von max. 5Volt aus. Wenn du eine Referenzspannung von 2,54Volt hast, ist alles größer 2,54Volt 256.Zitat von Stargate
Stimmt.Zitat von Stargate
Das habe ich auch noch nicht verstandenZitat von Stargate
Ich weiß nicht was für eine Auflösung der ATMega168 hat, aber wenn es nur 256 ist, dann kriegst du es auch nicht genauer.Zitat von Stargate
jon
P.S.:Kannst du mal die Spannung messen, bei der er 255 ausgiebt und dann hier dein Ergebnis reinstellen?
Nice to be back after two years
www.roboterfreak.de
Also bis jetzt ist der Port offen. Ich verwende den Pin PC2 (ADC 2).
Ich bin grad eben dabei mal Spannungen durchzuprobieren, melde mich gleich (sofort) wieder. Danke schonmal für die schnelle Antwort
Gruß Felix
Also, ich habe mal schnell mit einem Poti an dem Eingang Werte erzeugt... Tut sich GAR NIX. Hab hier mal den Code
Code:$regfile = "m168def.dat" $crystal = 16000000 'Quarzfrequenz $baud = 9600 '$hwstack = 32 '$framesize = 32 '$swstack = 32 'Die üblichen Definitionen bei Standardprogrammen auf Miniboard Dim Sensor As Byte 'Config Pinc.2 = Input 'ADC 2 an Ctrl 'Set Portc.2 Config Adc = Single , Prescaler = Auto Start Adc 'Prescaler = Auto 'Reference = Off Do Sensor = Getadc(2) 'Locate 2,8 'Lcd Sensor Print "Sensor " ; Sensor Wait 2 Loop End
Wärenddessen schau ich mir schnell mal den Sensor an, den hab ich auch noch nicht aktiviert ^^
Bitte nicht an so manchen Codezeilen stören. Manche hab ich mit einem ' außer gefecht gesetzt.
Also bis gleich
Hallo,
der ADC eines AVR hat aber 10 Bit, das ergibt Werte von 0 bis 1023.
Wenn Du als Referenz nicht intern sondern AVCC angibst, sind das wieder 5V und das sollte doch auch passen.
Wenn man bei Referenz intern oder AVCC angibt, sollte beim Pin AREF aussen ein Kondensator angeschlossen sein.
Den Prescaler braucht man um den Takt des ADC auf unter 200kHz zu bekommen, denn der Takt wird von der CPU-Frequenz abgeleitet, das macht Bascom aber für einen wenn man Auto angibt.
Edit:
beim M168 ist die interne Referenzspannung 1,1V nicht 2,5V !
Lesezeichen