Qurilmaning ishlashi tavsifi
DS 18 B 20 harorat sensorini Arduino platformasiga ulaymiz Quyidagi diagramma bo'yicha UNO (1-rasm):
Guruch. 1. Ulanish sxemasi
Sensorning ma'lumotlariga va quvvat oyoqlariga tortish rezistorini ulaymiz, bu signalning quvvat manbaiga yoki erga tortilishini ta'minlaydi.
Shuningdek, biz potentsiometrni 1-rasmdagi diagramma bo'yicha ulaymiz. Potansiyometr tugmachasini aylantirib, uning qarshiligini sozlash orqali kontrastni sozlashingiz mumkin.
Sensorni 7-pinga ulaymiz. O'chirish qo'shimcha ADCni talab qilmaydi, chunki harorat ushbu sensor tomonidan darhol raqamli kodga aylanadi.
Arduino dasturi orqali mikrokontrollerga yuklangan dasturiy kod orqali ishlaydi IDE . Arduino IDE - Muhit o'z dasturlaringizni yozish, kompilyatsiya qilish va Arduino-mos keladigan qurilma platasida o'rnatilgan mikrokontroller xotirasiga yuklash uchun mo'ljallangan. Rivojlanish muhitining asosi Processing/Wiring tilidir - bu aslida oddiy C++.
Arduino muhitiga kiritilgan misollardan olingan Dallas Temperature kutubxonasidan foydalanmasdan pinout uchun moslashtirilgan IDE . OneWire protokoli uchun OneWire Arduino kutubxonasini va displey uchun LiquidCrystalni o'rnatish kerak edi . Kod Unda bor ko'rinish :
#o'z ichiga
#o'z ichiga
OneWire ds(7);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
bekor o'rnatish (yaroqsiz)
{
lcd.begin(16, 2);
lcd.print("Temp DS18B20:");
}
bekor halqa (bo'sh)
{
bayt i;
bayt ma'lumotlari[12];
bayt manzili[8];
float selsiy, farengeyt;
ds.search(addr);
ds.reset();
ds.select(addr);
ds.write (0x44, 1);
kechikish (1000);
ds.reset();
ds.select(addr);
ds.write(0xBE);
uchun (i = 0; i < 9; i++)
{
data[i] = ds.read();
}
int16_t raw = (ma'lumotlar [1] << 8) | maʼlumotlar[0];
agar (ma'lumotlar [7] == 0x10)
{
xom = (xom va 0xFFF0) + 12 - ma'lumotlar[6];
} boshqa {
bayt cfg = (ma'lumotlar [4] & 0x60);
agar (cfg == 0x00)
xom = xom << 3;
Aks holda (cfg == 0x20)
xom = xom << 2;
Aks holda (cfg == 0x40) \
xom = xom << 1;
}
Selsiy = (suzuvchi) xom / 16,0;
Farengeyt = Selsiy * 1,8 + 32,0;
lcd.setCursor(0, 1);
lcd.print("C:");
lcd.setCursor(2, 1);
lcd.print(selsiy);
lcd.setCursor(8, 1);
lcd.print("F:");
lcd.setCursor(10, 1);
lcd.print (farengeyt);
}
|