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