Skocz do zawartości

Atmega8. Sinusy i cosinusy.


mazur89

Pomocna odpowiedź

Witam serdecznie.

Mam pewne pytanie, jak dużym obciążeniem dla mikroprocków jest obliczanie sinusów czy też cosinusów, co de facto jest tym samym...? (Jak rozumiem taka możliwość w ogóle istnieje?).

Mam bowiem zadanie cyfryzacji wyników pomiarów z pewnego przyrządu. Układ pomiarowy mierzący kąt został już przeze mnie wykonany. Teraz się zastanawiam czy wyniki pomiarów przedstawić na LCD (co wymagało by obliczenia równania z dwoma sinusami) czy też wysłać wyniki (kąt) po RS np do excella i tam wykonać obliczenia i wizualizację. Oczywiście można by zrobić obie te rzeczy, jednak tu właśnie pytanie, na ile funkcje matematyczne są dla mikroprocesora obciążające.

Pozdrawiam.

Mazur.

Link do komentarza
Share on other sites

mikroprocesor licząc sinusa będzie korzystał z szereg Maclaurina, więc albo będzie liczył wolno i niedokładnie, albo bardzo wolno i mniej niedokładnie 😉 Zwykle rozwiazuje się to w ten sposób, że tablicuje się ćwiartkę sinusa w pamięci programu. Niestety ATmega ma mało pamięci, ale możesz np. zapisać 1571 16b próbek (czyli zajmiesz 3.07kB pamięci) uzyskując dokładność 0.001 radiana, jeszcze dokładniej możesz próbować estymować liniowo.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

A miało by sens wprowadzenie na sztywno współczynników wielomianu aproksymującego sinusa w przedziale 0-2pi obliczonych wcześniej np w matlabie, żeby mikrokontroler musiał wykonać tylko kilka prostych dodawań i mnożeń oraz odpowiednio przygotować argument?

Link do komentarza
Share on other sites

OldSkull

Dzięki bardzo za odpowiedź.

Zaciekawiła mnie opcja z tą ćwiartką sinusa, czy dobrze kombinuję, że wtedy w zależności od argumentu czytasz tablicę w lewo albo w prawo, lub też to samo tylko ze znakiem ujemnym?

Pozdrawiam.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Sinus w przedziale <-1, 1> jest bardzo nieefektywny

ponieważ wymaga zmiennej zmiennoprzecinkowej (float).

Rozwiązaniem może być przeskalowanie do przedziału <0, 255>

Wtedy można to przeliczać w excelu

lub na potrzeby wyświetlenia wartości na LCD można tylko raz użyć zmiennej typu float

a wszystkie operacje matematyczne można wykonać na int8.

Dobrym rozwiązaniem wydaje mi się może być tablicowanie w EEPROMie wartości

sinusa ze zmiennym krokiem a wartości pośrednie linearyzować.

Trzeba ustalić optymalną liczbę punktów i ewentualnie błąd linearyzacji.

Pozdrawiam

Zuk

Link do komentarza
Share on other sites

mazur89, dokładnie tak.

Zuk, najlepiej przeskalować i zapisać jako liczba stałoprzecinkowa. Polecam 16b, gdyż jest większa dokładność i większa wygoda przy przybliżaniu. Nie rozumiem dlaczego EEPROM - odczyt z niego nie jest zbyt szybki, poza tym zapisana wartość nie będzie się zmieniać, a dodatkowo jest go niewiele w procesorze. Lepiej zapisać w pamięci programu.

Link do komentarza
Share on other sites

OldSkull zgadzam się z Tobą, jednak

takie moje zboczenie, że unikam zmiennych innych niż 8b,
oczywiście nie zawsze tak można więc zgadzam się - 16b da większą dokładność

-kwestia potrzeby

Oczywiście można także w pamięci programu.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.