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

Wyznaczanie prędkości obrotowej na podstawie czasu pomiędzy impulsami

lukaszSZ999 06 Kwi 2017 15:18 891 4
REKLAMA
  • #1 16395815
    lukaszSZ999
    Poziom 11  
    Witam

    Wykonuje urządzenie pomiarowe które mierzy mi prędkość obrotową szpuli o niskiej prędkości obrotowej w zakresie 0,1 - 2obr/ s a więc bardzo wolno. Na wale zamontowany jest czujnik pola magnetycznego (kontaktronowy), który raz na obrót generuje mi przerwanie na AVR. Problem polega na tym że wyznaczenie prędkości obrotowej ma się odbyć co impuls więc nie jest realne odmierzanie ilości impulsów przez np minutę a następnie wyznaczenie obr/s.

    Ponadto pomiaru muszę dokonać z dokładnością 0,01obr/s więc pozostaje pomiar czasu pomiędzy impulsami. I tu się zaczynają schody tzn. dzielenie liczb, które przyjmują bardzo duże wartości w dzielniku z racji tego, że wykorzystuje rejestr ICR licznika taktowanego z oscylatora 3646800Hz / 1024 (prescaller). Na sekundę daje mi to ok 3600tików timera. Dzielenie dzielenie 3600/ICR daje mi ilość obrotów na sekundę.

    Dzielenie tak dużych liczb trwa dość sporo cykli zegara co do obsługi w przerwaniu średnio się nadaje. Jest jakaś inna strategia wyznaczania odwrotności liczb która będzie mniej obciążała procesor?
  • REKLAMA
  • #2 16395824
    Freddie Chopin
    Specjalista - Mikrokontrolery
    lukaszSZ999 napisał:
    Dzielenie tak dużych liczb trwa dość sporo cykli zegara co do obsługi w przerwaniu średnio się nadaje.

    No tak, bo przecież:
    lukaszSZ999 napisał:
    niskiej prędkości obrotowej w zakresie 0,1 - 2obr/ s a więc bardzo wolno


    2x na sekundę to się chyba te obliczenia wyrobią, no nie?
  • REKLAMA
  • #3 16395854
    lukaszSZ999
    Poziom 11  
    Urządzenie ma wiele innych rzeczy roboty m. in. komunikacja GSM, obsługa wyświetlacza dotykowego, regulacja prędkości wału.
  • REKLAMA
  • #5 16396602
    lukaszSZ999
    Poziom 11  
    Bardzo dziękuję za powyższy link. Odnalazłem artykuł opisujący ten przykład i widzę że jednak nikt nic mądrzejszego nie wymyślił a więc dzielimy po prostu stałą przez ICR i tyle.

    To zabieram się do pracy. Bardzo dziękuję

    Pozdrawiam
REKLAMA