Skocz do zawartości

Sterowanie serwem BEZ biblioteki


Pomocna odpowiedź

- ale ja napisałem - chciałbym uzyskać jedynkę przez 15us przy okresie 20ms

Na to masz już rozwiązanie z delay. Pytanie brzmi, co więcej chcesz uzyskać. Do testera serwomechanizmów powyższe rozwiązanie wystarczy. Do robota machającego kilkoma serwami równolegle z silnikami, czujnikami i jeszcze co tam wymyślisz już nie. I wtedy trzeba sięgnąć do innych rozwiązań. Dlatego pytam, co chcesz zrobić.

Sęk w tym, że w tej chwili nie mam żadnego konkretnego celu projektowego do osiągnięcia za pomocą timerów. Chciałbym po prostu wstępnie zrozumieć ten wycinek wiedzy związanej z mikroprocesorami i zastosować tę wiedzę do czegokolwiek jako ćwiczenie - pomyślałem, że uda się właśnie potrenować na serwo

Z oryginalnym PWM-em Arduino jest ten problem, że wypełnienie określa się liczbą 8 bitową. Gdybyś nawet uzyskał okres równy 20ms, to rozdzielczość wyniosłaby 20ms/256 czyli skok co około 78us. A to, jeśli dobrze liczę, dałoby Ci dokładność ustawienia serwa około 14 stopni. Myślę, że to Cię nie satysfakcjonuje.

Bardzo słuszna uwaga, nie zdawałem sobie z tego sprawy

Na początek poczytaj w nocie katalogowej o tym jakie timery masz do dyspozycji. Poczytaj też o przerwaniach wewnętrznych. Jak to będziesz wiedział, to spróbujemy zrobić kolejny krok.

W UNO jeśli dobrze zrozumiałem są 3 timery, które kontrolują 6 pinów. Jednak blokuje mnie brak zrozumienia zasad i języka do komunikacji z tymi timerami. Jakby ktoś znał jakieś dobre źródło do nauki tego typu podstaw (dla naprawdę mocno początkujących) to z góry dziękuję za wskazanie.

Arduino UNO nie ma timerów. Timery ma posadzona na jego pokładzie Atmega 328. Ma ona dwa ośmio i jeden 16 bitowy licznik. Biblioteka servo.h zabiera właśnie ten 16 bitowy licznik na potrzeby sterowania serwomechanizmami. Dlatego UNO po użyciu tej biblioteki traci dwa PWM-y.

Zauważ, że serwomechanizmy mozna podpinać do dowolnych pinów Arduino. To dlatego, że timery nie są powiązane z pinami. To dopiero program je z nimi wiąże.

Poczytaj notę katalogową Atmegi, a nie informacje o Arduino, bo zabierając się za bezpośrednią obsługę timerów wykraczasz poza środowisko Arduino.

Arduino UNO nie ma timerów. Timery ma posadzona na jego pokładzie Atmega 328. Ma ona dwa ośmio i jeden 16 bitowy licznik. Biblioteka servo.h zabiera właśnie ten 16 bitowy licznik na potrzeby sterowania serwomechanizmami. Dlatego UNO po użyciu tej biblioteki traci dwa PWM-y.

OK. Czyli dzięki tym 16-bitom "rozdzielczość" układu jest większa?

Zauważ, że serwomechanizmy mozna podpinać do dowolnych pinów Arduino. To dlatego, że timery nie są powiązane z pinami. To dopiero program je z nimi wiąże.

Poczytaj notę katalogową Atmegi, a nie informacje o Arduino, bo zabierając się za bezpośrednią obsługę timerów wykraczasz poza środowisko Arduino.

Dobra poczytam, tylko już czuję, że bez lepszego przygotowania niewiele zrozumiem, bo takie specyfikacje nie są pisane dla początkujących 🙂

Czy uważacie, że ta ksiażka byłaby dobrym wprowadzeniem do tematu - ? LINK - czy może warto poszukać czegoś innego?

Licznik 16-to bitowy liczy do 65535, 8-bitowy tylko do 255. Jeśli chcesz mieć odpowiednią dokładność sygnału do serwa, to musisz użyć 16-bitowego. Bez problemu uzyskasz wtedy dokładność sygnału poniżej 1 stopnia. Wtedy dokładność ruchu będzie zależeć od serwomechanizmu.

Książki o którą pytasz nie widziałem na oczy, więc się nie wypowiem. Natomiast poza dokumentacją Atmegi, w której znajdziesz nawet przykłady fragmentów programów, warto byś zapoznał się z tym:

http://diycenter.acid19.linuxpl.com/readarticle.php?article_id=3

Moim zdaniem jest tu przystępnie opisana metoda obsługi timerów od ich uruchomienia, przez skalowanie preskalerami, aż do zaprzęgnięcia przerwania sprzętowego, by zwiększyć dokładność i odciążyć procesor z mozolnego sprawdzania timera.

  • Lubię! 1

MarJanPol, najlepsza dokumentacja do datasheet mikrokontrolera. Inna sprawa, że może na początek wydawać się niezbyt przyjazną lekturą. Natomiast co do książek i tutoriali firmy Atnel, to proponowałbym daleko idącą ostrożność i rozwagę w wyborze. Nie tylko są dość drogie, ale i często marnej jakości - tzn. pięknie wydane i handlowo bez zarzutu, ale pod względem merytorycznym dużo gorzej. Tak to jest jak wiedzę sprzedaje ktoś, kto sam nie rozumie o czym pisze - chociaż to tylko moja opinia.

[ Dodano: 24-02-2018, 16:40 ]

Może zamiast przepłacać za słabą książkę lepiej zainwestować w analizator logiczny? To bardzo przydatne narzędzie, wręcz niezbędne do zrozumienia działania układów licznikowych (i PWM). Przykładowe, chociaż drogie urządzenie: https://kamami.pl/analizatory-logiczne-saleae/234117-saleae-logic-4-black-analizator-logiczny-usb.html?search_query=analizator+logiczny&results=44

Na znanym dalekowschodnim portalu znajdziesz dużo tańsze "klony" - więc niewiele dokładając możesz kupić tańszą książkę oraz przydatne narzędzie.

  • Lubię! 1

Dziękuję Panowie za cenne rady. Poczytam więc trochę i zobaczę co dalej. Elvis, ciekawy ten analizator - popatrzylem troche na yt . Nie wiedziałem ze jest cos takiego.

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...