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

Silnik krokowy + Arduino -- Jak wywołać sekwencję kroków?

68mustang 14 Gru 2015 23:31 4977 11
  • #1 15241799
    68mustang
    Poziom 10  
    Posty: 64
    Pomógł: 1
    Ocena: 10
    Witam!

    Robię urządzenie do mieszania drinków. Na wałkach jeździ wózek, na wózku szklanka. Powyżej zamocowane butelki. Serwo również zamocowane na wózku naciska nalewaki przymocowane do butelek. Próbuję napisać program, który po wybraniu drinka z menu pokieruje silnikiem krokowym aby podjechał w odpowiedniej kolejności pod różne butelki. Nie jestem programistą i chciałbym skorzystać z jakiegoś gotowego rozwiązania i przerobić go na swoje potrzeby. Aby nie rozlewać zawartości szklanki chciałbym skorzystać z biblioteki AccelStepper jednak przy użyciu przykładowych szkicy udaje mi się tylko wywołać ruch z punktu A to B i tyle albo bouncing. Nie wiem jak zaprogramować tam sekwencje kilku punktów.

    O to jak robiłem to bez użycia biblioteki AccelStepper z przykładowym przyciskiem, po którego naciśnięciu uruchamiana była sekwencja

    Kod: C#
    Zaloguj się, aby zobaczyć kod


    Wiem, że kod jest paskudny. Ale na chwilę obecną nie jestem w stanie go napisać porządniej.

    Chodzi mi o to, aby przerobić go w ten sposób, by silnik krokowy rozpędzał i wyhamowywał wózek.

    Będę wdzięczny za każdą pomoc :)

    Pozdrawiam!
  • #2 15242176
    Zdzicho
    Poziom 25  
    Posty: 551
    Pomógł: 77
    Ocena: 71
    Liczbę kroków do wykonania wykorzystaj jako delay pomiędzy wykonywanymi krokami i zmniejszaj je po każdym kroku, po osiągnięciu połowy zaprogramowanych kroków, delay zaczynasz zwiększać aż do końca liczby kroków do wykonania. W ten sposób silnik będzie się płynnie rozpędzał i hamował. Oczywiście nie można całkowicie wyzerować delay bo silnik utraci ciąg.
  • Pomocny post
    #3 15242278
    namok
    Poziom 25  
    Posty: 529
    Pomógł: 91
    Ocena: 73
    Nie kombinuj tylko poczytaj dokładnie o AccelStepper.
    Poniżej silnik jedzie do opozycji 1000, wracając do pozycji 0 zatrzymuje się na pozycjach 600 i 400.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Każde wywołanie stepper.runToPosition() blokuje program na tej funkcji. Są też funkcje ruchu bez blokady.
  • #4 15242600
    68mustang
    Poziom 10  
    Posty: 64
    Pomógł: 1
    Ocena: 10
    Dzięki! Udało się dojść do tego etapu:

    Kod: C#
    Zaloguj się, aby zobaczyć kod


    Na razie testy robię na silniczku 28BYJ-48. Docelowo będzie Nema17.

    Jeszcze sporo kombinowania przede mną ale może mi się uda :)
    Dzięki raz jeszcze!
  • #5 15245072
    68mustang
    Poziom 10  
    Posty: 64
    Pomógł: 1
    Ocena: 10
    Testuję już na NEMA 17 + L298N, tylko silnik ma 2.8V i 1.7A. I nie wiem czy coś podłączam źle ale raz, że sterownik silnika grzeje się pierońsko (to jest ten na czerwonej płytce z radiatorem na L298N) a dwa, silnik grzeje się nawet jak nie pracuje (nie tak bardzo jak radiator na sterowniku ale jest dość ciepły).

    Radiator także grzeje się niezależnie od pracy (zanim program wywoła start silnika już jest gorący).

    Oto kod:

    Kod: C#
    Zaloguj się, aby zobaczyć kod



    Oto jak mam podłączone:

    Silnik krokowy + Arduino -- Jak wywołać sekwencję kroków?

    Jeśli chodzi o zasilacz to próbowałem na 6V 1A oraz na innym 3A też ustawionym na 6V.
    Nie jestem przekonany czym to powinienem zasilać bo jak pisałem na tym silniku jest podane 2.8V i 1.7A.
    Może łatwiej byłoby gdybym kupił 12V silnik 330mA?

    Chodzi mi o stabilną pracę bez nadmiaru prądu i bez niepotrzebnego grzania.
  • Pomocny post
    #6 15246475
    Konto nie istnieje
    Poziom 1  
  • #7 15246504
    68mustang
    Poziom 10  
    Posty: 64
    Pomógł: 1
    Ocena: 10
    Dziękuję Ci serdecznie za bardzo wartościową wypowiedź! Tak się składa, że wczoraj zamówiłem DVR8825 oraz Easy Driver 4.4. Pewnie jutro przyjdzie to spróbuję to jakoś połączyć.

    Mam jeszcze jedno pytanie. Jeśli program steruje silnikiem krokowym, który przesuwa wózek na prowadnicy liniowej wykonując sekwencję i wracając do punktu startu, czy potrzebuję instalować krańcówki? Bo w spotykam się z nimi w podobnych projektach jednak silnik krokowy generalnie powinien wiedzieć w którym jest miejscu. Chyba, że chodzi o sytuacje awarii w trakcie pracy i ponownego załączenia gdzie doszło do przesunięcia wózka i startuje z innej pozycji.
  • Pomocny post
    #8 15247169
    Konto nie istnieje
    Poziom 1  
  • #9 15247992
    68mustang
    Poziom 10  
    Posty: 64
    Pomógł: 1
    Ocena: 10
    Ok. W takim razie zainstaluję krańcówkę po lewej w położeniu startowym i może w setup() ustawię żeby po uruchomieniu odjechał trochę w prawo a potem pojechał w lewo aż do dotknięcia krańcówki i zapisał pozycję jako home

    Dodano po 5 [godziny] 46 [minuty]:

    A jaki silnik byłby najlepszy do tego projektu? Mam sterownik DRV8825 już na biurku tylko nie wiem czy wykorzystywać ten silnik NEMA 17 2.8V 1.7A czy może lepiej użyć jakiegoś 12V koło 330mA? Najbardziej by mi pasował NEMA 17 bo mam uchwyt mocujący w tym standardzie :) Ale zależy mi na tym, żeby był dobrze dobrany.

    Dodano po 2 [minuty]:

    i jeszcze jedno głupie pytanie. Czy radiator dołączony do DRV8825 zamontować od spodu (jest taki odkryty kawałek pola masy)? I czy zamontowanie go przy użyciu kleju termoprzewodzącego będzie prawidłowym postępowaniem?
  • #10 15249693
    Konto nie istnieje
    Poziom 1  
  • #11 15250167
    68mustang
    Poziom 10  
    Posty: 64
    Pomógł: 1
    Ocena: 10
    Dzięki raz jeszcze. Muszę jeszcze kupić kondensator 100uF i będę jutro testował. Co do zasilania to chciałbym z tego samego źródła zasilać arduino mega, jedno servo, kilka LED'ów i LCD 16x2. Czy wystarczy 2A 9-12V? Czy może 3A? Dzięki wielkie za podesłanie tego filmiku. Na pewno bardzo mi pomoże!
  • Pomocny post
    #12 15250237
    Konto nie istnieje
    Poziom 1  

Podsumowanie tematu

✨ Użytkownik pracuje nad projektem automatycznego mieszania drinków, wykorzystując silnik krokowy i Arduino do sterowania wózkiem z szklanką. Problemy związane z programowaniem sekwencji ruchów silnika krokowego zostały omówione, w tym wykorzystanie biblioteki AccelStepper do płynnego przyspieszania i hamowania. Użytkownik z powodzeniem zaimplementował sekwencję ruchów, jednak napotkał problemy z przegrzewaniem się silnika NEMA 17 oraz sterownika L298N. Zostały podane sugestie dotyczące zasilania, regulacji prądu oraz konieczności zastosowania krańcówek dla zapewnienia poprawnej kalibracji pozycji. Użytkownik planuje przetestować nowy sterownik DRV8825 oraz rozważa optymalne zasilanie dla całego układu.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA