صفحه 1 از 3 123 آخرینآخرین
نمایش نتایج: از 1 به 10 از 26
Like Tree10 لایک

موضوع: ماژول فاصله یاب آلتراسونیک srf05

  1. #1
    Senior Member
    تاریخ عضویت
    Mar 2013
    محل سکونت
    Iran
    نوشته ها
    138

    Lightbulb ماژول فاصله یاب آلتراسونیک srf05

    حسگرهای فراصوت مشابه رادار یا ردیاب صوتی، تشخیص ویژگی های هدف از طریق تحلیل بازتاب امواج رادیویی یا صوتی می باشد. حسگرهای فراصوت امواج صوتی با فرکانس بالا ایجاد می کنند و موج بازتاب شده را دریافت و تحلیل می کنند. این حسگرها با محاسبهٔ زمان بین فرستادن سیگنال و گرفتن بازتاب، فاصلهٔ جسم را محاسبه می کنند. از این فناوری می توان در اندازه گیری سرعت و جهت باد یا میزان پر بودن یک مخزن استفاده کرد. برای اندازه گیری سرعت و جهت، یک دستگاه از چندین گیرنده استفاده می کند و از روی فاصلهٔ نسبی آنها سرعت را اندازه می گیرد. برای اندازه گیری میزان مایع داخل یک مخزن نیز کافیست فاصله از سطح مایع اندازه گرفته شود. کاربردهای دیگر شامل ردیابهای صوتی(sonar)، بخورها (Humidifier)، فراوانگاری (سونوگرافی فراصوت)، دزدگیرها و آزمایشات غیر مخرب(Nondestructive testing) می شود. ماژول الترسونیک SRF05 درواقع نمونه تکامل یافته SRF04 است و با هدف افزایش انعطاف پذیری و افزایش رنج از 3 متر به 4 متر و کاهش قیمت طراحی شده است. عملکرد جدید Mode (در صورت اتصال به پین زمین) این ماژول امکان استفاده از تنها یک پین برای تریگر و اکو بطور همزمان می دهد. در نتیجه در تعداد پین مصرفی از میکروکنترلر صرفه جویی می شود. وقتی پین Mode بدون اتصال رها می شود. ماژول SRF05 با استفاده از پین های جداگانه تریگر و اکو همانند SRF04 عمل می کند. این ماژول با بردهای آردینو سازگای کامل دارد.

    sku099637h-500x500.jpg

    ویژگی ها
    ولتاژ کاری: 5VDC
    جریان مصرفی استاتیک: <2mA
    زاویه سنسور: <15 درجه
    سیگنال خروجی: سیگنال فرکانس الکتریکی high level 5V, low level 0V
    مسافت قابل سنجش: 2cm تا 450cm
    دقت : 2mm
    سیگنال تریگر ورودی: 10us TTL ایمپالس
    سیگنال اکو: خروجی سیگنال TTL PWL

    مثال
    در این مثال با اتصال ماژول SRF05 به آردینو خود می توانید فاصله را اندازه گیری کرده و در Serial Monitor مشاهده کنید.

    fritizing_bb.jpg

    کد:
    Tested with HY-SRF05, HC-SR04 Assuming a room temp of 20 degrees centigrade The circuit: * VVC connection of the sensor attached to +5V * GND connection of the sensor attached to ground * TRIG connection of the sensor attached to digital pin 12 * ECHO connection of the sensor attached to digital pin 13 */ const int TRIG_PIN = 12; const int ECHO_PIN = 13; void setup() { // initialize serial communication: Serial.begin(9600); pinMode(TRIG_PIN,OUTPUT); pinMode(ECHO_PIN,INPUT); } void loop() { long duration, distanceCm, distanceIn; // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); duration = pulseIn(ECHO_PIN,HIGH); // convert the time into a distance distanceCm = duration / 29.1 / 2 ; distanceIn = duration / 74 / 2; if (distanceCm <= 0){ Serial.println("Out of range"); } else { Serial.print(distanceIn); Serial.print("in, "); Serial.print(distanceCm); Serial.print("cm"); Serial.println(); } delay(1000); }
    مرجع:
    Arduino ultrasonic sensor (HC-SR04 or HY-SRF05)
    SRF05 Technical Documentation
    حسگر فراصوت - ویکیپدیا، دانشنامهٔ آزاد

    جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.
    فایل های پیوست شده فایل های پیوست شده
    ویرایش توسط hesam.time : 04-10-2014 در ساعت 10:00 AM

  2. #2
    Junior Member
    تاریخ عضویت
    Nov 2014
    نوشته ها
    1

    مد تک پین

    > عملکرد جدید Mode (در صورت اتصال به پین زمین) این ماژول امکان استفاده از تنها یک پین برای تریگر و اکو بطور همزمان می دهد.
    سلام.
    بین پین های روی برد هیچکدام Mode نیستند. ظاهراً با پین OUT جایگزین شده که با اتصالش به زمین نمی تونم از هیچ کدام از دو پین اکو و تریگر به تنهایی به جای هر دو پین استفاده کنم. لطفاً در صورت امکان تکه کد + مدار مد تک پین رو هم به صفحه اضافه کنید. من از این کد استفاده کردم:
    کد:
    /* Ping))) Sensor
      
       This sketch reads a PING))) ultrasonic rangefinder and returns the
       distance to the closest object in range. To do this, it sends a pulse
       to the sensor to initiate a reading, then listens for a pulse 
       to return.  The length of the returning pulse is proportional to 
       the distance of the object from the sensor.
         
       The circuit:
    	* +V connection of the PING))) attached to +5V
    	* GND connection of the PING))) attached to ground
    	* SIG connection of the PING))) attached to digital pin 7
    
       http://www.arduino.cc/en/Tutorial/Ping
       
       created 3 Nov 2008
       by David A. Mellis
       modified 30 Aug 2011
       by Tom Igoe
     
       This example code is in the public domain.
    
     */
    
    // this constant won't change.  It's the pin number
    // of the sensor's output:
    const int pingPin = 7;
    
    void setup() {
      // initialize serial communication:
      Serial.begin(9600);
    }
    
    void loop()
    {
      // establish variables for duration of the ping, 
      // and the distance result in inches and centimeters:
      long duration, inches, cm;
    
      // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
      // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
      pinMode(pingPin, OUTPUT);
      digitalWrite(pingPin, LOW);
      delayMicroseconds(2);
      digitalWrite(pingPin, HIGH);
      delayMicroseconds(5);
      digitalWrite(pingPin, LOW);
    
      // The same pin is used to read the signal from the PING))): a HIGH
      // pulse whose duration is the time (in microseconds) from the sending
      // of the ping to the reception of its echo off of an object.
      pinMode(pingPin, INPUT);
      duration = pulseIn(pingPin, HIGH);
    
      // convert the time into a distance
      inches = microsecondsToInches(duration);
      cm = microsecondsToCentimeters(duration);
      
      Serial.print(inches);
      Serial.print("in, ");
      Serial.print(cm);
      Serial.print("cm");
      Serial.println();
      
      delay(100);
    }
    
    long microsecondsToInches(long microseconds)
    {
      // According to Parallax's datasheet for the PING))), there are
      // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
      // second).  This gives the distance travelled by the ping, outbound
      // and return, so we divide by 2 to get the distance of the obstacle.
      // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
      return microseconds / 74 / 2;
    }
    
    long microsecondsToCentimeters(long microseconds)
    {
      // The speed of sound is 340 m/s or 29 microseconds per centimeter.
      // The ping travels out and back, so to find the distance of the
      // object we take half of the distance travelled.
      return microseconds / 29 / 2;
    }
    این کد مثال خود برنامه Arduino هست.
    مرسی.
    لایک کردن

  3. #3
    Junior Member
    تاریخ عضویت
    Dec 2015
    نوشته ها
    4
    آیا امکان داره این ماژول خروجی رو برحسب میلی متر نشون بده؟
    من خروجی که برحسب سانتی متر بود رو در 10 ضرب کردم ولی سنسور همچنان فاصله های میلی متری رو نشون نمیده. مثلا میخوام 1.5 سانتی متر رو نشون بده 15 میلی متر ولی یا میگه 10 یا 20 میلی متر بینش رو نشون نمیده.

  4. #4
    Member
    تاریخ عضویت
    Dec 2014
    نوشته ها
    73
    نقل قول نوشته اصلی توسط moradi نمایش پست ها
    آیا امکان داره این ماژول خروجی رو برحسب میلی متر نشون بده؟
    من خروجی که برحسب سانتی متر بود رو در 10 ضرب کردم ولی سنسور همچنان فاصله های میلی متری رو نشون نمیده. مثلا میخوام 1.5 سانتی متر رو نشون بده 15 میلی متر ولی یا میگه 10 یا 20 میلی متر بینش رو نشون نمیده.
    سلام نشان دادن فاصله به میلی متر ربط چندانی به ماژول نداره
    شما برنامه ات نوع متغییر از نوع long هست در واقع نوعی از عدد صحیحه
    بنابراین اعشار گرد میشه و شما یا 10 میگیرین یا 20
    نوع متغییرهاتون را به float تغییر بدین
    لایک کردن

  5. #5
    Junior Member
    تاریخ عضویت
    Dec 2015
    نوشته ها
    4
    نقل قول نوشته اصلی توسط aminta نمایش پست ها
    سلام نشان دادن فاصله به میلی متر ربط چندانی به ماژول نداره
    شما برنامه ات نوع متغییر از نوع long هست در واقع نوعی از عدد صحیحه
    بنابراین اعشار گرد میشه و شما یا 10 میگیرین یا 20
    نوع متغییرهاتون را به float تغییر بدین
    سلام ممنون از پاسختون، این کدی هست که استفاده کردم، متغیر رو هم float استفاده کردم ولی هنوز دقتش در حد سانتی متره:
    کد:
    #include <NewPing.h> #define TRIGGER_PIN 7 // Arduino pin tied to trigger pin on the ultrasonic sensor. #define ECHO_PIN 6 // Arduino pin tied to echo pin on the ultrasonic sensor. #define MAX_DISTANCE 500 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm. float distance; NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); void setup() { Serial.begin(9600); } void loop() { delay(500); unsigned int uS = sonar.ping() / US_ROUNDTRIP_CM; distance = uS*10; Serial.println(distance); }

  6. #6
    Member
    تاریخ عضویت
    Dec 2014
    نوشته ها
    73
    علاوه بر متغییر آخری که داره تو سریال میاد بیرون باید متغییر us را هم float کنید
    از این کد هم میتونید استفاده کنید:

    کد:
    // Demo sketch // "is sketch will output distance info via the UART port // port assignment // change as may be necessary const int trigger=6; const int echo=7; float distance; void setup(){ Serial.begin(9600); pinMode(trigger,OUTPUT); pinMode(echo,INPUT); } void loop(){ // Trigger US-100 to start measurement // Set up trigger digitalWrite(trigger,LOW); delayMicroseconds(5); // Start Measurement digitalWrite(trigger,HIGH); delayMicroseconds(10); digitalWrite(trigger,LOW); // Acquire and convert to mtrs distance=pulseIn(echo,HIGH); distance=distance*0.01657; // send result to UART Serial.println(distance); delay(50);
    اینم یادم نیست تست کردم یا نه ولی فک کنم کار کنه :\

    کد:
    unsigned int EchoPin = 2; // The Arduino's the Pin2 connection to US-100 Echo / RX unsigned int TrigPin = 3; // The Arduino's Pin3 connected to US-100 Trig / TX unsigned long Time_Echo_us = 0; unsigned long Len_mm = 0; void setup() { //Initialize Serial.begin(9600); // The measurement results through the serial output to the serial port on the PC monitor pinMode(EchoPin, INPUT); // The set EchoPin input mode. pinMode(TrigPin, OUTPUT); // The set TrigPin output mode. } void loop() { // By the Trig / Pin sending pulses trigger US-100 ranging digitalWrite(TrigPin, HIGH); // Send pulses begin by Trig / Pin delayMicroseconds(50); // Set the pulse width of 50us (> 10us) digitalWrite(TrigPin, LOW); // The end of the pulse Time_Echo_us = pulseIn(EchoPin, HIGH); // A pulse width calculating US-100 returned if((Time_Echo_us < 60000) && (Time_Echo_us > 1)) { // Pulse effective range (1, 60000). // Len_mm = (Time_Echo_us * 0.34mm/us) / 2 (mm) Len_mm = (Time_Echo_us*34/100)/2; // Calculating the distance by a pulse width. Serial.print(Len_mm, DEC); // Output to the serial port monitor Serial.println("mm"); // Output to the serial port monitor } delay(100); // Per second (100ms) measured }

  7. #7
    Junior Member
    تاریخ عضویت
    Aug 2015
    نوشته ها
    29
    سلام فایل کتابخونه نصب نمیشه لطفا یه نفر فایلشو بزاره ممنون

  8. #8
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    3,991
    نقل قول نوشته اصلی توسط shelby نمایش پست ها
    سلام فایل کتابخونه نصب نمیشه لطفا یه نفر فایلشو بزاره ممنون
    این کد که اصلا کتابخونه نمی خواد

    کد:
    
     
    const int TRIG_PIN = 12;
    const int ECHO_PIN = 13;
     
    void setup() {
      // initialize serial communication:
      Serial.begin(9600);
     
      pinMode(TRIG_PIN,OUTPUT);
      pinMode(ECHO_PIN,INPUT);
    }
     
    void loop()
    {
       long duration, distanceCm, distanceIn;
     
      // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
      digitalWrite(TRIG_PIN, LOW);
      delayMicroseconds(2);
      digitalWrite(TRIG_PIN, HIGH);
      delayMicroseconds(10);
      digitalWrite(TRIG_PIN, LOW);
      duration = pulseIn(ECHO_PIN,HIGH);
     
      // convert the time into a distance
      distanceCm = duration / 29.1 / 2 ;
      distanceIn = duration / 74 / 2;
     
      if (distanceCm <= 0){
        Serial.println("Out of range");
      }
      else {
        Serial.print(distanceIn);
        Serial.print("in, ");
        Serial.print(distanceCm);
        Serial.print("cm");
        Serial.println();
      }
      delay(1000);
    }

  9. #9
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    سلام دوستان
    صحبت من کلا در مورد سنسورهای آلتراسونیک هست نه این ماژول خاص
    از اونجایی که آلتراسونیک مثل امواج صوتی در فضا پخش میشه نه در یه صفحه یا راستای خاص ، چجوری این موج رو جهت دهی میکنن که صاف بره و برگرده؟
    و دیگه اینکه سنسور از کجا تفاوت بین پالس هایی که فرستاده رو متوجه میشه؟ منظورم اینه که در نظر بگیرین سیستم شروع به کار میکنه و 4 تا موج فرستاده اولی به یه ماده جاذب میخوره و جذب میشه اما اون 3 تای دیگه بر میگردن
    حالا سیستم چجوری میفهمه زمان رفت و برگشت چقدر بوده؟

  10. #10
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط moradi نمایش پست ها
    آیا امکان داره این ماژول خروجی رو برحسب میلی متر نشون بده؟
    من خروجی که برحسب سانتی متر بود رو در 10 ضرب کردم ولی سنسور همچنان فاصله های میلی متری رو نشون نمیده. مثلا میخوام 1.5 سانتی متر رو نشون بده 15 میلی متر ولی یا میگه 10 یا 20 میلی متر بینش رو نشون نمیده.
    به نظرم از اونجایی که ام.اج آلتراسونیک هم مثل صوت برای انتشار به ماده وابسته هستند و ویژگی هایی از قبیل دما و فشار رو سرعتشون تاثیر میذاره ، نمیشه اونقدا انتظار دقت داشت ازشون (گمان میکنم فاصله 3 متری رو در دمای 20 و 35 درجه با خدود 7 سانتی متر اختلاف نشون بده ، برای افزایش دقت خوبه که سیستم رو به یه سنسور دما و فشار هم تجهیز کرد)

صفحه 1 از 3 123 آخرینآخرین

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO