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

[ATmega8][C] Wentylator sterowany PWM + pomiar obrotów (rpm)

regrom 14 Mar 2010 23:50 28179 50
  • #1 7831584
    regrom
    Poziom 16  
    Witam,

    Sytuacja wygląda tak, mam jeden układ do sterowania wentylatorami z wykorzystaniem PWM sprzętowym ATmega8.

    Wziąłem druga ATmegę i zacząłem zabawę z timerami i zrobiłem pomiar prędkości obrotowej z magicznego "żółtego kabelka" - 3 pinowy wentylator.

    Pomiar jest ok, jeśli zasilam z wentylator z zasilacza stabilizowanego, zliczam impulsy(2 opadające zbocza na obrót) w czasie i wyświetlam na LCD.

    :arrow: Sterując wentylatorem za pomocą PWM (ok 32kHz) - timer zlicza cuda, nawet gdy wentylator się nie kręci, i pwm jest na około 30% pokazuje ponad 10 tys rpm. Rozumiem, sygnał PWM generuje te zakłócenia, timer zlicza je jako impulsy i przekłamuje pomiar . Pomiar jest ok jeśli mamy 100% pwm i są to maksymalne obroty.

    :arrow: Jak zlikwidować te zakłócenia, żeby wydobyć impulsy odpowiedzialne tylko za obroty wentylatora?
    1)Przetwornik cyfra>analog (zasilanie wentylatora)?
    2)Filtr?
    3)Programowo?


    :arrow: Zastanawia mnie np. Jak jest mierzona prędkość wentylatora 4 pinowych, które wymagają sygnału sterującego?
  • #2 7832219
    Konto nie istnieje
    Konto nie istnieje  
  • #3 7833780
    regrom
    Poziom 16  
    technics6 napisał:
    Jakiś filtr LC powinien załatwić sprawę.

    A może wystarczy rezystor 4,7-10k ściągający do masy ten "żółty kabelek".


    :arrow: Filtr LC na linii zasilania czy na "żółtym kabelku"?

    :arrow: Ściąganie do masy nie pomaga, w ten sposób nie wykrywa żadnych impulsów. Dodam, że kabel sygnałowy jest podciągnięty do +5V na pinie ATmegi(wewnątrz).

    :idea: Próbowałem najprostrzego filtra RC i częstotliwości odcięcia od 100 Hz do 15kHz, jednak nie filtruje on dobrze i nadal są zakłócenia :cry: . Nie posiadam oscyloskopu, który ułatwiłby sprawę.

    Filtr RC dolnoprzepustowy taki jak tutaj, użyłem zwykłych rezystorów i kondensatorów ceramicznych, jednak tak jak wyżej napisałem marne efekty . Częstotliwość oczywiście ze wzoru: [ATmega8][C] Wentylator sterowany PWM + pomiar obrotów (rpm)
    [ATmega8][C] Wentylator sterowany PWM + pomiar obrotów (rpm)

    :arrow: Jakie rozwiązanie proponujecie :?:
  • #4 7833889
    Konto nie istnieje
    Konto nie istnieje  
  • #5 7834004
    regrom
    Poziom 16  
    technics6 napisał:
    Masz na tym żółtym przewodzie cały czas napięcie, a kiedy jest "impuls" to spada do zera? To podciągnij rezystorem do plusa...


    :arrow: Przecież już jest podciągnięte do plusa( cbi(DDRD,4);sbi(PORTD,4); ) czyli PIN jako wejście oraz podciągnięty do VCC , i dodanie rezystora nic nie zmienia, taki sam efekt jak ściągnięcie do masy.

    :arrow: To wygląda tak, na tym kablu sygnałowym występuje impuls zwierany do masy, na jeden obrót przypadają dwa zbocza opadające, gdyż wypełnienie impulsu to 50%, czyli przejście z 0 na 1 i z 1 na 0.

    :?: Ponoć jest to otwarty kolektor, przy zasilaniu liniowym wszystko jest ok, jednak prze zasilaniu PWM, tak jakby ta bramka traktuje sygnał PWM jako załączający czego efektem są impulsy na wyjściu(zwarcie do masy) - dobrze myślę?
  • Pomocny post
    #6 7834255
    Dar.El
    Poziom 41  
    Będziesz musiał zjechać częstotliwością PWM na tyle aby łapać czas między impulsami z wentylatora, gdy PWM jest na H.
  • #7 7834578
    regrom
    Poziom 16  
    Dar.El napisał:
    Będziesz musiał zjechać częstotliwością PWM na tyle aby łapać czas między impulsami z wentylatora, gdy PWM jest na H.


    :arrow: Czyli proponujesz pomiar czasu, a nie impulsów? Ma to sens dla tych prędkości obrotowych? 4000 rpm >> ~ 66 obr/s >> x2 to jest 132 Hz (impulsy na obrót) >> czyli czas pomiędzy impulsami jakieś 7,5 ms.

    :?: A jak wychwycić impulsy gdy PWM jest na H ? Jaką wtedy dać częstotliwość PWM? Dając niższą częstotliwość wentylatory grają, piszczą.

    Np. 1500 rpm > 25 obr/s > 50 Hz(impulsy) > mierząc w czasie 0.25 s mamy 12 impulsów, to żeby wyłapać te 12 impulsów PWM musiałby pracować z częstotliwością 2 Hz.. 0.25 s - stan 1 kolejne 0.25 stan 0...

    Nawet próbując zmierzyć czas pomiędzy tymi impulsami czyli 20 ms(50Hz) >> stan H musi trwać dłużej czyli jakieś 40 Hz.. ale to za mało na wentylator..
  • #8 7834632
    Konto nie istnieje
    Konto nie istnieje  
  • #9 7834849
    regrom
    Poziom 16  
    technics6 napisał:
    Ja bym dał jakiś filtr zasilania tego silnika. Nie może być takimi śmieciami zasilany prosto z tranzystora.


    Pytanie jaki? Śmieci nie śmieci, to tylko sygnał PWM, co innego do zwykłego wentylatora sterując go mikroprocesorem?

    :arrow: Problem tyczy się pomiaru prędkości, konkretniej tych impulsów.

    Może przetwornik, C/A , ale to przerost formy nad treścią w tym przypadku..
  • #10 7834883
    _Robak_
    Poziom 33  
    Tylko, że jak nie masz podglądu na oscyloskopie to ciężko powiedzieć co tam się w ogóle dzieje;)
  • Pomocny post
    #11 7835179
    Konto nie istnieje
    Konto nie istnieje  
  • #12 7835253
    Konto nie istnieje
    Poziom 1  
  • #13 7835442
    regrom
    Poziom 16  
    :arrow: technics6 , za duże, nawet 1uF powoduje że wentylator rusza już przy 10% wypełnieniu, a śmieci dalej są..

    :arrow: atom1477 tranzystorem sterującym jest BUZ10 (MOFSET N) - pracuje jak najzwyklejszy klucz, czyli załącza wentylator do masy(rysunek), to może być problemem?

    [ATmega8][C] Wentylator sterowany PWM + pomiar obrotów (rpm)
  • #14 7835468
    Konto nie istnieje
    Poziom 1  
  • #15 7835541
    regrom
    Poziom 16  
    atom1477 napisał:

    Sterować musisz od plusa.


    :arrow: atom1477 możesz rozjaśnić dlaczego, oraz jak to zrealizować?
  • #16 7835568
    Konto nie istnieje
    Poziom 1  
  • #17 7835714
    regrom
    Poziom 16  
    Ok, przetrawię to co napisałeś :D zaopatrzę się w mosfet z kanałem p i potestuje. PNP czy NPN to większe straty w stosunku do mosfetów.

    Sterowanie małymi częstotliwościami, też sprawdzę.

    Mosfeta P, nie możemy bezpośrednio podłączyć do uC ? Pytam, żeby się ubezpieczyć ;)
  • #18 7836116
    _Robak_
    Poziom 33  
    Nie;) Bo zatkany będzie dopiero gdy Ugs będzie 0. A u Ciebie byłoby -7V;)
  • #19 7836269
    Konto nie istnieje
    Poziom 1  
  • #20 7837845
    regrom
    Poziom 16  
    :arrow: atom1477 Rozumiem ;) przetestuję oby dwie opcje, zarówno z BJT jaki i MOSFET, dlatego proszę o sprawdzanie poniższych schematów, pierwszy odnosi się do tego co napisałeś opcja z BC 327 (800mA) - tylko zastanawia mnie w nocie: VEBO Emitter-Base Voltage -5 V

    [ATmega8][C] Wentylator sterowany PWM + pomiar obrotów (rpm)

    :arrow: Druga opcja to z MOSFET z kanałem P, czy takie połączenie z NPN jest poprawne?

    [ATmega8][C] Wentylator sterowany PWM + pomiar obrotów (rpm)
  • Pomocny post
    #21 7837965
    Konto nie istnieje
    Poziom 1  
  • #22 7845079
    regrom
    Poziom 16  
    Przetestowałem dziś układ z MOSFETEM P, jest sterowanie od strony +, regulacja PWM jak najbardziej działa.

    :cry: Jednak nadal są zakłócenia, takie połączenie nic nie zmieniło, timer nadal zlicza kosmiczne wartości..

    Co poradzicie...?
  • #23 7845150
    Konto nie istnieje
    Poziom 1  
  • #24 7845334
    wdogli
    Poziom 18  
    Hej.
    Twoje problemy są spowodowanie tym że czujnik hala w wentylatorku zasilasz napięciem prostokątnym o różnym wypełnieniu i takie chocki klocki będziesz miał zawsze.
    Moim skromnym zdaniem sprawę załatwisz za pomocą przetwornika KA331 lub LM331.
    Scalaka tego można tak zabudować że w zależności od częstotliwości którą będziesz na niego podawał takie napięcie stałe otrzymasz na jego wyjsciu. A wiec wiatraczek zasilasz napięciem stałym o określonej wartości w zależności od tego jaką częstotliwość podasz na wejście scalaka. W takim przypadku czujnik Hala jest zasilany stałym napięciem i nie wariuje :)
    Oto link do gotowca :)
    Link
    Pozdrawiam
  • #25 7845447
    nojmi
    Poziom 20  
    Nie lepiej zasilić czujnik hala oddzielnym napięciem z dodatkowego kabelka? Tylko, że wtedy ingerujesz w elektronikę silnika, ale wygląda to na najrozsądniejsze rozwiązanie bo nie wiesz od jakiego napięcia halotron zaczyna działać prawidłowo. Możliwe, że dla minimalnych prędkości napięcie podawane na wentylator będzie za niskie dla czujnika.

    Czy przypadkiem LM331 nie ma za małej wydajności prądowej na wyjściu do zasilania wentylatora?
  • #26 7845661
    regrom
    Poziom 16  
    Dziękuję za zainteresowanie tematem:

    :arrow: atom1477 Schemat, jak i prototyp który służy mi tym przypadku jako regulator PWM, jest tutaj: KLIK
    Reszta to druga ATmega, sygnał z wiatraka na wejście T0(timer0), masy połączone, zasilanie stabilizowane.

    :arrow: wdogli Przetwornik C/A jest rozwiązaniem.. ale zwiększa koszt całości i oraz wielkość układu(fizycznie), dlatego też szukam jak najprostrzego rozwiązania.

    :arrow: nojmi Ingerowanie w wentylator odpada, szukam uniwersalnego rozwiązania. Znalazłem schemat wewnętrznych połączeń tych wiatraków.

    [ATmega8][C] Wentylator sterowany PWM + pomiar obrotów (rpm)
  • #27 7845681
    leon1313
    Poziom 15  
    Nie jestem ekspertem w tych sprawach, ale wentylator jest urządzeniem o bardzo dużej bezwładności. Może wybrana przez Ciebie metoda zasilania jest nieskuteczna. Zamiast sterować PWM o częstotliwości kHZ, zejdź do kilku HZ i mierz prędkość tylko w przypadku, kiedy układ jest zasilany. Nie wiem, jak to się będzie sprawowało, szczególnie przy małych obrotach..
  • #28 7846827
    WOBI
    Poziom 19  
    Na schemacie który umieścileś masz wersję wentylatora 4 przewodowego i wejście Drive do którego podłącz swój PWM oczywiście przez tranzystor który zasteruje to wejście (drive) poziomem takim jak zasilasz +V i wtedy sterujesz tylko samym wentylatorem a czujnik halla nasz zasilany stale. 2 opcja to PWM przekształcić w zasilacz, czyli wyjście pwm podajesz na tranzystor, dławik i diode, a na jego wyjściu dajesz kondensator elektrolityczny i masz coś w rodzaju zasilacza impulsowego. Na wyjściu bedziesz miał napięcie stałe od 0V do +V przy wypełnieniu od 0% do 100%. Ale wentylator bedzie działał tylko od pewnego napięcia minimalnego (czujnik też) czyli defakto regulacja skuteczna prędkości wentylatora bedzie na poziomie np 30% do 100% wypełnienia PWM. Podłacz wentylator do zwykłego regulowanego zasilacza a zobaczysz od jakiego napięcia wentylator (dany typ) bedzie zaczynał pracę( minimalna predkość), to bedziesz wiedział o co chodzi i wtedy ustalisz zakres zmian PWM.

    [ATmega8][C] Wentylator sterowany PWM + pomiar obrotów (rpm)

    lub daj kondensator elektrolityczny tak jak na tym schemacie i będzie stałe napięcie zależne od wypełnienia PWM.

    [ATmega8][C] Wentylator sterowany PWM + pomiar obrotów (rpm)
  • #30 7847148
    WOBI
    Poziom 19  
    Będzie działać bo u mnie działa, to jest uproszczony regulator napięcia. Dla tego przykładu co podałeś (klasyczny zasilacz impulsowy) który obniża napięcie i wymagane są parametry takie jak stabilność, napięcie tętnień, szumy itd. to stosuje się co co podałeś. Ale ja podałem uproszczony sposób o który kolega piszący post prosił więc można pominąć i uprościć układ bo w tym zastosowaniu można tak zrobić. U kolegi był problem że sterował masą (minusem) i sterował też przy okazji czujnikiem halla. Przy sterowaniu tak jak podałem ( plusem + kondensator) bedzie uklad działał. Wiem że nie jest to klasyczne rozwiązanie ale skuteczne. Tylko wartość kondensatora trzeba dobrać do danego obciążenia tutaj wentylatora.
REKLAMA