این ماژول قابلیت اندازه گیری فاصله با استفاده از امواج صوتی التراسونیک را دارد . 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);
}


