logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[bascom,atmega8, MOBOTU-us v2] problem z pomiarem

kielon23 12 Paź 2010 14:09 1088 0
REKLAMA
  • #1 8610700
    kielon23
    Poziom 10  
    Witam
    Mam podpięty czujnika ultradźwiękowy mobot- us v2 do atmegi8. Steruje nim za pośrednictwem interfejscu I2C, a pomiary z czujnika za pomocą rs-232 wyrzucam na moniktor komputera. Problem polega na tym że przy prędkości transmisjii 9600 (rs) czujnik wysypuje pomiary do odległości 1,8m, a przy prędkości 38400 do odległości 35 cm, a pożniej podaje stała wartość, nie wykonuje pomiarów. Przy prędkość transmisji 4800 uzyskuje zasięg powyżej 2m.

    Czy ktoś może mi wytłumaczyć jaki związek ma prędkość wysyłania pomiarów z czujnika za pośrednictwem atmegi8 na komputer do jego skutecznego zasięgu ?? I czy moża uzyskac pełen zasięg czujnika przy prędkość 38400 transmiji danych po RS na kompa? Poniżej załączam kod programu sterującego dzięki któremu odmierzam czas pomiędzy kolejnymi pomiarami i odczytuje wartość pomierzonej wielkości.



    
       $regfile = "m8def.dat"
       $crystal = 8000000
       $lib "i2c_twi.lbx"
       $baud = 38400
    
       'deklaracja adresu I2C dla czujnika
       Sonar_adres_zapis Alias &H04
       Sonar_adres_odczyt Alias &H05
       Enable Interrupts
    
       'konfiguracja interfejscu I2C
       Config Scl = Portc.5
       Config Sda = Portc.4
       Config Twi = 100000
       I2cinit
    
      'deklaracja procedur i funkcji
       Declare Sub Sonar_reset
       Declare Sub Sonar_czulosc(byval Czulosc As Byte)
       Declare Sub Sonar_ilosc_impulsow(byval Ilosc_impulsow As Byte)
       Declare Sub Maksymalny_zasieg(byval Zasieg As Integer)
       Declare Sub Wartosc_progu_out(byval Prog_out As Byte)
       Declare Sub Tryb_uspienia
       Declare Sub Sonar_pomiar
       Declare Sub Czasowiec
       Declare Function Sonar_odczyt() As Word
    
       'Program główny
       Call Sonar_reset
       Call Sonar_czulosc(0)
       Call Sonar_ilosc_impulsow(4)
       Call Maksymalny_zasieg(3000)
       Call Wartosc_progu_out(200)
    
       'pętla głowna
       'odbsługa timera1 do odmierzania czasu 1 s
       Dim I As Integer
       Dim Impulsy As Long
       Dim Sek As Integer
       Dim Czas As Long
       Czas = 0
    
       Tccr1a = &H00
       Tccr1b = &H0C
    
       Ocr1ah = &H7A
       Ocr1al = &H12
      
       Tcnt1h = &H00
       Tcnt1l = &H00
    
       Do
       Disable Compare1a
       For I = 1 To 5000
       Impulsy = Timer1
       Tcnt1h = &H00
       Tcnt1l  = &H00
       Call Czasowiec
       Call Sonar_pomiar
       Print "pomiar";I;"  dystans  " ; Sonar_odczyt() ; "  impulsy " ; Impulsy ; " czas " ; Czas
       Next I
    
       Enable Compare1a
    
       Loop
    
       Sub Czasowiec
       Sek = Impulsy / 31.25
       Czas = Czas + Sek
       End Sub
    
    
  • REKLAMA
REKLAMA