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

Jak to zrobić ? Sterowanie LM317 oraz ULN2003 z uC

nolab 01 Lip 2007 20:09 6627 37
Najlepsze odpowiedzi

Jak sterować wentylatorami z mikrokontrolera tak, aby mieć 5 poziomów pracy (OFF, 5V, 7V, 9V, 12V) i czy da się to zrobić na LM317 z ULN2003?

Najprościej zrezygnować z regulacji napięciem na LM317 i zrobić sterowanie PWM z tranzystorem kluczującym, bo wtedy programowo ustawiasz żądany poziom dla każdego wentylatora osobno [#4041147][#4064192][#4064334] Do takiego układu wystarczy np. tranzystor NPN BD135, z rezystorem ok. 1 kΩ między wyjściem uC a bazą, emiter do masy, kolektor do minusa wentylatora, a plus wentylatora do +12 V [#4041686][#4041872][#4041915] Dla ochrony przed przepięciami warto dać diodę równolegle do wentylatora, np. 1N582X [#4064192] Jeśli jednak zostajesz przy LM317, to trzeba uwzględnić spadek napięcia na ULN2003 około 1,1 V oraz dobrać rezystory zgodnie z notą/app note dla LM317 [#4039544][#4039589] Przy kilku niezależnych wentylatorach można zrobić PWM programowo na dowolnym AVR, a liczba kanałów PWM nie musi ograniczać się do sprzętowych wyjść układu [#4064192][#4064334]
Wygenerowane przez model językowy.
REKLAMA
  • #1 4039254
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    Jak napisać program dla uC AT90s8515 który ma regulować LM317 za pomocą ULN2003 w następujący sposób. Ma być 5 opcji :
    0 - OFF
    1 - 5V
    2 - 7V
    3 - 9V
    4 - 12V
    (Czy do takiego sterowania tym ULN2003 i LM317 rezystory są dobrze dobrane ?)
    Załączniki:
    • Jak to zrobić ? Sterowanie LM317 oraz ULN2003 z uC atmega.gif (16.51 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 4039544
    Dr_DEAD
    Poziom 28  
    Posty: 829
    Pomógł: 126
    Ocena: 3
    nolab napisał:

    (Czy do takiego sterowania tym ULN2003 i LM317 rezystory są dobrze dobrane ?)

    A uwzględniłeś spadek napięcia na ULN2003 wynoszący 1.1V?
  • #3 4039561
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    to jest akurat najmniejszy problem.
    zawsze mogę dać większe zasilanie (np 14V)
    ważniejsze jest jak napisać ten program
  • REKLAMA
  • REKLAMA
  • #5 4039640
    Klewi
    Poziom 14  
    Posty: 115
    Pomógł: 5
    Ocena: 3
    Proponuję użyć zamiast ULN-a układ DS1666 - jest to potencjometr sterowany przez magistralę I2C. W programie wystarczy wykonać określoną ilość razy pętlę podającą impulsy na scalaka, który zwiększy bądź zmniejszy odpowiednio wartość swojej rezystancji.
  • #6 4039670
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    jak bym musiał przerobić podany wyżej schemat aby użyć tego DS1666 zamiast ULNa ?
    jak tym sterować z uC
  • #7 4039925
    Klewi
    Poziom 14  
    Posty: 115
    Pomógł: 5
    Ocena: 3
    Muszisz zacząć od popatrzenia na notę katalogową DS-a. Ale ogólnie to wyjście DS-a podpinasz do nóżki 1 LM317 a wejście do masy. Traktujesz tego scalaka jak zwykły rezystor. A jeśli chodzi o sterowanie to już pisałem, że odbywa się ono poprzez magistralę I2C. Jeśli kolega nie wie o czym piszę to jest na Elektrodzie dział poświęcony mikrokontrolerom. tam jest wszystko co potrzebne do napisania programu.
  • #8 4039966
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    wiem co to I2C ale nie bardzo wiem jak sterować tym DSem przez to I2C

    btw wolał bym to jednak zrobić (przynajmniej na razie pierwszą wersję) ze względu na koszty na ULN2003
    będę potrzebował 4-5 tych DSow co daje około 100 zł.. a to za dużo... ULNy to groszowe sprawy i będą potrzebne 2 góra 3...

    więc prosił bym o pomoc(lub zrobienie gotowca:P) przy napisaniu tego programu pod ULNy
  • #9 4040043
    Klewi
    Poziom 14  
    Posty: 115
    Pomógł: 5
    Ocena: 3
    wejścia DS1666:
    PIN 6: CS - jeśli podasz na nie stan niski to włączasz możliwość sterowania rezystanją
    PIN 1: U/D - jeśli ustawisz stan wysoki to impulsy taktujące będą zwiększały rezystancję i odwrotnie.
    PIN 4: INC - wejście sterujące (każdy impuls czyli 0-1-0 zmienia rezystancję scalaka w górę lub w dół w zależności od stanu U/D)

    Tutaj naprawdę bez noty katalogowej się nie obejdzie ;)
  • #10 4040455
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Witam
    ja bym rozwiązał problem nieoc inaczej z dwóch powodów:
    1) Stabilizatory ciągłe niestety nie są zbyt energooszczędne i podgrzewają płytkę (wprost proporcjonalnie do różnicy Vin - Vout)
    2) Układ powinien być jak najprostszy więc wystarczy stabilizator i kontroler

    Do prostego kontrolera z PWM (np. ATtiny15,25) podłączasz stabilizator impulsowy regulowany typu
    LM2574 - adj w ten sposób:
    wyjście output podłączasz do przetwornika i mierzysz napięcie. do wejścia feedback podłączasz wyjście PWMa sterowane programem ustalającym na nim napipęcie tak, by osiągnąć odpowiednią wartość na wyjsciu output LMa.
    Konstrukcyjnie tanie i proste (30zł za części to aż nadto). Dla bezpieczeństwa na wyjsciu układu stawiasz transila na ok.13V. Dodatkowo można sterować innymi wyprowadzeniami LMa (by osiągnąć 0V) Tym sposobem można uzyskać bardzo szeroką regulację od 1,23V do Vcc-1V z małym krokiem rzędu 1/100 zakresu i jeszcze lepiej.

    Pozdrawiam
  • #11 4040978
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    niestety wiatraczki nie posiadają 4 kabla odpowiedzialnego za PWM
  • #12 4041147
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Jesli jestes w stadium koncepcyjnym Twojego projektu, to moze rozwazysz sterowanie PWM zamiast regulatorow napiecia.
    Jest to o tyle prostsze, ze trzeba w zasadzie tylko jeden tranzystor kluczujacy zasilanie do wiatraczka i jakis uklad gladzacy napiecie wyjsciowe ( a czasem i jego nawet nie trzeba ) a reszte robi albo soft albo wbudowany ( o ile Twoj procek go ma ) modul PWM w procesorze. Dla wiatraka taka dokladnosc zwykle wystarcza.
    Szkoda sie bawic z rozbudowana elektronika tam gdzie wystarczy pare linii kodu.
  • #13 4041330
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    nie jestem teraz pewien.. ale czy da sie zastosować PWM dla wiatraków podłączanych wtyczka 3 pin ? (+,GND, ilość obrotów).
    widziałem wiatraczki pod PWM ale one maja 4 piny no i tu nasuwa się pytanie
    czy mając 3 pinowy (lub 2 pinowy) wtyk od wiatraczka będzie działać to PWM ??

    Na razie to tylko projekt. Ale uC który będzie mi potrzebny musi mieć 33-34 I/O (przynajmniej według starej koncepcji w której na jeden wiatrak przypadały 4 piny I/O), jaki uC ma tyle pinów i PWM ?

    Chciałem to zrobić na AT90s8515 ale wstępnie zmieniłem na ATmega8515 (ponoć to samo tylko nowsze)
  • #14 4041556
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Wiatrak będzie się obracać, ale nie wiem jak z pomiarem obrotów, pewnie będzie niezbyt stabilny ale raczej wystarczający. Zawsze możesz podłączyć kondensatory filtrujące, ale wtedy to juz nie będzie za bardzo PWM tylko napięciowe. Regulacja obrotów za pomocą napięcia sie sprawdza przy dużych obrotach rzędu 50%, poniżej pewnej granicy moment obrotowy będzie zbyt niski by wiatrak mógł ruszyć. Własnie po to steruje sie PWM by nie było takich kłopotów.
  • #15 4041642
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    do tego sterowania PWM to jakiego tranzystora użyć ?
  • #16 4041686
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Najlepiej uzyc jakiegos MOS-Feta cyfrowego lub prosciej zwykly tranzystor bipolarny NPN o wystarczajacej wydajnosci pradowej.
    Musisz znac prad wiatraczka by prawidlowo dobrac ten tranzystor.
    Dla typowych wiatraczkow wystarczy BD135, ale nie wiem jaki jest Twoj typ.
  • #17 4041815
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    chce żeby było to w miarę uniwersalne...
    czyli nie ograniczone do jednego konkretnego wiatraczka.
    jak przyjmę powiedzmy 0,5 A to stanie się coś wiatraczka mającym 0,15 A ?
  • Pomocny post
    #18 4041837
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    nolab napisał:
    chce żeby było to w miarę uniwersalne...
    czyli nie ograniczone do jednego konkretnego wiatraczka.
    jak przyjmę powiedzmy 0,5 A to stanie się coś wiatraczka mającym 0,15 A ?
    Nie ma problemu.
    Wiekszym mlotkiem zawsze sie da wbic mniejszy gwozdz :)
    BD135 bedzie odpowiedni.
  • #19 4041849
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    mógł byś zrobić jakiś schemat jak mam to wszystko podłączyć ?
  • #20 4041872
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Nie przesadzaj,

    Nie trzeba schematu by podlaczyc cos takiego :(

    Miedzy port uC a baze tranzystora dajesz opor 1k lub troche mniejszy ( zaleznie od wymaganego pradu kolektora ).
    Emiter tranzystora laczysz do masy, a w kolektor wlaczasz wiatrak, ktory dalej dolaczasz do +12V i tyle.
  • #21 4041892
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    racje nie trzeba ... ale schematy są dla mnie bardziej czytelne i łatwiej na ich podstawie mi cokolwiek zrobić (jestem początkującym w te klocki :P).
    już sobie zrobiłem schemat.

    a jak to teraz oprogramować w uC ??
    żeby było tak jak w 1 poście (tzn 5 stopni regulacji, 0 Off, 1 - 5v, ... 4 - 12V)

    o ile dobrze zrozumiałem to kolektor ma być podłączony do ... GND od wiatraczka :?:
  • Pomocny post
    #22 4041915
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Styk (-) wiatraczka do kolektora :) a styk (+) do +!2V .

    Co do programu, to jest 1350 postow na ten temat i nie ma co generowac nowych postow. Wystarczy poszukac.
    Sam nawet kiedys cos takiego umiescilem na Forum ale dla 89C2051 i nie wiem gdzie tego szukac, bo to bylo ze 200 lat temu. Ale z tego co widzialem, to ostatnio sporo bylo takich tematow.
    Poszukaj ATMega czy cos takiego oraz PWM. Recze, ze znajdziesz sporo do czytania.
  • REKLAMA
  • #23 4042150
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    no to może krok dalej.
    dobry wybrałem uC ??
    jest jakiś AVR z 32-33 pinami I/O i obsługa PWM ??
  • #24 4043432
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Niestety nie znam sie na AVR ach dosc dobrze by w tej kwestii doradzac.
    Moze ktos inny poradzi koledze w kwestii doboru wlasciwego AVR z ukladem PWM i duza iloscia I/O.
  • #25 4043932
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Procek nie ma znaczenia, pod warunkiem ze nie chcesz sterować niezależnie tych wentyli, w takim przypadku albo piszesz programowy PWM (dowolny procek) albo wybierasz taki, który ma odpowiednia liczbę I/O
  • #26 4044990
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    heh. chce sterować niezależnie 4 lub 5 wentylatorkami :).

    Dodano po 2 [godziny] 26 [minuty]:

    w opisie do ATmega8515 pisze ze posiada (tylko) 3 kanały PWM... jest jakiś uC co posiada (chociaż) 4 ..?
  • #27 4046022
    szod
    Poziom 33  
    Posty: 1663
    Pomógł: 215
    Ocena: 120
    Zobacz np. ATMega162 - 6 kanałów PWM, ATMega64 - 8 kanałów, ATMega128 - 8 kanałów.
    Co do podłączania wiatraczka do tranzystora to dał bym dodatkowo diodę zabezpieczającą
    przed przepięciami równolegle do wentylatora.
  • #28 4046173
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    jaka jest różnica miedzy
    ATmega162 w której opisie pisze "Six PWM Channels"
    a ATmega64 "6 PWM Channels with Programmable Resolution from 1 to 16 Bits"

    Dodano po 36 [minuty]:

    czy żeby mieć możliwość wyłączenia wiatraczka muszę podłączać też jego GND pod uC ?
  • #29 4047000
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Heh, kolego odpowiadaj tez na pytanie które zadajemy by Ci pomóc: czy wszystkie wentylatory pracuja niezależnie?

    Ustawiasz wypełnienie 0 i przestaje sie obracać.
    Dla leniwych, sam znajdz odpowiedni procek:
    http://www.avrfreaks.net/index.php?module=Freaks%20Devices&func=devCompare

    Nie znasz widze angielskiego... niektóre kanały (16bitowe) maja ustawiana rozdzielczosc 1-16bitów, a reszta tak na prawde tez moze byc ustawiana ale juz 1-8bitów rozdzielczości
  • #30 4055741
    nolab
    Poziom 13  
    Posty: 120
    Pomógł: 1
    Ocena: 9
    znam angielski .. na tyle żeby przetłumaczyć z angielskiego na polski :d
    chodziło mi o praktyczne różnice, w zastosowaniu i wykorzystaniu tego.
    już pisałem wyżej wszystkie pracują niezależnie.

    Dodano po 3 [godziny] 27 [minuty]:

    jaka jest różnica między ustawieniem rozdzielczości 16 a 8 ?
    czy tak jak mi się wydaje 16 jest dwa razy bardziej dokładne/precyzyjne ?

Podsumowanie tematu

✨ Dyskusja dotyczy sterowania napięciem wyjściowym LM317 za pomocą układu ULN2003 i mikrokontrolera AT90s8515 (lub ATmega8515) w celu uzyskania pięciu poziomów napięcia (0 - OFF, 1 - 5V, 2 - 7V, 3 - 9V, 4 - 12V). Poruszono kwestie doboru rezystorów oraz wpływu spadku napięcia na ULN2003. Zaproponowano alternatywę w postaci cyfrowego potencjometru DS1666 sterowanego magistralą I2C, jednak ze względu na koszty autor preferuje rozwiązanie z ULN2003. Wskazano, że sterowanie PWM jest prostszą i bardziej efektywną metodą regulacji prędkości wentylatorów, zwłaszcza przy zastosowaniu tranzystora NPN (np. BD135) lub MOSFETa do kluczowania zasilania. Omówiono kompatybilność PWM z wentylatorami 3-pinowymi, gdzie PWM wpływa na prędkość, ale pomiar obrotów może być mniej stabilny. Wskazano konieczność zastosowania diody zabezpieczającej (np. 1N582X) równolegle do wentylatora. Dyskutowano wybór mikrokontrolera AVR z odpowiednią liczbą linii I/O i kanałów PWM do niezależnego sterowania 4-5 wentylatorami, wymieniając modele ATMega162, ATMega64, ATMega128 z 6-8 kanałami PWM oraz możliwość implementacji programowego PWM na mniejszych układach (np. ATTiny2313). Poruszono temat rozdzielczości PWM (8-bit vs 16-bit), gdzie 16-bitowa jest 256 razy dokładniejsza, jednak 8-bitowa jest wystarczająca dla tego zastosowania. Podkreślono, że obecny projekt wymaga około 32-33 linii I/O ze względu na niezależne sterowanie i pomiar obrotów wentylatorów oraz planowane rozszerzenia, np. komunikację z komputerem.
Wygenerowane przez model językowy.
REKLAMA