Views: 164 Author: Grace Publish Time: 2021-07-26 ຕົ້ນກຳເນີດ: ເວັບໄຊ
ໄດ້ ເຊັນເຊີ ultrasonic HC-SR04 ແມ່ນຫນຶ່ງໃນໂມດູນການວັດແທກໄລຍະຫ່າງທີ່ນິຍົມທີ່ສຸດສໍາລັບໂຄງການ Arduino. ມັນຖືກນໍາໃຊ້ຢ່າງກວ້າງຂວາງໃນຫຸ່ນຍົນຫຼີກເວັ້ນອຸປະສັກ, ເຊັນເຊີບ່ອນຈອດລົດ, ການກວດສອບລະດັບ, ຖັງຂີ້ເຫຍື້ອອັດສະລິຍະ, ເຄື່ອງວັດແທກໄລຍະຫ່າງ, ແລະຄໍາຮ້ອງສະຫມັກອື່ນໆທີ່ບໍ່ມີການຮັບຮູ້ການຕິດຕໍ່.
ໂມດູນປ່ອຍຄື້ນ ultrasonic 40kHz ຜ່ານເຄື່ອງສົ່ງສັນຍານ. ເມື່ອຄື້ນສຽງພົບກັບວັດຖຸ, ມັນຈະສະທ້ອນກັບຄືນໄປຫາຜູ້ຮັບ. ໂດຍການວັດແທກເວລາຂອງສຽງສະທ້ອນແລະໃຊ້ຄວາມໄວຂອງສຽງ, Arduino ສາມາດຄິດໄລ່ໄລຍະຫ່າງລະຫວ່າງເຊັນເຊີແລະວັດຖຸ.
| ພາລາມິເຕີ | ມູນຄ່າ |
| ແຮງດັນທີ່ເຮັດວຽກປົກກະຕິ | 5V DC |
| ປະຈຸບັນເຮັດວຽກຄົງທີ່ | ໜ້ອຍກວ່າ 5mA ໃນບາງລຸ້ນໂມດູນ |
| ຄວາມຖີ່ຂອງການດໍາເນີນການ | ຄື້ນ ultrasonic 40kHz |
| ໄລຍະຫ່າງຂອງການກວດຫາ | ລະດັບທົ່ວໄປ: 2cm ຫາ 400cm; ບາງລຸ້ນທີ່ປັບຕົວເພີ່ມອາດຈະຮອງຮັບໄລຍະທີ່ຍາວກວ່າ. |
| ມຸມກວດຈັບ | ປົກກະຕິແລ້ວພາຍໃນ 15 ອົງສາ; ບາງລຸ້ນທີ່ມີການເພີ່ມສູງຂຶ້ນອາດຈະສູງເຖິງ 30 ອົງສາ. |
| ຄວາມຊັດເຈນ | ເຖິງປະມານ 0.3cm ພາຍໃຕ້ເງື່ອນໄຂການທົດສອບທີ່ເຫມາະສົມ |
| ເຂດຕາບອດ | ໄລຍະຫ່າງການວັດແທກຕໍາ່ສຸດທີ່ປະມານ 2 ຊມ |
ໂມດູນ ultrasonic HC-SR04 ມີສີ່ເຂັມ: VCC, TRIG, ECHO, ແລະ GND. Arduino ສົ່ງກໍາມະຈອນກະຕຸ້ນສັ້ນໄປຫາ PIN TRIG, ຈາກນັ້ນອ່ານກໍາມະຈອນກັບຄືນຈາກ ECHO pin.
| HC-SR04 Pin | ການເຊື່ອມຕໍ່ Arduino | ຟັງຊັນ |
| VCC | 5V | ການສະຫນອງພະລັງງານສໍາລັບໂມດູນ ultrasonic. |
| TRIG | ດິຈິຕອລ pin 9 | ກະຕຸ້ນການປ້ອນຂໍ້ມູນ. Arduino ນຳໃຊ້ກຳມະຈອນ 10us ເພື່ອເລີ່ມລະດັບ. |
| ແອັກໂກ້ | ດິຈິຕອລ pin 10 | ຜົນຜະລິດສຽງສະທ້ອນ. Arduino ອ່ານຄວາມກວ້າງຂອງກໍາມະຈອນເພື່ອຄິດໄລ່ໄລຍະທາງ. |
| GND | GND | ການເຊື່ອມຕໍ່ພື້ນດິນ. |
HC-SR04 ເຮັດວຽກໂດຍການວັດແທກເວລາຂອງການບິນ. Arduino ສົ່ງສັນຍານ trigger ລະດັບສູງຢ່າງຫນ້ອຍ 10 microseconds ໄປຫາ pin TRIG. ໂມດູນຫຼັງຈາກນັ້ນອັດຕະໂນມັດສົ່ງແປດ 40kHz ultrasonic pulses ແລະລໍຖ້າສໍາລັບສຽງສະທ້ອນ.
ເມື່ອກວດພົບສັນຍານ ultrasonic ທີ່ສະທ້ອນອອກມາ, ເຂັມປັກໝຸດ ECHO ຈະສົ່ງກຳມະຈອນໃນລະດັບສູງ. ໄລຍະເວລາຂອງກໍາມະຈອນນີ້ແມ່ນໄລຍະເວລາການເດີນທາງຕະຫຼອດຂອງຄື້ນ ultrasonic.
ໄລຍະເວລາ = Echo ລະດັບສູງເວລາ × ຄວາມໄວຂອງສຽງ / 2
ໃນລະຫັດ Arduino, ສູດທີ່ງ່າຍດາຍທົ່ວໄປແມ່ນ:
ໄລຍະຫ່າງໃນ cm = ໄລຍະເວລາ × 0.0343 / 2
ຂະບວນການກໍານົດເວລາແມ່ນງ່າຍດາຍ: Arduino ຮັກສາ TRIG ຕ່ໍາໂດຍຫຍໍ້, ສົ່ງກໍາມະຈອນສູງ 10us, ຫຼັງຈາກນັ້ນກັບຄືນ TRIG ຕ່ໍາ. HC-SR04 ສົ່ງສຽງລະເບີດ ultrasonic ແລະຕັ້ງ ECHO ສູງຈົນກ່ວາສັນຍານສະທ້ອນກັບຄືນຫຼືເວລາການວັດແທກອອກ.
ເພື່ອຫຼີກເວັ້ນການອ່ານທີ່ບໍ່ຄົງທີ່, ປ່ອຍໃຫ້ຄວາມລ່າຊ້າລະຫວ່າງການວັດແທກ. ວົງຈອນການວັດແທກປະມານ 60ms ຖືກນໍາໃຊ້ໂດຍທົ່ວໄປເພື່ອໃຫ້ສຽງສະທ້ອນ ultrasonic ທີ່ຜ່ານມາມີເວລາທີ່ຈະຫາຍໄປກ່ອນທີ່ຈະກະຕຸ້ນຕໍ່ໄປ.
ຟັງຊັນ Arduino pulseIn() ຖືກນໍາໃຊ້ເພື່ອວັດແທກໄລຍະເວລາຂອງ PIN ດິຈິຕອລຢູ່ທີ່ສູງຫຼືຕໍ່າ. ສໍາລັບ HC-SR04, Arduino ໃຊ້ pulseIn(echoPin, HIGH) ເພື່ອອ່ານຄວາມກວ້າງຂອງກໍາມະຈອນໃນລະດັບສູງຈາກ ECHO pin.
| syntax | ຄວາມຫມາຍ |
| PulseIn(pin, ຄ່າ) | ອ່ານໄລຍະເວລາຂອງກຳມະຈອນສູງ ຫຼືຕ່ຳ. |
| PulseIn(pin, ຄ່າ, ໝົດເວລາ) | ອ່ານກຳມະຈອນດ້ວຍຄ່າເວລາໝົດເວລາເປັນໄມໂຄວິນາທີ. |
ແນະນຳໃຫ້ໃຊ້ເວລາໝົດເວລາ. ຖ້າບໍ່ມີສຽງສະທ້ອນຄືນ, ຟັງຊັນສາມາດຢຸດເຊົາການລໍຖ້າແລະກັບຄືນ 0 ແທນທີ່ຈະຂັດຂວາງໂຄງການດົນເກີນໄປ.
ສາຍໄຟແມ່ນກົງໄປກົງມາ. ເຊື່ອມຕໍ່ VCC ກັບ 5V, GND ກັບ GND, TRIG ໄປຫາ pin ປ້ອນຂໍ້ມູນດິຈິຕອນ Arduino, ແລະ ECHO ກັບ pin ປ້ອນຂໍ້ມູນດິຈິຕອນ Arduino. ຕົວຢ່າງຕໍ່ໄປນີ້ໃຊ້ Arduino Uno, TRIG ໃນ pin 9, ແລະ ECHO ໃນ pin 10.
ໂປຣແກມ Arduino ປົກກະຕິຕໍ່ໄປນີ້ຈະສົ່ງກຳມະຈອນກະຕຸ້ນ 10us, ອ່ານຄວາມກວ້າງຂອງກຳມະຈອນ ECHO, ຄິດໄລ່ໄລຍະຫ່າງເປັນຊັງຕີແມັດ, ແລະພິມຜົນອອກມາໃນ Serial Monitor.
const int trigPin = 9; const int echoPin = 10; ໄລຍະເວລາຍາວ; float distanceCm; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); delayMicrosconds(2); digitalWrite(trigPin, HIGH); delayMicrosconds(10); digitalWrite(trigPin, ຕ່ຳ); ໄລຍະເວລາ = pulseIn(echoPin, HIGH, 30000); ຖ້າ (ໄລຍະເວລາ == 0) { Serial.println('ນອກຂອບເຂດ'); } else { distanceCm = ໄລຍະເວລາ * 0.0343 / 2; Serial.print('ໄລຍະທາງ: '); Serial.print(distanceCm); Serial.println('ຊມ'); } delay(60); }
ຖ້າທ່ານເຫັນຄ່າໄລຍະຫ່າງໃນ Serial Monitor, ເຊັນເຊີ ultrasonic HC-SR04 ແລະສາຍໄຟ Arduino ເຮັດວຽກຢ່າງຖືກຕ້ອງ. ຫຼັງຈາກນັ້ນ, ທ່ານສາມາດນໍາໃຊ້ຂໍ້ມູນໄລຍະຫ່າງສໍາລັບການກວດພົບອຸປະສັກ, ການຄວບຄຸມການເຄື່ອນໄຫວຂອງຫຸ່ນຍົນ, ປະຕູອັດຕະໂນມັດ, ການແຈ້ງເຕືອນບ່ອນຈອດລົດ, ຫຼືໂຄງການລະດັບຂອງແຫຼວ.
ຮັກສາວັດຖຸທີ່ວັດແທກໄດ້ພາຍໃນຂອບເຂດທີ່ແນະນໍາ ແລະຢູ່ນອກເຂດຕາບອດ 2 ຊມ.
ໃຊ້ພື້ນຜິວເປົ້າຫມາຍຮາບພຽງແລະແຂງສໍາລັບການສະທ້ອນ ultrasonic ທີ່ດີກວ່າ.
ຫຼີກເວັ້ນການວັດແທກອ່ອນ, ມຸມ, ຮູຂຸມຂົນ, ຫຼືວັດສະດຸດູດສຽງ.
ໃຊ້ການສະຫນອງພະລັງງານ 5V ທີ່ຫມັ້ນຄົງແລະຮັກສາສາຍໄຟສັ້ນແລະປອດໄພ.
ເພີ່ມການໝົດເວລາໃຫ້ກັບ pulseIn() ເພື່ອປ້ອງກັນການປິດກັ້ນດົນໆເມື່ອບໍ່ມີສຽງດັງກັບຄືນມາ.
ການອ່ານຫຼາຍຄັ້ງໂດຍສະເລ່ຍ ຫຼືປານກາງເພື່ອຫຼຸດຜ່ອນສິ່ງລົບກວນ.
ສໍາລັບຄວາມຖືກຕ້ອງທີ່ສູງຂຶ້ນ, ຊົດເຊີຍອຸນຫະພູມເນື່ອງຈາກວ່າຄວາມໄວສຽງມີການປ່ຽນແປງກັບອຸນຫະພູມອາກາດ.
| ຄໍາຮ້ອງສະຫມັກ | ວິທີການໃຊ້ HC-SR04 |
| ຫຸ່ນຍົນຫຼີກເວັ້ນອຸປະສັກ | ກວດພົບວັດຖຸທີ່ຢູ່ໃກ້ຄຽງ ແລະຊ່ວຍໃຫ້ຫຸ່ນຍົນປ່ຽນທິດທາງ. |
| ເຊັນເຊີໄລຍະຫ່າງບ່ອນຈອດລົດ | ວັດແທກໄລຍະຫ່າງລະຫວ່າງຍານພາຫະນະແລະອຸປະສັກ. |
| ການກວດຫາລະດັບຂອງແຫຼວ | ວັດແທກໄລຍະຫ່າງຈາກເຊັນເຊີໄປຫາພື້ນຜິວຂອງແຫຼວໂດຍບໍ່ມີການຕິດຕໍ່. |
| ຖັງຂີ້ເຫຍື້ອອັດສະລິຍະ | ກວດພົບມື ຫຼືວັດຖຸທີ່ຢູ່ໃກ້ຄຽງ ແລະກະຕຸ້ນການເປີດຝາອັດໂນມັດ. |
ເພື່ອໃຊ້ເຊັນເຊີ ultrasonic HC-SR04 ກັບ Arduino, ເຊື່ອມຕໍ່ VCC ກັບ 5V, GND ກັບ GND, TRIG ກັບ pin ຜົນຜະລິດດິຈິຕອນ, ແລະ ECHO ກັບ pin ປ້ອນດິຈິຕອນ. ສົ່ງກຳມະຈອນກະຕຸ້ນ 10us, ອ່ານໄລຍະເວລາຂອງສຽງສະທ້ອນດ້ວຍ pulseIn(), ແລະຄຳນວນໄລຍະທາງດ້ວຍສູດເວລາຂອງການບິນ.
HC-SR04 ມີລາຄາຖືກ, ໃຊ້ງ່າຍ, ແລະເຫມາະສົມສໍາລັບໂຄງການວັດແທກໄລຍະຫ່າງ Arduino ຫຼາຍ. ເພື່ອຜົນໄດ້ຮັບທີ່ດີທີ່ສຸດ, ໃຫ້ເອົາໃຈໃສ່ກັບພື້ນຜິວເປົ້າຫມາຍ, ມຸມວັດແທກ, ເຂດຕາບອດ, ພະລັງງານທີ່ຫມັ້ນຄົງ, ການຈັດການເວລາຫມົດເວລາ, ແລະຜົນກະທົບຂອງອຸນຫະພູມ.
Arduino ສົ່ງກຳມະຈອນ 10us ໄປຫາ PIN TRIG. HC-SR04 ປ່ອຍແປດ 40kHz ultrasonic pulses ແລະຕັ້ງ ECHO pin ສູງຈົນກ່ວາສຽງສະທ້ອນກັບຄືນ. Arduino ວັດແທກເວລາກໍາມະຈອນນີ້ແລະຄິດໄລ່ໄລຍະທາງ.
ສູດແມ່ນໄລຍະຫ່າງ = ໄລຍະເວລາ × ຄວາມໄວຂອງສຽງ / 2. ໃນຊັງຕີແມັດ, ສູດ Arduino ທົ່ວໄປແມ່ນ distanceCm = ໄລຍະເວລາ × 0.0343 / 2, ເຊິ່ງໄລຍະເວລາແມ່ນວັດແທກເປັນ microseconds.
ເວລາສຽງສະທ້ອນທີ່ວັດແທກໄດ້ແມ່ນເວລາໄປມາຈາກເຊັນເຊີໄປຫາວັດຖຸ ແລະກັບຄືນໄປຫາເຊັນເຊີ. ການແບ່ງດ້ວຍ 2 ໃຫ້ໄລຍະຫ່າງທາງດຽວລະຫວ່າງເຊັນເຊີກັບວັດຖຸ.
ທ່ານສາມາດໃຊ້ pins ດິຈິຕອລ Arduino ສ່ວນໃຫຍ່. ໃນຕົວຢ່າງຈໍານວນຫຼາຍ, TRIG ແມ່ນເຊື່ອມຕໍ່ກັບ pins ດິຈິຕອນ 9 ແລະ ECHO ແມ່ນເຊື່ອມຕໍ່ກັບ pin ດິຈິຕອນ 10. ລະຫັດຕ້ອງກົງກັບ pins ທີ່ໃຊ້ໃນສາຍໄຟຂອງທ່ານ.
ສາເຫດທົ່ວໄປລວມມີສາຍໄຟວ່າງ, ໄຟ 5V ບໍ່ສະຖຽນ, ເລກ PIN TRIG ຫຼື ECHO ຜິດ, ບໍ່ມີວັດຖຸຢູ່ໃນຂອບເຂດ, ພື້ນຜິວທີ່ເປັນມຸມ, ວັດສະດຸອ່ອນ, ຫົວເຊັນເຊີທີ່ຖືກບລັອກ, ຫຼືບໍ່ມີເວລາໝົດເວລາໃນຟັງຊັນ pulseIn().
ເຂດຕາບອດແມ່ນໄລຍະຫ່າງຕໍາ່ສຸດທີ່ໂມດູນບໍ່ສາມາດວັດແທກຄວາມຫນ້າເຊື່ອຖືໄດ້. ສໍາລັບ HC-SR04, ເຂດຕາບອດປົກກະຕິແມ່ນປະມານ 2 ຊມ. ວັດຖຸທີ່ຢູ່ໃກ້ກວ່ານີ້ອາດຈະເຮັດໃຫ້ການອ່ານທີ່ບໍ່ຫມັ້ນຄົງ.
ແມ່ນແລ້ວ, HC-SR04 ສາມາດນໍາໃຊ້ໄດ້ສໍາລັບໂຄງການລະດັບນ້ໍາທີ່ບໍ່ຕິດຕໍ່ແບບງ່າຍດາຍຖ້າເຊັນເຊີຖືກປ້ອງກັນຈາກຄວາມຊຸ່ມຊື່ນແລະຕິດຕັ້ງຢູ່ເທິງພື້ນຜິວຂອງແຫຼວ. ສໍາລັບຖັງທີ່ມີຄວາມຊຸ່ມຊື່ນ, ກາງແຈ້ງ, ຫຼືຖັງອຸດສາຫະກໍາ, ເຊັນເຊີ ultrasonic ກັນນ້ໍາແມ່ນແນະນໍາ.
ໃຊ້ການສະຫນອງພະລັງງານທີ່ຫມັ້ນຄົງ, ຮັກສາເຊັນເຊີຕັ້ງຂວາງກັບເປົ້າຫມາຍ, ຫຼີກເວັ້ນການດ້ານອ່ອນຫຼືມຸມ, ເພີ່ມ pulseIn timeout, ໃຊ້ເວລາອ່ານຫຼາຍ, ໃຊ້ການກັ່ນຕອງປານກາງ, ແລະອະນຸຍາດໃຫ້ປະມານ 60ms ລະຫວ່າງການວັດແທກ.