Мазмуну:

XinaBox жана Thermistor менен температураны өлчөө: 8 кадам
XinaBox жана Thermistor менен температураны өлчөө: 8 кадам

Video: XinaBox жана Thermistor менен температураны өлчөө: 8 кадам

Video: XinaBox жана Thermistor менен температураны өлчөө: 8 кадам
Video: Lesson 42: Using LM35 Temperature Sensor | Arduino Step By Step Course 2024, Июль
Anonim
XinaBox жана Thermistor менен температураны өлчөө
XinaBox жана Thermistor менен температураны өлчөө

Суюктуктун температурасын XinaBox аналогдук xChip жана термистордук зонд аркылуу өлчөгүлө.

1 -кадам: Бул долбоордо колдонулган нерселер

Аппараттык компоненттер

  • XinaBox SX02 x 1 ADC менен xChip аналогдук киргизүү сенсору
  • XmeBox CC01 x 1 xChip ATmega328P негизинде Arduino Uno версиясы
  • Чыңалуу бөлүштүрүүчү тармак үчүн резистор 10k ohm x 1 10k каршылыгы
  • Thermistor Probe x 1 10k 25 ° C NTC суу өткөрбөйт термистор иликтөө
  • XinaBox IP01 x 1 xChip USB Программисти FTI32 Limitedден FT232Rге негизделген
  • XinaBox OD01 x 1 xChip 128x64 пиксел OLED дисплейи
  • XinaBox XC10 x 4 xChip автобус туташтыргычы
  • XinaBox PU01 x 1 xChip USB (А түрү) электр менен камсыздоо
  • 5V USB Power Supply x 1 Power Bank же окшош

Программалык камсыздоо жана онлайн кызматтары

Arduino IDE

Кол куралдары жана фабрикалар

Жалпак бурагыч Винттик терминалдын кыскычын бекемдөө же бошоңдотуу үчүн

2 -кадам: Окуя

Киришүү

Мен суюктуктун температурасын жөнөкөй термометрди түзүп өлчөгүм келди. XinaBox xChipsти колдонуу менен мен муну салыштырмалуу жөнөкөйлүк менен аткара алам. Мен 0 - 3.3V кабыл алган SX02 аналогдук кириш xChip колдондум, температурамдын жыйынтыктарын көрүү үчүн ATmega328P жана OD01 OLED дисплей xChipге негизделген CC01 xChip.

Термистор стакандагы суунун температурасын өлчөйт

3 -кадам: Керектүү файлдарды жүктөп алыңыз

Сизге төмөнкү китепканалар жана программалык камсыздоо керек болот:

  • xSX0X- Аналогдук киргизүү сенсорунун китепканасы
  • xOD01 - OLED дисплей китепканасы
  • Arduino IDE - Өнүгүү чөйрөсү

Китепканаларды кантип орнотууну көрүү үчүн бул жерди басыңыз.

Arduino IDE орнотулгандан кийин, аны ачып, программаңызды жүктөө үчүн "Arduino Pro же Pro Mini" тактасын тандаңыз. Ошондой эле ATmega328P (5V, 16MHz) процессору тандалганын текшериңиз. Төмөндөгү сүрөттү караңыз.

Arduino Pro же Pro Mini тактасын жана ATmega328P (5V, 16MHz) процессорун тандаңыз

4 -кадам: чогултуу

Программист xChip, IP01 жана ATmega328Pге негизделген CC01 xChip менен бирге төмөндө көрсөтүлгөндөй XC10 автобус коннекторлорун колдонуп чыкылдатыңыз. CC01ге жүктөө үчүн, сиз 'A' жана 'DCE' позициясына которуштургучтарды коюшуңуз керек.

IP01 жана CC01 бирге басылган

Андан кийин, 10 кОмдук резисторуңузду алып, бир четин "IN" деп белгиленген терминалга, экинчисин SX02деги "GND" терминалына сайыңыз. Термистордун зондун жетектеп, бир учун Vcc, "3.3V", экинчи учун "IN" терминалына бурап коюңуз. Төмөндөгү графикти караңыз.

SX02 байланыштары

Эми OD01 менен SX02ди CC01 менен бириктирип, XC10 автобус коннекторлорун колдонуп, аларды чогуу басыңыз. Төмөндө караңыз. Сүрөттөгү күмүш элемент термистордун иликтөөчүсү.

Программалоо үчүн толук бирдик

5 -кадам: Программа

Компьютериңиздеги USB портуна бирдикти салыңыз. Төмөндөгү кодду жүктөп алыңыз же көчүрүңүз жана Arduino IDEге чаптаңыз. Кодду түзүп, тактаңызга жүктөңүз. Жүктөлгөндөн кийин программаңыз иштей башташы керек. Эгерде сиз зонд бөлмө температурасында болсоңуз, анда OLED дисплейинде ± 25 ° C төмөндө көрсөтүлгөндөй сакташыңыз керек.

Жүктөп бергенден кийин OLED дисплейиндеги бөлмө температурасын байкаңыз

6 -кадам: Портативдүү термометр

Компьютериңизден бирдикти алып салыңыз. Бөлүктү ажыратыңыз жана IP01дин ордуна PU01дин жардамы менен кайра чогултуңуз. Эми 5В USB портативдүү энергия булагыңызды алыңыз, мисалы, кубат банкы же ага окшош жана ага жаңы түзүлүштү салыңыз. Сизде азыр өзүңүздүн жакшы салкын портативдүү термометр бар. Иштеп жатканын көрүү үчүн мукабанын сүрөтүн караңыз. Мен стакандагы ысык сууну өлчөдүм. Төмөндөгү сүрөттөр сиздин толук бирдигиңизди көрсөтөт.

Толук бирдик CC01, OD01, SX02 жана PU02ден турат.

7 -кадам: Жыйынтык

Бул долбоорду чогултууга 10 мүнөттөн, программалоого дагы 20 мүнөттөн ашык убакыт кетти. талап кылынган бир гана пассивдүү компонент - бул резистор. XChips жөн гана чогуу чыкылдатып, аны абдан ыңгайлуу кылат.

8 -кадам: Код

ThermTemp_Display.ino Arduino коддогу эсептөөлөрдү түшүнүү үчүн изилдөөчү термисторлор.

#include // xCHIPs үчүн негизги китепкананы камтыйт

#include // аналогдук кирүү сенсорунун китепканасын камтыйт #include // OLED дисплей китепканасын камтыйт #include // математиканын функцияларын камтыйт #C_Kelvin 273.15 // келвинден цельсийге айландыруу үчүн #define series_res 10000 // сериядагы резистордун омдогу мааниси #аныктоо В 3950 // В параметри термистор үчүн #бөлмө_темпK 298.15 // бөлмө температурасы келвинде #бөлмө температурасы 10000 // бөлмө температурасындагы омс менен каршылык #define vcc 3.3 // камсыздоо чыңалуусу xSX01 SX01 (0x55); // i2c дарегинин калкыма чыңалуусун коюу; // ченелген чыңалуусун камтыган өзгөрмө (0 - 3.3V) float therm_res; // термистордун каршылыгы float act_tempK; // чыныгы температура kelvin float act_tempC; // цельсийдеги чыныгы температура void setup () {// бир жолу иштетүү үчүн, орнотуу кодуңузду бул жерге коюңуз: // өзгөрмөлөрдү 0 чыңалуу = 0гө баштап; therm_res = 0; act_tempK = 0; act_tempC = 0; // сериялык байланышты баштоо Serial.begin (115200); // i2c байланышын баштоо Wire.begin (); // аналогдук киргизүү сенсорун баштоо SX01.begin (); // баштоо OLED дисплей OLED.begin (); // ачык көрсөтүү OD01.clear (); // кечигүүнү нормалдаштыруу үчүн кечиктирүү (1000); } void loop () {// негизги кодуңузду бул жерге коюп, кайра -кайра иштетүү үчүн: // SX01.poll чыңалуусун окуу (); // volatge чыңалуусун сактоо = SX01.getVoltage (); // термистордун каршылыгын эсептеңиз therm_res = ((vcc * series_res) / Voltage) - series_res; // чыныгы температураны kelvin act_tempK = (room_tempK * B) / (B + room_tempK * log (therm_res / room_res)) эсептеп алыңыз; // келвинди цельсияга айландыруу act_tempC = act_tempK - C_Kelvin; // OLED дисплейде басып чыгаруу температурасы // OD01.set2X борборунда көрсөтүү үчүн кол менен форматтоо (); OD01.println (""); OD01.println (""); OD01.print (""); OD01.print (act_tempC); OD01.print ("C"); OD01.println (""); кечигүү (2000); // дисплейди 2 секунд сайын жаңыртуу}

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