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

Operacje matematyczne na wartości pobranej z ADC

Star_hunter 13 Lis 2011 00:36 1499 14
  • #1 10132280
    Star_hunter
    Poziom 12  
    Witam,

    Mój problem wygląda następująco. Pobieram wartość napięcia z ADC, co oczywiście działa. Chciałbym jednak odczytaną wartość pomnożyć razy 0.95, a przy zmiennych typu WORD, których teraz używam nie jest to możliwe.

    Moje pytanie brzmi więc na jaką zmienną przejść aby operacje matematyczne tego typu były możliwe i jak wykonać takie przejście, lub czy jest możliwość żeby wartość z ADC nie była od razu zapisywana w formie WORD, lecz np w DOUBLE.

    Pozdrawiam i z góry dziękuje za odpowiedź!
  • #2 10132327
    mirekk36
    Poziom 42  
    A czy nie możesz pomnożyć razy 95 zamiast tego (0.95) ??? ;) wtedy nie potrzebowałbyś zmiennych zmiennoprzecinkowych. Zwykle do większości prostych obliczeń związanych z obsługą ADC, pomiarem napięcia - takie podejście wystarcza w 100%, ba nawet jest lepsze.
  • #3 10132331
    Star_hunter
    Poziom 12  
    ale mogę zmienną WORD pomnożyć razy 95?
  • #5 10132358
    Star_hunter
    Poziom 12  
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Próbuje w ten sposób i otrzymuje błąd: Source variable does not match the target variable [0|ZMIANNA1E*(95)]
  • #6 10132367
    mirekk36
    Poziom 42  
    O matko! nie wiedziełem że ty w Bascomie piszesz. Hmmm a może Bascomowi przeszkadza ten nawias (95) ? zresztą po co go w ogóle dałeś ?

    Poza tym taka operacja jest i powinna być w pełni możliwa przecież zarówno zmienna1 jak i zmienna1e są typu Word. No chyba, że to jakiś babol Bascoma albo może coś ty źle na błąd patrzysz.
  • #7 10132710
    drzasiek
    Specjalista CNC
    Przy czym uwaga na zakres.
    Z przetwornika możesz otrzymać wartość 1023 która pomnożona przez 95 daje 97185!!!
    To wykracza poza zakres typu WORD.
  • #8 10132881
    mirekk36
    Poziom 42  
    drzasiek napisał:
    Przy czym uwaga na zakres.
    Z przetwornika możesz otrzymać wartość 1023 która pomnożona przez 95 daje 97185!!!
    To wykracza poza zakres typu WORD.


    No tak, to podstawa - ale przecież i w bascomie są ciut pojemniejsze typy danych.
  • #9 10133700
    manekinen
    Poziom 29  
    drzasiek napisał:
    Z przetwornika możesz otrzymać wartość 1023 która pomnożona przez 95 daje 97185!!!

    Akurat tutaj kompilator się nie przyczepi bo nie wie co będziemy odbierać z adc.

    A błędem jest 95 w nawiasach. Gdzie kolega wyczytał że tak się robi?
  • #10 10133841
    drzasiek
    Specjalista CNC
    manekinen napisał:

    Akurat tutaj kompilator się nie przyczepi bo nie wie co będziemy odbierać z adc.


    Nie mówiłem tego w sensie, że tutaj jest błąd kompilacji.
    Tak na zapas przestrzegałem :)
  • #11 10136471
    Star_hunter
    Poziom 12  
    Racja, nawias jest błędem, niepotrzebnie go tam wsadziłem, myślałem że nie wprowadza żadnych zmian. W takim razie powinienem wynikami z ADC operować od razu na zmiennych typu LONG?
  • #12 10136636
    sepako
    Poziom 14  
    Założeniem było pomnożyć wynik z ADC przez 0.95 czyli inaczej 95/100 po uproszczeniu daje to 19/20 czyli wystarczy wynik najpierw pomnżyc przez 19 a później podzielić przez 20. Jesli zakladamy rozdzielczość przetwornika 10bitow to nawet przy maksymalnej wartosci (1024) nie wyjdziemy poza zakres word.
  • #13 10138249
    Star_hunter
    Poziom 12  
    ale wtedy muszę przejść na zmiennoprzecinkowe
  • #14 10138978
    sepako
    Poziom 14  
    Pytanie jakiej precyzji oczekujesz i czy jest sens korzystać z części ułamkowej skoro precyzja samego przetwornika i tak nie pozwala ufać tej części wyniku.
  • #15 10139018
    mirekk36
    Poziom 42  
    sepako napisał:
    Pytanie jakiej precyzji oczekujesz i czy jest sens korzystać z części ułamkowej skoro precyzja samego przetwornika i tak nie pozwala ufać tej części wyniku.


    Pozwala pozwala ufać i spokojnie można to wykorzystywać bez żadnych zmiennych typu float/double. Absolutnie bez takich zmiennych. Wszystko w oparciu o zmienne typu word/long itp .... a część ułamkową liczby też da radę spokojnie przedstawić i to do tylu miejsc po przecinku ile będzie potrzeba.
REKLAMA