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][Atmega8] Jak przeliczyć ADC na %

Tomekddd 21 Mar 2010 13:03 3741 18
REKLAMA
  • #1 7860647
    Tomekddd
    Poziom 23  
    Witam, robię układzik który mierzy napięcie coś a'la woltomierz ale muszę to napięcie przedstawić na LCD w procentach i nie wiem jak to zrobić. ADC daje wartości od 0 do 1023 i to przydałoby się zamienić na procenty i wyświetlić. Da się to jakoś łatwo zrobić?
  • REKLAMA
  • #2 7860714
    wywrot88
    Poziom 17  
    Witam, rozumiem, ze maksymalne badane napięcie chcesz przedstawić jako 100%?
    Przykładasz maksymalne napięcie i sprawdzasz co wskazuje ADC. Jeśli ADC pokazuje 1023 wtedy trzeba zastosować dzielnik napięcia tak dobrany, aby przy maksymalnym napięciu ADC był bliski 1000, wtedy wykorzystany jest cały zakres pomiaru. Następnie trzeba zadeklarować zmienną powiedzmy W, podstawiamy za W stosunek zmierzonej wartości do wartości przy maksymalnym napięciu mnożymy przez 100 i mamy pod zmienną w wynik w procentach
  • #3 7860732
    Logan
    Poziom 30  
    Da się, procenty obliczasz z proporcji. W podstawówce o tym było :)
  • Pomocny post
    #4 7860814
    michalko12
    Specjalista - Mikrokontrolery
    Tomekddd napisał:
    Da się to jakoś łatwo zrobić?


    (ADC*100)/1024 = wynik w procentach
    (ADC*1000)/1024 = wynik w promilach

    Podstawówka
  • REKLAMA
  • #5 7860875
    Tomekddd
    Poziom 23  
    Dzięki o to mi chodziło :D

    Dodano po 51 [sekundy]:

    Ja jak próbowałem to się motałem własnie w dzieleniu i mi głupoty wskazywało teraz wiem czemu
  • REKLAMA
  • #6 7862586
    LED5W
    Poziom 34  
    michalko12 napisał:
    (ADC*100)/1024 = wynik w procentach
    (ADC*1000)/1024 = wynik w promilach

    Tylko, że ja bym radził dzielić przez 1023. :idea:
  • #7 7862676
    _Robak_
    Poziom 33  
    To niech kolega sobie odpowie na pytanie ile jest próbek. To że największa jest 1023 nie znaczy że jest ich tyle, jest jeszcze zerowa;)
  • #8 7862734
    LED5W
    Poziom 34  
    _Robak_ napisał:
    To niech kolega sobie odpowie na pytanie ile jest próbek. To że największa jest 1023 nie znaczy że jest ich tyle, jest jeszcze zerowa;)

    Ale:
    (1023*100)/1023 = 100
  • #9 7863089
    _Robak_
    Poziom 33  
    Tyle że największą zmierzoną wartością przez ADC jest Vref - 1LSB, dlatego nie może Ci wyjść jeden.
    Cytat:

    0x000 represents analog ground, and 0x3FF represents the selected reference voltage minus one LSB.
  • #10 7863298
    LED5W
    Poziom 34  
    Ładna edycja posta. Wyglądasz przez to na mądrzejszego. :P
    Ale teraz to ja zgłupiałem. 1 mi nie wyjdzie...

    [...]

    Już chyba wiem o co Ci chodziło.
    Chodzi Ci o to, że wartość odczytana z ADC nie będzie równa wartości Vref.
    Ale to moim zdaniem nie jest ważne, bo przyjmowanie za 100% wartości, która jest nieosiągalna to trochę <dziwne?>.

    Dodano po 3 [minuty]:

    Za 100% uznaję właśnie Vref - 1LSB.
  • #11 7865691
    _Robak_
    Poziom 33  
    LED5W napisał:
    Ładna edycja posta. Wyglądasz przez to na mądrzejszego. :P
    Ale teraz to ja zgłupiałem. 1 mi nie wyjdzie...

    Warto stwarzać odpowiednie pozory:>

    Wartość Vref odpowiada 1024 więc nie da się jej przedstawić, dlatego największą mierzalną wartością jest Vref - 1 LSB.
    To tak jak byś miał 4 wartości 0, 1, 2, 3. I napisał, że 1 to 33% bo 1/3*100%. Widać chyba że jest to 25%;)
  • REKLAMA
  • #12 7865916
    Tomekddd
    Poziom 23  
    jeśli podzielę przez 1023 to otrzymam 100% ale jeśli podzielę przez 1024 to otrzymam 99,9% to nie jest duża różnica wiec nie przeszkadza.
  • #13 7866004
    Konto nie istnieje
    Poziom 1  
  • #14 7866523
    LED5W
    Poziom 34  
    _Robak_ napisał:
    Wartość Vref odpowiada 1024 więc nie da się jej przedstawić, dlatego największą mierzalną wartością jest Vref - 1 LSB.
    To tak jak byś miał 4 wartości 0, 1, 2, 3. I napisał, że 1 to 33% bo 1/3*100%. Widać chyba że jest to 25%;)

    Nie musisz mi już tłumaczyć. Po prostu ja przyjąłem za 100% maksymalną wartość mierzonego napięcia - moim zdaniem bardziej praktyczne. Podobnie można sobie za 0 przyjąć połowę zakresu, bo tak podaje jakiś czujnik.
  • #15 7866558
    _Robak_
    Poziom 33  
    No dobrze, w takim razie pokażę Ci coś żebyś na przyszłość nie musiał już "przyjmować" ;)

    [BASCOM][Atmega8] Jak przeliczyć ADC na %

    Wyciągnij sobie z tego Vin;) Znaczy, sobie możesz przyjmować, ale nie promuj tego rozwiązania;)
  • #16 7867080
    LED5W
    Poziom 34  
    _Robak_ napisał:
    No dobrze, w takim razie pokażę Ci coś żebyś na przyszłość nie musiał już "przyjmować" ;)

    <wzór>

    Wyciągnij sobie z tego Vin;) Znaczy, sobie możesz przyjmować, ale nie promuj tego rozwiązania;)

    Ładniej wygląda po wyciągnięciu VIN/VREF. Tylko nie wiem co to miało dawać. Że przez wzór to lepiej dotrze?

    A może w drugą stronę:
    If Wyp = 101 Then Wyp = 100                 'wyp to wypełnienie w %
    If Wyp = 65535 Then Wyp = 0
    Pomoc = Wyp * 255                                        'teraz obliczamy potrzebną wartość
    Pomoc = Pomoc / 100
    Pwm1a = Pomoc

    Tu też byś wpisał 256 zamiast 255?
  • #17 7867101
    Konto nie istnieje
    Poziom 1  
  • #18 7867173
    LED5W
    Poziom 34  
    atom1477 napisał:
    Musisz tylko zajrzeć do datasheeta ;)

    Na to bym nigdy nie wpadł. :P :D
  • #19 8227787
    Tomekddd
    Poziom 23  
    Ok wszystko śmiga jak chciałem.
REKLAMA