-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 28

Thema: Analog Digital Wandler bei Mega8

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    27.08.2007
    Alter
    27
    Beiträge
    324

    Analog Digital Wandler bei Mega8

    Anzeige

    Weil ich schon immer mal den AD Wandler einsetzten/testen wollte habe ich das Beispielprogramm aus dem RN Wiki ein wenig umgeschrieben, um den AD Wandler zu testen.

    Code:
    ' Die gemessene Spannung wird in der Variablen W gespeichert.
    ' Channel ist der Pin, an dem die Spannung gemessen werden soll.
    
    $regfile "m8def.dat"
    $baud = 9600
    $crystal = 8000000
    
    Config Portc.5 = Output
    Portc.5 = 1
    
    Config Adc = Single , Prescaler = Auto
    Start Adc
    Dim W As Word , Channel As Byte
    Channel = 0
    Do
      W = Getadc(channel)
      Print "ADC-Pin " ; Channel ; ": Wert " ; W
      Incr Channel
      If Channel > 7 Then Channel = 0
      Waitms 800
    Loop
    End
    Zwischen Portc.5 (an dem ja +5V liegen sollten) und AD0 hängt ein 10K Poti. AREFF und AVCC sind nicht beschaltet (dann verwendet er doch VCC als AREFF, oder?) Wenn ich nun das Proggi starte, so gibt sendet der uC für jeden ADPort 1023 - egal, wie das Poti eingestellt ist. Das kann doch nicht richtig sein...?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622

    Re: Analog Digital Wandler bei Mega8

    Hallo Barthimaeus,

    Zitat Zitat von Barthimaeus
    ...Zwischen Portc.5 (an dem ja +5V liegen sollten) und AD0 hängt ein 10K Poti.
    Lege mal ein Ende des Potis an den Pin, das andere Ende an Masse und den Mittelabgriff an AD0. Deine Methode funktioniert nicht, da der AD-Wandler aufgrund seines hohen Eingangswiderstands immer die volle Spannung "sieht".

    AREFF und AVCC sind nicht beschaltet ...
    Aus dem ATmega8 Datenblatt:


    Im Zweifel Aref immer zusätzlich mit einem Kondensator entkoppeln.

    Viele Grüße

    Fred
    Only entropy comes easy. - Anton Checkhov

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    27.08.2007
    Alter
    27
    Beiträge
    324
    Bekomme weiterhin 1023. Wie sollte die Ausgabe denn eigentlich aussehen? Dezimalzahl entsprechend der Anzahl an Volt?

    Ich hatte jetzt verbunden:

    VCC--AGND
    VCC--AREF
    PBO--Pot links
    GND--Pot rechts
    AD0--Pot mitte

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    VCC--AGND
    VCC--AREF
    PBO--Pot links
    GND--Pot rechts
    AD0--Pot mitte
    Ich würd mal sagen AGND gehört mit GND verbunden.
    AREF kann an VCC, also +5V bleiben, im Controller dann externe Referenz auswählen. Man sollte da dann aber ein LC Tiefpaßfilter einbauen um Störungen aus der "Digitalseite" rauszufiltern ( Steht auch so im Datenblatt ), oder die Pins AVCC und VREF verbinden.

    Messen kannst Du aber dann nur was, wenn der Port PB0 auf +5V steht.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hallo,

    1. siehe wkrug's Posting.

    2. AVcc muss immer noch mit Vcc (evtl. über ein LC- oder RC-Filter) verbunden werden, damit der A/D-Wandler überhaupt richtig funktionieren kann!

    3. Welche Werte Du erhältst, ist von der Referenz abhängig und im Datenblatt genau erklärt. Da ich kein Bascom kann, kann ich das nicht mit Deinem Code korrelieren. Sieh mal in der Bascom-Dokumentation nach, wie Du die Referenz einstellen musst. Wenn Du nur ADC0 nutzen willst, warum fragst Du dann die anderen Kanäle ab?

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    hätt auch noch ne frage zu areff, bisher habe ich das immer über einen widerstand an vcc gehängt, bei meiner neuen platine habe ich den aber vergessen, geht das auch wenn areff nicht beschaltet ist ??
    und avcc immer auf vcc legen oder?
    danke shcon mal..
    meine projekte: robotik.dyyyh

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    27.08.2007
    Alter
    27
    Beiträge
    324
    Was ist ein "LC- oder RC-Filter"? Warum braucht der AD Wandler überhaupt eine externe Spannungsversorgung? Warum kann ich nicht die interne Referenzspannung benutzen? Wie schalte ich auf externe Referenzspannung um (bei den Fusebits nichts gesehen)?

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hi,

    Zitat Zitat von goara
    ...ne frage zu areff, bisher habe ich das immer über einen widerstand an vcc gehängt...
    das widerspricht dem Datenblatt. Sieh mal auf S. 197 des Datenblatts Version 2486S–AVR–08/07 : An Aref steht die externe oder per Software gewählte interne Referenzsspannung an. Im 2. Fall ist der Pin ist nur dazu da, dass man von dort noch einen Kondensator gegen Masse legt (geht auch ohne C, aber Du kannst doch sicher noch einen "freitragend" dranlöten, selbst wenn Du ihn nicht auf der Platine vorgesehen hast, oder?). Aref darf nicht an Avcc angeschlossen sein, wenn Du als Referenz AVcc oder die interne Spannungsreferenz wählst, sonst gibt es einen Kurzen! Schau mal hier auf S. 15!

    ...und avcc immer auf vcc legen oder?
    Genau, möglichst mit einem LC- oder RC-Tiefpass davor.

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hi Barthimaeus,

    Zitat Zitat von Barthimaeus
    Was ist ein "LC- oder RC-Filter"?
    http://de.wikipedia.org/wiki/Tiefpassfilter

    Im Datenblatt des ATmega8 steht auf S. 203 sogar ein Vorschlag zur Dimensionierung!

    Warum braucht der AD Wandler überhaupt eine externe Spannungsversorgung? Warum kann ich nicht die interne Referenzspannung benutzen?
    Du wirfst hier Begriffe durcheinander. Die Designer haben die externe Spannungsversorgung (AVcc) des AD-Wandlers an einen Pin gelegt, damit man sie filtern kann. Mit der Referenzspannung hat das direkt nichts zu tun.
    Du kannst zwar AVcc als Referenzspannung wählen (s.u.), aber auch eine (innerhalb der erlaubten Spannungswerte) beliebige externe Referenzspannung an Aref anschließen oder die interne Referenzsspannung wählen. Was nimmt man? Natürlich das, was für die jeweilige Hardware-Situation optimal ist!

    Wie schalte ich auf externe Referenzspannung um (bei den Fusebits nichts gesehen)?
    Ohne das Lesen von Datenblättern geht es nicht: Bits REFS0 und REFS1 im SFR ADMUX (S. 205 im oben verlinkten Datenblatt). Wie man das in Bascom umsetzt, weiß ich nicht, da ich kein Bascom kann.

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    hallo fhs, erstmal danke fuer die hilfe
    dann werde ich avcc noch ueber nen 100nF an vcc hängen.
    den bekomm ich sicherlich noch irgendwo hin.
    weis nur, das ich beim letzten mal probleme mit den adcs hatte und keine sinnvollen werte rauskamen, wenn ich areff nicht auf vcc hatte, (auch mit interner refernezspannung, aber ich werde es nochmal veruschen)

    die werte fuer das r-c-glied sind unkritisch oder? R=1K 100nF sollte tun oder ?
    meine projekte: robotik.dyyyh

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •