สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
สวัสดีทุกคน, วันนี้ฉันจะแสดงให้คุณเห็นว่าคุณสามารถเชื่อมต่อเซ็นเซอร์เอฟเฟกต์ฮอลล์กับ Arduino และใช้งานด้วยการขัดจังหวะได้อย่างไร
เครื่องมือและวัสดุที่ใช้ในวิดีโอ (ลิงก์พันธมิตร): Arduino Uno:
Hall effect เซ็นเซอร์:
ตัวต้านทานสารพัน:
ขั้นตอนที่ 1: เซนเซอร์ Hall Effect คืออะไร?
Hall effect sensor เป็นอุปกรณ์ที่ใช้ในการวัดขนาดของสนามแม่เหล็ก แรงดันไฟขาออกเป็นสัดส่วนโดยตรงกับความแรงของสนามแม่เหล็กที่ไหลผ่าน
เซนเซอร์ Hall Effect ใช้สำหรับการตรวจจับระยะใกล้ การวางตำแหน่ง การตรวจจับความเร็ว และการตรวจจับปัจจุบัน
ตัวที่ฉันจะร่วมงานด้วยในวันนี้มีชื่อว่า 3144 ซึ่งเป็นสวิตช์เอฟเฟกต์ฮอลล์ซึ่งส่วนใหญ่ใช้สำหรับอุณหภูมิสูงและการใช้งานในยานยนต์ เอาต์พุตจะสูงโดยค่าเริ่มต้นและลดลงเมื่ออยู่ในสนามแม่เหล็ก
เซ็นเซอร์มี 3 พิน VCC กราวด์และเอาต์พุต คุณสามารถระบุได้ตามลำดับหากคุณถือเซ็นเซอร์โดยให้ฉลากหันเข้าหาตัวคุณ VCC อยู่ทางซ้าย และเอาท์พุตอยู่ทางด้านขวา เพื่อป้องกันแรงดันตกคร่อม ตัวต้านทาน 10k จะถูกใช้ระหว่าง VCC และเอาต์พุตในการกำหนดค่าแบบดึงขึ้น
ขั้นตอนที่ 2: การขัดจังหวะคืออะไร?
ในการเชื่อมต่อเซ็นเซอร์กับ Arduino เราจะใช้ฟีเจอร์ที่เรียบง่ายแต่ทรงพลังที่เรียกว่า Interrupt งานขัดจังหวะคือการทำให้แน่ใจว่าตัวประมวลผลตอบสนองอย่างรวดเร็วต่อเหตุการณ์สำคัญ เมื่อตรวจพบสัญญาณบางอย่าง การขัดจังหวะ (ตามชื่อแนะนำ) จะขัดจังหวะสิ่งที่โปรเซสเซอร์กำลังทำ และรันโค้ดที่ออกแบบมาเพื่อตอบสนองต่อสิ่งเร้าภายนอกใดๆ ก็ตามที่ป้อนให้กับ Arduino เมื่อโค้ดนั้นเสร็จสิ้น โปรเซสเซอร์จะกลับไปทำอะไรก็ตามที่มันทำในตอนแรกราวกับว่าไม่มีอะไรเกิดขึ้น!
สิ่งที่ยอดเยี่ยมเกี่ยวกับเรื่องนี้ก็คือการจัดโครงสร้างระบบของคุณให้ตอบสนองต่อเหตุการณ์สำคัญๆ ที่คาดเดาได้ยากในซอฟต์แวร์อย่างรวดเร็วและมีประสิทธิภาพ เหนือสิ่งอื่นใด มันทำให้โปรเซสเซอร์ของคุณมีเนื้อที่ว่างมากขึ้นสำหรับทำสิ่งอื่น ๆ ในขณะที่กำลังรอกิจกรรมที่จะแสดง
Arduino Uno มีพินสองตัวที่เราสามารถใช้เป็น Interrupts, pin 2 และ 3 ฟังก์ชันที่เราใช้ในการลงทะเบียนพินเป็นอินเทอร์รัปต์เรียกว่า attachInterrupt โดยที่พารามิเตอร์แรกที่เราส่งในพินที่จะใช้ พารามิเตอร์ที่สองคือ ชื่อของฟังก์ชันที่เราต้องการเรียกเมื่อตรวจพบการขัดจังหวะและในฐานะพารามิเตอร์ที่สาม เราส่งในโหมดที่เราต้องการให้อินเตอร์รัปต์ทำงาน มีลิงก์ในคำอธิบายวิดีโอสำหรับการอ้างอิงแบบเต็มสำหรับฟังก์ชันนี้
ขั้นตอนที่ 3: การเชื่อมต่อและรหัส
ในตัวอย่างของเรา เราเชื่อมต่อเซ็นเซอร์เอฟเฟกต์ฮอลล์กับพิน 2 บน Arduino ในตอนต้นของสเก็ตช์ เรากำหนดตัวแปรสำหรับหมายเลขพินของ LED ในตัว ขาขัดจังหวะ และตัวแปรไบต์ที่เราจะใช้เพื่อแก้ไขผ่านอินเตอร์รัปต์ เป็นสิ่งสำคัญที่เราจะต้องทำเครื่องหมายสิ่งนี้ว่าผันผวนเพื่อให้คอมไพเลอร์สามารถทราบได้ว่ามีการแก้ไขนอกโฟลว์โปรแกรมหลักผ่านอินเตอร์รัปต์
ในฟังก์ชันการตั้งค่า ขั้นแรกเราจะระบุโหมดบนพินที่ใช้ จากนั้นเราจะแนบอินเทอร์รัปต์ตามที่อธิบายไว้ก่อนหน้านี้ ฟังก์ชันอื่นที่เราใช้ที่นี่คือ digitalPinToInterrupt ซึ่งตามชื่อหมายถึง แปลหมายเลขพินเป็นหมายเลขขัดจังหวะ
ในวิธีการหลัก เราเพียงแค่เขียนตัวแปรสถานะบนพิน LED และเพิ่มการหน่วงเวลาเล็กน้อยมาก เพื่อให้โปรเซสเซอร์มีเวลาทำงานอย่างเหมาะสม
เมื่อเราแนบอินเตอร์รัปต์ เราระบุการกะพริบเป็นพารามิเตอร์ที่สอง และนี่คือชื่อฟังก์ชันที่จะเรียก ภายในเราเพียงแค่กลับค่าสถานะ
พารามิเตอร์ที่สามของฟังก์ชัน AttachIntertupt คือโหมดการทำงาน เมื่อเราใช้เป็น CHANGE ฟังก์ชันการกะพริบจะทำงานทุกครั้งที่สถานะการขัดจังหวะเปลี่ยนแปลง ดังนั้นมันจะถูกเรียกเมื่อเราเอาแม่เหล็กเข้าใกล้เซ็นเซอร์และทำงานอีกครั้งเมื่อเราถอดออก ด้วยวิธีนี้ ไฟ LED จะเปิดขึ้นในขณะที่เราถือแม่เหล็กไว้ใกล้กับเซ็นเซอร์
หากตอนนี้เราเปลี่ยนโหมดเป็น RISING ฟังก์ชันการกะพริบจะทำงานก็ต่อเมื่อเห็นขอบที่เพิ่มขึ้นของสัญญาณบนพินอินเทอร์รัปต์ ทุกครั้งที่เรานำแม่เหล็กเข้าใกล้เซ็นเซอร์ ไฟ LED จะดับหรือเปิดขึ้น ดังนั้นเราจึงสร้างสวิตช์แม่เหล็กโดยพื้นฐาน
โหมดสุดท้ายที่เราจะลองคือ LOW เมื่อแม่เหล็กปิดอยู่ ฟังก์ชันกะพริบจะทำงานอย่างต่อเนื่องและไฟ LED จะกะพริบ โดยมีสถานะกลับด้านตลอดเวลา เมื่อเราเอาแม่เหล็กออก มันคาดเดาไม่ได้จริงๆ ว่าสถานะจะจบลงอย่างไร ขึ้นอยู่กับเวลา อย่างไรก็ตาม โหมดนี้มีประโยชน์จริง ๆ หากเราจำเป็นต้องรู้ว่ามีการกดปุ่มนานแค่ไหน เนื่องจากเราสามารถใช้ฟังก์ชันจับเวลาเพื่อกำหนดได้
ขั้นตอนที่ 4: การดำเนินการเพิ่มเติม
การขัดจังหวะเป็นวิธีง่ายๆ ในการทำให้ระบบของคุณตอบสนองต่องานที่ละเอียดอ่อนด้านเวลามากขึ้น พวกเขายังมีประโยชน์เพิ่มเติมในการเพิ่ม `loop()` หลักของคุณเพื่อมุ่งเน้นไปที่งานหลักบางอย่างในระบบ (ฉันพบว่าสิ่งนี้มีแนวโน้มที่จะทำให้โค้ดของฉันมีระเบียบขึ้นอีกเล็กน้อยเมื่อฉันใช้งาน - ง่ายต่อการดูว่าโค้ดหลักได้รับการออกแบบมาเพื่ออะไร ในขณะที่อินเทอร์รัปต์จัดการกับเหตุการณ์เป็นระยะ) ตัวอย่างที่แสดงที่นี่เป็นเพียงตัวอย่างที่ใกล้เคียงที่สุด กรณีพื้นฐานสำหรับการใช้อินเตอร์รัปต์ คุณสามารถใช้เพื่ออ่านอุปกรณ์ I2C ส่งหรือรับข้อมูลไร้สาย หรือแม้แต่สตาร์ทหรือหยุดมอเตอร์
หากคุณมีการใช้งานที่น่าสนใจของการขัดจังหวะหรือเซ็นเซอร์เอฟเฟกต์ฮอลล์ โปรดแจ้งให้เราทราบในความคิดเห็น กดไลค์และแชร์คำแนะนำนี้ และอย่าลืมสมัครรับข้อมูลจากช่อง YouTube ของฉันสำหรับบทแนะนำและโครงการที่ยอดเยี่ยมเพิ่มเติมใน อนาคต.
ไชโยและขอบคุณสำหรับการรับชม!