Мазмуну:

Бир диодду колдонуп DIY температура сенсору: 3 кадам
Бир диодду колдонуп DIY температура сенсору: 3 кадам

Video: Бир диодду колдонуп DIY температура сенсору: 3 кадам

Video: Бир диодду колдонуп DIY температура сенсору: 3 кадам
Video: Удивительный цифровой мультиметр True RMS за 45 долларов KAIWEET KM601 (купон на скидку 10%) 2024, Июль
Anonim
DIY диоддун жардамы менен температура сенсору
DIY диоддун жардамы менен температура сенсору
DIY диоддун жардамы менен температура сенсору
DIY диоддун жардамы менен температура сенсору

Ошентип, PN түйүндөрү жөнүндөгү фактылардын бири, алардын алдыга чыңалуусунун төмөндөшү өткөн токко жана түйүндүн температурасына жараша өзгөрөт, биз муну жөнөкөй арзан температура сенсорун жасоо үчүн колдонобуз.

Бул орнотуу көбүнчө көптөгөн интегралдык схемаларда колдонулат, анын ички температурасын жана көптөгөн температура сенсорлорун бул касиетке негизделген атактуу LM35 катары өлчөө үчүн колдонулат.

Жөн эле диоддун алдыга чыңалуусунун төмөндөшү (бул бир PN-түйүнү) ал аркылуу өткөн токтун өлчөмү өзгөргөн сайын өзгөрөт, диоддун температурасы өзгөргөндө чыңалуунун төмөндөшү да өзгөрөт (Температура жогорулаган сайын алдыга тамчы мааниге төмөндөйт (кремний диоддору үчүн 1,0 миллиВольттон 2,0 миллиВольтко жана германий диоддору үчүн 2,5 миллиВольтко).

Ошентип, диод аркылуу туруктуу токту өткөрүү менен алдыга чыңалуу төмөндөшү диоддун температурасына жараша гана өзгөрүшү керек. Биз азыр диоддун алдыга чыңалуусун өлчөп, бир нече жөнөкөй теңдемелерди колдонуп, voilà бул жерде сиздин температура сенсоруңуз !!!

Жабдуулар

1 - 1n4007 диод #12 - 1 Кох резистору #13 - Arduino тактасы

1 -кадам: Райондук диаграмма

Райондук диаграмма
Райондук диаграмма

Схемада көрүнүп тургандай, бул абдан жөнөкөй. диодду учурдагы чектөөчү резистор жана туруктуу чыңалуу булагы менен туташтыруу менен биз чийки туруктуу токтун булагын ала алабыз, андыктан диоддун ченелген чыңалуусу температуранын өзгөрүшүнө байланыштуу гана өзгөрөт. өтө эле аз ток диод аркылуу өтөт жана диоддо өзүн -өзү жылытат, ошондой эле өтө жогорку каршылык эмес, ошондуктан токтун өтүшү алдыдагы чыңалуу менен температуранын ортосундагы сызыктуу байланышты сактоо үчүн жетишсиз.

5 В менен камсыздалган 1 кило Омдук резистор 4 миллиампердик диоддун агымын алып келиши керек, бул бул үчүн жетиштүү мааниге ээ. Мен (диод) = VCC / (Rseries + Rdiode)

2 -кадам: Коддоо

Биз жакшы натыйжаларды алуу үчүн кодду өзгөртүү үчүн кээ бир баалуулуктар бар экенин эстен чыгарбашыбыз керек:

1 - VCC_Voltage: analogRead () мааниси ATmega чипинин VCCден көз каранды болгондуктан, аны arduino тактасында ченегенден кийин аны теңдемеге кошушубуз керек.

2 - V_OLD_0_C: колдонулган диоддун чыңалуусу 4 мА жана температурасы 0 Цельсийде

3 - Temperature_Coefficient: диоддун температура градиенти (маалымат барагынан алуу үчүн жакшы) же сиз бул теңдеме менен өлчөй аласыз: Vnew - Vold = K (Tnew - Told)

кайда:

Vnew = диодду жылыткандан кийин жаңы өлчөнүүчү түшүү чыңалуусу

Vold = кээ бир бөлмө температурасында түшүүчү чыңалуу

Tnew = диод ысытылган температура

Айтылды = Волд өлчөнгөн эски бөлмө температурасы

K = Temperature_Coefficient (терс маани -1.0ден -2.5 миллиВольтко чейин өзгөрүп турат) Акыры сиз азыр кодду жүктөп, температураңыздын жыйынтыктарын ала аласыз.

#define Sens_Pin A0 // PA0 STM32F103C8 тактасы үчүн

кош V_OLD_0_C = 690.0; // 690 мВ Алдыңкы чыңалуу 0 Цельсийде 4 мА сыноо токунда

кош V_NEW = 0; // 4 мА сыноо учурдагы бөлмө температурасында жаңы алдыга чыңалуу эки эсе Температура = 0.0; // Бөлмөнүн эсептелген температурасы эки эсе Temperature_Coefficient = -1.6; Цельсий боюнча //-1.6 мВ өзгөртүү (германий диоддору үчүн -2.5), эки эселенген диоддук маалымат барагынан алуу жакшы VCC_Voltage = 5010.0; // МиллиВольттогу ардуинонун 5В темир жолунда болгон чыңалуу (жакшыраак тактык үчүн талап кылынат) (stm32 үчүн 3300.0)

жараксыз орнотуу () {

// орнотуу кодуңузду бул жерге коюңуз, бир жолу иштетүү үчүн: pinMode (Sens_Pin, INPUT); Serial.begin (9600); }

void loop () {

// бул жерде негизги кодуңузду кайра -кайра иштетүү үчүн коюңуз: V_NEW = analogRead (Sens_Pin)*VCC_Voltage/1024.0; // эгерде сиз 12 бит ADC температурасын колдонуп жатсаңыз 4.0га бөлүңүз = ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp =");

Serial.print (Температура); Serial.println ("C");

кечигүү (500);

}

3 -кадам: Жакшы баалуулуктарды алуу

Жакшы баалуулуктарды алуу
Жакшы баалуулуктарды алуу
Жакшы баалуулуктарды алуу
Жакшы баалуулуктарды алуу

Менимче, бул долбоорду аткарууда жаныңызда ишенимдүү температураны өлчөөчү аппараттын болушу максатка ылайыктуу.

сиз 3 же 4 градус Цельсийге чейин жетиши мүмкүн болгон окууда олуттуу ката бар экенин көрө аласыз, анда бул ката кайдан келип жатат?

1 - мурунку кадамда айтылган өзгөрмөлөрдү өзгөртүү керек болушу мүмкүн

2 - arduino ADC токтому кичинекей чыңалуу айырмасын аныктоо үчүн керектүү нерседен төмөн

3 - arduino (5V) чыңалуусуна шилтеме диоддун кичинекей чыңалуусу үчүн өтө жогору

Демек, эгер сиз бул орнотууну температура сенсору катары колдоно турган болсоңуз, анда ал арзан жана ыңгайлуу болгону менен, так эмес экенин билишиңиз керек, бирок бул сиздин системаңыздын температурасы жөнүндө абдан жакшы түшүнүк бере алат. PCB же иштеп жаткан моторго орнотулган ж.

Бул көрсөтмө мүмкүн болгон эң аз компоненттерди колдонууга багытталган, бирок эгер сиз бул идеядан эң так жыйынтыктарды алууну кааласаңыз, анда кээ бир өзгөрүүлөрдү жасай аласыз:

1 - бул шилтемедеги оп -амперди колдонуу менен кээ бир күчөтүүлөрдү жана чыпкалоо баскычтарын кошуңуз2 - STM32F103C8 такталары катары төмөнкү ички аналогдук контроллерди колдонуңуз, аналогдук чыңалуусу 3,3 Вольт (4 -пунктту караңыз) 3 - ички 1.1 В аналогдук шилтемени колдонуңуз arduino, бирок ардуино аналогдук казыктарына 1.1 Вольттон ашык туташа албай турганыңызды билиңиз.

бул сапты орнотуу функциясына кошо аласыз:

analogReference (ИЧКИ);

4 - 12 биттик ADC токтому бар STM32F103C8 катары жогорку чечим ADCге ээ болгон микроконтроллерди колдонуңуз Кыскача айтканда, бул arduino негизделген орнотуу системаңыздын температурасы жөнүндө жакшы обзор бере алат, бирок анча так эмес жыйынтыктар (болжол менен 4.88 мВ/Окуу)

STM32F103C8 орнотуусу сизге абдан так жыйынтык берет, анткени ал 12 биттик ADCден жогору жана 3.3V аналогдук көрсөткүчтөн төмөн (болжол менен 0.8 мВ/Окуу)

Мейли, болду !!: D

Сунушталууда: