ماژول های اندازه گیری فاصله التراسونیک ، ماژول هایی هستند که بر پایه ارسال و دریافت امواج  صوتی آلتراسونیک کار می کنند . در این ماژول ها یک سیگنال صوتی آلتراسونیک به سمت جسم فرستاده می شود که با اندازه گیری زمان بازتاب آن می توان مقدار فاصله ماژول تا جسم را محاسبه کرد . ماژول های آلتراسونیک مدل های زیادی دارند که به طور کلی شامل دو مدل تک سنسور و دو سنسور می باشند . در مدل های دو سنسور ، یک سنسور به عنوان فرستنده و دیگری به عنوان گیرنده عمل می کند . در مدل های تک سنسور از یک سنسور جهت ارسال و دریافت استفاده می شود . ماژول SRF02 یک ماژوا اندازه گیری فاصله تک سنسور می باشد . این ماژول قادر له اندازه گیری فاصله تا حداکثر 3 متر است . بر خلاف دیگر مدل های آلتراسونیک در این مدل از یک رابط I2C و UART استفاده شده است که کاربر می تواند هر کدان از این ارتباز ها را انتخاب کند . خروجی این ماژول دقیق و کالیبره شده می باشد . به راحتی از طریق یک مبدل USB-TTL می توانید این ماژول را به کامپیوتر متصل کنید .

 

در تصویر زیر پین های ماژول SR501 نشان داده شده است :

1- VCC پین تغذیه ماژول می باشد

2- SDA پین دیتا در ارتباط I2C و پین RX در ارتباط UART

3- SCL پین پالس ساعت در ارتباط I2C و TX در ارتباط UART

4- Mode جهت تعیین نوع ارتباط می باشد . در حالت زمین ارتباط UART و در حالت یک ارتباط ماژول I2C است .

5- Groundپین زمین ماژول است .

 

 

راه اندازی ماژول SRF02 با آردوینو :

برای راه اندازی این مازول باید ابتدا از طریق پین Mode نوع ارتباط مايول را تعیین کنید . در مثال زیر از رابط I2C استفاده شده است .

void SendCmd(unsigned char address,unsigned char cmd)
   {
     Serial1.write(address);//set the address of SRF02(factory default is 0)
     delayMicroseconds(100);//serial data is fixed at 9600,N,8,2,so we need some time to creat the sencond stop bit
     Serial1.write(cmd);//send the command to SRF02
     delayMicroseconds(100);//serial data is fixed at 9600,N,8,2,so we need some time to creat the sencond stop bit
   }
   void setup(void)
   {
     Serial.begin(9600);
     Serial1.begin(9600);
     Serial.println("SRF02 TEST!");
   }
   void loop(void)
   {
     unsigned int reading;
     SendCmd(0x00,0x51);//Real Ranging Mode - Result in centimeters
     delay(70);//time for SRF02 to measure the range
     SendCmd(0x00,0x5E);//Get Range, returns two bytes (high byte first) from the most recent ranging.
     delay(10);//wait for some time,let the Arduino receive 2 bytes data from the TX pin of SRF02
     if(Serial1.available()>=2)//if two bytes were received
     {
       reading = Serial1.read()<<8;//receive high byte (overwrites previous reading) and shift high byte to be high 8 bits
       reading |= Serial1.read(); // receive low byte as lower 8 bits
       Serial.print(reading); // print the reading
       Serial.println("cm");
     }
     delay(250); // wait a bit since people have to read the output :)
   }

 

 

 

Tags:
About Author: USER_4