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

[mega8][bascom] Obrotomierz-czy program jest ok?

nauritius 09 Mar 2010 16:42 2685 6
REKLAMA
  • #1 7805696
    nauritius
    Poziom 9  
    Witam!
    Zaczynam własnie przygodę z praktyczną elektroniką. Mam za zadanie zrobić obrotomierz (do silnika emax-a ; 10 000 rpm). W programie stosuje timer1=timer (zrobiłem też jako counter, ale musze też sprawdzić jak będzie sprawował się układ z timerem1 jako zegar). Chodzi o to, że układ ma pracować na modelu samolotu i mierzyć dynamiczne zmiany prędkości obrotowej . Czy ktoś mógłby to sprawdzić ;) ? przy max. prędkości obrotowej będe miał 6 impulsów na obrót (stosuje hallotron), licznik przepełni mi się po 8 sekundach, czyli przy minimalnych obrotach w czasie lotu powinno być chyba wszystko ok.

    Mój program:

    $crystal = 8000000
    $regfile = "m8def.dat"
    Dim Wynik As Word                                           'wynik pomiaru
    
    Config Pinb.1 = Input                                       'wejscie sygnalu
    Config Lcd = 16 * 2
    
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    
    
    
    Config Timer1 = Timer , Prescale = 8 , Capture Edge = Rising
    Enable Timer1                                               'odblokowanie Przerwania Od Przepelnienia T1
    
    Do
       Wynik = Timer1 * 60                                      'rpm
       Cls
       Lcd "Obrotomierz"
       Lowerline
       Lcd Wynik ; " obr/min"                                   'wyswietlanie wyniku
       Cursor Off
    
    Loop
    
    End



    Czy ktoś wie, do jakich minimalnych obrotów może spaść prędkość w czasie lotu ? To jest ten silnik :
    http://www.emodel.pl/emax-silnik-bl-282606-p-10.html

    Dzięki za pomoc ;)

    Proszę pamiętać o używaniu znaczników code. Przeniesiono z Programowanie Ogólne. - arnoldziq
  • REKLAMA
  • Pomocny post
    #2 7807599
    janbernat
    Poziom 38  
    No program się kompiluje- ale oczywiście nic nie robi.
    Co robisz z pojawiającym się na Pinb.1 sygnałem? -nic.
    Końcówką przechwytującą jest Pinb.0.
    Ale co z tego że zapisze stan- i tak uruchamiasz Timer1 i on sobie liczy coś co nie ma żadnego związku z danymi.
    Impulsy przychodzą z halotronu co 1ms-to dość szybko- ale nic się z nimi nie dzieje.
    Zdecyduj się- albo liczysz impulsy z czujnika z ICP- pinb.0 albo mierzysz okres timerem1.
  • REKLAMA
  • Pomocny post
    #3 7807946
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #4 7808497
    nauritius
    Poziom 9  
    Poprawiłem program, sygnał podaje na pind.5, teraz wygląda on tak
    
    $crystal = 8000000
    $regfile = "m8def.dat"
    Dim Wynik As Long
    Dim A As Long
    Dim B As Long
    Dim C As Long                                            'wynik pomiaru
    
    Config Pind.5 = Input                                       'wejscie sygnalu
    Config Lcd = 16 * 2
    
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    
    
    
    Config Timer1 = Timer , Prescale = 8 , Capture Edge = Rising
    Enable Timer1                                               'odblokowanie Przerwania Od Przepelnienia T1
    
    Do
       Wynik = Timer1
       Disable Timer1
       A = 1 / Timer1                                           'obliczanie częstotliwosci
       B = Int(a)                                               'czesc calkowita z czest.
       C = B * 60                                               'predkosc obrotowa
    
       Cls
       Lcd "Obrotomierz"
       Lowerline
       Lcd C ; " obr/min"                                       'wyswietlanie wyniku
       Cursor Off
    
    Loop
    
    End
    


    i niestety przy kompilowaniu wyskakuje mi błąd: 63 in Line 22; Integer or Long expected for ABS(). O co chodzi?
  • REKLAMA
  • #5 7808553
    Konto nie istnieje
    Poziom 1  
  • #6 7810855
    Konto nie istnieje
    Poziom 1  
  • #7 7956402
    gregoorr
    Poziom 17  
    Mam coś podobnego, sugerowałem się tym:
    Link
REKLAMA