- Labornetzteil AliExpress         
Ergebnis 1 bis 9 von 9

Thema: unterschiedliche zustände direkt nach Flashen und anschließendem Aus / Einschalten?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180

    SRF02 messung in cm und inch

    Es geht hier um den SRF02, leider habe ich das thema etwas unglücklich bezeichnet...

    Habe nun weitere tests gemacht, weil ich den sensor ja brauche...

    Die erste messung nach dem einschalten bzw. wiedereinschalten (32cm) stimmt nicht, die darauffolgenden werte sind richtig.

    Mit den weiter unten erreichten ergebnisen kann ich den sensor einsetzen, muss allerdings wohl immer die abfrage der messung in inch mit durchführen. Als workaround machbar. Kennt jemand mit SFR02 und der multiIO das problem, oder bin ich allein mit dieser konstellation?

    Ist es evtl. ein problem in der lib?

    Hier noch einmal ein teil des testcodes (nur die whie-schleife)

    Code:
    while(true) 
        { 
            if(getStopwatch1() > 1000) // 1s 
            { 
     
                // SRF02 sensors test:
    
                distsrf_1 = SRF02_measure(CH_SRF02_1, MODE_CM); 
                writeString("\nSRF02 SENSOR_1 ->"); 
                writeString("\nDistance:  "); 
                writeInteger(distsrf_1, DEC);
                writeString(" cm");
    
                mSleep(500);
    
                distsrf_2 = SRF02_measure(CH_SRF02_1, MODE_INCH); 
                writeString("\nSRF02 SENSOR_1 ->"); 
                writeString("\nDistance:  "); 
                writeInteger(distsrf_2, DEC);
                writeString(" inch");
                setStopwatch1(0); 
            } 
     
            task_I2CTWI(); 
        }
    die ergebnise (mit beschreibung wann gemessen wurde):

    Code:
    # nach dem neueinschalten:
    
    
    RP6Control Multi IO Selftest 3!
    
    SRF02 SENSOR_1 ->
    Distance:  32 cm
    SRF02 SENSOR_1 ->
    Distance:  22 inch
    SRF02 SENSOR_1 ->
    Distance:  56 cm
    SRF02 SENSOR_1 ->
    Distance:  22 inch
    SRF02 SENSOR_1 ->
    Distance:  56 cm
    SRF02 SENSOR_1 ->
    Distance:  22 inch
    [RP6BOOT]
    
    [READY]
    
    # nach dem drücken des startbuttons:
    
    RP6Control Multi IO Selftest 3!
    
    SRF02 SENSOR_1 ->
    Distance:  56 cm
    SRF02 SENSOR_1 ->
    Distance:  22 inch
    SRF02 SENSOR_1 ->
    Distance:  55 cm
    SRF02 SENSOR_1 ->
    Distance:  22 inch
    SRF02 SENSOR_1 ->
    Distance:  56 cm
    SRF02 SENSOR_1 ->
    Distance:  22 inch
    [RP6BOOT]
    
    [READY]
    
    # nach dem aus- und einschalten:
    
    
    RP6Control Multi IO Selftest 3!
    
    SRF02 SENSOR_1 ->
    Distance:  32 cm
    SRF02 SENSOR_1 ->
    Distance:  22 inch
    SRF02 SENSOR_1 ->
    Distance:  56 cm
    SRF02 SENSOR_1 ->
    Distance:  22 inch
    SRF02 SENSOR_1 ->
    Distance:  56 cm
    SRF02 SENSOR_1 ->
    Distance:  22 inch
    [RP6BOOT]
    
    [READY]
    gruß inka

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi inka,

    ich habe die MultiIO mit M32 z.Zt. nicht so aufgebaut und gejumpert, kann also nicht testen.

    Wenn ich dazu komme, teste ich das auch mal.
    Gruß
    Dirk

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hi Dirk,
    Zitat Zitat von Dirk Beitrag anzeigen
    ich habe die MultiIO mit M32 z.Zt. nicht so aufgebaut und gejumpert, kann also nicht testen.
    Wenn ich dazu komme, teste ich das auch mal.
    super, danke...

    ich hab in der "RP6Control_LFSBumperLib.c" noch diese beiden variablen gefunden, die masseinheit in [ ] - hat die was zu bedeuten?

    double distsrf02_l; // Left SRF02 distance [mm]
    double distsrf02_r; // Right SRF02 distance [mm]

    werden die überhaupt irgendwo verwendet?
    gruß inka

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi,
    ich hab in der "RP6Control_LFSBumperLib.c" noch diese beiden variablen gefunden, die masseinheit in [ ] - hat die was zu bedeuten?
    double distsrf02_l; // Left SRF02 distance [mm]
    double distsrf02_r; // Right SRF02 distance [mm]
    werden die überhaupt irgendwo verwendet?
    Die Variablen sind für dich bzw. für dein Hauptprogramm reserviert:
    Wenn du SRF02_measure() im Modus MODE_US (also Mikrosekunden-Messung) aufrufst, kannst du den Ausgabewert danach mit SRF02_calculate() in einen Millimeterabstand umrechnen. Das Ergebnis ist dann eine Fließkomma-Variable, die man z.B. in distsrf02_l packen kann:
    Beispiel: distsrf02_l = SRF02_calculate(SRF02_measure(CH_SRF02_L, MODE_US));
    Gruß
    Dirk

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hallo Dirk,

    danke für die erklärung...

    habe es ausprobiert, und zwar diese zwei varianten:

    Code:
    1)
    us_distanz = SRF02_measure(CH_SRF02_1, MODE_US);
    distsrf02_1 = SRF02_calculate(us_distanz);
    
    2)
    distsrf02_1 = SRF02_calculate(SRF02_measure(CH_SRF02_1, MODE_US));
    beide liefern die entfernung in mm, allerdings nur in sprüngen von 343,40 (sonic speed konstante) wie hier zu sehen:

    Code:
    SRF02 SENSOR_1 ->
    Distance:  49.00 cm
    SRF02 SENSOR_1 ->
    Distance:  19.00 inch
    SRF02 SENSOR_1 ->
    Distance:  343.40 mm
    
    SRF02 SENSOR_1 ->
    Distance:  69.00 cm
    SRF02 SENSOR_1 ->
    Distance:  27.00 inch
    SRF02 SENSOR_1 ->
    Distance:  686.80 mm
    
    SRF02 SENSOR_1 ->
    Distance:  105.00 cm
    SRF02 SENSOR_1 ->
    Distance:  41.00 inch
    SRF02 SENSOR_1 ->
    Distance:  1030.20 mm
    es sieht mir so aus, als würde sich die "time_ms", bzw. die "us" variable in der "SRF_02_calculate" funktion nur in den jeweiligen (1x /2x /3x) sprüngen ändern?
    gruß inka

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hi inka,

    da bist du wohl bei der mm-Ausgabe auf einen Bug in der RP6Control LFS Bumper Library gestoßen!
    (Wie gesagt: Ich kann z.Zt. nicht testen!)

    Probier mal, die Funktion SRF02_calculate() in der Datei RP6Control_LFCBumperLib.c so zu ändern:
    Code:
    double SRF02_calculate(uint16_t us)
    {
    	double time_ms = us / 2000.0f;				// One way [ms]
    	return (SONIC_SPEED * time_ms);				// Distance [mm]
    }
    Klappt das so besser?

    P.S.:
    Dieses Problem hat aber nichts mit deinem anfänglichen Problem zu tun, dass der jeweils 1. Meßwert nicht zuverlässig ist.
    Gruß
    Dirk

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Hi Dirk,

    danke für die schnelle hilfe...

    Zitat Zitat von Dirk Beitrag anzeigen
    Probier mal, die Funktion SRF02_calculate() in der Datei RP6Control_LFCBumperLib.c so zu ändern:
    Code:
    double SRF02_calculate(uint16_t us)
    {
        double time_ms = us / 2000.0f;                // One way [ms]
        return (SONIC_SPEED * time_ms);                // Distance [mm]
    }
    Klappt das so besser?
    ja. die schwankungen sind denke ich normal...

    was bedeutet eigentlich dieses ".0f"?

    Code:
    SRF02 SENSOR_1 ->
    Distance:  32.00 cm
    SRF02 SENSOR_1 ->
    Distance:  13.00 inch
    SRF02 SENSOR_1 ->
    Distance:  324.00 mm
    
    SRF02 SENSOR_1 ->
    Distance:  33.00 cm
    SRF02 SENSOR_1 ->
    Distance:  12.00 inch
    SRF02 SENSOR_1 ->
    Distance:  330.35 mm
    
    SRF02 SENSOR_1 ->
    Distance:  57.00 cm
    SRF02 SENSOR_1 ->
    Distance:  22.00 inch
    SRF02 SENSOR_1 ->
    Distance:  575.37 mm
    
    SRF02 SENSOR_1 ->
    Distance:  57.00 cm
    SRF02 SENSOR_1 ->
    Distance:  22.00 inch
    SRF02 SENSOR_1 ->
    Distance:  574.51 mm
    
    SRF02 SENSOR_1 ->
    Distance:  77.00 cm
    SRF02 SENSOR_1 ->
    Distance:  30.00 inch
    SRF02 SENSOR_1 ->
    Distance:  771.28 mm
    auch wenn ich nur die messung in mm durchführe, ohne die vorher laufenden messungen in inch oder cm (die evtl. etwas an der initialisierung beeinflussen könnten)

    Code:
    SRF02 SENSOR_1 ->
    Distance:  495.87 mm
    
    SRF02 SENSOR_1 ->
    Distance:  495.87 mm
    
    SRF02 SENSOR_1 ->
    Distance:  502.74 mm
    
    SRF02 SENSOR_1 ->
    Distance:  495.01 mm
    
    SRF02 SENSOR_1 ->
    Distance:  498.45 mm
    
    SRF02 SENSOR_1 ->
    Distance:  495.01 mm
    
    SRF02 SENSOR_1 ->
    Distance:  502.74 mm


    Zitat Zitat von Dirk Beitrag anzeigen
    Dieses Problem hat aber nichts mit deinem anfänglichen Problem zu tun, dass der jeweils 1. Meßwert nicht zuverlässig ist.
    mit der nun funktionierenden messung in mm hat dieses problem etwas an seiner dringlichkeit verloren - ich kann ja nun messen
    gruß inka

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 15.03.2011, 14:16
  2. NIBObee LED4 nach einschalten an
    Von NIBObee_1 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 7
    Letzter Beitrag: 06.05.2010, 18:40
  3. Temperatur und Drehzahl aus n BIOS direkt vom Board auslesen
    Von Skynet im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 2
    Letzter Beitrag: 29.12.2008, 15:26
  4. Gelbe PowerLED beim RP6 manuell aus- und einschalten
    Von SpäteStunde im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 01.04.2008, 20:22
  5. A/D-Port: EInzelne Pins aus- und einschalten...
    Von tobimc im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 03.07.2004, 14:15

Berechtigungen

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

Labornetzteil AliExpress