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

sin cos tg ctg i wzory

skynet_2 24 Paź 2008 16:52 23501 13
REKLAMA
  • #1 5663719
    skynet_2
    Poziom 26  
    no więc mam 2 pytanka jedno z µC drugie nie.
    1. Jak wygląda sprawa liczenia sinus[sin]/cos[cos]/tangens[tg]/kotangens[ctg] i jak długo to się liczy, czy np. można zmniejszyć dokładność np. do 4 miejsc po przecinku dla zwiększenia szybkości czy może dać jakiś układ zewnętrzny do liczenia.[µC Atmega32]

    2. Potrzebuje wzór na liczenie charakterystyki fazowej przegubu cardana Link oczywiście jest to przegub asynchroniczny więc jeśli kręcimy stroną czynną to od biernej mamy wahania prędkości. Co prawda będe to liczył w drugą stronę ale jakoś wzoru nie mogę znaleźć.
  • REKLAMA
  • Pomocny post
    #2 5663922
    Dr.Vee
    VIP Zasłużony dla elektroda
    Ad. 1: Liczy się długo, żeby zmniejszyć dokładność trzeba znaleźć odpowiednie biblioteki. Najszybciej wyniki policzyć offline i stablicować, wtedy sam sobie wybierasz -> większa dokładność = większe zużycie pamięci.

    Pozdrawiam,
    Dr.Vee
  • Pomocny post
    #3 5663930
    marcelix007
    Poziom 14  
    1.Obliczanie polega na rozwijaniu w szereg Taylora. Nie wiem czy da się zmniejszyć dokładność, ale sam możesz napisać funkcje do rozwijania. kilka pochodnych i silni.

    2. omega2/omega1=cos(ALFA)/(1-sin2(FI1) * sin2(ALFA))

    ALFA - kąt między osiami
    FI1 - kąt szczęki 1
  • REKLAMA
  • Pomocny post
    #4 5664998
    Xitami
    Poziom 29  
    cordic
  • #5 5666339
    skynet_2
    Poziom 26  
    Dr.Vee Stablicować mówisz, hmm jeżeli wystarczy pamięci będzie to dobry pomysł[jeszcze nie jestem pewien jaką dokładność będe potrzebował, ale gdzieś tak 0,25° czyli 1440 elementowa tablica].

    marcelix007 dzięki za zrór bardzo się przyda.

    Xitami algorytm cordic, zobacze czy mi się to przyda.

    Dzięki wszystkim za pomoc, informacje są mi potrzebne ponieważ myślę nad zbudowaniem robocika 6 nożnego z wykorzystaniem zmodyfikowanego wału kardana jako głównego przegubu, układ ma być sterowany przez µC atmega>=32 i 6 atmeg8 jako pwm'y do 4 silniczków każda i układy porównujące pozycje owych przegubów.[to tyle co się tyczy tego tematu]

    Pozdrawiam
  • REKLAMA
  • #6 5667596
    qrdel
    Poziom 28  
    Liczy się z Taylora owszem, ale nie z każdego.
    Dobierane jest takie przekształcenie żeby zbieżność była szybka. A potem dopiero przekształcenie do potrzebnej funkcji. Niestety nie pamiętam pozycji literatury.
    Jeśli chodzi o tablicowanie to często zapamiętuje się wartości z dużo mniejszym rastrem a potem stosuje wzory interpolacyjne, tylko nie liniowe a dokładniejsze, powiedzmy czteropunktowe (dopasowanie wielomianu trzeciego stopnia). zajmuje dużo mniej pamięci a obliczenia są krótkie, czas obliczeń łatwy do oszacowania.
  • #7 5667699
    Dr.Vee
    VIP Zasłużony dla elektroda
    skynet_2 napisał:
    Dr.Vee Stablicować mówisz, hmm jeżeli wystarczy pamięci będzie to dobry pomysł[jeszcze nie jestem pewien jaką dokładność będe potrzebował, ale gdzieś tak 0,25° czyli 1440 elementowa tablica].


    Taka dokładność to tylko 360 punktów na sin/cos, i 180 punktów na tg/ctg (wykorzystujesz symetrię i antysymetrię). Sinus prosto wynika z cosinusa, więc jedną tablicę możesz opuścić. No i rzeczywiście, zostaje jeszcze interpolacja...

    Pozdrawiam,
    Dr.Vee
  • REKLAMA
  • #8 5667783
    marek-c
    Poziom 19  
    Tak nie w temacie: ale do PWM będziesz potrzebował Atmega8? Nie możesz wybrać mniejszej?


    Marek
  • #9 5667871
    skynet_2
    Poziom 26  
    marek-c układ ten będzie pełnił jeszcze kilka innych funkcji[m.in ADC].

    Dr.Vee wiem że sin/cos można na 1 tablicy, ale ciekawy pomysł z tą interpolacją, przy tak niewielkich różnicach[1°] to może być naprawde dobry pomysł.

    qrdel niestety aż tak dobry z matmy nie jestem żeby użyć wzorów interpolacyjnych czteropunktowych (dopasowanie wielomianu trzeciego stopnia), interpolacyjne to jeszcze dam rade.
  • #10 5668311
    qrdel
    Poziom 28  
    Na wszystko istnieją gotowce + stare podręczniki/poradniki (mój preferowany "poradnik encyklopedyczny Matematyka" Bronsztejn, Siemiendiajew; istnieją współczesne wydania) gdzie funkcje leżą stablicowane z opisem jak to wszystko liczyć chytrze na piechotę (opracowane przed kompami).
    Wszystko zależy od założonego sposobu obliczania.
    Pamiętać trzeba tylko 1 ćwiartkę sinusa (ew. tangensa)
    Np. dla 8-krotnego zwiększenia rozdzielczości (wielomian 3 st.) przy zapisanym w tablicy równomiernie próbkowanym sinusie potrzebne są 4 wzorki (bo symetria) typu kombinacja liniowa 4 wartości.
    Trudniej gdy chcesz znaleźć wartość dla dowolnie wybranego kąta, ale niewiele.
  • #11 5668720
    Freddie Chopin
    Specjalista - Mikrokontrolery
    ehh... interpolacja wielomianem przy punktach rozlozonych co 1 stopien? po co? przeciez to ma byc do sterowania robotem, a nie dzialem laserowym to przycinania ksiezyca...

    sinus dla wartosci 1 i 2 deg: 0.017452406... oraz 0.034899496...
    wiadomo ze w tym przedziale jest najwieksza zmiennosc funkcji sinus, wiec i blad interpolacji bedzie najwiekszy. no wiec teraz miedzy tymi dwoma punktami najwiekszy blad bylby dla 1.5deg. wyliczajac to z prostej interpolacji liniowej dostajemy 0.026175951... rzeczywista wartosc to: 0.026176948... jak juz latwo policzyc, roznica miedzy tymi wartosciami wynosi 0.000000996... jest to zaledwie 0.0038...% wartosci dokladnej...

    zeby w ogole dostrzec blad tej skali to nie wiem czy wystarczylyby zwykle floaty, nie mowiac juz o arytmetyce staloprzecinkowej...

    4\/3!!
  • #12 5668804
    qrdel
    Poziom 28  
    Dlatego w tablicy trzymasz co 15° i resztę sobie doliczasz.

    --- edit

    W wybranym przez Ciebie przedziale zmienność pochodnej sinusa jest najmniejsza więc przedstawiasz sukcesy przybliżania prostej prostą.
    Już w szkole uczą że dla małych kątów sin(x)=x.
    Maksymalne błędy interpolacji liniowej sinusa występują w okolicach ±Π/2; dla tablicowania co 1° mieszczą się w przedziale ±4×10^-5 .
  • #13 5669308
    Freddie Chopin
    Specjalista - Mikrokontrolery
    no i dobra - niech bedzie - blad jest taki i owaki, niemniej jednak wciaz jest on smiesznie maly [; czy przy obecnej pojemnosci procesorowego Flasha oplaca sie tak kombinowac? na to pytanie kazdy odpowie juz sobie sam...

    4\/3!!
  • #14 5669877
    skynet_2
    Poziom 26  
    Freddie Chopin napisał:
    ehh... interpolacja wielomianem przy punktach rozlozonych co 1 stopien? po co? przeciez to ma byc do sterowania robotem, a nie dzialem laserowym to przycinania ksiezyca...


    Hehehehehehe dobre :D

    chce zrobić taki układ sterowania który będzie korygował ruch robota a dokładniej jego nóg. Najprościej to zobrazować że robocik idzie do przodu stawia 1 nogę i porusza pozostałymi[kręci w osi pionowej] więc stopa musi pozostać nieruchona względem podłoża. W amatorskich robotach widać że mimo iż stopa dotyka podłoża to się porusza, ja chce ten efekt usunąć.
    Obliczenia będą musiały być nieznacznie dokładnijesze od mechaniki.

    jeszcze pomyślałem o tablicy nie liniowej, która by zmniejszała średni błąd.
REKLAMA