فهرست مطالب
ماژول رید سوئیچ
ماژول رید سوئیچ KY-025 یک سوئیچ الکتریکی کوچک است که توسط یک میدان مغناطیسی که در مجاورت سنسور قرار دارد، کار می کند.
این ماژول دارای دو خروجی دیجیتال و آنالوگ است. از تریمر برای کالیبراسیون حساسیت سنسور استفاده می شود. با توجه به شکل زیر خواهیم داشت:
ما یک اتصال الکتریکی دریافت می کنیم و سیگنال را ارسال می کنیم.
خروجی دیجیتال: پس از شناسایی یک میدان مغناطیسی ، یک سیگنال تولید می شود
خریجی انالوگ: اندازه گیری مستقیم واحد سنسور
LED1= نشان می دهد كه سنسور به برق وصل شده است.
LED2= نشان می دهد كه سنسور یك میدان مغناطیسی را تشخیص می دهد.
مشخصات فنی ماژول رید سوئیچ
ماژول KY-025 از یک سوئیچ reed بطور معمول باز 2×14mm ، یک مقایسه گر دیفرانسیل LM393 ، یک پنانسیومتر trimmer 3296W-104 ، شش مقاومت و دو ال ای دی تشکیل شده است. مشخصات در جدول زیر امده است:
پایه های سوئیچ رید
اتصال پایه های ماژول در برد Arduino و Raspberry Pi در جدول های زیر آورده شده است:
دیاگرام اتصالات
پایه های مختلف ماژول را مطابق جدول بالا و به صورت آنچه در تصویر زیر مشاهده میشود به برد آردوینو متصل کنید.
کدهای آردوینو
در کد زیر مقادیر دیجیتال و آنالوگ را از طریق رابط ها در KY-025 می خوانیم (برای تعامل با ماژول به یک آهنربا احتیاج دارید).
رابط دیجیتال با شناسایی یک میدان مغناطیسی، چراغ آردوینو (پین 13) را روشن می کند.
رابط آنالوگ هنگامی که هیچ میدان مغناطیسی وجود نداشته باشد مقدار عددی HIGH را برمی گرداند و هنگامی که یک آهنربا نزدیک است به صفر می رسد.
int led = 13; // define the LED pin int digitalPin = 3; // KY-025 digital interface int analogPin = A0; // KY-025 analog interface int digitalVal; // digital readings int analogVal; //analog readings void setup() { pinMode(led, OUTPUT); pinMode(digitalPin, INPUT); //pinMode(analogPin, OUTPUT); Serial.begin(9600); } void loop() { // Read the digital interface digitalVal = digitalRead(digitalPin); if(digitalVal == HIGH) // if magnetic field is detected { digitalWrite(led, HIGH); // turn ON Arduino's LED } else { digitalWrite(led, LOW); // turn OFF Arduino's LED } // Read the analog interface analogVal = analogRead(analogPin); Serial.println(analogVal); // print analog value to serial delay(100); }
کدهای رزبری پای
Raspberry PI برخلاف آردوینو، مبدل آنالوگ به دیجیتال (ADC) را در تراشه خود ارائه نمی دهد. بنابراین اگر از سنسور غیر دیجیتال استفاده کنید، Raspbery Pi محدود می شود. برای اجتناب از این موضوع از ماژول هایی که یک ADC 16 بیتی را ایجاد می کنند مانند ماژول KY-53 استفاده می کنیم تا آن را با 4 پین ورودی آنالوگ اضافی ارتقا دهیم. ماژول KY-035 از طریق I2C به Raspberry Pi متصل می شود. داده های آنالوگ را اندازه گیری کرده و آن را به یک سیگنال دیجیتال مناسب برای Raspberry Pi تبدیل می کند. بنابراین اگر می خواهید از سنسورهای آنالوگ به همراه Raspberry Pi استفاده کنید، از KY-053 ADC استفاده کنید.
اتصال پایه های ماژول در برد Raspberry Pi در جدول های زیر آورده شده است:
# This code is using the ADS1115 and the I2C Python Library for Raspberry Pi # import needed modules import math, signal, sys, os import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) # initialise variables delayTime = 0.5 # in Sekunden # assigning the ADS1x15 ADC Export: 16.06.2017 Copyright by Joy-IT - Published under CC BY-NC-SA 3.0 Page 115 of 214 KY-025 Reed module ADS1015 = 0x00 # 12-bit ADC ADS1115 = 0x01 # 16-bit # choosing the amplifing gain gain = 4096 # +/- 4.096V # gain = 2048 # +/- 2.048V # gain = 1024 # +/- 1.024V # gain = 512 # +/- 0.512V # gain = 256 # +/- 0.256V # choosing the sampling rate # sps = 8 # 8 Samples per second # sps = 16 # 16 Samples per second # sps = 32 # 32 Samples per second sps = 64 # 64 Samples per second # sps = 128 # 128 Samples per second # sps = 250 # 250 Samples per second # sps = 475 # 475 Samples per second # sps = 860 # 860 Samples per second # assigning the ADC-Channel (1-4) adc_channel_0 = 0 # Channel 0 adc_channel_1 = 1 # Channel 1 adc_channel_2 = 2 # Channel 2 adc_channel_3 = 3 # Channel 3 # initialise ADC (ADS1115) adc = ADS1x15(ic=ADS1115) # Input pin for the digital signal will be picked here Digital_PIN = 24 GPIO.setup(Digital_PIN, GPIO.IN, pull_up_down = GPIO.PUD_OFF) # main program loop # The program reads the current value of the input pin # and shows it at the terminal try: while True: #Current values will be recorded analog = adc.readADCSingleEnded(adc_channel_0, gain, sps) # Output at the terminal if GPIO.input(Digital_PIN) == False: print "Analog voltage value:", analog,"mV, ","extreme value: not reached" else: print "Analog voltage value:", analog, "mV, ", "extreme value: reached" print "---------------------------------------" sleep(delayTime) except KeyboardInterrupt: GPIO.cleanup()