Musiałem prawie to zrobić w poprzednim zadaniu RL, więc przejdę przez problemy, które tutaj widzę i podam przynajmniej ogólny opis tego, co zrobiliśmy, chociaż a) to było około 20 lat temu, więc moja pamięć mogła być sprzeczna z rzeczywistością, b) był w systemie iskrobezpiecznym, który dodaje dodatkowe komponenty, aby ograniczyć dostępną moc w warunkach awarii, oraz c) nie byłem oryginalnym projektantem.
Obwód na poziomie bloku był przełączanym źródłem prądu (stabilnym, dość dokładnym, ale nie z precyzją wymaganą do pomiaru) zasilającym czujnik PRT podłączony do Kelvina i wysoce precyzyjny rezystor referencyjny (0,01%), z różnymi punktami zasilanymi przez zabezpieczenie rezystory i multiplekser do 24-bitowego przetwornika ADC o podwójnym nachyleniu. Dało to dokładność 0,01 ° C w środku zakresu, ale tylko 0,02 ° C (0,013 ° C IIRC) na wyższym końcu ze względu na prądy upływowe działające na rezystory ochronne, dolny koniec można naprawić, jak opisano poniżej. Użycie rezystora referencyjnego i pomiar ratiometryczny pozwala uniknąć konieczności posiadania dokładnego i stabilnego źródła prądu i rozluźnia ograniczenia odniesienia ADC, tak że wystarczy zwykły komponent dostępny w handlu.
Zakładam, że punkt pomiarowy jest oddalony od elektroniki (czujnik jest na końcu jakiegoś kabla), ponieważ w przeciwnym razie będziesz miał poważne problemy z elektroniką poza określonym zakresem temperatur (normalny zakres przemysłowy to -55 + 85C). To dość dobrze narzuca użycie połączeń Kelvina (4-przewodowy PRT), aby można było wyeliminować rezystancję kabla z pomiaru - prąd wzbudzenia jest przesyłany jedną parą przewodów, a napięcie mierzone jest na drugiej (gdzie koszty kabla bardzo wysokie, można użyć 3-przewodowego przewodu o zrównoważonych długościach i skompensować wspólny przewód kilkoma pomiarami i oprogramowaniem). Podstawowym pomiarem jest pomiar napięcia na czujniku i na rezystorze odniesienia; mając ten sam prąd, można obliczyć rezystancję PRT, a tym samym obliczyć temperaturę.
Przełączanie prądu wzbudzenia zapobiega samonagrzewaniu się, jednocześnie pozwalając na poziom wzbudzenia wystarczająco wysoki, aby zapewnić rozsądne poziomy sygnału; można tak dobrać prąd wzbudzenia, aby jak najwyższa rezystancja obwodu czujnika dawała napięcie bliskie pełnemu zakresowi, ale nadal w zakresie liniowym, biorąc pod uwagę rezystancję czujnika, odniesienia, przewodów łączących, ich wahania temperatury, wahania temperatury źródło prądu itp. Możesz ustawić prąd wzbudzenia na wyjściu DAC (prawdziwy przetwornik cyfrowo-analogowy, a nie linie PWM) i użyć oprogramowania do regulacji poziomu napędu w dłuższej perspektywie, aby utrzymać najwyższy odczyt ADC blisko pełnego zakresu - pozwoli to uniknąć utrata rozdzielczości w niskich temperaturach (niska temperatura PRT = niska rezystancja = niski odczyt ADC = mniej bitów na stopień = zmniejszona dokładność). Dla systemu, który miałem (stały prąd), poziomy mocy były tak niskie, że w okresie pomiarowym występowało znikome samonagrzewanie, ale jeśli samoczynne nagrzewanie jest problemem, możesz wykonać wiele odczytów (co najmniej trzy) i obliczyć t = 0 przy założeniu wykładniczo-asymptotycznej krzywej temperatury (jak V w obwodzie czasowym CR, wykonaj pomiary w czasie t1, t2, t3 i wyświetl z powrotem, aby uzyskać V lub T w t0; potrzebne są trzy pomiary w czasie, aby uniknąć konieczności znajomości czasu stałe i końcowe V lub T).
Korzystanie z jednego ADC pozwala uniknąć problemów z (błędnym) dopasowaniem ADC, które powodują niemożliwe do zmierzenia błędy; mój system miał ADC skonfigurowany jako single ended, ale może się okazać, że konfiguracja wejścia różnicowego upraszcza sprawę, jednak uważaj na prądy upływowe i ich zmiany w trybie wspólnym wejścia. Używając konwertera z podwójnym nachyleniem, musisz użyć kondensatorów polipropelenowych lub polietylenowych w obwodzie ADC, aby zminimalizować absorpcję dielektryczną, są one duże i drogie (a także użyj pierścieni ochronnych na PCB i zminimalizuj niektóre długości ścieżek PCB, ponieważ epoksyd w FR4 ma wysoka absorpcja dielektryczna). Konwerter delta-sigma unika tego, ale wprowadza problemy z ustalaniem czasu przy zmianie sygnału wejściowego (odrzuca pierwsze odczyty N), co wydłuża czas pomiaru i może pozwolić na rozpoczęcie samonagrzewania się, wpływając na odczyty lub uniemożliwić odczyt w odpowiednim czasie (dlatego wybrano dwuspadowy, z dostępnymi wówczas komponentami). Jeśli na wejściu do ADC jest dostępny blok wzmocnienia, warto go użyć, aby zminimalizować prąd wzbudzenia, ale nie próbuj uzyskać ładnego, zmieniając wzmocnienie między odczytami, ponieważ wzmocnienia nigdy nie są dokładnie wartościami nominalnymi, więc odczyty ADC wykonane z różnymi wzmocnieniami nie są kompatybilne z tym celem.
Innym zgubnym źródłem błędów są niezamierzone połączenia termopar; nawet cynowanie na drutach miedzianych (lub ścieżkach PCB) może dać taki efekt. Oprócz próby zminimalizowania liczby różnych połączeń metal-metal na ścieżce sygnału, upewnij się, że wszystkie, których nie możesz uniknąć, znajdują się w zbalansowanych parach i są izotermiczne, aby wszelkie efekty zostały anulowane, a ścieżka sygnału jest utrzymywana tak daleko, jak to możliwe, od wyższego prądu. ślady. Uważaj na uziemienie obwodu; mieć uziemienie od strony wejścia ADC (które może służyć jako odniesienie dla źródła prądu wzbudzenia) podłączone tylko w jednym punkcie do masy analogowej (układ scalony ADC i masy multipleksera wejściowego), które jest podłączone tylko w jednym punkcie do systemu (mikroprocesor itp.), który jest podłączony tylko w jednym punkcie do wejścia uziemienia zasilania. Innym źródłem błędu mogą być prądy upływowe na wejściu; jeśli masz jakikolwiek znaczący opór połączony szeregowo z wejściem ADC (taki jak rezystancja włączania multipleksera lub filtr dolnoprzepustowy), sprawdź, czy spadek napięcia na tej rezystancji przy maksymalnym prądzie upływu jest wystarczająco mały. Ponadto, aby uzyskać taką precyzję, należy upewnić się, że wyciek z czujnika i innych części systemu, takich jak rezystor odniesienia, jest bardzo niski; cokolwiek mniej niż około 10 M będzie miało zauważalny efekt.
Podczas odczytu włącz prąd wzbudzenia, odczekaj około ms, aż się ustabilizuje (pamiętaj, że kabel czujnika ma wewnętrzną pojemność, która musi być naładowana do stanu ustalonego), wykonaj konwersję ADC na wszystkich kanałach na ustalony czas, a następnie ponownie odczytaj wszystkie z wyjątkiem ostatniego w odwrotnej kolejności w tym samym czasie; w razie potrzeby wykonaj jeszcze dwa zestawy odczytów, aby obliczyć samonagrzewanie, a następnie wyłącz wzbudzenie. Nominalny czas dla zestawu odczytów jest czasem nieparzystego pojedynczego odczytu (dla przetwornika o podwójnym nachyleniu jest to moment, w którym wejściowy kondensator próbkowania i podtrzymania jest odłączony od wejść), a pary odczytów powinny być to samo, ale jeśli są różne, prawdopodobnie z powodu samonagrzewania, można je uśrednić, aby uzyskać równoważny odczyt w czasie nominalnym. W przypadku 4-przewodowego PRT masz odczyt PRT i odczyt odniesienia, pomnóż wartość rezystora odniesienia przez ich stosunek, aby uzyskać rezystancję PRT; dla 3-przewodowego PRT odejmij najpierw odczyt na przewodzie zasilającym od odczytu PRT, aby skompensować wspólną linię. Aby odczytać wiele PRT, możesz albo połączyć je szeregowo, jeśli obecne źródło ma wystarczającą zgodność i mieć multiplekser wejściowy z wystarczającą liczbą kanałów, aby wybrać dowolny z czujników (lub rezystor odniesienia), lub zmultipleksować napęd - nadal potrzebujesz szerokiego wejścia multiplekser, ale obecne wymagania dotyczące zgodności źródła są złagodzone.
Aby przekonwertować rezystancję PRT na temperaturę, można spróbować wygenerować lub wyszukać wzór, ale system, w którym korzystałem z tabel danych RT producenta i wykonałem interpolację kwadratową na trzy najbliższe punkty danych; pozwala to na łatwiejszą wymianę używanych czujników (wystarczy wstawić nową tabelę) lub indywidualną kalibrację poprzez zastąpienie tabeli wartości mierzonych.