-         

Ergebnis 1 bis 7 von 7

Thema: Fragen zur Sharp IR Sensor auswertung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    04.03.2004
    Ort
    Österreich - Kärnten
    Alter
    29
    Beiträge
    58

    Fragen zur Sharp IR Sensor auswertung

    Anzeige

    Hallo!!!
    Ich will mit nen AVR und einen Sharp IR-Sensor (GP2D12 und GP2D120) den Abstand zu einen Objekt bestimmen.

    Nun habe ich hier:
    http://www.roboternetz.de/wissen/ind...n#Sharp_GP2D12
    die Formel zur Umrechnung (Ausgabewert - Distanz) gefunden.

    Beim nachrechnen is mir aufgefalln, das wenn man das Messergebnis genau haben will, muss man es in 2 Strecken unterteilen.
    Also beim GP2D12 währe das dann:

    Von 10 - 50cm
    Distanz = 22 / (Messergebnis - 0,213)

    und von 50 - 80cm
    Distanz = 31 / (Messergebnis - 0,015)

    Und beim GP2D120:
    Von 4 - 22cm
    Distanz = 10,5 / (Messergebnis - 0,175)

    und von 22 - 40cm
    Distanz = 13 / (Messergebnis - 0,01)

    Kann das so stimmen???
    MFG Ingn Pirker

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    Hallo ingo pirker,

    vielleicht hilft Dir dieses Posting von mir zum GP2D120 weiter. Mit dem ~120 messe/rechne ich Entfernungen mit guter Stabiltiät. Deine Formeln helfen nur, wenn man weiß, ob Du den Messwert mit 8 oder mit 10 Bit abholst.

    Denke bitte auch an die Entstörung des Sharp. Die ist einfach, aber doch wohl erforderlich.
    Ciao sagt der JoeamBerg

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    04.03.2004
    Ort
    Österreich - Kärnten
    Alter
    29
    Beiträge
    58
    Hy!!

    Danke für die Antwort!!

    Am ich hole den Messert mit 10Bit ab!!
    Aber im großen und ganzen kann ich das mit der Formel schon machen (ich muss halt alle werte den 10Bit Muster angleichen).

    Das der Sharp solche Probleme mit der Stromversorgung hat, war mir bis jetzt noch nicht bekannt, aber gut das da schon eine Lösung (von euch - Danke!!!) des Problems vorhanden ist !!!

    MFG

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    Hallo ingo pirker,

    Zitat Zitat von ingo pirker
    ... ich hole den Messert mit 10Bit ab!! ...
    Ich finde die (meine) Lösung mit der selbst gemessenen Wertetabelle deswegen genau, weil ich dabei schaltungsinterne Messfehler oder Bauteiltoleranzen ausgleichen könnte. Wenn welche auftreten. Die Regressionskurve mit der seltsamen Formel y = 38512 mal x hoch(-1,0791) heisst ja nix anderes als y (der Abstand in mm) ist gleich 38512 dividiert durch Messwerthoch1,0791 - ich hatte das durch 27000/x angenähert (siehe Kurve). Mittlerweile - in der Schaltung, zusammen mit allen Anwendungen, bekomme ich das bessere Ergebnis mit der Formel

    Code:
      gpdtmp     = adc3_dat;        // Übernimm Daten
      GPDmm  = 25600 / gpdtmp;
      if (GPDmm  > 999)
      GPDmm  = 999;
      if (GPDmm  < 0 )
      GPDmm  = 0;
      return GPDmm;
    wobei noch zu ergänzen wäre, dass ich vom Messwert über 12 Messungen einen Mittelwert bilde:

    Code:
    ISR(ADC_vect)                   // _VECTOR(21)   
    {               
      adc3_sum    = adc3_sum + ADC;         //   ADC-Werte aufsummieren
      adc3_cnt++;
                
      if (adc3_cnt >= 12)           // Wenn Counter >= x, dann Messwert ausrechnen
                                    //   Wenn adc3_counter < x, dann keine Aktion
      {                             //
        adc3_dat  = adc3_sum / 12;  // Gemittelten ADC-Wert ausrechnen
        adc3_sum  = 0;              // adc3_sum und Counter rücksetzen
        adc3_cnt  = 0;
      }      
    }
    Code ist C, es sind die Variablendeklarationen hier nicht enthalten (hab ich in einer include-Datei). Aufpassen, wenn Du den ADC selbst ausliest: Es muss die Reihenfolge des Auslesens (Low - und High-Byte) strikt eingehalten werden - steht im ATMEL-doc zu Deinem µC. Schreibt man das so wie ich oben in der ISR - einfach "ist gleich ADC", dann regelt das der Compiler sauber "von selbst". Wie das in Bascom geht, weiss ich nicht.

    Viel Erfolg.
    Ciao sagt der JoeamBerg

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    04.03.2004
    Ort
    Österreich - Kärnten
    Alter
    29
    Beiträge
    58
    Ja gut beb ich zu - is genauer, aber ich will ja nur auf +/- 2cm oder so genau messen können, weil bis man mit dem Messvorgang fertig ist is der Roboter sowiso schon wider mehr als 2cm gefahren.

    Aber wenn ich genauere messungen machen will werd ich wohl deine Methode verwenden (muss halt deinen C text auf Basic umpoolen).

    Danke jedenfalls!!!!

    MFG
    Suche RP6 Roboter

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    Zitat Zitat von ingo pirker
    ... bis ... Messvorgang fertig ist ... mehr als 2cm gefahren ...
    Ohhh - alle Achtung! Mein Roboter fährt eher langsam. Na ja, Du hast ja recht. Wenn ich nachrechne: der GP2D120 macht 25 Messungen pro Sekunde, die Wandlungszeit vom ADC kann man dabei (fast) vernachlässigen - dann fährt Dein Roboter mehr als einen halben Meter pro Sekunde. Ok.
    Ciao sagt der JoeamBerg

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    04.03.2004
    Ort
    Österreich - Kärnten
    Alter
    29
    Beiträge
    58
    Ja mit 4km/h genau (1,111m/sec)!!!
    Oder besser er soll mal so schnell fahren!!

    MFG
    Suche RP6 Roboter

Berechtigungen

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