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

Wentylator ogrzewania samochodowego na Atmega8

luke_dra 12 Gru 2008 12:00 2589 18
  • #1 12 Gru 2008 12:00
    luke_dra
    Poziom 10  

    Witam.
    Panowie poszukuję jakiegoś schematu podłączenia Atmega8 do sterowania wentylatora ogrzewania samochodowego lub może wiecie jak coś takiego zrobić. Chciałbym płynnie sterować obrotami silnika za pomocą dwóch przycisków (+ - ). Nie było by problemu gdyby chodziło o zwykły silniczek np komputerowy.
    W samochodzie wentylator ogrzewania pobiera trochę Wat'ów i stąd moje pytanie jak to zrobić?

    0 18
  • Relpol
  • Pomocny post
    #3 12 Gru 2008 12:38
    snow
    Poziom 28  

    Atmega+MOSFET+PWM

    0
  • Relpol
  • #4 12 Gru 2008 13:40
    luke_dra
    Poziom 10  

    Hej panowie a moglibyście jaśniej trochę bo troszkę jestem jeszcze kiepski w te klocki

    0
  • Pomocny post
    #5 12 Gru 2008 13:40
    wader_669
    Poziom 28  

    schemat
    Wentylator ogrzewania samochodowego na Atmega8

    w jakim jezyku programujesz? znajac zycie jak zadajesz takie pytania to pewnie bascom.
    Polecam ci ksiazke "proramowanie mikrokontrolerow avr w jezyku bascom" tam masz dokladnie taki przyklad co ty chcesz.
    Jak poprosisz przepisze ci kod dla atmega8.
    p.s. na schemacie to okragle z kwadratami na koncu to jest wentylator, zapomnialem napisac

    0
  • Pomocny post
    #6 12 Gru 2008 13:41
    snow
    Poziom 28  

    Dajesz tranzystor w szereg z silnikiem i zmieniając wypełnienie sygnału sterującego bramką tranzystora zmieniasz napięcie które idzie na uzwojenie silnika i zmienia się dzięki temu prędkość wirnika.

    0
  • #7 12 Gru 2008 14:07
    luke_dra
    Poziom 10  

    Ok dzięki panowie już teraz rozumiem. Pobrałem sobie ze strony BTC z zaproponowanej książki przykładowe programy BASCOm i pewnie chodzi o ten właśnie kod ??

    Code:

    'Program regulujący prędkość obrotową silnika DC 12 V
    'Do sterowania wykorzystano sygnał PWM
    'Częstotliwość przebiegu PWM ok. 254 Hz - 8 MHz/510/64
    'Przycisk S1 zwiększa prędkość obrotową silnika
    'Przycisk S2 zmniejsza prędkość obrotową silnika

    $regfile = "m8def.dat"                                      'informuje kompilator o pliku
           'dyrektyw mikrokontrolera
    $crystal = 8000000                                          'informuje kompilator
           'o częstotliwości oscylatora
           'taktującego mikrokontroler
    Config Pinb.4 = Input                                       'linia PB4 jako wejściowa
    Config Pinb.2 = Input                                       'linia PB2 jako wejściowa
    Config Pinb.1 = Output                                      'linia PB1 (PC1A) jako wyjściowa
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 64       'konfiguracja Timer1 jako
           'generatora sygnału PWM na
           'wyjściu OC1A
    Dim I As Byte                                               'zmienna, której wartość określa
           'wypełnienie sygnału PWM

    S1 Alias Pinb.4                                             'przypisanie nazwie Pinb.4
           'nazwy S1
    S2 Alias Pinb.2                                             'przypisanie nazwie Pinb.2
           'nazwy S2

    Set Portb.4                                                 'dołączenie do linii PB4
           'rezystora podciągającego
    Set Portb.2                                                 'dołączenie do linii PB2




           'rezystora podciągającego
    Pwm1a = 0                                                   'wpisanie wartości początkowej 0
           'wypełnienia sygnału PWM

    Do                                                          'początek nieskończonej pętli
     If S1 = 0 Then                                             'jeśli przyciśnięty S1, to
      Waitms 25                                                 'opóźnienie dla eliminacji drgań
           'styków
       If S1 = 0 Then                                           'sprawdzenie ponownie, czy
           'przycisk S1 dalej naciśnięty,
           'jeśli tak, to
       Incr I                                                   'zwiększenie o jeden wartości I
       If I = 0 Then                                            'jeśli wartość I = 0, to
        I = 255                                                 'wpisanie do I wartości 255
       End If
       Pwm1a = I                                                'wpisanie wartości I do zmiennej
           'Pwm1a określającej wypełnienie
           'PWM
       Waitms 20                                                'opóźnienie 20 ms
      End If                                                    'koniec warunków
     End If
     If S2 = 0 Then                                             'jeśli przyciśnięty S2, to
      Waitms 25                                                 'opóźnienie dla eliminacji drgań
           'styków
      If S2 = 0 Then                                            'sprawdzenie ponownie, czy
           'przycisk S2 dalej naciśnięty,
           'jeśli tak, to
       Decr I                                                   'zmniejszenie wartości I o jeden
       If I = 255 Then                                          'jeśli wartość I = 255, to
        I = 0                                                   'zerowanie wartości zmiennej I
       End If
       Pwm1a = I                                                'wpisanie wartości I do zmiennej
           'Pwm1a określającej wypełnienie
           'PWM
       Waitms 20                                                'opóźnienie 20 ms
      End If                                                    'koniec warunków
     End If
    Loop                                                        'koniec pętli nieskończonej
    End

    0
  • Pomocny post
    #8 12 Gru 2008 14:11
    wader_669
    Poziom 28  

    tak

    0
  • #9 12 Gru 2008 14:52
    PiotrPitucha
    Poziom 33  

    Witam
    Wader_669, tak jak proponujesz nie może być !!
    Po pierwsze BUZa prosto z procesora łatwo nie wysterujesz, po drugie Twoja dioda odparuje, wytrzyma conajwyżej kilkaset mA a silnik wentylatora bierze kilkanaście A, po trzecie silnik wentylatora jest na stałe połączony z masą i trzeba go sterować od plusa zasilania.
    Pozdrawiam

    0
  • #10 12 Gru 2008 15:15
    luke_dra
    Poziom 10  

    Fabrycznie zapewne na linii zasilania jest umieszczony odpowiedni potencjometr jak przypuszczam. No to teraz się sprawa kolejny raz skomplikowała.

    0
  • #11 12 Gru 2008 15:33
    koleszka
    Poziom 24  

    Jeśli planujesz zrobić tylko regulacje obrotów to pytanie czy koniecznie potrzebujesz uC? Może zadowoliło by Cię coś takiego?

    Dodano po 2 [minuty]:

    Sorki nie doczytałem że chcesz na przyciskach sterować, jednak wystarczy trochę zmodyfikować ten układ ewentualnie stopień wzmacniający przed MOSFET

    0
  • #12 12 Gru 2008 15:41
    luke_dra
    Poziom 10  

    Więc sprawa wygląda tak. Obecnie mam ogrzewanie manualne. Ubzdurałem więc sobie że zrobię elektroniczne. Konstruowane urządzenie wykonuje już szereg innych czynności - zmienia ustawienie nawiewu (szyba przednia, ogrzewanie reszty auta) za pomocą serwomechanizmów, włączenie i wyłączenie ogrzewania szyby tylnej (przekaźnik), zmiana temperatury (serwomechanizm) a pozostała jeszcze jedna kwestia wentylator - jestem początkującym elektronikiem i rozbiłem się właśnie o sterowanie wentylatora. Manualnie ma on 4 pozycje nawiewu - w wersji elektronicznej musi mieś 7. Mam już mikrokontroler użyty i kilka wolnych wyprowadzeń z których chcę skorzystać.

    0
  • #13 12 Gru 2008 15:51
    koleszka
    Poziom 24  

    Ten układ który podesłałem przystosowany jest do sporych mocy. Pytanie tylko czy nie musisz sterować od strony plusa zasilania? Tak jak ktoś już zwrócił na to uwagę. Zawsze mozna przerobic układ tak aby można było sterować dod stroby plusa i zamiast 555 dać uC.

    0
  • #14 12 Gru 2008 16:19
    luke_dra
    Poziom 10  

    No to może jeszcze zadam pytanie z innej beczki. Jakiego typu jest "ekran" na poniższym obrazku i może orientujecie się jak się takie "ekrany" obsługuje. Na wyjściu ma on 18 nóżek. Jestem ciekawy jakim napięciem jest on zasilany i jak mniej więcej działa.

    0
  • #15 12 Gru 2008 17:56
    wader_669
    Poziom 28  

    PiotrPitucha napisał:
    Witam
    Wader_669, tak jak proponujesz nie może być !!
    Po pierwsze BUZa prosto z procesora łatwo nie wysterujesz, po drugie Twoja dioda odparuje, wytrzyma conajwyżej kilkaset mA a silnik wentylatora bierze kilkanaście A, po trzecie silnik wentylatora jest na stałe połączony z masą i trzeba go sterować od plusa zasilania.
    Pozdrawiam


    no racja, sorry za pomylke ja nie wiedzialem jakie to wentylatory sa. Ten schemat jest akurat do sterowania wentylatora od komputera ktory wlasnie pobiera te kilka mA

    0
  • #16 13 Gru 2008 08:36
    PiotrPitucha
    Poziom 33  

    Witam
    Kiedyś zrobiłem podobne układ na 555 i na procesorze, 555 ma swoje zalety, układ prosty do sterowania potencjometrem, duża wydajność prądowa i tranzystor można podpiąć prawie bezpośrednio pod wyjście 555.
    Czego prawie?, jak mówią prawie robi dużą różnicę, problem jest w pojemności Millera, zmiana napięcia w drenie przenosi się na bramkę i może zniszczyć układ sterujący, z drugiej strony wsadzenie tam dużego opornika nie ma sensu bo psuje zależności czasowe i tranzystor zacznie się grzać.
    Ja stosowałem MOSFETy 4905 i rezystor 22ohm w bramce, taki akurat miałem w szufladzie i jest zbliżony to optymalnego dla niskich częstotliwości kluczowania.
    Co do układu z procesorem to wyjściem procesora sterowałem przez opornik 1Kohm tranzystorem NPN, w kolektorze 470ohm i z tego kolektora 22ohm na bramkę 4905, przy takim sterowaniu tranzystor obywał się bez radiatora, dioda równolegle do silnika oczywiście niezbędna.
    4905 jest dość odpornym tranzystorem, ale nie należy jechać zbyt wysoko z częstotliwością kluczowania bo zacznie się grzać.
    Z większych silników jakie udało mi się sterować :D pamiętam rozrusznik od Forda Transita rozpędzający śmigło wiatrakowca :D, 10m średnicy i 50kg wagi, to było 8 sztuk 4905 sterowanych równocześnie, prąd rozruchu oceniam na 300A.
    Piotr

    0
  • #17 02 Sty 2009 21:48
    slawo1
    Poziom 14  

    W którym miejscu w poniższym kodzie mozna by było wstawić zmienną która by ograniczała zejście PWM powyżej zera a zdrugiej strony do 50%

    Code:

    Do                                                          'początek nieskończonej pętli
     If S1 = 0 Then                                             'jeśli przyciśnięty S1, to
      Waitms 25                                                 'opóźnienie dla eliminacji drgań
           'styków
       If S1 = 0 Then                                           'sprawdzenie ponownie, czy
           'przycisk S1 dalej naciśnięty,
           'jeśli tak, to
       Incr I                                                   'zwiększenie o jeden wartości I
       If I = 0 Then                                            'jeśli wartość I = 0, to
        I = 255                                                 'wpisanie do I wartości 255
       End If
       Pwm1a = I                                                'wpisanie wartości I do zmiennej
           'Pwm1a określającej wypełnienie
           'PWM
       Waitms 20                                                'opóźnienie 20 ms
      End If                                                    'koniec warunków
     End If
     If S2 = 0 Then                                             'jeśli przyciśnięty S2, to
      Waitms 25                                                 'opóźnienie dla eliminacji drgań
           'styków
      If S2 = 0 Then                                            'sprawdzenie ponownie, czy
           'przycisk S2 dalej naciśnięty,
           'jeśli tak, to
       Decr I                                                   'zmniejszenie wartości I o jeden
       If I = 255 Then                                          'jeśli wartość I = 255, to
        I = 0                                                   'zerowanie wartości zmiennej I
       End If
       Pwm1a = I                                                'wpisanie wartości I do zmiennej
           'Pwm1a określającej wypełnienie
           'PWM
       Waitms 20                                                'opóźnienie 20 ms
      End If                                                    'koniec warunków
     End If
    Loop       

    0
  • #18 02 Sty 2009 22:47
    gregoorr
    Poziom 17  

    Przecież tu wszystko jest opisane.
    Pwm1a=I
    Czyli zmienna I odpowiada za wypełnienie.
    Chyba że nie do końca zrozumiałem pytanie.
    Ten program w swojej złożoności podobny jest do programu
    zapalającego i gaszącego diodę LED.
    Był temat o podobnej tematyce, ciekawie rozwiązany:
    Link

    0
  • #19 04 Sty 2009 23:53
    nouki
    Poziom 25  

    Witam.

    Schemat jest ok tylko zmienić trzeba elementy na wydajniejsze :) dodatkowo zastosować opornik na sterowaniu mosfeta wyliczając go i diodę zenera.

    p.s
    przy takim programie jaki masz będzie strasznie hałasował co będzie denerwujące :) zamiast przycisków impulsator.
    osobiście zastosował bym jeden przycisk zwiększający co 10% "moc silnika"

    Inne rozwiązanie jeśli temperatura jest niska silnik pracuje na powiedzmy 90% im więcej w aucie stopni tym wolniej kręci silnik ..... ale to wersja zimowa bo latem się nie sprawdzi :)

    0