- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 39

Thema: Abhängigkeit von Reflexion und Abstand an einer optischen Messeinrichtung?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.237
    Nun hab Ich den passiven Ansatz zum laufen gebracht.
    Als Controller hab Ich da einen AVR32DB32 verbaut.

    Es werden dabei 2 Sensoren vom Typ AS7265x verwendet.
    Der eine misst die von oben kommende Strahlung, der andere das reflektierte Licht der Pflanzen.
    Leider ist das Auslesen der Sensoren sehr fehleranfällig, die Ergebnisse aber brauchbar.
    Des weiteren passen die benötigten Frequenzbänder nicht genau zu der für die REIP Ermittlung benötigten Wellenlängen.
    Ich versuche zur Zeit das Problem durch Gewichtung von benachbarten Wellenlängen zu lösen - Suboptimal, aber zur Zeit nicht anders lösbar.
    Siehe Code:
    Code:
    //Calculate Raw Data for Reip 460nm-2 560nm-6, 680nm-10, 705nm-11, 730nm-12, 810nm-14 nearest to Orig.
    //Orig needed for REIP Calculation = 460, 550nm, 670nm, 700nm, 740nm, 780nm
    //To get nearer to the real Wavelength mix two Wavelength an weight it!
    void calc_reip(void)
    {
        //460nm
        volatile uint32_t buffer;
        volatile int32_t buffer2;
        buffer=(Bot_read[2]);        //Multiply Bottom *32768 wavelength 460nm = Blue
        buffer=buffer<<15;
        buffer2=Top_read[2];
        if(buffer2 < 1)buffer2=1;
        buffer /=buffer2;            //Divide by Top Read to get Real reflection Values
        if(buffer < 32768)Reip_val[0]=buffer;    //Avoid Bot Sensor Value to high
        //560nm
        buffer=(Bot_read[6]);        //Multiply Bottom *32768 wavelength 560nm = Green
        buffer=buffer<<15;
        buffer2=Top_read[6];
        if(buffer2 < 1)buffer2=1;
        buffer /=buffer2;            //Divide by Top Read to get Real reflection Values
        if(buffer < 32768)Reip_val[1]=buffer;                //Save the Value in Buffer for later transmission
        //670nm
        buffer=(Bot_read[10]);        //And so on for the other Wavelengths ...
        buffer *=5;                    //Gewichtung der 680nm *5
        buffer +=Bot_read[9];        //Gewichtung der 645nm *2 um Wert für 670nm zu bekommen
        buffer +=Bot_read[9];
        buffer /=7;                    //Resultat durch /7
        buffer=buffer<<15;
        buffer2=Top_read[10];        //Gleiche Prozedur für den Top Sensor
        buffer2 *=5;
        buffer2 +=Top_read[9];
        buffer2 +=Top_read[9];
        buffer2 /=7;
        if(buffer2 < 1)buffer2=1;
        buffer /=buffer2;            //Divide by Top Read to get Real reflection Values
        if(buffer < 32768)Reip_val[2]=buffer;
        //700nm
        buffer=(Bot_read[11]);
        buffer=buffer<<15;
        buffer2=Top_read[11];
        if(buffer2 < 1)buffer2=1;
        buffer /=buffer2;            //Divide by Top Read to get Real reflection Values
        if(buffer < 32768)Reip_val[3]=buffer;
        //740nm
        buffer=(Bot_read[12]);        //Multiply 730nm by 2
        buffer *=2;
        buffer +=(Bot_read[13]);    //Add 760nm
        buffer /=3;                    //Divide by 3
        buffer=buffer<<15;
        buffer2=Top_read[12];        //Same procedure for Top readings
        buffer2 *=2;
        buffer2 +=Top_read[13];
        buffer2 /=3;
        if(buffer2 < 1)buffer2=1;
        buffer /=buffer2;            //Divide by Top Read to get Real reflection Values
        if(buffer < 32768)Reip_val[4]=buffer;
        //780nm
        buffer=(Bot_read[13]);        //Get Value of 760nm
        buffer *=3;                    //Multiply by 3
        buffer=Bot_read[14];        //Get Value of 810nm and multiply by 2
        buffer=Bot_read[14];
        buffer /=5;                    //Divide by 5
        buffer=buffer<<15;
        buffer2=Top_read[13];        //Same for Top Sensor results
        buffer2 *=3;
        buffer2 +=Top_read[14];
        buffer2 +=Top_read[14];
        if(buffer2 < 1)buffer2=1;
        buffer /=buffer2;            //Divide by Top Read to get Real reflection Values
        if(buffer < 32768)Reip_val[5]=buffer;
    }
    Ein seltsamer Fehler ist noch aufgetreten:
    Wenn die beiden Spektralsensoren ( oder auch nur Einer ) angeschlossen ist, fällt der GPS Empfang mit der internen Antenne komplett aus!
    Mit einer extrernen Antenne hab Ich dann im Freien wieder D-GPS Empfang mit 12 oder mehr Satelliten ( NEO-M8N Empfänger )!
    Noch ein Problemchen, bei der Montage am Traktor fällt der Messkopf zeitweise aus.
    Da bin Ich noch auf der Suche, habe aber den Quarz in Veracht, denn die Vibrationen sind heftig.

    Anbei ein Bild des derzeitigen Sensorkopfes:Klicke auf die Grafik für eine größere Ansicht

Name:	Reip_passiv.jpg
Hits:	6
Größe:	89,9 KB
ID:	36066
    Wenn Ihr Lust habt, kann Ich mal ne .kml Datei zur Visualisierung in Google Earth bereit stellen.
    Allerdings nur als PN von wegen Datenschutz.
    Geändert von wkrug (04.05.2025 um 12:34 Uhr)

Ähnliche Themen

  1. SQL: Daten einer Tab. in Abhängigkeit einer weiteren wählen
    Von Jaecko im Forum Software, Algorithmen und KI
    Antworten: 10
    Letzter Beitrag: 26.07.2010, 23:13
  2. Sensor einer Optischen Maus zur Streckenmessung
    Von paunza im Forum Sensoren / Sensorik
    Antworten: 43
    Letzter Beitrag: 04.09.2009, 08:40
  3. Schnittstelle für PAN101(Sensor einer optischen Maus)
    Von Javik im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 18.09.2006, 19:55
  4. Brennweite der Linse einer optischen Maus
    Von Manf im Forum Kopfnüsse / Wissensquiz
    Antworten: 13
    Letzter Beitrag: 04.04.2005, 16:48
  5. Antworten: 6
    Letzter Beitrag: 09.03.2005, 08:03

Berechtigungen

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

Labornetzteil AliExpress