PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SRF10 - Reichweite & Verstärkung ändern [qfix]



iFabi
13.02.2011, 15:31
Hallo Zusammen!

Ich versuche derzeit den SRF10 US-Sensor mit einem qfix Soccerboard über i²c zum Laufen zu bringen. Hierzu nutze ich nur die qfix-eigenen Libraries:
qfixSonar.h und qfixI2C.h. Bisjetzt funktioniert es auch schon Messergebnisse einzufordern und anzuzeigen, allerdings nur bis ca. 35cm, d.h. ist kein Hinderniss in Reichweite bzw. ist es weiter als ca. 50cm weg gibt der Sensor Werte zwischen 35-40cm aus. Zwischen 6-35cm funktioniert die Messung gut! Ich möchte ein wenig mit Reichweite & Verstärkung herumspielen, allerdings schaffe ich es nicht die Routine zur Einstellung dieser aus dem Header in meinem Demo-programm aufzurufen. Angehängt habe ich mal Demo-pgm und Header. Kann mir irgendwer verraten wie das funktioniert?

MfG iFabi

iFabi
16.02.2011, 21:56
...Hallo!

Ich habe nun das ganze auch noch auf dem Handyboard getestet! Mit dem unten stehenden Code funktionert:
Messen auslösen
Werte einholen & ausgeben

Verstärkung und Reichweite ändern ->

wenn ich eine max. Reichweite bis ca. 40cm einstelle funktionert die Messung gut. Kein Hinderniss bis max. = 0, Hinderniss bis max. = richtige Werte
Wenn ich die max. Reichweite jedoch über 40cm einstelle tritt wieder in Post1 genannstes wieder auf...

Kommt schon jemand muss doch Helfen können!
Grüße iFabi

// Einbinden der I2C-Bibliothek
#use i2c_hb_expbrd.ic
// Hauptprogramm
void main()
{
int entfernung;


printf("\n SRF08-Test");
sleep(2.0);

i2c_init(); // initialisiere I2C-Bus

while(!start_button());
printf(2,"\n config:");
i2c_write_2byte(226, 2, 10);
i2c_write_2byte(226, 1, 8);
while(start_button());
sleep(2.0);


//Starte Schleife. Bricht ab, wenn der Stopknopf gedrueckt wird
while(!stop_button())
{
//Messung auslsoeen
// in Register 0 wird das Komando 81 geschrieben. Damit wird eine
//Messung ausgeloest und das
// Ergebnis wird in cm angegeben
i2c_write_2byte(226, 0, 81); // Adresse des SRF08 ist werkseitig
//224.
sleep(0.065); // 65 ms warten, um abzusichern, dass die Messung
//fertig ist
// Messung fertig

//Aulesen des Ergebnisses
// Zum SRF08 schreiben, welches Register ausgelesen werden soll.
i2c_write_byte(226, 2); // Register 2 --> High-Byte des
//Messergebnisses
entfernung = i2c_receive_byte(226) * 256; // Auslesen des
//High-Bytes des Messergebnisses
i2c_write_byte(226, 3); // Register 3 --> Low-Byte des
//Messergebnisses
entfernung = entfernung + i2c_receive_byte(226); // Low-Byte
//auslesen und zum Ergebnis addieren


printf("\nEntf: %d ", entfernung); // Anzeigen des
//Ergebnisses
}

}

funkheld
20.02.2011, 19:20
du redest einmal oben von srf10...

und unten im code steht :
Adresse des SRF08

ein bisschen chaotisch, bewahre mal die ruhe, hol tief luft unf überdenke mal deinen code.

die ganze i2c-lib fehlt, wo der ganze mist unten drin steht:
i2c_write_2byte....?

TobiKa
20.02.2011, 19:25
Was willst du da denn verstärken, bzw. ändern?
Der ist doch für 4cm bis 6m ausgelegt, und meiner macht das auch.

iFabi
21.02.2011, 13:57
du redest einmal oben von srf10...

und unten im code steht :
Adresse des SRF08

sorry, habe den Code teilweise "abgeschrieben" und das eben vergessen zu ändern...


die ganze i2c-lib fehlt, wo der ganze mist unten drin steht:
i2c_write_2byte....?

naja, die i2c lib ist ganz oben eingebunden:

// Einbinden der I2C-Bibliothek
#use i2c_hb_expbrd.ic

in der sind doch die ganzen befehle wie i2c_write_2byte

Danke schonmal für eure Antworten!



Was willst du da denn verstärken, bzw. ändern?
Der ist doch für 4cm bis 6m ausgelegt, und meiner macht das auch.

man kann beim SRF10 die Reichweite begrenzen. Außerdem kann man die maximale Verstärkung ändern, d.h. wie stark er das signal verstärkt wenn er keine Hindernisse sieht (empfindlichkeit)