ماژول سنسور اثر هال خطی KY-024 چیست؟

سنسور اثر هال خطی KY-024 با حضور یک میدان مغناطیسی واکنش نشان می دهد. این ماژول دارای یک پتانسیومتر برای تنظیم حساسیت سنسور است و خروجی های آنالوگ و دیجیتال را فراهم می کند. خروجی دیجیتال به عنوان سوئیچ عمل می کند که با نزدیک شدن آهنربا، مانند ماژول KY-003 روشن یا خاموش می شود. از طرف دیگر، خروجی آنالوگ می تواند قطبیت و قدرت نسبی میدان مغناطیسی را اندازه گیری کند. جهت خرید ماژول اثر هال KY-024 با قیمتی مناسب و کیفیتی عالی به فروشگاه اینترنتی دیجی قطعه مراجعه کنید.

مشخصات فنی ماژول ky024

ماژول KY-024 از یک سنسور اثر خطی 49E، یک مقایسه گر دوگانه LM393، یک پتانسیومتر، دو LED، شش مقاومت و  4 پین هدر نری تشکیل شده است. این ماژول با سیستم عامل های رایج الکترونیک مانند: Arduino ،Raspberry Pi ،Esp32 و Teensy سازگار است. مشخصات در جدول زیر امده است:

جدول مشخصات ماژول ky024

کاربرد ماژول سنسور اثر هال KY024

ماژول KY-024 در زمینه های مختلفی کاربردی است؛ از جمله:

  • اندازه گیری سرعت موتور
  • تشخیص موقعیت شی
  • کنترل موتور و بار
  • شمارنده پالس
  • خودروی هوشمند
  • آجرهای الکترونیکی
  • و …

این سنسور برای اندازه گیری آستانه(ترشولد) بسیار مناسب است. این بدان معنی است که سنسور به محض اینکه از مقدار آستانه تعیین شده توسط کاربر تجاوز کند، یک سیگنال دیجیتال بالا منتشر می کند. با این حال، این به این معنی نیز است که مقادیر اندازه گیری شده آنالوگ برای تبدیل مناسب نیستند، زیرا سیگنال آنالوگ نیز تحت تأثیر پتانسیومتر چرخشی قرار می گیرد.

دیاگرام اتصالات سنسور اثر هال KY-024

پایه های مختلف ماژول را مطابق آنچه در تصویر زیر مشاهده می‌شود به برد آردوینو متصل کنید.

جدول دیاگرام اتصالات ky024

راه اندازی ماژول KY-024 با آردوینو

کد آردوینو زیر مقادیری از رابط های دیجیتال و آنالوگ را در KY-024 می خواند. رابط دیجیتال با شناسایی یک میدان مغناطیسی، چراغ آردوینو را روشن می کند.

int led = 13 ; // LED on arduino
int digitalPin = 3; // linear Hall magnetic sensor digital interface
int analogPin = A0; // linear Hall magnetic sensor analog interface
int digitalVal ; // digital readings
int analogVal; // analog readings

void setup ()
{
  pinMode (led, OUTPUT); 
  pinMode (digitalPin, INPUT); 
  //pinMode(analogPin, INPUT); 
  Serial.begin(9600);
}

void loop ()
{
  // Read the digital interface
  digitalVal = digitalRead(digitalPin) ; 
  if (digitalVal == HIGH) // When magnetic field is present, Arduino LED is on
  {
    digitalWrite (led, HIGH);
  }
  else
  {
    digitalWrite (led, LOW);
  }
  
  // Read the analog interface
  analogVal = analogRead(analogPin);
  Serial.println(analogVal); // print analog value

  delay(100);
}

راه اندازی ماژول KY-024 با رزبری پای

Raspberry Pi برخلاف آردوینو، مبدل آنالوگ به دیجیتال (ADC) را در تراشه خود ارائه نمی دهد. بنابراین اگر از سنسور غیر دیجیتال استفاده کنید، Raspbery Pi محدود می شود. برای اجتناب از این موضوع  از ماژول هایی که یک ADC  16 بیتی را ایجاد می کنند مانند ماژول KY-53 استفاده می کنیم تا آن را با 4 پین ورودی آنالوگ اضافی ارتقا دهیم. ماژول  KY-035 از طریق I2C به Raspberry Pi متصل می شود.

داده های آنالوگ را اندازه گیری کرده و آن را به یک سیگنال دیجیتال مناسب برای Raspberry Pi تبدیل می کند. بنابراین اگر می خواهید از سنسورهای آنالوگ به همراه Raspberry Pi استفاده کنید، از KY-053 ADC استفاده کنید.

# 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 
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
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()