Skocz do zawartości

Zabezpieczenie przed utratą zasilania sieciowego Arduino UNO


czaj

Pomocna odpowiedź

Witam wszystkich forumowiczów.
Zaczynam przygodę z arduino, mam już pierwszy projekt którym jest sterowanie silnikiem krokowym jako przymiar dystansowy.
Dokładniej... silnik przesuwa miarkę na odległość wpisaną z klawiatury.
Zmienną z klawiatury zapisuje do pamięci EEPROM, potem silnik jedzie na wybraną wartość.
Chcę ten układ zabezpieczyć przed nagłym wyłączeniem prądu, bo wtedy mam zapisaną zmienną, ale silnik nie dojechał do zadanej wartości.
Czytałem o dodatkowych bateriach itp. ale raczej wolał bym rozwiązanie bezobsługowe.
Wymyśliłem tak że przed zasilaczem dam stycznik/przekaźnik na cewkę 230V który będzie zwierał sygnał na arduino digitalRead.
Po wyłączeniu prądu przekaźnik poda sygnał i program sam wyłączy silnik i zapisze aktualną pozycję do EEPROM działając na resztce prądu z kondensatora w zasilaczu.
Trochę to toporne, ale wydaje się skuteczne.
Macie na to jakieś inne rozwiązanie ??

Link do komentarza
Share on other sites

@czaj witam na forum 🙂 Na pewno możesz próbować działać w ten sposób, ale zastanów się czy nie lepiej rozwiązać to programowo. Nie wiem co to za urządzenie, ale może po prostu warto dorobić taką opcję, że po każdym włączeniu zasilania układ "zeruje" pozycje silnika, czyli cofa go do pozycji startowej i dopiero później przesuwa na zadaną pozycję (na podstawie danych z EEPROM-a)?

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Hej. Akurat miałem pod ręką dość spory kondensator i zmontowałem go do podtrzymania prądu bezpośrednio na zasilaniu 12V. Program całkiem nieźle wykrywa spadek napięcia i zdąża zapisać dane przed wyłączeniem.
Aczkolwiek dzięki za podpowiedź @Treker Automatyczna kalibracja urządzenia po każdym uruchomieniu wydaje się być całkiem niezłym rozwiązaniem.

Mam kolejne pytanie dotyczące samego silnika ( JK42HS40 ) i sterownika ( Pololu md09b ). Na pin RST daje HIGH na sterowniku. Jak sterownik jest włączony to silnik jest cały czas na hamulcu i się grzeje nawet jak nie pracuje. Wyeliminowałem to programowo dając HIGH na pin ENable. Działa całkiem nieźle, ale silnik jak nie pracuje jest "luźny" i łatwo go obrócić ręcznie co trochę może mi rozkalibrowywać maszynę. Zauważyłem natomiast że jak w każdym silniku, zwierając przewody silnik jest nieruchomy. Do się coś takiego zaprogramować na tym sterowniku?

Link do komentarza
Share on other sites

No niestety, tego typu drivery - w odróżnieniu od układów stosowanych w silnikach DC nie umieją zwierać uzwojeń silnika na komendę. W każdym z trybów cało-, pół- czy mikrokrokowym zawsze płynie jakiś prąd przez uzwojenia i nawet jeśli w jednym jest zero, to w drugim akurat max. Masz tutaj jednak na płytce potencjometr ustawiający prąd. Niestety projektanci modułu Pololu nie wpadli na pomysł, by wyciągnąć jego sygnał na pin, ale jeśłi zrobisz to samodzielnie (dodatkowy kabelek przylutowany do środka potencjometru?), to mógłbyś za pomocą pinu procesora (z dodatkowym opornikiem) ustawiać prąd np. w dwóch pozycjach: do pracy (duży) i do zatrzymania (mały, ale nie zerowy). Wtedy miałbyś ciastko i jednocześnie byś je zjadł.

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Skoro tak działają te sterowniki i silniki to wynika z tego że nagrzewanie się silnika jest normalne i nie ma się czym przejmować, że stoi w miejscu A jest gorący ?? 

Link do komentarza
Share on other sites

Jeśli dobrze ustawiłeś prąd faz i nie przegrzewsz silnika, to w zasadzie jest OK. Kosztem tego jest rzecz jasna strata energii, bo - jak sam piszesz - specyfika Twojego urządzenia pozwala na to, by moment trzymający był znacznie mniejszy niż napędowy. No ale jeśli nie boli te parę Watów idące w atmosferę, to spoko. Silniki krokowe, jak zresztą wszystkie, mają swoje zalety i wady. Ścisła kontrola kąta obrotu i zatrzymanie w zadanym punkcie to zalety, ale okupione koniecznością ciągłego pompowania prądu czyli niską sprawnością.

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Potencjometr wyznacza napięcie z jakim porównywany jest spadek na rezystorach pomiarowych - to on określa aktualny prąd uzwojeń. Jeśli mogę dorzucić swoje kolejne (pewnie zbędne) 3 grosze, to ja bym zrobił to tak:

  • środek potencjometru podłączył przez rezystor do pinu procesora
  • pin normalnie ustawiał jako wejście bez pullup - w tym stanie nie będzie to wpływało na pracę drivera
  • w stanie zatrzymania silnika przestawiał pin na wyjście w stanie zero - wtedy rezystor będzie bocznikował dolną cześć potencjometru i tym samym obniżał napięcie panujące na jego "strzałce"

Oczywiście trzeba dobrać wartość rezystora w zależności od obecnej rezystancji potencjometru, jego położenia i wymaganej obniżki napięcia, ale sprawa wydaje się prosta. I jeszcze jedna uwaga: tworzysz linię analogową, której odniesieniem jest przewód masy między płytką procesora a modułem drivera. Spraw, by ta masa była krótka i dobra, bo jest wspólnym przewodem także dla wszystkich sygnałów cyfrowych. Mam nadzieję, że masę i plus zasilacza (jaka jest topologia całości? może jakiś rysunek?) podłączyłeś do drivera a nie do Arduino, bo w tym drugim przypadku przez kabelek masy płynie też cały prąd silnika a ten nie dośc że jest duży to jeszcze straszliwie zaśmiecony. Generalnie narysuj nam to i zwróć uwagę na rozpływ prądów. Rozwiązaniem problemu spadków na masie, niestabilności itp. może być mały tranzystor MOSFET (np. FDV301?) stojący źródłem bezpośrednio na masie płytki drivera i mający w drenie ww opornik podłączony drugim końcem do potencjometru. Wtedy usuwasz problemy spadków i zakłóceń, bo rezystor zwierany jest wprost do masy scalaka.

  • Lubię! 1
Link do komentarza
Share on other sites

Dzięki za podpowiedzi marek1707. Póki co pozostanę jednak przy ręcznej regelacji potencjometru bo na chwilę obecną moja wiedza nie sięga tak daleko jak opisujesz 🙂
Ale na pewno się to zmieni za jakiś czas. 🙂 Tak czy inaczej jednak po podłączeniu silnika do całej części mechanicznej, okazało się że moment trzymający też jest ważny i nawet opcja ze zwarciem przewodów fazowych silnika nie daje takiego efektu jakiego bym oczekiwał. Zostaje więc standardowa praca silnika.

Link do komentarza
Share on other sites

Hej, nie wymigasz się tak łatwo 🙂 Jesteś nam winien filmik albo przynajmniej zdjęcie tego swojego cuda w działaniu. Chyba wszyscy tu jesteśmy ciekawi jak wygląda "przymiar dystansowy" z silnikiem krokowym i do czego to w ogóle jest? Może zawsze o czymś takim marzyłem, tylko nie wiedziałem, że istnieje?

  • Lubię! 1
Link do komentarza
Share on other sites

Spokojnie... Po tym jak liznąłem możliwości arduino trochę rozwinęła się koncepcja urządzenia i teraz jest plan aby całość była sterowana przez procesor.
Ogólnie rzecz ujmując będzie to nietypowa ucinarka do drutów z numerycznym ustawianiem długości ciętych prętów i liczeniem cięć.
Jak będzie gotowa to wrzucę foto/video.

Link do komentarza
Share on other sites

Hej. Wrzucam na razie kilka fotek elektroniki i silnika napędzającego miarkę długości. Jak zmontuję całe urządzenie to dam update.
Niestety musiałem użyć klona UNO bo oryginalna płytka którą miałem nie chciała połączyć się z kompem - problem ze sterownikami. Walczyłem z tym dwa dni, aż w końcu kolega pożyczył mi klona.

20201206_095807.jpg20201206_095812.jpg

20201206_095821.jpg20201206_100105.jpg

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.