این ماژول قابلیت اندازه گیری فاصله با استفاده از امواج صوتی التراسونیک را دارد . US-100 شامل یک فرستنده و گیرنده التراسونیک می باشد که با ارسال سیگنال های آلتراسونیک به سمت اجسام و اندازه گیری زمان بازتاب یا پژواک ، مقدار فاصله را اندازه گیری می کند .

یکی از مزیت های این ماژول پشتیبانی آن از رابط ارتباطی UART می باشد . همچنین می توان این ماژول را توسط پین های Trig و Echo همانند سایر ماژول های التراسونیک راه اندازی نمود . در پشت این ماژول یک جامپر وجود دارد که می توان توسط آن مد ارتباط UART و یا استفاده از Trig و Echo را تنظیم نمود . US-100 علاوه بر فاصله اندازه گیری بیشتر ، پایداری بهتری نسبت به ماژول های SRF-05 دارد .

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

 

 

مشخصات :

  • ولتاژ تغذیه 5 ولت
  • رنج اندازه گیری فاصله 2 تا 300 سانتی متر
  • پشتیبانی از ارتباط UART
  • امکان راه اندازی از طریق پین های Trig و Echo
  • امکان تغییر نوع ارتباط توسط جامپر
  • سازگار با برد های آردوینو

راه اندازی US-100 با آردوینو :

در مثال زیر از ارتباط سریال نرم افزاری استفاده شده است .

#include <SoftwareSerial.h>;
 
const int US100_TX = 2;
const int US100_RX = 3;
 
// Instancia nuevo canal serie
SoftwareSerial puertoUS100(US100_RX, US100_TX);
 
unsigned int MSByteDist = 0;
unsigned int LSByteDist = 0;
unsigned int mmDist = 0;
int temp = 0;
 
void setup() {
    Serial.begin(9600);
    puertoUS100.begin(9600);
}
 
void loop() {
 
    puertoUS100.flush(); // limpia el buffer del puerto serie
    puertoUS100.write(0x55); // orden de medición de distancia
 
    delay(500);
 
    if(puertoUS100.available() >= 2) // comprueba la recepción de 2 bytes
    {
        MSByteDist = puertoUS100.read(); // lectura de ambos bytes
        LSByteDist  = puertoUS100.read();
        mmDist  = MSByteDist * 256 + LSByteDist; // distancia
        if((mmDist > 1) && (mmDist < 10000)) // comprobación de la distancia dentro de rango
        {
            Serial.print("Distancia: ");
            Serial.print(mmDist, DEC);
            Serial.println(" mm");
        }
    }
 
    puertoUS100.flush(); // limpia el buffer del puerto serie
    puertoUS100.write(0x50); // orden de medición de distancia
 
    delay(500);
    if(puertoUS100.available() >= 1) // comprueba la recepción de 1 byte
    {
        temp = puertoUS100.read(); // lectura del byte
        if((temp > 1) && (temp < 130)) // comprobación de rango válido
        {
            temp -= 45; // corrige offset de 45º
            Serial.print("Temperatura: ");
            Serial.print(temp, DEC);
            Serial.println(" ºC.");
        }
    }
 
    delay(500);
}

 

 

Tags:
About Author: USER_4