-         

Ergebnis 1 bis 5 von 5

Thema: ADC Wandlerproblem mit ATmega32

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    22.03.2005
    Beiträge
    91

    ADC Wandlerproblem mit ATmega32

    Anzeige

    Hallo zusammen!
    Ich habe eine Anwendung in der 4 analoge Spannungen relativ schnell erfasst werden müssen um darauf zu "regeln". Es wird ein Pulsmuster erzeugt und in der Zeit, wärend der Timer läuft wird gemessen. Passt auch wunderbar!
    Nun zum Problem ich habe den ADC im Free runing mode konfiguriert starte ihn einmal und mache dann in einem Sub

    v=getadc(0)
    w=getadc(1)
    .
    .
    X=getadc(3)

    gemessen wird zwar bei allen, aber nur adc 0 ist genau, bei den anderen 3 Eingängen erhalte ich zu stark schwankende Werte!

    Laut Datenblatt muss ja beim Multiplexen definitiv die laufende Messung abgeschlossen sein, bevor umgeschaltet wird! Nur wie geht das mit Bascom? Wegen der extremen Ungenauigkeit ist die Auswertung so nicht brauchbar. Also ist die bisher verwendete Konfiguration wohl Mist...
    Wenn ich die Eingänge in einem Testprogramm einzeln teste, misst jeder gleich gut, also liegt es wohl an dem Ablauf im Programm nur wie geht dem?

    Danke schonmal für eure Hilfe

    Gruß

    Sven

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    du kannst in Free-Running-Mode nicht einfach den Kanal wechseln.
    Dann musst du zumindest abwarten bis mit dem neuen Kanal mindestens
    eine komplette Wandlung abgelaufen ist.
    Warum benutzt du die free-running-Betriebsart ?
    In deinem Anwendungsfall wäre es doch besser,
    zuerst den gewünschten Kanal einzuschalten,
    dann eine AD-Wandlung zu starten und nach Ablauf
    das Ergebnis zu lesen.

    Gruß Jan

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    22.03.2005
    Beiträge
    91
    Hallo Jan,

    das wäre eigentlich auch mein Ziel, allerdings stehe ich etwas dem Schlauch, wie das mit Bascom umzusetzen ist. Single mode ist kein problem!
    Würde das so klappen: single mode usw...bla bla

    start adc
    v=getadc(0)
    stop adc

    start adc
    w=getadc(1)
    stop adc

    usw...

    macht das Bascom dann richtig? Oder muss ich die Bits laut Datenblatt setzen?

    Gruß

    Sven

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hi Sven,
    versuchs mal so:

    -------------
    dim V0 as word, V1 as word, V2 as word

    config adc = Single , Prescaler = Auto

    start adc

    V0=getadc(0)
    V1=getadc(1)
    V2=getadc(2)

    stop adc
    --------------


    Gruß Jan

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.04.2005
    Beiträge
    178
    Versuch doch mal folgendes:

    v=getadc(0)
    w=getadc(1)
    w=getadc(1)
    x=getadc(2)
    x=getadc(2)
    y=getadc(3)
    y=getadc(3)

    Dann wird nach dem Kanalwechsel erst ein Wert eingelesen, der aber nicht benutzt wird. Der nächste Wert sollte dann stimmen.

    felack

Berechtigungen

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