Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Sterownik silnika DC - regulacja prędkości + zmiana kierunku

...KUBA... 21 Oct 2020 11:06 3705 34
Metalwork
  • #1
    ...KUBA...
    Level 24  
    Witam. Buduję układ do regulacji prędkości obrotowej silnika DC 12V ~5A wraz z możliwością zmiany kierunku obrotów silnika. Podczas tworzenia schematu części wykonawczej zrodziło mi się kilka pytań z którymi potrzebuję pomocy. Docelowo całością chcę sterować z STM32L.. ale w celach prototypowych na razie używam Arduino.
    Początkowo w celu sterowania silnikiem miałem skorzystać z gotowego modułu IBT-2, ale postanowiłem że:
    - regulację prędkości obrotowe zrealizuję na IFR540N;
    - zmianę kierunków obrotu na 2-óch przekaźnikach.

    Teraz pora na pytania:
    I. Odnośnie części układu do zmiany kierunku:
    Sterownik silnika DC - regulacja prędkości + zmiana kierunku
    1. Zastanawiam się czy zastosować przekaźniki na 5V czy na 12V? - w komercyjnych rozwiązaniach najczęściej spotykam na 12V;
    2. Czy dioda zabezpieczająca tranzystor, połączona równolegle z cewką przekaźnika powinna to być 1N4007 czy 1N4048?;
    3. Jaki zastosować tranzystor do sterowania przekaźnikiem BC547B (BC547 - ciężej dostać) czy 2N2222A? O ile dal Arduino (output +5V) wystarczy jeden tranzystor tak nie wiem czy STM32 (output +3.3V) da radę wysterować tranzystor tak aby załączyć przekaźnik?
    4. W jakim celu w powszechnie dostępnych modułach przekaźnikowych do Arduino zastosowane są opto-triaki? czy głównym powodem jest bezpieczeństwo, czy np. właśnie po to, żeby móc sterować modułem z poziomu napięcia +3,3V?
    5. Czy dołożyć rezystor podciągający do masy bazę tranzystora sterującego przekaźnikiem? Nie wiem czy podczas startu układu przekaźniki nie będą się uruchamiały dopóki nie zostaną ustawione piny mikrokontrolera?

    II. Odnośnie części układu do regulacji prędkości obrotowej:
    Sterownik silnika DC - regulacja prędkości + zmiana kierunku
    6. Czy ten schemacik będzie odpowiedni zarówno dla Arduino (5V) jak i STM32 (3.3V)?

    Moderated By Marek_Skalski:

    Przeniosłem z DIY, ponieważ nie widzę tutaj tylko rozważania dotyczące układu wykonawczego. Jak już coś zadziała, to proszę o informację i temat powróci do DIY. :)

    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Metalwork
  • #2
    remzibi
    Level 24  
    Tak nieśmiało zasugeruję, do tego celu jest cała masa gotowych scalaków (oraz gotowych modułów), w dodatku tanich jak barszcz, więc pchanie się w przekaźniki to raczej ... średni pomysł.
    Ale jeśli wolisz przekaźniki, to oczywiście nie jest to zabronione.
    ...
    Nic nie napisałeś o mocy tego silnika.
  • #5
    Slawek K.
    Level 34  
    maciej_333 wrote:
    ...Oczywiście można wykorzystać gotowy układ jak np. L293, L298.

    Cóż z tego, że można kupić, skoro pierwszy ma prąd maks. 0.6A, drugi 2A, a kolega w pierwszym poście napisał 12V 5A.

    Pozdr
  • #6
    ...KUBA...
    Level 24  
    remzibi wrote:
    Nic nie napisałeś o mocy tego silnika.

    Producent siłownika liniowego w któym zamontowany jest wspomniany silnik deklaruje, że silnik ma moc 50W. korzystając ze wzoru ze specyfikacji siłownika, obliczyłem, że prąd dla mojego obciązenia siłownika będzie wynosił ok 3,5A.

    jankazik wrote:
    Nieprawidłowo ustawione są styki przekaźnika. W tym położeniu nic nie zadziała. Jeden ze styków musi mieć zmienione położenie.

    Chcę zastosować dwa przekaźniki Single Pole Double Throw (SPDT) ponieważ wyczytałem, że połączenie wyprowadzeń silnika siłownika liniowego pomaga zapobiec cofaniu się siłownika pod obciążeniem. Wiec są to styki steorwane dwoma różnymi przekaźnikami, jeśli byłby to styki jednego przekaźnika faktycznie w żadnym przypadku nie byłoby napięcia na silniku.

    Slawek K. wrote:
    Cóż z tego, że można kupić, skoro pierwszy ma prąd maks. 0.6A, drugi 2A, a kolega w pierwszym poście napisał 12V 5A.

    To był kolejny powód, żeby pokusić się na własną konstrukcję, Moduł IBT-2 wytrzymuje prąd do 45A, ale zastanawiam się, czy faktycznie wyprowadzenia silnika nie powinny być zwarte, żeby zapobiec cofaniu się siłownika?
  • Metalwork
  • #8
    maciej_333
    Level 36  
    Slawek K. wrote:
    maciej_333 wrote:
    ...Oczywiście można wykorzystać gotowy układ jak np. L293, L298.

    Cóż z tego, że można kupić, skoro pierwszy ma prąd maks. 0.6A, drugi 2A, a kolega w pierwszym poście napisał 12V 5A.

    Pozdr

    Co z tego? Myślałem, że zachęci to autora tematu do poszukania pośród podobnych układów. Skoro już muszę poszukać coś konkretnego, to np. DRV8874. Jest to przykładowy układ z oferty Texas Instruments.
  • #9
    Slawek K.
    Level 34  
    maciej_333 wrote:
    Slawek K. wrote:
    maciej_333 wrote:
    ...Oczywiście można wykorzystać gotowy układ jak np. L293, L298.

    Cóż z tego, że można kupić, skoro pierwszy ma prąd maks. 0.6A, drugi 2A, a kolega w pierwszym poście napisał 12V 5A.

    Pozdr

    Co z tego? Myślałem, że zachęci to autora tematu do poszukania pośród podobnych układów. Skoro już muszę poszukać coś konkretnego, to np. DRV8874. Jest to przykładowy układ z oferty Texas Instruments.

    Ano to, że Twój post wprowadza kolegę w błąd ;)

    Pozdr
  • #11
    gemiel
    Level 24  
    Gotowe moduły na BTN7960 można kupić na Ali za około 20zł, w Polsce dwa razy drożej. Mogą pociągnąć do 43A. Sterowanie PWM, zmiana kierunków.
    Sterownik silnika DC - regulacja prędkości + zmiana kierunku
  • #12
    pikarel
    Level 34  
    jankazik wrote:
    Nieprawidłowo ustawione są styki przekaźnika. W tym położeniu nic nie zadziała. Jeden ze styków musi mieć zmienione położenie.

    Każdy przekaźnik ma własne sterowanie, więc układ jest prawidłowy.

    Ważną zaletą takiego podłączenia silnika jest to, że stan stop jest jednocześnie hamowaniem silnika. Dwa stany wysokie - to również stop silnika, jeśli jednak kierunek obrotów jest podawany z przełącznika kołyskowego, to taki stan nie może wystąpić (z powodu konstrukcji przełącznika). Z obrotów w lewo trzeba przejść przez stan stop i dopiero po nim obroty w prawo.

    Rezystor R5 może pozostać 1k, R6 do masy 10k, tranzystor BC548B.
    Przy R5 470Ω będzie poprawne także z 3,3V.
    Masz dostępne 12 V, więc przekaźniki zastosuj na 12 V, dioda przy cewce przekaźnika - jeśli masz, to 1N4001.
  • #13
    ...KUBA...
    Level 24  
    gemiel wrote:
    Gotowe moduły na BTN7960 można kupić na Ali za około 20zł

    Dokładnie o tym module wspomniałem w pierwszym poście pod nazwą " IBT-2".

    pikarel wrote:
    Ważną zaletą takiego podłączenia silnika jest to, że stan stop jest jednocześnie hamowaniem silnika

    Rozwiązanie na przekaźnikach i MOSFET widziałem praktycnzie w większości komercyjnych rozwiązań dostępnych na rynku.. nie wiem czy wynika to z niższej ceny rozwiązania w porównaniu do zintegrowanych mostków H? czy z w.w zalety, ale też zdecydowałem się na takie.

    pikarel dzięki za wskazówki dotyczące schematów.
    Chcę uruchomić wersję prototypową i w ogóle zobaczyć czy budowany sterownik okaże się użyteczny..

    pikarel wrote:
    dioda przy cewce przekaźnika - jeśli masz, to 1N4001

    A diodę która jest równoległa do uzwojeń silnika i zabezpiecza tranzystor IRF540N jaką zastosować?
  • #14
    pikarel
    Level 34  
    Stosujesz PWM, więc przy silniku zastosuj diodę szybką, na min. 40 V (może być zdemontowana z zasilacza ATX, z gałęzi 12 V).
  • #15
    ...KUBA...
    Level 24  
    Chciałbym jeszcze zapytać jaką zastosować częstotliwość dla Modulacji PWM? czy może to być 500-1000Hz, czy np. 10-20kHz? Wiem, że w zakresie wyższych częstotliwości silniki lubią piszczeć... Sterowanie silnikiem będzie odbywało się w układzie zamkniętym ze sprzężeniem zwrotnym, ale raczej nie zamirzeam uaktualniać bardzo często PWM - wiec chyba mogę pozwilić sobie na niższą częstotliwość PWM, bez obaw, że będę uaktualniał częściej niż czas trwania okresu PWM.
  • #16
    remzibi
    Level 24  
    gemiel wrote:
    Gotowe moduły na BTN7960 można kupić na Ali za około 20zł, w .....


    Bardzo dobrze działające moduły, zastosowałem je w TYM urzadzeniu, niestety przez to urządzenie, mam teraz jedna krótszą nogę i tytanowe części :(
    Wiec wszystkim zalecam ogromną rozwagę przy projektowaniu urządzeń działających z większymi siłami.
  • #17
    ...KUBA...
    Level 24  
    Poskładałem układ w wersji prototypowej i sterowanie działa. Układem tym steruję z Atmega328P, na której mam też uruchomione generowanie zewnętrznych przerwań i czasem podczas przełączania przekaźnikami dostaję dodatkowe przerwania, zastanawiam się skąd mogą pochodzić te zakłócenia?
    Z ciekawości zerknąłem na sterownik radiowy który mam wpięty w obwód sterowania i z tego co sobie rozrysowałem część sterująca przekaźnikiem wygląda jak na poniższym schemacie. Zastanawiam się jakie zadanie ma kondensator połączony równolegle z rezystorem zaznaczony na schemacie otoczką nr 1.:
    Dodaję również zdjęcia płytek sterownika radiowego w wersji 2 i 4 kanałowej.
    Sterownik silnika DC - regulacja prędkości + zmiana kierunku Sterownik silnika DC - regulacja prędkości + zmiana kierunku Sterownik silnika DC - regulacja prędkości + zmiana kierunku

    Drugie pytanie jakie mi się nasuwa to według dokumentacji tych sterowników można zasilać je napięciem z przedziału 12-24V. Jak to jest możliwe skoro przekaźniki są 12V i nie ma pomiędzy nimi a zasilaniem układu obniżającego napięcie?
  • #18
    maciej_333
    Level 36  
    Ten układ RC to pewna sztuczka. Kiedy T1 jest załączany kondensator C1 jest rozładowany i wtedy R1 jest zwarty. Przez cewkę przekaźnika początkowo rzecz jasna nie płynie prąd, dopiero z czasem gromadzi się energia w polu magnetycznym i prąd zaczyna rosnąć (ostatecznie w stanie ustalonym będzie ograniczony m.in. przez rezystancję cewki). Tym samym ładuje się też C1. Zatem w stanie ustalonym prąd płynący przez cewkę przekaźnika będzie ograniczony dodatkowo przez R1. Po co coś takiego? Dzięki temu początkowo przekaźnik będzie załączany w sposób pewny tj. popłynie dostatecznie wysoki prąd by przyciągnąć kotwicę. Jednak potem do podtrzymania prąd ten nie musi być już tak duży. Zatem jest to ograniczenie prądu pobieranego z zasilania.

    Odnośnie zakłóceń, to pozostaje kilka kwestii:
    -układy RC (snubbery) - odpowiednio zastosowane pomogą,
    -właściwie zaprojektowana płytka,
    -czasem może okazać się pomocne stosowanie zewnętrznych rezystorów pull up/pull down dla mikrokontrolera o mniejszej wartości od tych wewnętrznych.
  • #19
    ...KUBA...
    Level 24  
    Dzięki za objaśnienie.
    maciej_333 wrote:
    Ten układ RC to pewna sztuczka.

    Zastanawiam się teraz, czy jest sens zastosowania tej sztuczki w moim przypadku?

    maciej_333 wrote:
    układy RC (snubbery) - odpowiednio zastosowane pomogą

    Rozumiem, że dioda prostownicza podłączona równolegle do cewki przekaźnika też jest tego typu układem tłumiącym? I dla cewki przekaźnika wystarczającym, czy może tutaj też zastosować RC snubbery? - wydawało mi się, że czasem błędnie generowało się zewnętrzne przerwanie jak przełączałem przekaźnik do styków którego nie było nic podłączone...
    Co do układu RC snubber dla Silnika DC widzę, że można zastosować go na dwa sposoby: równolegle dla silnika lub elementu załączającego - czy różnią się one efektem działania?:
    Sterownik silnika DC - regulacja prędkości + zmiana kierunku
    Zastanawiam się czy nie będzie to miało wpływu na sterowanie silnika poprzez PWM? i myślę też nad dodaniem pomiaru natężenia prądu na silniku, ale dla sterowania PWM jest to bardziej skomplikowane.

    A może odpowiednia sekwencja załączania i wyłączania silnika zmniejszyłaby zakłócenia?
    Na tą chwilę przy wyłączaniu silnika najpierw ustawiam wypełnienia PWM na 0% (co powoduje wyłączenie silnika) i od razu "wyłączam" przekaźnik co powoduje zwarcie wyprowadzeń silnika poprzez styki przekaźników. Ale jak patrzę na schemat "części układu do regulacji prędkości obrotowej" w pierwszym poście, to zwierając przekaźnikami końce silnika odłączam go od diody D2, wiec nie wiem jak najlepiej realizować sekwencję załączania i wyłączania silnika?
  • #20
    maciej_333
    Level 36  
    Sam musisz zdecydować, czy potrzebujesz takie rozwiązanie. Zależeć to będzie od źródła zasilania. Jest to jednak sprytne rozwiązanie.

    W takim przypadku wstawiłbym układ RC na styki przekaźnika. Zmniejszy to di/dt przy wyłączaniu, więc i SEM indukowaną na indukcyjności tego silnika. Przy okazji przedłużamy trochę żywot styków przekaźnika. Jednak tu ma też znaczenie płytka i jej projekt. Sterowanie PWM też może robić problemy.
  • #22
    ...KUBA...
    Level 24  
    maciej_333 wrote:
    Sterowanie PWM też może robić problemy.

    Sterowanie to chcę zastosować do synchronizacji dwóch siłowników liniowych podnoszących pokrywę włazu, tak aby była równomiernie podnoszona i przede wszystkim opuszczana:
    Sterownik silnika DC - regulacja prędkości + zmiana kierunku
    I o ile na podstawie enkoderów w siłownikach udaje się dostosować ich prędkości tak aby obydwie strony pokrywy unosiły się równomiernie, to mam problem z wyłączeniem siłowników w dolnej pozycji pokrywy, aby podczas podnoszenia impulsy do synchronizacji prędkości były zliczane od dobrego momentu. Ponieważ aby pokrywa po zamknięciu oparła się na włazie a nie była podparta siłownikami, dolne mocowanie siłownika jest w postaci fasolki ok. 3cm, i siłownik wkręca się tak aby zluzować to mocowanie i tym samym siłowniki. Dlatego wyłączniki krańcowe nie sprawdzają się, chyba, że musiałyby być zamocowane gdzieś przy "fasolkach" siłowników, ale zastanawiałem się na dołożeniem czujnika natężenia prądu tak aby zacząć zliczać impulsy do synchronizacji siłowników w momencie kiedy fasolki siłowników faktycznie oprą się na ośkach i zaczną podnosić pokrywę. Ale przy sterowaniu silników za pomocą PWM widziałem, że pomiar natężenia prądu nie jest już tak łatwy..
    Próbowałem zrealizować wyłączanie siłowników na podstawie zliczania impulsów: tyle samo przy opuszczaniu co przy podnoszeniu. Dla siłowników bez obciążenia działało to poprawnie tak po zamontowaniu widocznie robią się delikatne rozbieżności, bo po kilku cyklach ośki na fasolkach siłowników już są w innych miejscach a czasem zbliżają się do skrajnych pozycji i boje się, że dojdzie do sytuacji gdzie siłownik nie zostanie wyłączony bo nie będzie możliwe zliczenie odpowiedniej ilości impulsów.
  • #23
    Strumien swiadomosci swia
    Level 43  
    Kolego nie widze tych 2 siłowników liniowych chyba że umocowane są równolegle po dwóch stronach klapy.

    Prąd siłowników musi być taki sam to będą się równomiernie wysuwały, tyle w temacie.
  • #24
    ...KUBA...
    Level 24  
    Strumien swiadomosc... wrote:
    umocowane są równolegle po dwóch stronach klapy.

    Dokładnie tak.

    Siłowniki połączone równolegle zasilam z tego samego zasilacza 12V. Jeśli podłączam je bezpośrednio pod zasilacz to nawet bez obciążenia wysuwają się z inną prędkością i z tego co pamiętam jeden pobierz ok. 0.8.5A a drugi 0.75A

    Strumien swiadomosc... wrote:
    Prąd siłowników musi być taki sam to będą się równomiernie wysuwały

    A żeby to uzyskać wystarczy podłączyć je szeregowo?? Co teoretycznie w przypadku jeśli jeden będzie bardziej obciążony niż drugi? Prąd wzrośnie i ten mniej obciążony nie będzie szybciej się wysuwał?
  • #26
    pikarel
    Level 34  
    Użyłeś procesora do sterowania, użyj więc dwóch portów do wyłączników krańcowych, które dadzą informację o pełnym otwarciu lub o zamknięciu pokrywy.
    Liczenie impulsów jest potrzebne dla regulacji PWM, a o końcu pracy silników poinformują właśnie wyłączniki krańcowe.
    Podglądnij, jak to jest rozwiązane mechanicznie w napędach lasera w CD; krańcówka informująca, ze laser jest na początku, przy talerzyku, Ty dasz je po dwóch stronach przesuwu.
    Popatrz również, jak rozwiązano to w sterowaniu bram przesuwnych, bo w nich jest dokładnie taka idea rozwiązania, które ja Ci proponuję.
  • #27
    ...KUBA...
    Level 24  
    Strumien swiadomosc... wrote:
    Zbuduj sobie stabilizator prądu Na każdy siłownik osobno

    Pierwotnie siłowniki w skrajnych pozycjach pokrywy były wyłączane poprzez niezależne (oddzielnie dla prawego i lewego siłownika) krańcówki, ale działo się tak, że po kilku cyklach otwarcia/zamknięcia przy zamykaniu różnica prędkości opuszczania wzrastała do tego stopnia, że pokrywa "kanotwała" się i nie osiadała we włazie." Nie wiem gdzie leży problem, że po kilku cyklach tak się robiło - skoro za każdym razem siłowniki dojeżdżały do swoich krańcówek. Zawsze jeden z silników szedł wolniej, ale wzrokowo wygląda ok, i podczas próby zatrzymania go jest równie mocny jak drugi. Stąd właśnie chciałem zbudować aktywny układ synchronizujący wykorzystujący sprzężenie zwrotne - na tą chwilę jest to enkoder szczelinowy i zliczanie impulsów.

    Sterownik silnika DC - regulacja prędkości + zmiana kierunku

    pikarel wrote:
    Liczenie impulsów jest potrzebne dla regulacji PWM, a o końcu pracy silników poinformują właśnie wyłączniki krańcowe.

    Szczerze mówiąc przy budowie sterownika synchronizującego prędkości, wzorowałem się na tym filmiku:

    I na nim fajnie sterownik zapamiętuje pozycje dolną i górną i siłownik może przemieszczać się tylko między nimi. Dlatego też robię tak, że po podłączeniu zasilania "bazuję" siłowniki i przy otwieraniu sterownik wysuwa siłowniki zliczając impulsy do 1000, a przy zamykaniu od 1000 do 0. ale jak zamontuję siłowniki to po kilku cyklach coś się rozjeżdża, i już siłowniki po zliczeniu impulsów do 0 nie zatrzymują się w tym samym miejscu co pierwotnie, trochę obawiałem się, że z kolejnymi cyklami otwarcia/zamknięcia zliczanie impulsów może rozjechać się z faktyczną pozycją. Stąd może opcja z krańcówkami i zerowaniem licznika impulsów za każdym cyklem po zamknięciu nie byłaby zła... I od razu pytanie, czy krańcówki określające osiągnięcie pozycji wystarczyłyby tylko w dolnej pozycji + za każdym cyklem bazowanie - zerowanie licznika imp. w sterowniku? a w górnej pozycji wyłączać silnik na podstawie zliczonej założonej wcześniej ilości impulsów? Czy w górnej pozycji również dodać krańcówki do wyłączania silników? I czy krańcówki miałyby rozłączać zasilanie siłowników, czy dawać sygnał do sterownika?
  • #28
    Strumien swiadomosci swia
    Level 43  
    KOlego z całym tym enkoderem sprawa idzie w kierunku stabilizacji prądu, weź poczytaj o sterowaniu silnikami DC , tylko prąd się liczy napięcie nie ma tu nic do rzeczy!

    Po drugie masz za wiodką klapę i teraz chcesz szkłem 3 podcierać niestety.
  • #29
    pikarel
    Level 34  
    Po co liczysz impulsy, jeśli masz wyłączniki krańcowe?
    Narobiłeś wiele dziwnych błędów, bo nie masz jednej koncepcji, lecz kleisz w locie kilka różnych.
    Przy zastosowania identycznych silników i identycznych układów sterujących
    a przy tym układy są obciążone równomiernie - prędkość działania siłowników również będzie identyczna.
  • #30
    ...KUBA...
    Level 24  
    pikarel wrote:
    Po co liczysz impulsy, jeśli masz wyłączniki krańcowe?
    pikarel wrote:
    Liczenie impulsów jest potrzebne dla regulacji PWM

    Zliczam impulsy siłowników (1imp ~0,5mm) żeby na tej podstawie określić który siłownik i o ile jest szybszy i poprzez PWM ograniczyć mu zasilanie tak aby wolniejszy siłownik nadążył za nim.

    pikarel wrote:
    Przy zastosowania identycznych silników i identycznych układów sterujących

    Tak było pierwotnie na każdą ze stron po dwie krańcówki, dwie diody prostownicze i siłownik - takie same. Zasilanie z tego samego zasilacza równolegle 12V coś koło 6A. Ale przy tym rozwiązaniu siłowniki wysuwały się z różną prędkością aż raz na jakiś czas podczas opuszczania ukosowały pokrywę do tego stopnia, że blokowała się we framudze włazu. Stąd postanowiłem dodać synchronizację ich prędkości... Problem jest jeszcze taki, że po zamknięciu chciałbym, zeby pokrywa spoczywała na "framudze" a nie była podparta na siłownikach - tak jak jest to cały czas podczas podnoszenia i jak siłowniki były zamocowane na sztywno (na końcówkach kulowych) to jest baaardzo krótki moment kiedy można wyłączyć siłownik żeby ani nie trzymał ciężaru pokrywy na sobie ani nie dociągał pokrywy do framugi. Stąd wyfrezowane zostały dolne mocowania siłownika żeby po zamknięciu jeszcze trochę się wkręcił przestając trzymać pokrywę i zlozował się zamist ją dociągać.