www.mikrocontroller.net

Forum: Compiler & IDEs SRF05 ist mein Quellcode richtig


Autor: Andreas Herrmann (andy78)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Habe einen SRF05 in ein Edelstahl rohr verpflanzt dieses soll den 
Füllstand eines Tanks Messen.

Mein Problem er zeigt ca 2 zentimeter zu viel an.

der Abstand vom Sensor bis zum Grund ist 29cm er zeigt mir 32cm an

Atmega 48 mit 16Mhz.

#define trigger()    DDRD |= ( 1 << 0);
#define trigger_high()  PORTD|=(1<<0); //HEIGH TRIGGER
#define trigger_low()  PORTD&=~(1<<0); //LOW TRIGGER



while(1)
{
  wert=abstand();
  _delay_ms(50);
  wert+=abstand();
  _delay_ms(50);
  wert+=abstand();
  _delay_ms(50);
  wert+=abstand();
  _delay_ms(50);
  wert+=abstand();
  _delay_ms(50);
  wert+=abstand();
  wert/=6;
  if(wert>30000)wert=0;

wert=(((wert/2))/5.8); //in mm

}


void init_timer(void)
{
TCCR1A =0x00;
TCCR1B =(1<<CS11);
}


unsigned int abstand(void)
{
   trigger_high();
   _delay_us(20);
   trigger_low();
   while(!(PIND & (1<<1)));
   TCNT1 = 0;                            //Counter Register auf 0 setzen
   while(PIND & (1<<1));                 //warten bis Signalende
   ergebnis=TCNT1;                       //Signallänge auslesen
   return  ergebnis;
}


ist das so IO.

Stimmen die Timer????

Danke

Gruß
Andy

Autor: Reset (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wert=(((wert/2))/5.8); //in mm

float wert; mit -lm gelinkt

oder

int wert; ohne -lm gelinkt?
=> Ausdruck ist identisch zu: wert=(((wert/2))/5)

Vermute #2, da Ergebnis exakt Faktor 5,8/5 zu groß ist.

Autor: Reset (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, Kommando zurück. Habe mich verrechnet. Ist nicht exakt 5,8/5.

Autor: Andreas Herrmann (andy78)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Was heißt das nun???

Gruß

Andy

Autor: Reset (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alle anderen sind klüger als ich und äussern keine vorschnelle 
Vermutungen auf deine angegebenen Daten.

Wenn die drei cm (10% der Messung) wichtig sind, würde ich an deiner 
Stelle versuchen, die Problematik genauer zu erklären.

Autor: Reset (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe jetzt das "Datenblatt" für den SRF05 gelesen 
(http://www.robot-electronics.co.uk/htm/srf05tech.htm). Leider steht 
nicht viel zur Genauigkeit dabei (Q. What is the accuracy of the 
ranging?
A.  We quote 3-4cm.).

Und den Code soweit ergänzt, so dass man ihn simulieren kann (16 MHz, 
-Os). Ich finde aber keine Softwareprobleme.

Bleiben also Hardwareprobleme. Man müsste ein Oszilloskop an den PD1-Pin 
hängen und nachmessen, wie lange der Echopuls wirklich ist.

Hast du schon geprüft, ob Echos von der Wand des "Edelstahlrohrs" das 
Ergebnis verfälschen? Die Sonarkeule ist beim SRF05 ja nicht i der FAQ 
angegeben, bei anderen Sonaren kann die schon breit sein.

Hast du schon geprüft, ob die Fehlmessung nur beim Echo von der 
Flüssigkeitsoberfläche im Tank auftritt oder auch beim Echo von anderen 
Flächen?

Autor: df1as (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ... es wird doch wohl die Echozeit gemessen. Für die Entfernung 
muss die Schallgeschwindigkeit verrechnet werden und die ist alles 
andere als konstant (Dichte, hervorgerufen durch Luftdruck, Temperatur, 
Schwebstoffe).

http://de.wikipedia.org/wiki/Schallgeschwindigkeit...

Wir haben derzeit niedrige Außentemperaturen, die Schallgeschwindigkeit 
ist kleiner, darum werden größere Zeiten gemessen.

Oder hat das SRF05 dafür eine Korrekturfunktion? In der Beschreibung 
finde ich dazu nichts. Temperatur allein wäre schon ein guter Ansatz.

Ansonsten würde ich in solchen Fällen immer auf corriger la fortune 
setzen. Solange die Messergebnisse wenigstens konstant sind, Nullpunkt 
und Steigung ermitteln (zwei Messwerte möglichst weit auseinander), 
Temperatur berücksichtigen und dann passt die Sache auch. Vermutlich 
passt es jetzt schon, wenn die niedrigere Temperatur berücksichtigt 
würde.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.