Spisu treści:

Zrób to sam czujnik temperatury za pomocą jednej diody: 3 kroki
Zrób to sam czujnik temperatury za pomocą jednej diody: 3 kroki

Wideo: Zrób to sam czujnik temperatury za pomocą jednej diody: 3 kroki

Wideo: Zrób to sam czujnik temperatury za pomocą jednej diody: 3 kroki
Wideo: Kurs Arduino odc 22 1-Wire i Czujnik temperatury DS18B20 2024, Listopad
Anonim
Zrób to sam czujnik temperatury za pomocą jednej diody
Zrób to sam czujnik temperatury za pomocą jednej diody
Zrób to sam czujnik temperatury za pomocą jednej diody
Zrób to sam czujnik temperatury za pomocą jednej diody

Ponieważ jednym z faktów dotyczących złączy PN jest to, że ich spadek napięcia przewodzenia zmienia się wraz z przepływającym prądem i temperaturą złącza, użyjemy tego do stworzenia prostego, taniego czujnika temperatury.

Ta konfiguracja jest powszechnie stosowana w wielu układach scalonych do pomiaru temperatury wewnętrznej i wielu czujników temperatury, jak słynny LM35, który opiera się na tej właściwości.

Po prostu spadek napięcia diody w kierunku przewodzenia (który jest pojedynczym złączem PN) zmienia się wraz ze zmianą natężenia przepływającego przez nią prądu, a także wraz ze zmianą temperatury diody, spadek napięcia będzie się zmieniał (w miarę wzrostu temperatury spadek zmniejsza się o wartość (1,0 miliwoltów do 2,0 miliwoltów dla diod krzemowych i 2,5 miliwoltów dla diod germanowych).

Przepuszczając stały prąd przez diodę, spadek napięcia przewodzenia powinien teraz zmieniać się tylko w zależności od temperatury diody. Musimy tylko zmierzyć napięcie przewodzenia diody, zastosować kilka prostych równań i oto czujnik temperatury !!!

Kieszonkowe dzieci

1 - 1n4007 dioda #12 - 1 rezystor Kohm #13 - płytka Arduino

Krok 1: Schemat obwodu

Schemat obwodu
Schemat obwodu

Jak widać na schemacie jest to bardzo proste. łącząc diodę szeregowo z rezystorem ograniczającym prąd i stabilnym źródłem napięcia, możemy uzyskać prymitywne źródło prądu stałego, więc zmierzone napięcie na diodzie będzie się zmieniać tylko ze względu na zmianę temperatury. Upewnij się, że wartość rezystora nie jest zbyt niski, aby prąd przepływał przez diodę i powodując zauważalne samonagrzewanie się diody, a także niezbyt wysoki rezystor, więc przepływający prąd nie wystarcza do utrzymania liniowej zależności między napięciem przewodzenia a temperaturą.

rezystor 1 kiloom z zasilaniem 5 V powinien skutkować prądem diody 4 miliamperów, co jest wystarczającą wartością do tego celu. I (dioda) = VCC / (seria R + dioda)

Krok 2: Kodowanie

Musimy pamiętać, że w kodzie należy dostosować pewne wartości, aby uzyskać lepsze wyniki, takie jak:

1 - VCC_Voltage: ponieważ wartość analogRead() zależy od VCC układu ATmega, musimy dodać ją do równania po zmierzeniu na płycie arduino.

2 - V_OLD_0_C: spadek napięcia w kierunku przewodzenia zastosowanej diody przy prądzie 4 mA i temperaturze 0 Celsjusza

3 - Współczynnik_temperatury: gradient temperatury diody (lepiej pobrać z arkusza danych) lub możesz go zmierzyć za pomocą tego równania: Vnew - Vold = K (Tnew - Told)

gdzie:

Vnew = nowo zmierzony spadek napięcia po nagrzaniu diody

Vold = zmierzone napięcie spadku w pewnej temperaturze pokojowej

Tnew = temperatura, w której dioda została nagrzana do

Told = stara temperatura pokojowa, w której zmierzono Vold

K = Współczynnik_temperatury (wartość ujemna w zakresie od -1,0 do -2,5 miliwoltów) Wreszcie możesz teraz przesłać kod i uzyskać wyniki dotyczące temperatury.

#Define Sens_Pin A0 //PA0 dla płyty STM32F103C8

podwójne V_OLD_0_C = 690,0; //690 mV Napięcie przewodzenia przy 0 Celsjusza przy prądzie pomiarowym 4 mA

podwójne V_NOWE = 0; //Nowe napięcie przewodzenia w temperaturze pokojowej przy prądzie probierczym 4 mA double Temperatura = 0.0; //Temperatura obliczona w pomieszczeniu double Współczynnik_temperatury = -1,6; //-1,6 mV zmiana na stopień Celsjusza (-2,5 dla diod germanowych), lepiej z karty katalogowej diody podwójne VCC_Voltage = 5010,0; //Napięcie obecne na szynie 5V arduino w miliwoltach (wymagane dla lepszej dokładności) (3300.0 dla stm32)

pusta konfiguracja () {

// wstaw tutaj swój kod konfiguracyjny do jednorazowego uruchomienia: pinMode(Sens_Pin, INPUT); Serial.początek(9600); }

pusta pętla () {

// umieść tutaj swój główny kod, aby uruchomić wielokrotnie: V_NEW = analogRead(Sens_Pin)*VCC_Voltage/1024.0; // podziel przez 4.0 jeśli używasz 12-bitowego przetwornika ADC Temperatura = ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print("Temp = ");

Serial.print(Temperatura); Serial.println("C");

opóźnienie (500);

}

Krok 3: Uzyskanie lepszych wartości

Uzyskiwanie lepszych wartości
Uzyskiwanie lepszych wartości
Uzyskiwanie lepszych wartości
Uzyskiwanie lepszych wartości

Myślę, że podczas realizacji tego projektu warto mieć przy sobie zaufane urządzenie do pomiaru temperatury.

widać, że jest zauważalny błąd w odczytach, które mogą dojść do 3 lub 4 stopni Celsjusza więc skąd ten błąd pochodzi?

1 - może być konieczne dostosowanie zmiennych wymienionych w poprzednim kroku

2 - rozdzielczość ADC arduino jest niższa niż potrzebna do wykrycia małej różnicy napięć

3 - napięcie odniesienia arduino (5V) jest zbyt wysokie dla tej małej zmiany napięcia na diodzie

Więc jeśli zamierzasz używać tej konfiguracji jako czujnika temperatury, powinieneś mieć świadomość, że chociaż jest tani i poręczny, nie jest dokładny, ale może dać ci bardzo dobre wyobrażenie o temperaturze twojego systemu, albo jest na PCB lub zamontowany na pracującym silniku itp…

Ta instrukcja ma na celu użycie jak najmniejszej ilości komponentów, ale jeśli chcesz uzyskać najdokładniejsze wyniki z tego pomysłu, możesz wprowadzić pewne zmiany:

1 - dodaj kilka wzmocnień i etapów filtrowania za pomocą wzmacniaczy operacyjnych, jak w tym łączu2 - użyj niższego wewnętrznego analogowego kontrolera odniesienia, takiego jak płyty STM32F103C8 z analogowym napięciem odniesienia 3,3 V (patrz punkt 4)3 - użyj wewnętrznego odniesienia analogowego 1,1 V w arduino, ale pamiętaj, że nie możesz podłączyć więcej niż 1,1 V do żadnego z pinów analogowych arduino.

możesz dodać tę linię w funkcji konfiguracji:

analogReference(WEWNĘTRZNY);

4 - Użyj mikrokontrolera, który ma wyższą rozdzielczość ADC niż STM32F103C8, który ma 12-bitową rozdzielczość ADC Tak więc w skrócie, ta konfiguracja oparta na arduino może dać dobry przegląd temperatury twojego systemu, ale nie tak dokładne wyniki (około 4,88 mV/odczyt)

konfiguracja STM32F103C8 da całkiem dokładny wynik, ponieważ ma wyższy 12-bitowy ADC i niższą analogową wartość odniesienia 3,3 V (około 0,8 mV/odczyt)

Cóż, to wszystko !!:D

Zalecana: