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

Jak obliczyć ciśnienie z czujnika 0,5-4,5V dla zakresu 10 atmosfer w Bascom?

elektrofil 22 Wrz 2024 11:37 330 5
REKLAMA
  • #1 21235118
    elektrofil
    Poziom 18  
    Posty: 505
    Pomógł: 32
    Ocena: 46
    Witam, nigdy nie byłem orłem z matematyki, i mam problem ze stworzeniem równania za pomocą którego mogę wyznaczyć ciśnienie. mam czujnik który na wyjściu daje napięcie 0,5 to 4,5 volta dla 10 atmosfer.
    do dyspozycji mam dane o ciśnieniu 0 i ciśnieniu 4 atmosfer ( zmienne zero i 4bar )
    mam także odczyt z przetwornika adc. i tu leży pies pogrzebany.
    nie mam pojęcia jak wyliczyć aktualne ciśnienie z posiadanych danych.
    język w jakim piszę to Bascom.
  • REKLAMA
  • Pomocny post
    #2 21235137
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2203
    (V-0,5)/4*10. Analogicznie możesz policzyć V na podstawie danych z ADC - res/2^(rozdzielczość ADC)*Vref. Oczywiście te równania można zoptymalizować tak, aby wykorzystać właściwości systemu binarnego. Szczególnie jeśli np. Vref ma wartość elagancką w zapisie binarnym, np. 4,096V.
  • REKLAMA
  • #3 21235146
    elektrofil
    Poziom 18  
    Posty: 505
    Pomógł: 32
    Ocena: 46
    rozdzielczość adc to 10bit, a napięcie odniesienia to 5volt
  • REKLAMA
  • Pomocny post
    #4 21235193
    bart-projects
    Poziom 30  
    Posty: 835
    Pomógł: 199
    Ocena: 259
    Można to zoptymalizować i nie przeliczać na Volty w ogóle, ale tak bedzie prościej zobrazować.

    Jeśli napięciem odniesienia jest AVCC to znaczy że 5V trzeba teoretycznie podzielić przez rozdzielczośc 1024 i wyjdzie 0.00488 no i to się często zaokrągla do 0.0049

    Teraz żeby odczytać napięcie wystarczy pomnożyć odczytany wynik przez te 0.0049, ale to wymusza użycie liczb zmiennoprzecinkowych które "męczą" AVR`y :D

    Wystarczy zrobić tak (Adc_value * 49) /100
    Tym sposobem zachowujesz rozdzielczośc a przecinek sobie możesz wirtualnie dorysowac albo na chwilę mieć "w pamięci"
    Tak więc odzczyt (1023 * 49) /100 = 501

    Teraz możesz sobie liczyć ciśnienie. Bo jeśli max to 4,5V to robisz równanie " (Napięcie_odczytane * 10 atmosfer) / 450 = Cisnienie
    Dzielisz po prostu te 10 atmosfer przez maksymalny możliwy wynik a najpierw go mnożysz przez to co uzyskałeś z odczytu.

    Możliwe że gdzieś tu przysnąłem przy niedzieli bez kawy bo jeszcze trzeba by ująć tu te 0.5V dla 0 Atm.

    Jeśli to działa od 0,5V do 4,5V to rozdzielczość to 4V i może to powinno wyglądac tak : ((Napiecie_odczytane -50) * 10atm) /400 = Cisnienie
  • REKLAMA
  • #5 21235326
    elektrofil
    Poziom 18  
    Posty: 505
    Pomógł: 32
    Ocena: 46
    rozwiązałem to w nstp sposób
    gdzie:
    -x0 to korekta dla zerowego ciśnienia
    -x4 to wartość dla 4rech atmosfer
    -a,b zmienne pomocnicze
    -ezero, e4bar wartości zapisane w eeprom

    
    x0=ezero
     d=getadc(0)
     x4=e4bar
     a=x4-x0
     a=4/a
     b=d-x0
     p=a*b
     S = Fusing(p, "#.#")
     thirdline
     lcd "Bar=";
     Locate 3 , 5
    S = Fusing(p, "#.##")
    S = Format(s , "0")
    lcd s
    
  • #6 21410299
    elektrofil
    Poziom 18  
    Posty: 505
    Pomógł: 32
    Ocena: 46
    Dziękuje koledze Bart-project za naprowadzenie na rozwiązanie.
REKLAMA