-         
+ Antworten
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Laufzeitmessung von Schall

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.04.2004
    Ort
    München
    Alter
    28
    Beiträge
    288

    Laufzeitmessung von Schall

    Hi !
    Zum projekt : ich möchte die laufzeit des von einem beeper ausgegeben schalls zum micro messen. Daraus liese sich dann leicht über die schallgeschwindigkeit die enfernung errechnen.

    dazu habe ich hier mal ein programm geschrieben:

    Code:
    $regfile = "m32def.dat"                                    
    $crystal = 16000000                                      
    $baud = 9600
    
    Dim X As Integer
    Dim Ti As Word
    Dim Xsave As Integer
    Dim Erg As Long
    Dim Zwierg As Long
    
    
    Config Pind.7 = Output
    Config Lcdbus = 4                                           
    Config Lcdpin = Pin , Db4 = Pinc.7 , Db5 = Pina.5 , Db6 = Pina.6 , Db7 = Pina.4 , E = Pinc.6 , Rs = Pinc.5
    
    Config Lcd = 16 * 4
    
    Config Timer1 = Timer , Prescale = 1
    
    Config Adc = Single , Prescaler = Auto
    Start Adc
    
    
    On Timer0 Tim1_isr
    
    Enable Timer1                                                    
    Enable Interrupts
    Sound portd.7 , 200 , 450
    
    Do
       If Getadc(2) > 614 Then
          Ti = Timer0
          Xsave = X
          Exit Do
       End If
    Loop
    
    Sound Portd.7 , 2000 , 1000
    
    Erg = Ti * 63
    Zwierg=   Xsave * 65536
    Erg = Erg + Zwierg
    Cls
    Lcd "berechnung:"
    Lowerline
    Lcd Erg ; " // " ; Ti
    
    Tim1_isr:
    
    X = X + 1
    
    Return
    
    End
    Allerdings funktioniert das noch nicht so ganz... Erg und Ti sind irgendwie immer null. und das programm endet nie, so wie es eigentlich sollte... Könnte das daran liegen, das der Timer weiterhin fleisig überleuft und interrupts produziert ? und dann natürlich wieder zurück in die Schleife springt ?

    Würde mich interessieren, was ihr dazu sagt ! (sonst hätte ichs auch net hier rein gestellt ^^)

    mfg Javik

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Könnte es daran liegen, dass du Timer0 und Timer1 durcheinanderwirfst?

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.04.2004
    Ort
    München
    Alter
    28
    Beiträge
    288
    Hi !
    ich bin ein Trottel ! Ich hab vorher überall Timer0 dranstehen gehabt und dann gesehen das des blos ein 8bit Timer ist. Dann wollte ich auf den 16bit Timer und dabei hab ich wohl was übersehen...

    Auf jeden fall bringt er jetzt ergebnisse ! Aber die sind viiiiel zu ungenau !
    Kann des daran liegen, dass fü den Befehl Sound der timer auch verwendet wird ? Wie kann man den Sound wieder ausstellen?

    mfg Javik

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2004
    Ort
    durmersheim international
    Alter
    56
    Beiträge
    159
    hi,
    das programm ist etwas dünn geraten um exakte ergebnisse liefern zu können. ist auch nicht so richtig klar, was an adc(2) hängt ('ne Taste?).
    aber egal, ein ähnliches problem hatte ich auch schon.
    in erster linie musst du berücksichtigen, dass dein empfangenes signal immer unterschiedlich ausfallen wird, je nach umgebung etc. du darfst also nur die info im signal auswerten, das könnte so ablaufen.

    1. schallsignal erzeugen, dauernd senden
    2. innerhalb des schallsignals eine kennung einbauen
    3. wenn kennung abgeschickt, timer starten
    4. wenn kennung empfangen, timer stoppen und auswerten
    5. zyklisch wiederholen bis z.b. 255 messwerte zusammen sind
    6. mittelwert bilden und ausgeben

    das ist grob der ablauf einer software für echolote, so sollte es gehen
    gruss, harry

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.04.2004
    Ort
    München
    Alter
    28
    Beiträge
    288
    Hi !
    an Adc(2) hängt ein Microphon, das auf die frequenzen in dennen der Pizo lautsprecher sendet. An adc(2) liegt dann mehr spannung an.
    An was für einen kennung denkst du da ? Mein Microphon kann leider nciht auf verschieden frequenzen reagiren.
    mfg Javik

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    24.04.2004
    Ort
    Karlsruhe
    Alter
    38
    Beiträge
    1.277
    Zitat Zitat von Javik
    Hi !
    an Adc(2) hängt ein Microphon, das auf die frequenzen in dennen der Pizo lautsprecher sendet. An adc(2) liegt dann mehr spannung an.
    An was für einen kennung denkst du da ? Mein Microphon kann leider nciht auf verschieden frequenzen reagiren.
    mfg Javik
    Hast du die Wechselspannung vom Mikrofon direkt an den ADC-Port gehängt?

    Trotzdem wird das nicht sehr genau. Wir hatten das Problem schon mal hier in einem Thread. Manf hat uns dann drauf gebracht. Die Membran des Senders und des Empfängers müssen jeweils anschwingen. Dein Programm überwacht die Spannung des Mics auf einen bestimmten Schwellwert der aber vom Pegel des reflektierten Signals abhängig ist.
    Dadurch variiert die Erkennungszeit des Signals.

    Wie ungenau ist denn deine Messung? mm o. km?

    Gruß, Sonic
    http://www.dontfeedthetroll.de/images/dftt.gif
    If the world does not fit your needs, just compile a new one...

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.04.2004
    Ort
    München
    Alter
    28
    Beiträge
    288
    Hi,
    Nein ich habe das signal mit nem OV verstärkt und durch nen Hochpassgejagt...

    Kannst du mir sagen wie der Thread heist ?

    Naja ^^ sender und emfpänger sind ca 5 cm von einander entfernt, was rein rechnerisch kein problem sein sollte, aber er errechnet einen abstnd von ca 0,2m - 0,3m.....

    Javik

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    24.04.2004
    Ort
    Karlsruhe
    Alter
    38
    Beiträge
    1.277
    Zitat Zitat von Javik
    Hi,
    Nein ich habe das signal mit nem OV verstärkt und durch nen Hochpassgejagt...
    Naja, die Anstiegszeit bekommst du damit kleier ab nicht weg ;-(

    Zitat Zitat von Javik
    Kannst du mir sagen wie der Thread heist ?
    http://www.roboternetz.de/phpBB2/vie...erschiebung%2A

    Zitat Zitat von Javik
    Naja ^^ sender und emfpänger sind ca 5 cm von einander entfernt, was rein rechnerisch kein problem sein sollte, aber er errechnet einen abstnd von ca 0,2m - 0,3m.....
    Javik
    Jetzt fehlt nur noch die Frequenz und man könnte anfangen zu Rechnen um den Fehler einzugrenzen
    Aber nach den Werten liegt der Messwert 400%-600% daneben, das kann nicht nur am Einschwingverhalten liegen...

    Gruß, Sonic
    http://www.dontfeedthetroll.de/images/dftt.gif
    If the world does not fit your needs, just compile a new one...

  9. #9
    Gast
    Wie lang ist denn dein Schallimpuls? Bei einer solch geringen Distanz bekommt man zwangsläufig Probleme, da dein Empfänger schon ein Echo detektiert, während der Sender noch am Senden ist.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2004
    Ort
    durmersheim international
    Alter
    56
    Beiträge
    159
    hi,
    wenn dein micro nur eine freq. detektiert kannst du die kennung z.b. aus 2 pausen bauen, die 1. zum 'ohrenspitzen' als attention-signal, damit der uc weiss, jetzt gilt's gleich, die 2. als messpause. in der fernsehtechnik wird auf ähnliche weise der zeilen- und bildkipp-impuls erzeugt.
    gruss, harry

+ Antworten
Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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