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

PWM programowe i piszczący wentylatorek [BASCOM]

hagop 21 Paź 2009 20:53 2212 12
REKLAMA
  • #1 7158228
    hagop
    Poziom 15  
    Witam!

    Wentylatorek piszczy przy każdym z 10 poziomów PWM'a. Jeżeli ustawie Port na stałe 1 to chodzi normalnie. Co jest nie tak z tym programem?


    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Config Portc.5 = Output
    
    Dim Licz As Byte
    
    Dim X As Byte
    Dim A As Byte , B As Byte , C As Byte , D As Byte
    Dim Z As Byte
    Config Timer0 = Timer , Prescale = 1
    On Timer0 Przerwanie
    Enable Timer0
    Enable Interrupts
    Dim P As Byte
    
    
    Licz = 0
    Z = 10
    Do
    Loop
    
    
    End
    
    Przerwanie:
       Incr Licz
           If Licz <= Z Then Set Portc.5
           If Licz > Z Then Reset Portc.5
           'If Licz > 10 Then Licz = 0
           'If Licz = 0 Then Portc.5 = 0
    
    Return
    
    
  • REKLAMA
  • #2 7159315
    dawid512
    Poziom 32  
    Piszczy bo podajesz mu sygnał o dużej częstotliwości.
    P.S. dodaj kondensator i diodę równolegle do wentylatora.
  • #3 7159571
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #4 7160071
    OldSkull
    Poziom 28  
    Obaj przedmówcy mają rację: sygnał jest o zbyt małej bądź zbyt duzej częstotliwości. Nie znam Bascoma, ale tutaj mi wygląda, że sygnał ma 3125Hz, co jest częstotliwością nieprzyjemną dla ucha. Powinna być albo mniejsza (1kHz, czyli zliczasz do 31-32 w przerwaniu, nawet mniejsza) i tym samym słyszalna, ale akceptowalna dla ucha, albo dużo większa (proponuję ponad 25kHz, w takim wypadku w przerwaniu musisz wpisywać jakąś wartość do rejestru Timera, aby szybciej się przepełniał - bodajże 32 do TCNT0), aby nie słyszeć w ogóle. Niestety w tym drugim przypadku tranzystor moze się grzać.

    Dioda i kondensator : pierwsza obowiazkowo, drugi niekoniecznie (ale jest przydatny), ale mały (100n).
  • #5 7160231
    Konto nie istnieje
    Poziom 1  
  • #6 7162464
    OldSkull
    Poziom 28  
    Jeśli program jest mocno obciążony, to będzie problem z dużo wyższą częstotliwością - AVR będzie miał zajęty czas pracy tym przerwaniem w kilkudziesięciu %, jeśli nie, to nie ma problemu, aczkolwiek lepiej jest użyć sprzętowego pwma.
    Można też zupełnie "olać" przerwanie i to co w nim jest, wstawić do głównej pętli programu - będzie po prostu zajmować tyle czasu procesora, że nie będzie przeszkadzać temu co uC akurat robi, ale częstotliwość będzie ściśle zależeć od obciążenia. Tym samym nie będzie się jej dało regulować (może być za duża), ale nie dojdzie do zawieszenia się układu.
  • #7 7162509
    hagop
    Poziom 15  
    dioda, dioda + kondensator niestety nic nie daja(1n4148). moze to wina tego wentylatorka i nie lubi byc sterowany pwm'em?

    Atom1477 przez ciebie zwątpiłem w mozliwosci atmegi8. Da rade zrealizowac 4x pwm programowe, 1wire, lcd, impulsator + w pozniejszyczm czasie pomiar napiecia w 2 punktach?

    wszystko jest zrobione tylko w całość muszę połączyć.
  • REKLAMA
  • #8 7162603
    Konto nie istnieje
    Poziom 1  
  • #9 7162852
    kundzios
    Poziom 19  
    Najlepszym i najszybszym rozwiązaniem będzie włączenie sprzętowego PWM, po listingu widzę że jest to ATMEGA8 tak więc bez problemu znajdziesz na elektrodzie przykłady PWM na tym procku,a także procesor zostanie odciążony. Chyba że z jakiś powodów nie chcesz używać sprzętowego PWM.
  • REKLAMA
  • #10 7162908
    janbernat
    Poziom 38  
    A co to za wentylatorek?
    Może z komputera?
    Taki prosty BLDC?
  • #11 7163132
    OldSkull
    Poziom 28  
    @hagop: dioda i musi być, aby nie uszkodzić przepięciem tranzystora (chociaż wiatrak może mieć w sobie diodę).
    Programowe pwm da radę (bo i czemu nie), ale zależy jakie szybkie. Ja zawsze daję około 1kHz (czasem mniej), ale nie do wiatraków, tylko silników, które same generują hałas o niskiej częstotliwości, przez co nie przeszkadza taki PWM. Pamiętaj, że masz dostępne 2 dokładne PWMy (i jednej trochę gorszy) sprzętowe.
    Jeśli boisz się czy wystarczy: użyj atmegi 48 albo 88: obudowa ta sama, oraz ma 6 sprzętowych PWMów. Impulsator i pomiar napięcia robi sie na przerwaniach, a LCD wystarczy wysłać kilkanascie nrazy na sekundę kilkadziesiąt znaków, więc to akurat nie jest najmniejszy problem.
  • #12 7163513
    hagop
    Poziom 15  
    Stary wenytlatorek od komputera wyciagniety z zasilacza z lat 80 (procesor mial chlodzenie pasywne na malutkim radiatorze - kawalek blaaszki aluminiowej. podobne stosuje sie do chlodzenia np stabilizatora 7805 itp tylko troszke wiekszy. pewnie jego taktowanie bylo podobne jak tej atmegi...

    Bedąc bardzo leniwy wyonalem płytke nie zerkajac ze wyjscie PWM sprzetowego jest na innych portach... narazie chce zrobic to zeby dzialalo i przetestowac. pozniej moze powstanie druga wersja.


    w asemblerze mowisz. az mnie skreca jak sobie o tym pomysle ;] 100 linijek kodu a w c albo w bascomie tylko 3 linijki...

    PS
    do atmegi dojdzie pozniej kwarc 12mhz narazie dziala na oscylatorze wewnetrznym
  • #13 7163735
    Konto nie istnieje
    Poziom 1  
REKLAMA