-
        

Ergebnis 1 bis 7 von 7

Thema: A/D Problem

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.09.2008
    Beiträge
    19

    A/D Problem

    Anzeige

    Hallo,

    ich hab schon wieder ein Problem. Ich habe einen PIC 16F72 und einen GP2D120 Sensor. Der 10bit A/D-Wandler ist mit einer Referenzspannung (Vref+ 2.7V und Vref- 0.6V) eingestellt. Die Berechnung zur Kurve ist D=A/(X-B). Die Werte die rauskommen sind von 4cm an bis 11cm echt gut. Die Abweichung beträgt max. 2 mm. Das Ergebnis lasse ich mir auf 7Segmentanzeigen ausgeben. Jetzt mein Problem. Ziehe ich den Sensor über 11cm vom Gegenstand weg bleiben trotzdem die 11cm auf der Anzeige stehen und erst bei ca. 20cm ändert sich der Wert auf der Abzeige wieder. Um den Fehler zu einzugrenzen habe ich mir den A/D-Wert auf die 7Seg.-Anzeigen ausgeben lassen. Und bei 256 hängt er wirklich fest, obwohl die Spannung von 11cm auf 20cm um ca. 0.4V sinkt. Bin ich dann ca. bei 20cm angelangt springt er A/D-Wert mit einmal so auf 60 und alles ist wieder ok. Hab es schon mit einem anderen Controller (gleicher Typ) getestet und das gleiche. 256 ist auch eine komische Zahl.

    Vielleicht hat ja jemand eine Idee.



    Code:
    unsigned short mask(unsigned short num)
    {
      switch (num)
      {
        case 0 : return 0x7E;
        case 1 : return 0x30;
        case 2 : return 0x6D;
        case 3 : return 0x79;
        case 4 : return 0x33;
        case 5 : return 0x5B;
        case 6 : return 0x5F;
        case 7 : return 0x70;
        case 8 : return 0x7F;
        case 9 : return 0x7B;
      }
    }
    
    
    
    unsigned int weg4,adwert, digit,digit1,digit10,digit100,digit_no;
    
      void interrupt()
    {
      if (digit_no==0)
      {
        PORTB = digit1;
        PORTC = 0x80;
        digit_no = 1;
      }
      else
      {
        PORTB = digit10;
        PORTC = 0x40;
        digit_no = 0;
      }
      TMR0 = 0;
      INTCON = 0x20;
    }
    
    void main()
    {
      ADCON0 = 0x41;         //ADC einschalten
      ADCON1 = 0x8F;
      TRISA  = 0xFF;
      PORTB  =    0;
      TRISB  =    0;
      PORTC  =    0;
      TRISC  =    0;
      //adwert =    1023;
      OPTION_REG  = 0x80;
      TMR0        =   0;
      INTCON      = 0xA0;
    
      while (1)
      {
      ADCON0 = 0x45;     //ADC Starten
      //adwert--;
      adwert = ADC_Read(0);
    
      weg4=4731/(adwert+155);
      
          digit   = weg4 % 10u;
          digit1  = mask(digit);
          digit   = (weg4 / 10u) % 10u;
          digit10 = mask(digit);
          Delay_ms(200);
      }
    }

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.09.2006
    Ort
    Hamburg
    Alter
    35
    Beiträge
    988
    hi ja ist klar das er bei 255 festhängt der adc kan nur 8bit
    Legastheniker on Bord !

    http://www.Grautier.com - Projektseite
    http://www.grautier.com/wiki/doku.php?id=bt-index - BT-BUS

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.09.2008
    Beiträge
    19
    Hmm, im Datenblatt steht das der 16F872 einen 10bit A/D hat

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    19.09.2008
    Beiträge
    19
    4cm Abstand zum Gegenstand entspricht einen A/D-Wert von 1023. Bei 30cm Abstand entspricht de A/D-Wert 0.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.09.2006
    Ort
    Hamburg
    Alter
    35
    Beiträge
    988
    jo du hast oben im text die 8 vergessen deswegen hatte ich des falsche db :P wieviel V schmeist den der sensor aus ?
    Legastheniker on Bord !

    http://www.Grautier.com - Projektseite
    http://www.grautier.com/wiki/doku.php?id=bt-index - BT-BUS

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    19.09.2008
    Beiträge
    19
    Er gibt von ca. 3Volt bis unter 0,4 raus. Richtig sauber arbeiten tut er aber bei mir von 2,7-0,6 Volt. Ich werde morgen noch mal ein wenig daran rumbasteln und ihn mal ohne Referenzspannung betreiben. Vielleicht geht es dann ja besser.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.09.2006
    Ort
    Hamburg
    Alter
    35
    Beiträge
    988
    da haste des prob wen er 3v rausgibt dann reicht dein vref net
    Legastheniker on Bord !

    http://www.Grautier.com - Projektseite
    http://www.grautier.com/wiki/doku.php?id=bt-index - BT-BUS

Berechtigungen

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