อันที่จริง Achim ได้ทำจุดที่ดีมากที่นี่
มีความแตกต่างใหญ่ระหว่างรีเลย์ Reed (แม่เหล็ก) (สวิตช์) และเซ็นเซอร์เอฟเฟกต์ฮอลล์
ในขั้นต้นรีเลย์ Reed จะเชื่อมต่อสวิตช์เมื่อใดก็ตามที่มีแรงแม่เหล็กเพียงพอที่จะทำหน้าที่ดังกล่าวทำให้คุณมีสัญญาณเปิด / ปิด เซ็นเซอร์เอฟเฟกต์ฮอลล์ให้ระดับแรงดันไฟฟ้าระบุว่ามีการใช้แรงแม่เหล็กเท่าใด
รหัสที่แสดงด้านบนนี้จะทำงานโดยตรงกับรีเลย์ Reed ซึ่งไม่ได้บอกว่าจะไม่ทำงานเลยสำหรับเซ็นเซอร์ Hall Effect แต่จะให้ความท้าทายเพิ่มเติมโดยใช้เซ็นเซอร์ Hall-Effect
ความท้าทายหลักคือการที่คุณรักษาอุปกรณ์อะนาล็อกให้เป็นอุปกรณ์ดิจิตอลซึ่งคาดว่าจะกระตุ้นให้เกิดการเต้นของชีพจร ทีนี้สัญญาณจะไม่เต้นเป็นจังหวะ - โดยทั่วไปจะเป็นเส้นโค้งเบลล์กับความผันผวนทุกประเภท คุณอาจเดินทางผ่านแรงดันไฟฟ้าต่ำสุดสำหรับสัญญาณสูง (ประมาณ 3.5v, IIRC?) หลายครั้งเมื่อแม่เหล็กผ่านเซ็นเซอร์ Hall-Effect
แน่นอนว่าสัญชาตญาณแรกของเราเมื่อใช้บางอย่างเช่นเซ็นเซอร์เอฟเฟกต์ฮอลล์คือการใช้ ADC และอ่านระดับแรงดันไฟฟ้าบนขาอะนาล็อก อย่างไรก็ตามคุณ จำกัด การอ่าน 10,000 ครั้งโดยประมาณต่อวินาทีบนพินอะนาล็อก (การอ่านแต่ละครั้งใช้เวลา 100uS) นั่นก็ถือว่าสิ่งที่คุณทำคือวนลูปและอ่านค่า - ไม่ปล่อยเวลาให้คุณอัปเดตการแสดงผลคำนวณ ฯลฯ ไม่ต้องพูดถึงถ้าคุณอ่านในเวลาที่ไม่ถูกต้องคุณพลาดสัญญาณของคุณ!
ฉันแน่ใจว่าเป็นไปได้ที่จะใช้อินเทอร์รัปต์เชื่อมโยงกับ ADC แต่ก็ไม่มีความรู้ที่มีประโยชน์
หากคุณต้องการใช้เซ็นเซอร์ Hall Effect จริงๆ ฉันขอแนะนำให้ป้อนเข้าไปในตัวกระตุ้นชมิตต์เพื่อแปลงเป็นสัญญาณดิจิตอล (เปิด / ปิด) ในระดับที่ปรับเทียบแล้วซึ่งระบุว่า "ใต้แม่เหล็กโดยตรง" นอกจากนี้ขึ้นอยู่กับระดับของ hysteresis ที่ใช้ในทริกเกอร์ Schmitt คุณอาจจำเป็นต้องทำการตีกลับที่จะเปลี่ยนอัตราการตีกลับตามความเร็วปัจจุบัน จากนั้นคุณสามารถรักษามันเหมือนถ่ายทอดลิ้นปกติ
!ค