Elektroda.pl
Elektroda.pl
X
AM TechnologiesAM Technologies
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

pomiar prędkości wentylatora CPU na mikrokontrolerze

11 Gru 2006 20:28 5128 8
  • Poziom 11  
    Cześć,


    zaczynam uczyć się programowania mikrokontrolerów i stanąłem przed zadaniem napisania kontrolera obrotów do komputera (wentylatory 3 pin)...

    Projekt ma mieć funkcjonalność zwiększania/zmniejszania prędkości oraz pokazywanie aktualnych obrotów wentylatora...

    Mam problem jak pomierzyć aktualne obroty, z tego co wyczytałem to jest tam czujnik hall'a (nie jestem na 100% pewny), nie mam oscyloskopu aby sprawdzić co jest na 3. pinie od wentylatora...

    W związku z tym mam pytanie, jak to zrealizować ? Jest jakiś układ czy coś który przetwarza sygnał z wentylatora na impulsy ???
    Macie jakieś propozycje ?
    Szukam na google, ale jeśli ktoś wie to proszę o odpowiedź...

    Mikrokontroler: msp430F149
    Dzięki za pomoc...
    pozdrawiam
  • AM TechnologiesAM Technologies
  • Pomocny post
    Poziom 40  
    Witam
    Na tym wyprowadzeniu masz falę prostokątną o dwa razy większej częstotliwości niż ma wentylator obrotów. Wyjście to jest open collector.
  • Pomocny post
    Poziom 21  
    A w jaki sposób zamierzasz regulować obroty? Ja próbowałem poprzez PWM i na wyjściu czujki obrotów dostawałem dziwne rzeczy. Wiem, że wiatrak musi mieć stałe zasilanie aby czujnik pracował poprawnie.

    A co do pomiaru obrotów to musisz napisać funkcję do pomiaru długości impulsu. Tak jak napisał Dar.El sygnał jest n-razy na obrót (2 lub 3) zwierany do masy.

    Pozdrawiam.
  • AM TechnologiesAM Technologies
  • Pomocny post
    Poziom 40  
    Witam
    Trzeba zrobić dość wolny PWM, aby w czasie trwania momentu włączenia zasilania, odczytać z dwa impulsy z wentylatora. Na tej podstawie można oszacować prędkość obrotową.
  • Pomocny post
    Poziom 37  
    Dar.El napisał:
    Witam
    Trzeba zrobić dość wolny PWM, aby w czasie trwania momentu włączenia zasilania, odczytać z dwa impulsy z wentylatora. Na tej podstawie można oszacować prędkość obrotową.

    Bez uśredniania (z większej ilości impuilsów) myślę będzie ciężko mieć wartościową liczbę (duży rozrzut).

    Z pojedynczych impulsów możesz mieć sprawdzenie, czy w ogóle się kręci. Na starcie może być konieczne zwiększenie napięcia, żeby ruszył, potem zmniejszać.

    A PWM nie może pracowac impulsowo wprost na silnuk, musi mieć elementy tłumiące (elektrolit lub jakis inny obwód z literatury)
  • Pomocny post
    Specjalista techniki cyfrowej
    Zasilanie wiatraka z PWM podłącz przez filtr dolnoprzepustowy LC (minimalne straty, RC się nie nadaje, a sam kondensator nie wystarczy).
    Czujnik Halla powinien pracować poprawnie w zakresie napięć 5-12V, aczkolwiek nie jestem tego na 100% pewnien, na pewno pracował przy 7V, bo z takim napięciem tesowałem. Wiatrak przy 5V kręci się już bardzo powoli.
    Dzięki filtracji uzyskasz na wyjściu stałe napięcie (właściwie to stałe tętniące, ale tu nie będzie to przeszkadzać), co zapewni poprawne odczyty z czujnika Halla.
    W takim układzie warto stosować PWM o dużej częstotliwosci, dzięki czemu można dać mniejszą cewkę i kondensator do filtru.

    Co do idei samego pomiaru, to koncepcje są dwie, albo pomiar okresu, albo pomiar częstotliwości (ilości impulsów w danym odcinku czasu).
    Pierwsze rozwiązanie będzie dokładniejsze, a wynik uzyskuje sie w stosunkowo krótkim czasie. Błąd poimaru zależy od częstotliwości taktowania timera (maleje wraz z jego wzrostem) i od prędkości obrotowej wentylatora (rośnie z jej wzrostem).
    Druga metoda jest dość prosta do zrealizowania, aczkolwiek cechuje się małą dokładnością (rosnącą wraz z prędkością obrotową silnika i czasem pomiaru), ale tkurat do regulacji prędkości obrotowej nie potrzeba niewiadomo jakiej rozdzielczości. Przy okresie pomiaru 1s dokładność jest lepsza od 1% przy prędkości obrotowej > 3000 obrotów na minutę.
    Nie wiem jakimi peryferiami dysponuje Twój mikrokontroler, ale którąś z tych metod powinno się dać zrealizować. Czas pomiaru rzędu 1s jest i tak bardzo krótki, bo zazwyczaj bezwładność cieplna i tak będzie na tyle duża, że temeratura nie zmieni się znacząco w tak krótkim czasie.
  • Pomocny post
    Poziom 17  
    a może by tak dawać pełne napięcie na czas jednego obrotu? czyli poczekać te n impulsów i uśrednic czas pomiedzy tymi impulsami? zasilenie pełnym napięciem na czas jednego obrotu raczej zbytnio nie zwiększy prędkości obrotowej, szczegulnie gdy bedzie to robione np 1raz/1sek. nie chce mi sie tego sprawdzac praktycznie ale sugeruję iść tą droga. gdyby jednak dawało to fatalne skutki przynajmniej bedziemy wiedzieć że tak się nie da. po co dokładać elektronikę, filtry itp. to zbytni nie upraszcza "prostego sterowania za pomocą pwm"
  • Pomocny post
    Poziom 37  
    elektrofil napisał:
    a może by tak dawać pełne napięcie na czas jednego obrotu?


    Stwarza ryzyko ze względu na indukcyjności. To nie żarówka.
    Wyłączanie musisz zabezpieczyć diodą i RC itd itd.
    Możesz nie robić i nie wiedziec kiedy uwalisz półprzewodniki.
  • Poziom 17  
    co do PWM i sterowania bez zabezpieczenia diodą i rc.
    przepraszam, nie wiedziałem, silniki które steruje na szczęscie o tym także nie wiedza i pewnie dlatego wszystko działa, a tranzystory do sterowania impulsowego juz maja diodę.
    ps używam oscyloskopu przy wszystkich projektach, a szczególnie cyfrowych i nigdy nie miałem nawet pików na zasilaniu 12V do silników. może potrafie budować odpowiednie zasilacze i prowadzić prawidłowo przewody zasilajace?
    ps2. steruje także krokowymi o poborach do 4 Amper
    i także nie wyskakuja piki powyżej 18Volt przy zasilaniu silnika. zasilacz-->bardzo ważny element.
    ps3. a co znaczy to itd itd. ? może jeszcze diode zenera, warystor, diak sterujacy triakiem w razie przepięcia. nadmiar zabezpieczeń tylko zwiększa ryzyko awarii..