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

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

regrom 14 Mar 2010 23:50 25302 50
  • #1 14 Mar 2010 23:50
    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?

    1 29
  • Sklep HeluKabel
  • #2 15 Mar 2010 13:34
    528649
    Użytkownik usunął konto  
  • #3 15 Mar 2010 19:12
    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 :?:

    0
  • #4 15 Mar 2010 19:28
    528649
    Użytkownik usunął konto  
  • #5 15 Mar 2010 19:45
    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ę?

    0
  • Pomocny post
    #6 15 Mar 2010 20:18
    Dar.El
    Poziom 40  

    Będziesz musiał zjechać częstotliwością PWM na tyle aby łapać czas między impulsami z wentylatora, gdy PWM jest na H.

    0
  • #7 15 Mar 2010 21:03
    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..

    1
  • #8 15 Mar 2010 21:09
    528649
    Użytkownik usunął konto  
  • Sklep HeluKabel
  • #9 15 Mar 2010 21:36
    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..

    0
  • #10 15 Mar 2010 21:42
    _Robak_
    Poziom 33  

    Tylko, że jak nie masz podglądu na oscyloskopie to ciężko powiedzieć co tam się w ogóle dzieje;)

    0
  • Pomocny post
    #11 15 Mar 2010 22:24
    528649
    Użytkownik usunął konto  
  • #12 15 Mar 2010 22:35
    atom1477
    Poziom 43  

    Zacznijmy od tego, że pewnie sterujesz PWMem od strony masy. A impulsy na tym żółtym kabelku też są w stosunku do masy. Tyle że masy wentylatora...



    hasło: wideo

    1
  • #13 15 Mar 2010 22:58
    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)

    0
  • #14 15 Mar 2010 23:01
    atom1477
    Poziom 43  

    regrom napisał:
    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)

    No oczywiście że tak. Sterować musisz od plusa.
    A żadnych kondensatorów nie potrzebujesz.

    1
  • #15 15 Mar 2010 23:20
    regrom
    Poziom 16  

    atom1477 napisał:

    Sterować musisz od plusa.


    :arrow: atom1477 możesz rozjaśnić dlaczego, oraz jak to zrealizować?

    0
  • #16 15 Mar 2010 23:37
    atom1477
    Poziom 43  

    Bo gdy tranzystor rozłącza, to na obydwu pinach wentylatora pojawia się napięcie zasilania.
    Gdy ten żółty kabelek jest zwierany do kabelka czarnego, to przy otwieraniu i zamykaniu tranzystora kabelek czarny będzie na przemian przyjmował stan GND i VCC. Zwarty do niego kabelek żółty też. Mimo że wentylator ciągle zwiera go do kabelka czarnego to za sprawą otwieranego i zatykanego tranzystora na kabelku żółtym względem masy będziesz miał przebieg o częstotliwości otwierania i zamykania tranzystora.
    Przy sterowaniu od plusa kabelek czarny będzie na stałe zwarty do masy więc na kabelku żółtym będziesz miał przebieg niezależny od PWMa.

    Sterowanie od plusa możesz zrealizował na MOSTECie z kanałem P oraz konwerterze poziomów 5-->12V do sterowania bramki MOSFETa. W sumie napięcie nie musi wynosić 12V, ale musi być względem szyny 12V a takie napięcie najłatwiej otrzymać stosując konwerter 5-->12V.

    Dodano po 9 [minuty]:

    Choć ja osobiście wstawił bym tranzystor PNP zamiast MOSFETa z kanałem P. Takie coś przy małych częstotliwościach też będzie dobre. A tutaj nie potrzebujesz dużych częstotliwości. Małe są nawet lepsze bo przy małych częstotliwościach można uzyskać szerszy zakres regulacji obrotów wentylatora.
    Przy kilku Hz można spokojnie uzyskać pojedyncze obroty wentylatora na sekundę.

    0
  • #17 16 Mar 2010 00:03
    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ć ;)

    0
  • #18 16 Mar 2010 08:17
    _Robak_
    Poziom 33  

    Nie;) Bo zatkany będzie dopiero gdy Ugs będzie 0. A u Ciebie byłoby -7V;)

    0
  • #19 16 Mar 2010 09:13
    atom1477
    Poziom 43  

    To jest za mała moc żeby na BJT mieć większe straty niż na MOSFECie.
    Nie używasz drivera do sterowania MOSFETa więc na bank masz większe straty na MOSFECie niż myś miał na BJT (bo długo przeładowuje się pojemność bramki co owocuje dużymi stratami przełączania).
    Parę dni temu wykonałem sterownik wentylatora (tyle że bez miernika obrotów) na tranzystorze BJT i hula. A tranzystor jest w obudowie TO-92 i nawet o 1°C jego temperatura nie wzrasta (sprawdziłem czujnikiem BS18B20 ;) )
    Spróbuj 4,7k + BC547. Do kolektora BC547 rezystor 470R i on bo bazy tranzystora BC327. Ob bazy do emitera BC327 jeszcze daj drugi rezystor 470R.

    0
  • #20 16 Mar 2010 16:23
    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)

    0
  • Pomocny post
    #21 16 Mar 2010 16:48
    atom1477
    Poziom 43  

    Obydwa połączenia wyglądają OK.

    0
  • #22 17 Mar 2010 22:39
    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...?

    0
  • #24 17 Mar 2010 23:33
    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

    0
  • #25 18 Mar 2010 00:00
    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?

    0
  • #26 18 Mar 2010 02:09
    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)

    0
  • #27 18 Mar 2010 02:40
    leon1313
    Poziom 14  

    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..

    0
  • #28 18 Mar 2010 13:17
    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)

    0
  • #30 18 Mar 2010 14:45
    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.

    0