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

Wyznaczanie rezystancji - temperatury na podstawie wartości z tablicy

vp32 12 Mar 2019 08:19 1440 20
REKLAMA
  • #1 17836213
    vp32
    Poziom 11  
    Posty: 505
    Ocena: 47
    Cześć.
    Prosty układ. Czujnik temperatury - termistor połączony szeregowo z rezystorem. Taki dzielnik napięcia podłączony do ADC uC i napięcie mierzone na termistorze.
    Musze to przeliczyć na temperaturę.
    Mam w tablicy wartości rezystancji i odpowiadającej jej temperaturze.

    Utknąłem jak teraz to ze sobą powiązać?
    Jak mając odczyta z ADC pobrać z tablicy wartość temperatury.
    O ile przełożenie ADC na rezystancję nie będzie chyba kłopotem, bo rezystor w szeregu jest znany więc mogę obliczyć o tyle jak powiązać to z tablicą jeśli wartości rezystancji nie będą identyczną wartością obliczoną?
  • REKLAMA
  • #2 17836236
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Zapisz odpowiedni wzór w arkuszu kalkulacyjnym, obejrzyj powstałą w ten sposób tabelę i wymyśl jakąś zwartą postać dla programu, np. zapisz w tablicy wartości ADC odpowiadające kolejnym wartościom temperatury w stopniach i po odczytaniu wartości ADC przeszukaj tę tablicę w dowolny sposób. Najszybciej - wyszukiwanie "binarne", ale przy temperaturze lepiej działa szukanie od ostatniej wartości.

    Pytanie nie ma żadnego związku z mikrokontrolerami, raczej z podstawową matematyką.
  • REKLAMA
  • #3 17836267
    Konto nie istnieje
    Poziom 1  
  • #4 17836650
    LChucki
    Poziom 31  
    Posty: 1940
    Pomógł: 104
    Ocena: 379
    vp32 napisał:
    Prosty układ. Czujnik temperatury - termistor połączony szeregowo z rezystorem.

    Lepiej dać źródło prądowe.
  • #5 17836769
    vp32
    Poziom 11  
    Posty: 505
    Ocena: 47
    odalladoalla napisał:
    A to przeglądałeś

    Nie, ale to już blisko. Kiedyś na Wikipedii był przykład w C jak na podstawie wartości z tabeli wyznaczyć wartość temperatury dla czujnika PT100. Nie wiem dlaczego ale nie ma już tego algorytmu. Był fajny, bo szybki.

    LChucki napisał:
    Lepiej dać źródło prądowe.

    Racja, ale najpierw muszę rozwiązać problem z zamianą napięcia bądź rezystancji na temperaturę na podstawie wartości z tablicy.

    BlueDraco napisał:
    Pytanie nie ma żadnego związku z mikrokontrolerami, raczej z podstawową matematyką

    Każdy ma prawo uważać co się podoba, wg mnie ma bo szukam algorytmu, a nie wzoru.
  • #6 17836786
    Konto nie istnieje
    Poziom 1  
  • #7 17836826
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #8 17837502
    krzysiek_krm
    Poziom 40  
    Posty: 4612
    Pomógł: 716
    Ocena: 598
    vp32 napisał:
    termistor połączony szeregowo z rezystorem

    Termistory są generalnie dość nieliniowe więc w ogólnym przypadku powinieneś zastosować jakąś sprzętową linearyzację, chyba że masz przetwornik o jakiejś ogromnej rozdzielczości. Linearyzacja termistorów jest w sumie dość dobrze opisana.
  • #9 17840585
    arturt134
    Poziom 27  
    Posty: 792
    Pomógł: 76
    Ocena: 24
    A może po prostu skorzystaj ze wzoru. Producent termistora zwykle podaje wzór na wyznaczenie temperatury z rezystancji. Fakt, że to zmienny przecinek, mnożenie i logarytm (taki był wzór w datasheet termistora NXP, którego używałem), ale nie bawisz się w żadne tablice. Temperatura jest przebiegiem wolnozmiennym (z definicji), więc mimo poświęcenia dość dużej ilości czasu na obliczenia, możesz ją obliczać rzadziej.
  • #10 17841020
    Konto nie istnieje
    Poziom 1  
  • #11 17841113
    arturt134
    Poziom 27  
    Posty: 792
    Pomógł: 76
    Ocena: 24
    Używanie predefiniowanych tablic wymaga dużego nakładu pracy programisty w celu ich przygotowania, natomiast zużywa mało zasobów CPU do obliczenia wyniku.

    Używanie arytmetyki wymaga małego nakładu pracy programisty, natomiast zużywa więcej zasobów CPU do obliczenia wyniku.

    To, która metoda jest bardziej efektywna w danej sytuacji zależy od aplikacji i dostępnych zasobów.
  • #12 17842945
    vp32
    Poziom 11  
    Posty: 505
    Ocena: 47
    Niestety muszę skorzystać z tablicy. Prawda, zajmie mi to nieco czasu na przygotowanie, lecz chodzi o to że nie mam żadnych współczynników tego czujnika. Odczytałem sobie logerem temperaturę i wartość odczytaną z ADC więc tablicę zrobię, lecz proszę Was o pomoc jak potem taka tablice odczytywać.
    Trochę poszukąlem przykładów
    Znalazłem coś takiego

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    }


    Czy Ktoś może mi wytłumaczyć po co oni takie coś stworzyli? Po co tu dt?

    I po co tu interpolacja? Skoro mam wartość ADC to jej w tablicy odpowiada jakaś liczba będącą temperaturą, co co tu interpolować?
  • #13 17843029
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #14 17844388
    vp32
    Poziom 11  
    Posty: 505
    Ocena: 47
    Ale ja nie napisałem że szukam czegoś na temat czujnika PT100!
    Ten wklejony kod to miałby przykład jak ktoś na podstawie tabeli próbował wyznaczyć temperaturę.
    Ja próbuję coś na podstawie tego skleić, bo mam już swoją zrobioną.
    mój czujnik nie ma nawet oznaczenia, jego charakterystyka nie przypomina nic co można by wykorzystać. To jakiś chiński czujnik, ale nie moge go wymienić bo ma jakąś dziwną obudowę z gwintem NTP
  • #15 17844404
    krzysiek_krm
    Poziom 40  
    Posty: 4612
    Pomógł: 716
    Ocena: 598
    Metodą "łoma i siekiery" możesz stworzyć tablicę, która ma tyle komórek ile poziomów kwantyzacji ma przetwornik AD. Adresujesz tablicę wartością ADC i masz temperaturę. Tyle że tablica będzie duża.
  • #16 17844502
    Konto nie istnieje
    Poziom 1  
  • #17 17844660
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2203
    Kurcze już 15 postów, na coś co można ogarnąć jednym zdaniem. W nocie termistora, jest wzór, są podane współczynniki beta, wystarczy sobie w excelu, zrobić prostą tabelkę, a potem copy&paste do programu. Ot cała filozofia. Można też dodatkowym rezystorem lekko zlinearyzować charakterystykę termistora w pożądanym zakresie, co zwiększy nam dla danych temperatur dokładność interpolacji, jeśli chcemy przyoszczędzić miejsca na tabelę z danymi, lub interpolować liniowo pomiędzy punktami w tabeli. A jak mamy procesor z FPU, albo nadmiar mocy i pamięci, to po prostu można odpowiedni wzór wstawić w kod programu i po sprawie. Swoją drogą, ze względu na rozrzut parametrów termistorów może i tak byc potrzebna kolibracja, chociaż akurat przy PT100 niekoniecznie.
  • #18 17845204
    Konto nie istnieje
    Poziom 1  
  • #19 17846283
    vp32
    Poziom 11  
    Posty: 505
    Ocena: 47
    tmf napisał:
    Kurcze już 15 postów, na coś co można ogarnąć jednym zdaniem

    Masz racje 15 postów i większość nie na temat.
    że zacytuje samego siebie:
    Cytat:
    Niestety muszę skorzystać z tablicy. Prawda, zajmie mi to nieco czasu na przygotowanie, lecz chodzi o to że nie mam żadnych współczynników tego czujnika.

    Zresztą pisałem że to przykład i tylko po to aby pokazać i zapytać dlaczego w taki dziwny sposób aproksymują.
    Niestety nie wiem jak pobrać coś z tabeli w której ilość rekordów nie odpowiada wartości odczytanej.
    Ja może czytam bez zrozumienia ale z was cześć tez. sorry
  • #20 17846296
    Konto nie istnieje
    Poziom 1  
  • #21 17846328
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2203
    vp32 napisał:
    Niestety nie wiem jak pobrać coś z tabeli w której ilość rekordów nie odpowiada wartości odczytanej.

    Prosto. Masz odczytane napięcie z dzielnika. Porównujesz je z kolejnymi napięciami w tabeli, aż dojdziesz do miejsca, w którym na poprzendim indeksie masz wartość mniejszą, a na kolejnym większą. Odczytujesz temperatury skojarzone z oboma indeksami i aproksymujesz. I tyle.

Podsumowanie tematu

✨ Użytkownik opisuje problem z przeliczeniem wartości napięcia z dzielnika napięcia (termistor + rezystor) na temperaturę, korzystając z tablicy rezystancji i odpowiadającej jej temperatury. W odpowiedziach sugerowane są różne metody, w tym wykorzystanie arkuszy kalkulacyjnych do stworzenia tabeli, normalizację wartości rezystancji oraz zastosowanie algorytmu do interpolacji. Wskazano również na możliwość użycia wzorów producentów termistorów oraz na potrzebę linearyzacji charakterystyki termistora. Użytkownik podkreśla, że jego czujnik nie ma oznaczeń, co utrudnia znalezienie odpowiednich współczynników. W końcu, zaproponowano metodę porównywania odczytów z tabelą, aby uzyskać temperaturę poprzez aproksymację.
Wygenerowane przez model językowy.
REKLAMA