فهرست مطالب
ماژول سنسور دما KY001 چیست ؟
یکی از پرکاربردترین ماژولهای الکترونیکی، ماژول سنسور دما KY-001 است که از Dallas Onewire DS18B20 به عنوان سنسور دما استفاده گردیده است. درگذشته خروجی سنسور دما آنالوگ بوده که باید از یک مبدل آنالوگ به دیجیتال (A/D) و مبدل دیجیتال به آنالوگ (D/A) نیز در مدار استفاده میکردیم که این امر در Arduino امکانپذیر نیست چون تعداد زیادی رابط خارجی ندارد بنابراین ماژول سنسور دما DS18B20 یک راهحل مناسب برای این امر است. درضمن تراشه DS18B20 شامل یک سریال منحصر به فرد است که میتوان آن را در نقاط مختلف قرارداد و درجه حرارت محیطهای مختلف از جمله: اتاق، ماشین و … را اندازهگیری نمود. کاربردهایی که می توانند از این ماژول بهره مند شوند عبارتند از:
- کنترل های محیطی HVAC
- سیستم های نظارت بر دما در ساختمان ها، کارخانه ها یا ماشین آلات
- سیستم های نظارت و کنترل فرآیند
- و …
مشخصات فنی ماژول سنسور دما DS18B20
از نظر ظاهری ماژول ky-001 شامل یک تراشه DS18B20، یک LED و یک مقاومت است. این قطعه با سیستم عامل های الکترونیکی همانند آردوینو، Raspberry Pi و Esp8266 سازگار می باشد. مشخصات این ماژول در جدول زیر آمده است:
نکات مهم
۱- سنسور DS18B20 و ترانزیستور ها شبیه به هم به نظر می رسند، بنابراین مراقب باشید که آن را به عنوان یک ترانزیستور در نظر نگیرید تا از خسارت جلوگیری شود.
۲- برای جلوگیری از آسیب دیدگی DS18B20، اطمینان حاصل کنید که پایه های VCC و Ground جا به جا نباشند.
۳- طول باس دیتا محدودیت دارد، که هنگام افزایش طول سیم دیتا باید به آن توجه کرد خروجی دچار خطا نشود، مقدار مقاومت مدار با افزایش سیم دیتا متغیر خواهد بود .
پایه های سنسور دما KY-001
مدار اتصالات سنسور دما ky001 (DS18B20)
اتصال پایه ها در برد Arduino و Raspberry PI در جدول زیر آمده است:
پایه های مختلف ماژول را مطابق جدول بالا و به صورت آنچه در تصویر زیر مشاهده میشود به برد آردوینو (به کمک نرم افزار fritzing) متصل کنید.
نحوه راهاندازی ماژول سنسور دما با آردوینو
ما قصد داریم تا در این پروژه شما را با ماژول سنسور دما (KY-001) که توسط Arduino uno راهاندازی میشود، آشنا کنیم.
کدهای آردوینو مربوط به ماژول KY-001
در کد زیر از 2 کتابخانه OneWire و Dallas Temperature Control استفاده شده است تا به صورت سریال با ماژول KY-001 ارتباط برقرار کند، و می تواند دما را در خروجی نمایش دهد.
#include #include // Data wire is plugged into pin 2 on the Arduino #define ONE_WIRE_BUS 2 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); void setup(void) { // start serial port Serial.begin(9600); Serial.println("Dallas Temperature IC Control Library Demo"); // Start up the library sensors.begin(); // IC Default 9 bit. If you have troubles consider upping it 12. Ups the delay giving the IC more time to process the temperature measurement } void loop(void) { // call sensors.requestTemperatures() to issue a global temperature // request to all devices on the bus Serial.print("Requesting temperatures..."); sensors.requestTemperatures(); // Send the command to get temperatures Serial.println("DONE"); Serial.print("Temperature for Device 1 is: "); Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire }
کدهای رزبری پای ماژول سنسور دما ky001
# coding=utf-8 # needed modules will be imported and initialised import glob import time from time import sleep import RPi.GPIO as GPIO # here you can modify the break between the measurements sleeptime = 1 # the one-wire input pin will be declared and the integrated pullup-resistor will be enabled GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP) # After the enabling of the resistor you have to wait till the communication has started print 'wait for initialisation...' base_dir = '/sys/bus/w1/devices/' while True: try: device_folder = glob.glob(base_dir + '28*')[0] break except IndexError: sleep(0.5) continue device_file = device_folder + '/w1_slave' # The function to read currently measurement at the sensor will be defined. def TemperaturMessung(): f = open(device_file, 'r') lines = f.readlines() f.close() return lines # To initialise, the sensor will be read "blind" TemperaturMessung() # Analysis of temperature: At the Raspberry Pi # noticed one-wire slaves at the directory /sys/bus/w1/devices/ # will be assigned to a own subfolder. # In this folder is the file in which the data from the one-wire bus will be saved def TemperaturAuswertung(): lines = TemperaturMessung() while lines[0].strip()[-3:] != 'YES': time.sleep(0.2) lines = TemperaturMessung() equals_pos = lines[1].find('t=') if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_c = float(temp_string) / 1000.0 return temp_c # main program loop # The measured temperature will be displayed via console, between the measurements is a break. # The break time can be configured by the variable "sleeptime" try: while True: print '---------------------------------------' print "Temperature:", TemperaturAuswertung(), "°C" time.sleep(sleeptime) except KeyboardInterrupt: GPIO.cleanup()
نحوه ارتباطات مدار و راه اندازی ماژول دما KY-001
ما در این ویدیو به شما نحوه ارتباط پایه های ماژول دما (KY-001) با دیسکاوری بورد Arduino UNO را نمایش می دهیم
هم چنین جهت دانلود و مشاهده توضیحات کامل چگونگی راه اندازی ماژول بسنسور دما با دیسکاوری بورد Arduino UNO به آدرس اینترنتی https://bit.ly/2V4Nzao مراجعه نمایید.
بخش دانلود