เครื่องหาระยะเลเซอร์อินฟาเรด Robot Senses: ข้อมูลจำเพาะเซ็นเซอร์ระยะ IR แบบชาร์ป GP2Y0A21YK ข้อมูลจำเพาะของเซ็นเซอร์ระยะ IR แบบชาร์ป

เครื่องวัดระยะด้วยเลเซอร์อินฟราเรดปล่อยพลังงานในช่วงที่ตามนุษย์มองไม่เห็น เป็นอุปกรณ์เลเซอร์คลาส 1 ควบคุมโดยสำนักงานคณะกรรมการอาหารและยาแห่งสหรัฐอเมริกา 21 CFR 1040.10-11 เครื่องหมายการปฏิบัติตามข้อกำหนดของ Laser FDA ติดอยู่ที่ตัวเครื่องระบบ CMS Wireless เครื่องหมายนี้ยังระบุรุ่น หมายเลขซีเรียล และวันที่ผลิตอีกด้วย

คลาส 1 รวมถึงเลเซอร์ที่ไม่สามารถก่อให้เกิดอันตรายต่อมนุษย์ได้ภายใต้สภาวะการทำงานปกติ ในการติดตั้งแบบปกติ บุคคลสามารถมองเข้าไปในลำแสงเลเซอร์ได้โดยไม่ต้องใช้แว่นตาหรือด้วยแว่นตาปกติ (อย่ามองเข้าไปในลำแสงเลเซอร์ในขณะที่ระบบเปิดอยู่ - เป็นข้อควรระวังมาตรฐาน)

เลเซอร์จะยังคงอยู่ในสถานะตื่นเต้นตราบใดที่ยังคงเลือกคำสั่ง LASER TEST หรือ START SURVEY ในซอฟต์แวร์คอนโทรลเลอร์ เมื่อเลเซอร์อยู่ในสถานะตื่นเต้น ระยะทางและข้อมูลอื่นๆ จะแสดงบนหน้าจอตัวควบคุม

ไฟ LED สีแดงบนแผงควบคุมซึ่งอยู่ในกล่องควบคุมจะสว่างตลอดเวลาเมื่อระบบเปิดอยู่ ไม่ว่าเลเซอร์จะเปิดทำงานหรือไม่ก็ตาม

หัวสแกนด้วยเลเซอร์ประกอบด้วยเครื่องวัดระยะด้วยเลเซอร์และชุดจับ (รูปที่ 7.2, รูปที่ 7.3)

รูปที่ 7.2 - หัวสแกน

รูปที่ 7.3 - ลักษณะของหัวสแกนด้วยเลเซอร์

รูปที่ 7.4 - การติดตั้ง VIP ในสภาพใต้ดิน

รูปที่ 7.5 - การติดตั้งแท่งและเสากระโดงในสภาพใต้ดิน

รูปที่ 7.6 - การใส่เครื่องสแกนเข้าไปในช่องในสภาพใต้ดิน

ตารางที่ 33 - ข้อมูลจำเพาะ

หัวสแกนเลเซอร์
ช่วงการวัดเป้าหมายที่มีการสะท้อน 20 เปอร์เซ็นต์ 350 ม.
ช่วงการวัดถึงผนังสีขาว 650 ม
ช่วงมุมการหมุน 0 - 360°
ช่วงมุมเอียง 0 – 145°
ความแม่นยำในการวัดเชิงเส้น -+2 ซม. ในช่วงอุณหภูมิการทำงาน
ปณิธาน 1 ซม
ความแม่นยำในการวัดเชิงมุม -+ 0.3°
ความเร็วการหมุนสูงสุด 21°/วินาที
ความยาวคลื่น 905 นาโนเมตร (ในช่วงอินฟราเรด), 635 นาโนเมตร (ในช่วงแสง)
การโก่งตัวของลำแสงเลเซอร์ 5 ม
จำนวนการนับสูงสุด 100,000 (ต่อช็อต)
โครงสร้างรองรับ
วัสดุ พลาสติกเสริมคาร์บอนไฟเบอร์, ข้อต่อโพลีเอทิลีนความหนาแน่นสูง, แคลมป์สแตนเลส
ความยาวก้าน 2-9 ม. ปรับได้
จำนวนส่วนบูม 5 ทรงกรวย อันละ 2 ม
ความยาวเสารองรับ (2 ชิ้น) 2-5 ม. ปรับได้
จำนวนส่วนขยายของเสา 5 (ความยาวต่างๆ)
พลังงาน (แบตเตอรี่ภายนอก)
แรงดันไฟฟ้า ในนาม 24 V
ความจุ 7.2 Ah, เล็กน้อย 24 V
การใช้พลังงาน 2.5 A, ระบุ 24 V
สภาพภายนอก
อุณหภูมิในการทำงาน ตัวค้นหาระยะ (- 10° ถึง +50°), ตัวชี้ (0° ถึง 40°)
อุณหภูมิในการจัดเก็บ ตั้งแต่ –20 ถึง +50°
ความชื้นในอากาศ 0 ถึง 95% ไม่มีการควบแน่น
ขนาด
แหล่งจ่ายไฟ (มม.) 270 * 247 * 175
น้ำหนัก (กิโลกรัม 8.3
เสา (มม.) 2290*230*250
ส่วนบูม (มม.) 1930*200*250
น้ำหนัก (กิโลกรัม 44.5
ความปลอดภัยของดวงตา
ตัวชี้ ชั้นประถมศึกษาปีที่ 2
เรนจ์ไฟนเดอร์ 1 ชั้นเรียน
อุปกรณ์แทรกแนวตั้ง (VIP)
ส่วนประกอบ แท่งอลูมิเนียม 25 แท่ง (อันละประมาณ 1.5 เมตร)
อะแดปเตอร์หัวสแกน 1 อัน
2 ระบบสปริงตรงกลาง
สายเชื่อมต่อ 1 เส้น ยาวประมาณ 41 เมตร

การสำรวจ CMS ใช้ในกรณีที่การเข้าถึงของมนุษย์เป็นอันตรายและไม่สามารถควบคุมด้วยสายตาได้ การสำรวจให้ตำแหน่งช่องว่างที่แม่นยำอย่างยิ่งซึ่งเชื่อมโยงกับระบบพิกัด ซึ่งจะทำให้สามารถออกแบบการใช้หรือการดับช่องว่างเหล่านี้ต่อไปได้อย่างมีเหตุผล แม่นยำ และถูกต้อง

เรนจ์ไฟนอินฟราเรดช่วยให้คุณกำหนดระยะห่างจากวัตถุได้ นี่คือรุ่น GP2Y0A021 จาก Sharp เซ็นเซอร์จะกำหนดระยะห่างด้วยลำแสงที่สะท้อนในสเปกตรัมอินฟราเรด สามารถใช้เรนจ์ไฟนเพื่อหลีกเลี่ยงอุปสรรคและนำทางภูมิประเทศได้

เอาต์พุตเป็นสัญญาณอะนาล็อก โดยมีระดับแรงดันไฟฟ้าขึ้นอยู่กับระยะห่างจากเป้าหมายในทิศทางที่กำหนด

เซ็นเซอร์เชื่อมต่อกับอุปกรณ์อิเล็กทรอนิกส์ควบคุมผ่านสายไฟ 3 เส้น เมื่อเชื่อมต่อกับ Arduino จะสะดวกมากในการใช้ Troyka Shield มีสายเคเบิลสำหรับเชื่อมต่อรวมอยู่ในชุดอุปกรณ์

ความสนใจ! pinout พลังงานสำหรับเซ็นเซอร์นี้อาจแตกต่างกันไป ก่อนที่จะเปิดโมดูล ให้ทำความคุ้นเคยกับคุณสมบัติของการเชื่อมต่อโมดูล DFRobot ก่อน

หากต้องการติดตั้งเรนจ์ไฟนเนอร์ได้ทุกที่อย่างน่าเชื่อถือ จึงมีอุปกรณ์ยึดแบบพิเศษ

ลักษณะเฉพาะ

  • แรงดันไฟจ่าย: 4.5–5.5 V
  • ปริมาณการใช้กระแสไฟ: 30–40 mA
  • ระยะห่าง: 10–80 ซม

ข้อ จำกัด

เนื่องจากอุปกรณ์ทำงานโดยใช้แสง เซ็นเซอร์จึงไม่เหมาะกับการกำหนดระยะห่างจากวัตถุดูดซับแสง เรนจ์ไฟนเดอร์จะไม่สัมผัสถึงพื้นผิวโปร่งใส เช่น พลาสติกหรือลูกแก้ว เครื่องวัดระยะอัลตราโซนิก URM37 หรือ HC-SR04 เหมาะสำหรับการกำหนดระยะทางในสภาพแวดล้อมดังกล่าว

เรนจ์ไฟนเดอร์แบบอินฟราเรดนี้มีจุดบอดเล็กๆ ด้านหน้า: 10 ซม. หากคุณต้องการดูสิ่งกีดขวางในระยะทางที่สั้นกว่าและระยะทางที่ไกลสุดไม่สำคัญนัก ให้ลองใช้เรนจ์ไฟนเดอร์สำหรับระยะทาง 4-30 ซม. ในเส้นเดียวกัน หากอุปกรณ์ของคุณต้องการมองเห็นเพิ่มเติม ให้ลองใช้เรนจ์ไฟนเดอร์สำหรับระยะ 20-150 ซม. คุณจะมีความยืดหยุ่นมากขึ้นโดยการรวมเซ็นเซอร์เข้ากับช่วงต่างๆ

เซนเซอร์วัดระยะอินฟราเรด Sharp GP2Y0A เป็นตัวเลือกยอดนิยมสำหรับโครงการต่างๆ ที่ใช้ Arduino ซึ่งต้องการการวัดระยะทางที่แม่นยำ

เซ็นเซอร์ชาร์ปใช้ไดโอดเปล่งแสง (LED) อินฟราเรด (IR) พร้อมเลนส์ที่ปล่อยลำแสงแคบ ลำแสงที่สะท้อนจากวัตถุจะถูกส่งผ่านเลนส์อีกตัวหนึ่งไปยังตาแมวที่ไวต่อตำแหน่ง (ตัวตรวจจับที่ไวต่อตำแหน่ง, PSD) ค่าการนำไฟฟ้าขึ้นอยู่กับตำแหน่งของลำแสงที่ตกกระทบบน PSD ค่าการนำไฟฟ้าจะถูกแปลงเป็นแรงดันไฟฟ้า และตัวอย่างเช่น โดยการแปลงเป็นดิจิทัลด้วยตัวแปลงแอนะล็อกเป็นดิจิทัลในไมโครคอนโทรลเลอร์ ก็สามารถคำนวณระยะทางได้

ผลลัพธ์ของเซ็นเซอร์วัดระยะอินฟราเรดชาร์ปจะแปรผกผัน - เมื่อระยะห่างเพิ่มขึ้น ค่าของเซ็นเซอร์จะลดลงอย่างช้าๆ มุมมองกราฟความสัมพันธ์ระหว่างระยะทางและแรงดันไฟฟ้า

เซนเซอร์มีขีดจำกัดในการวัดซึ่งเอาท์พุตถือว่าเชื่อถือได้ ทั้งนี้ขึ้นอยู่กับประเภทของเซนเซอร์ การวัดระยะทางที่แท้จริงสูงสุดถูกจำกัดด้วยปัจจัยสองประการ: การลดความเข้มของแสงสะท้อน และการที่ PSD ไม่สามารถตรวจจับการเปลี่ยนแปลงเล็กน้อยในตำแหน่งของลำแสงที่ถ่ายภาพได้ โดยทั่วไป กราฟระหว่างระยะทางและแรงดันไฟฟ้าไม่เป็นเส้นตรง แต่ภายในระยะทางที่ยอมรับได้ กราฟของค่าผกผันของแรงดันเอาต์พุตและระยะทางจะเข้าใกล้ความเป็นเส้นตรงมากจนง่ายต่อการใช้เพื่อให้ได้สูตรการแปลงแรงดันไฟฟ้าเป็นระยะทาง . ในการค้นหาสูตรดังกล่าวคุณต้องป้อนจุดของกราฟนี้ลงในโปรแกรมบางโปรแกรมเพื่อประมวลผลข้อมูลแบบตารางและสร้างกราฟใหม่จากจุดเหล่านั้น ในโปรแกรมประมวลผลข้อมูลแบบตาราง คุณสามารถคำนวณเส้นแนวโน้มโดยอัตโนมัติตามจุดกราฟได้ ตัวอย่างเช่น สำหรับเซ็นเซอร์ GP2Y0A021YK0F:


ข้อมูลเฉพาะของ เครื่องวัดระยะอินฟราเรด Sharp

แรงดันไฟฟ้า: 4.5 - 5.5 โวลต์; การสิ้นเปลืองกระแสไฟสูงสุด: 40 mA (ทั่วไป - 30 mA); ประเภทสัญญาณเอาท์พุต: อนาล็อก; แรงดันไฟฟ้าที่แตกต่างกันมากกว่าช่วงการรับรู้ระยะทาง: 2.0 V; เวลาตอบสนอง: 38 ± 10 ms ช่วงการทำงาน: เซ็นเซอร์ GP2Y0A41SK0F: 4 - 30 ซม.; เซนเซอร์ GP2Y0A021YK0F: 10 ซม. - 80 ซม.; เซนเซอร์ GP2Y0A02YK0F: 20 ซม. - 150 ซม.;

ตัวอย่างการใช้งาน

เรามาสร้างตัวอย่างการนับผู้เยี่ยมชมร้านค้ากันดีกว่า ลองมาทำให้ปัญหาง่ายขึ้นโดยสมมติว่าทางเข้าผ่านประตูแคบ และมีประตูเข้าและออกต่างกัน ที่ทางเข้าเราติดตั้งเรนจ์ไฟนอินฟราเรด Sharp GP2Y0A21YK0F (20-150 ซม.) เพื่อให้เมื่อมีคนผ่านไปการอ่านค่าจะมีค่า 10 - 50 ซม. ในกรณีที่ไม่มีคน 80 ซม. เมื่อตรวจพบผู้เยี่ยมชมเราจะเพิ่มขึ้น เคาน์เตอร์ผู้เยี่ยมชม เราแสดงข้อมูลบนจอแสดงผลกราฟิกของ Nokia 5110 หากต้องการแสดงข้อมูลจากเซ็นเซอร์ เราจะใช้จอแสดงผล LCD ของ Nokia 5110 ซึ่งเป็นจอแสดงผลกราฟิกขาวดำที่มีความละเอียด 84x48 พิกเซล จอแสดงผล Nokia 5110 มาบนบอร์ดที่จับคู่กับคอนโทรลเลอร์ PCD8544 และขั้วต่อพิน การใช้พลังงานของจอแสดงผลช่วยให้สามารถจ่ายพลังงานจากเอาต์พุต +3.3 V ของบอร์ด Arduino

สำหรับโครงการเราจะต้องมีส่วนต่าง ๆ ดังต่อไปนี้:
บอร์ด Arduino Uno
เขียงหั่นขนมครึ่ง
เซ็นเซอร์วัดระยะอินฟราเรด ชาร์ป GP2Y0A21YK0F
จอแสดงผลโนเกีย 5110
สายเชื่อมต่อ
มาประกอบวงจรดังรูปกัน

มาเปิดตัว Arduino IDE กัน มาสร้างภาพร่างใหม่และเพิ่มเนื้อหาต่อไปนี้: // เซ็นเซอร์ระยะอินฟราเรด // เว็บไซต์ // เชื่อมต่อไลบรารีสำหรับการทำงานกับจอแสดงผล Nokia #include #include // Nokia 5110 // pin 3 - Serial clock out (SCLK) // pin 4 - ข้อมูลอนุกรมออก (DIN) // pin 5 - ข้อมูล/การเลือกคำสั่ง (D/C) // pin 6 - เลือกชิป LCD (CS) // pin 7 - รีเซ็ต LCD (RST) จอแสดงผล Adafruit_PCD8544 = Adafruit_PCD8544 (3, 4 , 5, 6, 7); // พินอะนาล็อกสำหรับเชื่อมต่อเอาต์พุตเซ็นเซอร์ Vo const int IRpin = A0; // ตัวแปร int value1; // สำหรับจัดเก็บค่าอะนาล็อกของผู้เยี่ยมชมที่ไม่ได้ลงนามเป็นเวลานาน // เวลาเดินทาง int count_visitors=0; // คนนับการตั้งค่าโมฆะตัวแปร () ( // เริ่มพอร์ตอนุกรม Serial.begin (9600); Serial.println ("start"); // เริ่มต้นการแสดงผล display.begin (); // ตั้งค่าความคมชัดพื้นหลังของ หน้าจอ display.setContrast (60); display.clearDisplay(); // ล้างหน้าจอ display.setTextSize(1); // ขนาดตัวอักษร display.setTextColor(BLACK); // สี // หน้าจอสแปลช display.setCursor(5 ,15); display.print ("Visitors: 0"); display.display(); Delay(2000); ) void loop() ( // รับค่าที่ปรับให้เรียบแล้วแปลงเป็นค่าแรงดันไฟฟ้า1=irRead(); ถ้า (value1>50) // แก้ไขข้อความ ( timevisitors=millis(); while(irRead()>50) ; if(millis()-timevisitors>300) // > เวลาเดินทางขั้นต่ำ ( Serial.println("passage! !!"); count_visitors=count_visitors+1 ; // เพิ่มตัวนับ // ส่งออกไปยังมอนิเตอร์พอร์ตอนุกรม Serial.print("count_visitors="); Serial.println(count_visitors); // ส่งออกไปยังจอแสดงผล display.clearDisplay (); display.setCursor(5,15); display .print("ผู้เยี่ยมชม: "); display.print(count_visitors); display.display(); ) ) ล่าช้า (200); ) // การหาค่าเฉลี่ยหลายค่าเพื่อให้เรียบ int irRead() ( int averaging = 0; // ตัวแปรสำหรับการสรุปข้อมูล // การรับ 5 ค่าสำหรับ (int i=0; i<5; i++) { value1 = analogRead(IRpin); // значение сенсора переводим в напряжение float volts = analogRead(IRpin)*0.0048828125; // и в расстояние в см int distance=32*pow(volts,-1.10); averaging = averaging + distance; delay(55); // Ожидание 55 ms перед каждым чтением } value1 = averaging / 5; // усреднить значения return(value1); } Работать с сенсорами SHARP очень просто - достаточно подключить к нему питание и завести вывод Vo на аналоговый вход Arduino. Значение получаемой функции analogRead представляет собой целое число от 0 до 1023. Таким образом, чтобы узнать напряжение на выходе сенсора, необходимо значение на аналоговом входе Arduino умножить на 0,0048828125 (5 В / 1024). Расстояние вычисляем по формуле distance=volts*0.0001831-0.003097. При чтении данных, при каждой итерации цикла, иногда приходят разные значения сигнала при одном и том же расстоянии. Датчик передает сигнал на аналоговый порт с некоторой амплитудой и иногда в момент считывания данных значение оказывалось отличным от нормального, потому что итерация приходится на провал. Для сглаживания значений, получаемых с дальномера используем функцию irRead(). Датчик обнаруживает попадание объекта в дверной проем. Далее ожидаем окончания прохода. Если это время больше минимального времени прохода (отсечение взмаха руки, пролет предмета и пр.) инкрементируем счетчик посетителей и выводим данные в последовательный порт и на дисплей. Для работы с дисплеем Nokia 5110 нам понадобятся Arduino библиотеки Adafruit_GFX и Adafruit_PCD8544.

คำถามที่พบบ่อย FAQ

1. ไม่มีข้อมูลปรากฏบนจอแสดงผล
  • ตรวจสอบว่าสายไฟทั้งหมดเชื่อมต่ออย่างถูกต้องตามแผนภาพในรูปที่ 5
2. เซ็นเซอร์วัดระยะไม่ทำงาน
  • ตรวจสอบการเชื่อมต่อของโมดูลชาร์ป
  • ตรวจสอบการตรวจจับเซ็นเซอร์ในมอนิเตอร์พอร์ตอนุกรม

ในบทความนี้เราจะดูการเชื่อมต่อและการทำงานกับเซ็นเซอร์ระยะ IR ของ SHARP GP2Y0A02YK0F
เซ็นเซอร์นี้มีช่วงการวัดที่พอประมาณกว่ามาก แต่ยังคงมีคุณสมบัติเฉพาะที่มีประโยชน์หลายประการ ซึ่งต่างจากเซนเซอร์แบบเดียวกัน ตัวอย่างเช่น เซ็นเซอร์นี้ช่วยให้คุณวัดระยะทางได้แม้ผ่านพื้นผิวโปร่งใส (แม้ว่าจะสูญเสียความแม่นยำในการอ่าน แต่ยังคง)

การเชื่อมต่อเซ็นเซอร์:

จีเอ็นดีไปยังพิน GND ใด ๆ --- Arduino

ออกไปยังอินพุตอะนาล็อกใด ๆ ของ Arduino (ในตัวอย่างที่เชื่อมต่อกับ A0)

วีซีซีที่ +5 โวลต์บน Arduino

ลักษณะทางเทคนิคหลัก:

ช่วงการวัดระยะทาง: 20 ถึง 150 ซม

เอาท์พุทแบบอะนาล็อก

ขนาด: 29.5x13x21.6 มม

การบริโภคปัจจุบัน: 33 mA

แรงดันไฟฟ้า: 4.5 ถึง 5.5 V

จะต้องแตกไฟล์และเพิ่มลงในโฟลเดอร์ "libraries" ในโฟลเดอร์ Arduino IDE อย่าลืมรีบูตสภาพแวดล้อมหาก IDE เปิดอยู่เมื่อคุณเพิ่มเข้าไป

ห้องสมุดแห่งนี้มีความพิเศษอย่างไร และเหตุใดจึงแนะนำให้ใช้? คำตอบนั้นง่ายและอยู่ในหลักการทำงานของมัน ในการวัดระยะทางนั้นมีการใช้การวัดหลายอย่างซึ่งการวัดที่ผิดพลาดจะถูกละทิ้งไปซึ่งแตกต่างจากการวัดที่อยู่ใกล้เคียงมาก ตามที่ผู้เขียนระบุ 12% ของการอ่านทั้งหมดมีส่วนทำให้เกิดข้อผิดพลาด 42% กับค่าระยะทางสุดท้าย หากไม่ละทิ้งการวัดที่ผิดพลาด

มาดูโค้ดโปรแกรมกันดีกว่า - ตัวอย่างการทำงานกับเซ็นเซอร์ (ตัวอย่างนี้เหมาะสำหรับเซ็นเซอร์ GP2Y0A21Y ด้วยในโค้ดคุณจะต้องเปลี่ยนค่าโมเดลเป็น 1,080):

รหัสตัวอย่าง

#รวม #กำหนด ir A0 //พินที่เชื่อมต่อกับเซ็นเซอร์ อนาล็อกแน่นอน!#กำหนดรุ่น 20150 // รุ่นเซ็นเซอร์ 1080 สำหรับ GP2Y0A21Y, 20150 สำหรับ GP2Y0A02Y SharpIR SharpIR (ir, รุ่น); เป็นโมฆะ ติดตั้ง () { อนุกรม.เริ่มต้น(9600); ) เป็นโมฆะ วนซ้ำ() ( ล่าช้า (2000); pepe1 ยาวที่ไม่ได้ลงนาม=มิลลิวินาที (); // ทำเครื่องหมายเวลาก่อนเริ่มการวัด int dis=SharpIR .distance(); // รับระยะห่างจากเซ็นเซอร์ อนุกรม.print("ระยะทางเฉลี่ย: "); // ส่งออกระยะทางไปยังมอนิเตอร์พอร์ต อนุกรม.println(dis); pepe2 แบบยาวที่ไม่ได้ลงนาม = มิลลิวินาที () -pepe1; // นับเวลาที่ใช้ในการวัด อนุกรม.print("เวลาที่ใช้ (ms): "); //และแสดงมัน อนุกรม.println(pepe2); )

เรนจ์ไฟนเดอร์

ในบทช่วยสอนนี้ เราจะมาดูรายละเอียดเกี่ยวกับเครื่องวัดระยะอย่างละเอียด

เครื่องค้นหาระยะอัลตราโซนิกHC-SR04

วันนี้ (2559) ราคาใน AliExpress ไม่เกิน 1 ดอลลาร์

เซ็นเซอร์มี 4 เอาต์พุต:

  • Vcc – พินนี้จ่ายไฟ 5V
  • ตรีโกณมิติ – ต้องใช้ตรรกะกับพินนี้เป็นเวลา 10 μs เพื่อให้เรนจ์ไฟนเดอร์ปล่อยคลื่นอัลตราโซนิก
  • เสียงสะท้อน - หลังจากที่คลื่นอัลตราโซนิกกลับมา ตรรกะจะถูกนำไปใช้กับการสัมผัสนี้เป็นระยะเวลาตามสัดส่วนของระยะห่างจากวัตถุ
  • Gnd – พินนี้เชื่อมต่อกับกราวด์

เครื่องวัดระยะอัลตราโซนิก - ทำงานบนหลักการ "ค้างคาว" โดยจะส่งคลื่นอัลตราโซนิคออกไปและนับเวลาที่คลื่นจะกลับมา เมื่อทราบความเร็วของเสียงและเวลาที่คลื่นกลับมา คุณจึงสามารถคำนวณระยะห่างจากวัตถุได้

เมื่อใช้เรนจ์ไฟนนี้เราจะประกอบเซ็นเซอร์จอดรถขนาดเล็กซึ่งสามารถขยายและประกอบเป็นอุปกรณ์สำเร็จรูปสำหรับการจอดรถได้ ฉันจะแสดงให้คุณเห็นว่าคุณสามารถใช้เรนจ์ไฟนเดอร์เพื่อควบคุมอุปกรณ์ของคุณได้อย่างไร

เรนจ์ไฟนเดอร์

เรามารวบรวมแผนภาพง่ายๆ เพื่อทำความเข้าใจวิธีการทำงานของเรนจ์ไฟนเดอร์กันดีกว่า

รหัส

#define ECHO 13 #define TRIG 12 การตั้งค่าเป็นโมฆะ() ( pinMode(ECHO, INPUT); // ECHO จำเป็นต้องตั้งค่าเป็นตรรกะหนึ่ง pinMode(TRIG, OUTPUT); // จาก TRIG เราจะอ่านค่าระยะทาง Serial.begin (9600); //สร้างการเชื่อมต่อกับพอร์ตอนุกรม ) void loop() ( //ส่งไปที่ TRIG HIGH และทันที LOW digitalWrite(TRIG, HIGH); digitalWrite(TRIG, LOW); //อ่านความยาวของ สัญญาณขาเข้าในหน่วยไมโครวินาที int dist = pulseIn (ECHO, HIGH) / 54; // หารด้วย 54 เพื่อแปลงการอ่านเป็น cm Serial.println (dist); // ส่งออกการอ่านเรนจ์ไฟนในความล่าช้าแบบอนุกรม (300); // เรา รออีกหน่อยเพื่อให้ตามีเวลาแยกแยะค่าที่อ่านได้)

คำอธิบาย

ชีพจรใน(เอคโค่สูง);- เมื่อใช้ฟังก์ชันนี้ เราจะนับเวลาที่ตั้งค่าพิน ECHO ไว้ที่ HIGH เวลานี้นับเป็นไมโครวินาที

โดยทั่วไปแล้ว PulseIn(); สามารถเขียนได้ดังนี้:

พัลส์อิน (พิน, ค่า, หมดเวลา);

เข็มหมุด– ปักหมุดว่าจะคำนวณเวลาใด

ความหมาย– ระดับของสัญญาณที่คาดหวังซึ่งจะดำเนินการนับ สูงหรือต่ำ

หมดเวลา– เวลาเป็นไมโครวินาทีในระหว่างที่สัญญาณคาดว่าจะมาถึง เมื่อหมดเวลา ค่าที่ส่งคืนโดยฟังก์ชันจะถูกตั้งค่าเป็นศูนย์

ดังนั้นเราจึงหาหลักการทำงานของเรนจ์ไฟนเดอร์ได้ ถึงเวลาทำเซ็นเซอร์จอดรถสำหรับรถของเล่น

ปาร์คโทรนิค

แผนภาพเซ็นเซอร์จอดรถมีลักษณะดังนี้:

#define ECHO 3 // รับสัญญาณจาก rangefinder #define TRIG 2 // ส่งสัญญาณไปยัง rangefinder #define COUNT 5 // จำนวน LEDs #define BUZZ 6 // Pin สำหรับออด #define FIRST 9 // First พินของ LED #define dist_setup 1 // ปัจจัยการปรับแต่ง #define ความถี่ 5,000 การตั้งค่าเป็นโมฆะ () ( สำหรับ (int i = 0; i< COUNT; ++i) //Обозначаем светодиоды как выход... { pinMode(i+FIRST, OUTPUT); } pinMode(ECHO, INPUT); //...ECHO как вход... pinMode(TRIG, OUTPUT); //...TRIG как выход... pinMode(BUZZ, OUTPUT); //...пищалку как выход Serial.begin(9600); //Установим соединение с Serial } void loop() { digitalWrite(TRIG, HIGH); //Подаем команду на дальномер digitalWrite(TRIG, LOW); int dist = pulseIn(ECHO, HIGH) / 54; //Измеряем расстояние до объекта dist = constrain(dist, 2, 60); //Полученные значения загоняем в диапазон от 2 до 60 //Сравниваем полученные показания и включаем нужный режим if (dist < 10) { all_led_on(); } else if (dist < 20 * dist_setup) { four_led_on(); } else if (dist < 30 * dist_setup) { three_led_on(); } else if(dist < 40 * dist_setup) { two_led_on(); } else if(dist < 50 * dist_setup) { one_led_on(); } else { for(int i = 0; i < COUNT; ++i) { digitalWrite(i+FIRST, LOW); } noTone(BUZZ); } } // Описание режимов void one_led_on() { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, LOW); digitalWrite(13, HIGH); tone (BUZZ, frequency, 1000); delay(1000); } void two_led_on() { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); digitalWrite(12, HIGH); digitalWrite(13, HIGH); tone(BUZZ, frequency, 700); delay(700); } void three_led_on() { digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); tone(BUZZ, frequency, 400); delay(400); } void four_led_on() { digitalWrite(9, LOW); digitalWrite(10, HIGH); digitalWrite(11, HIGH); digitalWrite(12, HIGH); digitalWrite(13, HIGH); tone(BUZZ, frequency, 200); delay(200); } void all_led_on() { for(int i = 0; i < COUNT; ++i) { digitalWrite(i+FIRST, HIGH); } tone(BUZZ, frequency, 5000); delay(5000); }

คำอธิบาย

Parktronic ติดตั้งไฟ LED และเสียง เมื่อวัตถุเข้าใกล้ภายในระยะทางที่กำหนด จะได้ยินเสียงบี๊บบ่อยขึ้น และไฟ LED จำนวนมากจะสว่างขึ้น

dist_ ติดตั้ง – นี่คือค่าสัมประสิทธิ์ที่คุณสามารถปรับระยะห่างก่อนที่เซ็นเซอร์จอดรถจะเริ่มทำงาน

สำหรับฉันมันเท่ากับหนึ่ง หากต้องการลดระยะทางต้องลดค่าสัมประสิทธิ์ แต่จะอยู่ในรูป 0.xxx เมื่อต้องการทำเช่นนี้ จะมีการแนะนำตัวแปรประเภท float

ความถี่การรับสารภาพยังสามารถเปลี่ยนแปลงได้ ในการดำเนินการนี้ คุณจะต้องเปลี่ยนค่า ความถี่ . แต่คุณควรจำไว้ว่าตัวส่งสัญญาณ Piezo ส่งเสียงบี๊บดังมาก อย่างที่สุด. และสำหรับฉันดูเหมือนว่ามันจะทำให้คุณท้อใจอย่างรวดเร็วจากการใช้งานต่อไปหรือนานกว่า 5 นาที

อีกทางเลือกหนึ่งคือลดความถี่ลงเหลือ 20 Hz หรือเชื่อมต่อลำโพง 8 โอห์มปกติ เป็นต้น

รหัสผ่าน

ตอนนี้เรามาลองสร้างรหัสลับที่ทำให้ไฟ LED สว่างขึ้น และหากคุณรวมเซอร์โวมอเตอร์พร้อมสลักไว้ในวงจร คุณสามารถล็อคประตูหรือลิ้นชักด้วยรหัสผ่านได้

ให้ความสนใจกับแผนภาพ

รหัส

// พินของเรนจ์ไฟนจ์ตัวแรก #กำหนด TRIG1 12 #กำหนด ECHO1 13 // พินของเรนจ์ไฟนที่สอง #กำหนด TRIG2 10 #กำหนด ECHO2 11 // LEDs #define FIRST 3 #define COUNT 5 // ปุ่มรีเซ็ต #กำหนด RESET 2 / /ตัวแปรรหัสผ่าน int key1; int คีย์2; int คีย์ 3; การตั้งค่าเป็นโมฆะ () ( // การกำหนด LED เป็นเอาต์พุตสำหรับ (int i = 0; i< COUNT; i++) { pinMode(i+FIRST, OUTPUT); } //Обозначение пинов на дальномерах pinMode(TRIG1, OUTPUT); pinMode(ECHO1, INPUT); pinMode(TRIG2, OUTPUT); pinMode(ECHO2, INPUT); pinMode(RESET, INPUT_PULLUP); } void loop() { //Подача сигнала на дальномеры digitalWrite(TRIG2, HIGH); digitalWrite(TRIG2, LOW); int dist2 = pulseIn(ECHO2, HIGH,3000) / 54; digitalWrite(TRIG1, HIGH); digitalWrite(TRIG1, LOW); int dist1 = pulseIn(ECHO1, HIGH) / 54; //Дополнительная индикация "ввода" символов if(dist1 < 10 && dist2 < 10) { digitalWrite(5, HIGH); delay(100); } if(dist2 >20 && dist2< 25) { digitalWrite(4, HIGH); delay(100); } if(dist1 >20 && เขต 1< 25) { digitalWrite(6, HIGH); delay(100); } //Код пароля + индикация "ввода" символов if(dist2 >10 && dist2<15) { key1 = 1; digitalWrite(3, HIGH); delay(100); } if(dist1 >10 && ระยะทาง 1< 15) { digitalWrite(7, HIGH); delay(100); key1 = 0; } if(dist1 >20 && เขต 1< 25 && key1 == 1) { key2 = 1; } else if(dist2 >20 && dist2<25 || key1 == 0) { key1 = 0; key2 = 0; } if(dist1 < 10 && dist2 < 10 && key2 == 1) { key3 = 1; } if(key3 == 1) { for(int i = 0; i < COUNT; i++) { digitalWrite(i + FIRST, HIGH); } } if(key3 == 0) { for(int i = 0; i < COUNT; i++) { digitalWrite(i + FIRST, LOW); } } //Сброс пароля boolean res = digitalRead(RESET); if(res == 0) { key1 = 0; key2 = 0; key3 = 0; } }

คำอธิบาย

เพื่อให้ไฟ LED ทั้งห้าดวงสว่างขึ้น คุณจำเป็นต้องทราบลำดับการดำเนินการที่ต้องทำ นี่คืองานสำหรับคุณ - “แม้จะมีคำอธิบายด้านล่าง แต่ให้พิจารณาว่าจะต้องดำเนินการลำดับใดเพื่อให้ไฟ LED ทั้งห้าดวงสว่างขึ้น”

นี่เป็นงานที่ทำได้หากคุณได้อ่านส่วนแรกของหลักสูตรแล้วและเข้าใจวิธีการทำงานของฟังก์ชันนี้ ถ้า().

เข้าใจแล้ว? ถ้าใช่ก็ทำได้ดี แต่ถ้าไม่ก็เกือบจะทำได้ดี

มี "อักขระอินพุต" ทั้งหมดสามตัว ได้แก่ ตั้งแต่ 0 ถึง 10, ตั้งแต่ 10 ถึง 15 และตั้งแต่ 20 ถึง 25

สถานะตั้งแต่ 0 ถึง 10 จะถูกเปิดใช้งานหากคุณนำมือทั้งสองข้างไปที่ระยะ 0 ถึง 10 ซม. ไปยังเครื่องวัดระยะทั้งสอง หากคุณทำเช่นนี้ ไฟ LED สีเหลืองจะสว่างขึ้น

สถานะ 10 ถึง 15 จะเปิดขึ้นเมื่อคุณยกมือไปทางขวาหรือซ้ายที่ระยะ 10 ถึง 15 ซม. ไฟ LED ด้านซ้ายสุดสำหรับมือซ้ายและ LED ขวาสุดสำหรับมือขวาจะบอกคุณว่าการกระทำนี้เกิดขึ้นแล้ว สมบูรณ์.

สถานะตั้งแต่ 20 ถึง 25 จะเปิดขึ้นในขณะที่ระยะห่างจากมือถึงเรนจ์ไฟนเดอร์ตัวใดตัวหนึ่งอยู่ระหว่าง 20 ถึง 25 ซม. คุณจะได้รับแจ้งเกี่ยวกับสิ่งนี้โดยวินาทีจากด้านซ้ายและวินาทีจากไฟ LED ด้านขวาสำหรับ มือซ้ายและขวาตามลำดับ

เป็นที่น่าสังเกตว่าต้องปฏิบัติตามลำดับอย่างเคร่งครัด

  • นำมือขวาของคุณไปเป็นระยะทาง 10 ถึง 15
  • หลังจากที่ไฟ LED ขวาสุดสว่างขึ้น ให้ยกมือซ้ายของคุณไปยังระยะ 20 ถึง 25 ทั้งหมดนี้ทำได้โดยไม่ต้องเปลี่ยนตำแหน่งของมือขวา
  • หลังจากที่ไฟ LED อันที่สองจากด้านซ้ายปรากฏขึ้น ให้เลื่อนมือซ้ายไปทางซ้ายเพื่อไม่ให้ไฟ LED ซ้ายสุดสว่างขึ้น ไม่เช่นนั้นจะต้องป้อนรหัสก่อน นำมือขวาของคุณเข้ามาใกล้ในระยะ 0 ถึง 10 และนำมือซ้ายของคุณไปไว้ในระยะเดียวกันโดยไม่ต้องสัมผัสระยะห่างจาก 10 ถึง 15
  • ไฟ LED ควรสว่างและไม่ตอบสนองต่อการกระทำของคุณ
  • กดปุ่ม RESET เพื่อรีเซ็ตรหัสผ่าน ไฟ LED ควรดับลง

การย้ายผิดแต่ละครั้งจะรีเซ็ตรหัสผ่านและต้องป้อนอีกครั้ง มันอาจไม่ได้ผลในครั้งแรก แต่หลังจากฝึกฝนไม่กี่นาที ฉันแน่ใจว่าทุกอย่างจะเรียบร้อยและไฟ LED จะสว่างขึ้น

หลังจากที่คุณจัดการให้ไฟ LED ทั้งหมดสว่างขึ้นแล้ว คุณสามารถทดสอบตัวเองและเปลี่ยนรหัสเพื่อให้ลำดับแตกต่างออกไปได้ ขึ้นอยู่กับดุลยพินิจของคุณ คุณสามารถสร้าง "สัญลักษณ์" ได้มากขึ้นหรือจะคงไว้เหมือนเดิมก็ได้ แต่สร้างแต่ละสัญลักษณ์โดยใช้เครื่องวัดระยะสองตัว นี่จะเป็นงานให้คุณตัดสินใจด้วยตัวเอง

เครื่องค้นหาระยะอินฟราเรดคม

ด้วยเรนจ์ไฟนเดอร์เหล่านี้ ทุกอย่างจะง่ายขึ้นไปอีก จำเป็นต้องเชื่อมต่อเหมือนกับเซ็นเซอร์แอนะล็อกทั้งหมด และสามารถทำได้โดยไม่ต้องใช้ตัวต้านทาน 10 kOhm หากคุณไม่ทราบวิธีการทำเช่นนี้ด้วยเหตุผลบางอย่าง สิ่งนี้ได้อธิบายไว้ในบทความของฉันเกี่ยวกับ

แดมิน

มีเครื่องดนตรีเช่นแดมิน และตอนนี้เราจะรวบรวมความคล้ายคลึงกันของเครื่องมือนี้

รหัส

// กำหนดเรนจ์ไฟน ปุ่ม และออด #define RFIND A5 #define BUT 9 #define BUZ 8 // ตัวแปรบูลีนสำหรับปุ่ม bool sound_on = false; บูล but_up = จริง; การตั้งค่าเป็นโมฆะ() ( pinMode(RFIND, INPUT); pinMode(BUZ, OUTPUT); pinMode(BUT,INPUT_PULLUP); ) void loop() ( //รหัสสำหรับเปิดและปิดแดมิน bool but_now = digitalRead(BUT); if( but_up && !but_now) (ล่าช้า(10); bool but_now = digitalRead(BUT); if(!but_now) ( sound_on = !sound_on; ) ) but_up = but_now; //รหัสสำหรับ theremin if(sound_on == 1) ( int val, freq; val = analogRead(RFIND); // คุณสามารถเล่นกับค่าของ constrain และ map ได้ตามต้องการ val = constrain(val, 100, 400); freq = map(val, 100, 400) , 1,000, 2500); โทน(BUZ, ความถี่, 20); ) )

คำอธิบาย

หากคุณกดปุ่ม จะได้ยินเสียงบี๊บหรือลำโพง ขึ้นอยู่กับสิ่งที่คุณเชื่อมต่อ ซึ่งจะแตกต่างกันไปตามระยะห่างจากเรนจ์ไฟนเดอร์ถึงมือของคุณ

จำเป็นต้องมีปุ่มเพื่อหยุดหรือเริ่ม "Theremin" ของเรา

บรรทัดล่าง

วันนี้เราได้มาดูรายละเอียดเกี่ยวกับเครื่องวัดระยะและทำการทดลองเล็กๆ หลายครั้ง ซึ่งสองการทดลองนี้สามารถนำไปใช้ในชีวิตจริงได้ เซ็นเซอร์จอดรถจะช่วยให้คุณจอดรถได้ และสามารถปรับปรุง Code Lock ในลักษณะที่เมื่อคุณป้อนรหัสผ่านที่ถูกต้อง เซอร์โวมอเตอร์จะเปิดสลักที่ประตูห้องของคุณ เป็นต้น

รายชื่อธาตุกัมมันตภาพรังสี

การกำหนด พิมพ์ นิกาย ปริมาณ บันทึกร้านค้าสมุดบันทึกของฉัน
โครงการที่ 1
บอร์ดอาร์ดูโน่

อาร์ดูโน่ อูโน่

1 ไปยังสมุดบันทึก
คณะกรรมการขนมปังBreadboard ครึ่ง1 ไปยังสมุดบันทึก
การเชื่อมต่อสายไฟ“ป๊า-ป๊า”4 ไปยังสมุดบันทึก
เรนจ์ไฟนเดอร์HC-SR042 ไปยังสมุดบันทึก
โครงการที่ 2
บอร์ดอาร์ดูโน่

อาร์ดูโน่ อูโน่

1 ไปยังสมุดบันทึก
เรนจ์ไฟนเดอร์HC-SR041 ไปยังสมุดบันทึก
การเชื่อมต่อสายไฟ“ป๊า-ป๊า”15 ไปยังสมุดบันทึก
คณะกรรมการขนมปังBreadboard ครึ่ง1 ไปยังสมุดบันทึก
ตัวปล่อย Piezo 1 ไปยังสมุดบันทึก
ตัวต้านทาน

220 โอห์ม

1 ไปยังสมุดบันทึก
ไดโอดเปล่งแสง

AL102B

2 ไปยังสมุดบันทึก
ไดโอดเปล่งแสง

AL307V

1 ไปยังสมุดบันทึก
ไดโอดเปล่งแสง

AL307D

2 ไปยังสมุดบันทึก
โครงการที่ 3
บอร์ดอาร์ดูโน่

อาร์ดูโน่ อูโน่

1 ไปยังสมุดบันทึก
เรนจ์ไฟนเดอร์HC-SR042 ไปยังสมุดบันทึก
ตัวต้านทาน

220 โอห์ม

5
กำลังโหลด...กำลังโหลด...