Skocz do zawartości
xy

Sterownie impulsami < niż ms?

Pomocna odpowiedź

Witam

Arduino NANO

Cy można sterować impulsami krótszymi niż 1 ms ?

Czy byłby dopuszczalny np taki zapis

delay(0,100);

lub

delay(0,010);

może zamiast przecinka kropka tak by przejść na mikrosekundy .

Lub też są inne sposoby? .

Pozdrawiam

xy

Udostępnij ten post


Link to post
Share on other sites

Można, ale trzeba się trochę zastanowić co się robi.

Atmega328p napędzająca Arduino Nano ma bogaty zestaw timerów, generatorów PWM, przerwań, peryferiów SPI i innych narzędzi, których można użyć do wygenerowania takiego sygnału, jaki jest potrzebny. W najgorszym razie można policzyć instrukcje procesora — przy zegarze 16MHz i 1-2 cyklach na komendę daje to całkiem niezłą rozdzielczość.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Z tym, że samo wywołanie funkcji zajmie trochę czasu, przełączanie pinów także — w efekcie nie dostaniesz takiego opóźnienia, jak wpisałeś w komendę, tylko większe. Dlatego najpierw należy się zastanowić do czego to ma służyć i na podstawie tego wybrać odpowiednie rozwiązanie.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

@deshipu, masz absolutną rację.

Ale pytanie było o opóźnienie w mikrosekundach dla Arduino, a przez arduino rozumiem tutaj koncepcję, sprzęt i soft.

Tak samo dobrze jak wiem, można powiedzieć początkującemu, że zmiana stanu pinu z wysokiego na niski zajmuje w arduino około 40 cykli, tylko po co? Przecież wiadomo, że Arduino to zło.

Udostępnij ten post


Link to post
Share on other sites

Dziękuję Bardzo Panowie za odpowiedzi .

Jeszcze ich nie przetrawiłem (tzn jeszcze nie rozumiem) co oznacza co .

Chodzi o wysyłanie impulsów sterujących do silnika

Przykładowe wartości to w milisekundach

5,5555

5,6497

5,7471

5,8479

Oczywiście chciałbym posługiwać się wartościami jeśli to możliwe do drugiego miejsca po przecinku w milisekundach.

Tu pokazałem fazę ostatnich kilku kroków rozruchu (długości impulsu )

Oprócz tego jest jeszcze przerwa

Impuls / Przerwa /Impuls / Przerwa itd

długość impulsów tej stabilnej pracy przyjmijmy 5,55 milisekund

Edit

Skoro opóźnienia są stałe to chyba nie przeszkadza w stabilnej pracy

Pozdrawiam

xy

Udostępnij ten post


Link to post
Share on other sites

Zero, pytanie było o impulsy, nie o opóźnienie.

xy, do tego najlepiej jest jednak użyć timera. Istnieją też gotowe biblioteki, robiące to za ciebie.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Deshipu

Teraz dopiero wyjdzie moja zupełna ignorancja w tych sprawach .Sorry zupełnie nie znam się .

na tym

Przypuszczam że timer to taki programator który da się jakoś zaprogramować ustawić .

Czy przykład jakiegoś taniego timera mógłbyś podać ?

A może jest to jakiś układ elektroniczny ?

Może są takie niedrogie zestawy tak sterujące ?

Zupełna Amba

Przepraszam ale się nie znam na tym wszystkim .

Pozdrawiam

xy

Udostępnij ten post


Link to post
Share on other sites

Może powiesz co chcesz zrobić? Bo najprawdopodobniej istnieją gotowe rozwiązania, a Ty chcesz łomem wyważać otwarte drzwi...

Udostępnij ten post


Link to post
Share on other sites

Ethanak

Chcę impulsami prądu stałego zasilać silnik prądu zmiennego

Te impulsy powinny być bardzo dokładne

Silnik napędza prądnicę

Pierwotnie trzeba silnik rozpędzić do określonej prędkości znamionowej tak by prądnica też miała prędkość znamionową

Stąd w pierwszej fazie rozruchowej podaje się coraz krótsze impulsy

a już gdy osiągnie się prędkość obrotową zgodną z oczekiwaniami to już jest praca stabilna

owe 5,55 ms impuls i przerwa o podobnej wartości lub dłuższa zależy jaki to jest silnik

Czy dość dokładnie to opisałem ?

Pewnie sam jeszcze nie ogarniam niespodzianek w takim układzie bo być może obciążając prądnicę obroty silnika będę spadać ale tym będę martwił sie później .

Najpierw jest bieg jałowy

Jeśli dochodzenie do obrotów faza rozruchu jest zbyt droga w realizacji to tę fazę można wykonać ręcznie

A skupmy się na stabilnym podawaniu impulsów i przerwach natomiast innym czynnikiem utrudniającym mogą być silniki 3 fazowe gdzie impulsy podawane przesunięte są względem siebie o 120 stopni ale idzie to przeliczyć na czas podania takiego impulsu lub 3 timery .

Pozdrawiam

xy

Chcę mieć wpływ na moment podania impulsu , jego długość trwania i długość trwania przerwy

Udostępnij ten post


Link to post
Share on other sites

Czyli chcesz zrealizować coś w stylu jednofazowego silnika krokowego...

Nie wiem, czy da się to zrealizować typowym PWM-em, ale na pewno nie w ten sposób, w jaki chcesz.

Nawet jeśli dokładnie wyliczysz czasy (a to się da zrobić) - to Arduino nie będzie miało możliwości reakcji na jakikolwiek zewnętrzny sygnał.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Ethanak

Tak przyjmuję do wiadomości i godzę się na razie na to to że Arduino nie zareaguje na żaden sygnał zewnętrzny . Potrzebne było by coś w rodzaju sprzężenia zwrotnego ale to w dalszej kolejności

Pozdrawiam

xy

Udostępnij ten post


Link to post
Share on other sites

Timer to jest takie małe urządzonko (peripheral) wewnątrz samego mikrokontrolera, które ma w środku licznik automatycznie zwiększany impulsami zegara i "alarmy" wyzwalane różnymi warunkami (zazwyczaj zadaną wartością tego licznika) i wykonujące różne rzeczy (przełączające pin albo wywołujące przerwanie). Po skonfigurowaniu taki timer działa w zasadzie niezależnie od twojego programu, więc bardzo dobrze nadaje się do robienia rzeczy wymagających precyzyjnego odmierzania czasu.

Na twoim miejscu rozejrzałbym się za bibliotekami do sterowania silnikami krokowymi — jeśli nawet nie znajdziesz czegoś, co robi dokładnie to co potrzebujesz, to przynajmniej możesz obejrzeć jak one są napisane i jak to się robi.

Zdajesz sobie sprawę z tego, że będziesz potrzebować jeszcze co najmniej jakiś tranzystor, a być może i mostek H, do tego? Z pina Arduino to pociągniesz najwyżej 20mA prądu, to zazwyczaj za mało do jakiegokolwiek silnika. Zakładam,  że to doskonale wiesz, tylko się upewniam.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Jak zrobisz sprzężenie zwrotne, jeśli układ podrzędny (w tym przypadku Twoje Arduino) nie ma żadnych wejść?

Zastanów się: w XIX wieku prądnice napędzane przez maszyny parowe potrafiły działać synchronicznie. Dlaczego?

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Deshipu

Ta część już samego napięcia wchodzącego na silnik będzie "załatwiona" przekaźnikami elektronicznymi .

Ale najpierw trzeba tylko zobaczyć jak to zadziała i na ile jest elastyczne poza tym jest jeszcze tak wysterować impulsami by były one najbardziej efektywne (długość impulsu ,przerwa)

Ethanak jeszcze nie wiem i myślę że to przede mną następne zadanie

Dziękuję Panom za zwrócenie uwagi na możliwe do wystąpienia problemy . To b.ważne

Pozdrawiam

xy

Udostępnij ten post


Link to post
Share on other sites
Anonim
Ten temat został zamknięty.

×
×
  • Utwórz nowe...