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

[Bascom] Własna procedura obsługi serwomechanizmu.

FastProject 12 Lip 2012 22:35 2287 10
REKLAMA
  • #1 11099650
    FastProject
    Poziom 29  
    Posty: 1977
    Pomógł: 64
    Ocena: 194
    Pracuje nas sterowaniem małego serwomechanizmu: http://www.rctrax.pl/product/Serwo-HXT500-5g-8kg-10sec-Micro-Servo/?id=4499

    Programuje w Bascom AVR i do tego celu wykorzystuję jedynie Timer0. Nie mogę wykorzystać dodatkowego timera1 bo ten będzie służył do odliczania czasu. Instrukcji Serwos() także nie chce wykorzystywać...jakoś nie mam do niego zaufania :/

    Aktualnie program wygląda następująco:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Procesor działa na wewnętrznym kwarcu 8MHz.
    Program w zasadzie działa jednak nie do końca wartości w zmiennej Pulse zgadają się z długością impulsu jaki chce generować.
    Bo np położenie ramienia serwa na środku powinno być dla 15 w
    Kod: text
    Zaloguj się, aby zobaczyć kod
    a tymczasem jest przy Pulse=13.

    Także zmiany skrajnych wartości wynoszą odpowiednio Pulse=5 i Pulse=21, co w obliczeniach teoretycznych odpowiada czasom 500us i 2100us.

    Moje pytanie: czy możliwe jest aby taki rozrzut czasów spowodowany był tolerancją w serwie czy bardziej jest to wynik wykorzystania wewnętrznego kwarcu RC z attiny24?
  • REKLAMA
  • #2 11099706
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    A nie lepiej użyć trybu CTC ? Timer sam się resetuje, nie ma Bascomowych narzutów odkładania stada rejestrów na stos, po prostu miód malina... ;)
    P.S. Witam pod nowym nickiem... ;)
  • REKLAMA
  • #3 11099724
    FastProject
    Poziom 29  
    Posty: 1977
    Pomógł: 64
    Ocena: 194
    No właśnie ten tryb CTC..coś tam o nim słyszałem ale nie miałem okazji wykorzystać. A i nie mam pomysłu jak zrealizować sterowanie serwem w Bascomie z wykorzystaniem tego trybu.

    Ale zaraz obadam sprawę i zobaczymy. Jednak mile widziane przykłady adaptacji tego trybu w Bascom.

    P.S. A witam witam po reinkarnacji ;)
  • #4 11099764
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    FastProject napisał:
    A i nie mam pomysłu jak zrealizować sterowanie serwem w Bascomie z wykorzystaniem tego trybu.
    Tak samo za wyjątkiem ładowania na początku przerwania stałej wartości do licznika. Zamiast tego ładujesz jednokrotnie 255-146=109 do TCCR0A przy inicjalizacji i zapominasz.
    Coś w temacie:
    https://www.elektroda.pl/rtvforum/topic1816485.html
    https://www.elektroda.pl/rtvforum/topic2178968.html
  • REKLAMA
  • #5 11100009
    FastProject
    Poziom 29  
    Posty: 1977
    Pomógł: 64
    Ocena: 194
    Ogarnełem CTC. Teraz nawet co 1s mam z wykorzystaniem ctc a program wygląda tak:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Ale zakres zmian serwa od 0 do 180st jest dalej jakiś dziwny wynosi od 5 do 22(a powinien od około 10 do 20. Czy może to być wina wewnętrznego rezonatora RC?
  • #6 11100084
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Raczej nie. Bardziej obstawiałbym bebechy Bascom-a związane z obsługa przerwania. Ale tu Zumek jest ekspertem... ;)
  • REKLAMA
  • #7 11103604
    FastProject
    Poziom 29  
    Posty: 1977
    Pomógł: 64
    Ocena: 194
    No to zobaczymy jutro (w sumie już dziś Wink ) na oscyloskopie. Dam znać jak wyglądają te czasy.



    Po pomiarach czasów na oscyloskopie wyniki mają się następująco:
    Pulse=200 (okres powtarzania impulsów)=20,56ms
    Pulse=5 -> 0,52ms
    Pulse=21 -> 2,16ms

    Czyli czasy aż tak bardzo nie odbiegają od obliczonych i generowanych w programie.

    Czyżby wina takich rozbieżności leżała po serwie? Spotkaliście się z zakresami regulacji od 0,5ms do 2ms? Z tego co wyczytałem i co mi wiadomo to ten zakres dla serw powinien wynosić ok około 1ms do 2ms prawda?
  • #9 11103842
    FastProject
    Poziom 29  
    Posty: 1977
    Pomógł: 64
    Ocena: 194
    LordBlick napisał:
    Dużo zależy od elementów wykonawczych.


    Masz na myśli elementy wykonawcze z których wykonane są serwa?
  • #11 11104863
    FastProject
    Poziom 29  
    Posty: 1977
    Pomógł: 64
    Ocena: 194
    Serwo jest bezpośrednio (za pomoca przewodu SIGNAL) podłączone do porta.6 attiny24. Zasilanie 5VDC. O taka bezpośredniość ci chodzi?

Podsumowanie tematu

LABEL_AI_GENERATED
W dyskusji poruszono temat programowania serwomechanizmu HXT500 w języku Bascom AVR, z wykorzystaniem Timer0 do sterowania. Użytkownik początkowo miał wątpliwości co do użycia instrukcji Serwos() oraz dodatkowego timera. Po sugestiach dotyczących trybu CTC, autor zrealizował sterowanie serwem, uzyskując stabilne czasy impulsów. Zmierzono czasy impulsów, które okazały się zgodne z oczekiwaniami, jednak pojawiły się pytania dotyczące zakresu regulacji serwomechanizmu. Uczestnicy dyskusji zwrócili uwagę na wpływ elementów wykonawczych na działanie serwomechanizmu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA