ฉันจะขยายจำนวนพินอนาล็อก (อินพุต) ให้ฉันได้อย่างไร


26

ฉันรู้วิธีเพิ่มจำนวนพินดิจิตอลบน Arduino โดยใช้มัลติเพล็กเซอร์

ฉันต้องการเพิ่มจำนวนช่องสัญญาณอนาล็อกที่ฉันมี ทางออกหนึ่งคือการเพิ่ม Arduino อื่นเป็นทาส

ฉันจะเพิ่มจำนวนช่องสัญญาณอนาล็อกอย่างไร (ฉันถือว่า MUXing และ ADC บางส่วนเกี่ยวข้อง) ถ้ามันซับซ้อนเกินกว่าที่จะเขียนคำตอบโครงร่างทั่วไปของวงจร / รหัสก็น่าจะใช้ได้เช่นกัน

ฉันยังเปิดเพื่อป้องกันข้อเสนอแนะถึงแม้ว่าฉันจะชอบถ้ามีวิธีแก้ปัญหาฮาร์ดแวร์ที่ไม่ยากเกินไป


โพสต์ที่เกี่ยวข้องelectronics.stackexchange.com/a/62500/7036
Nick Alexeev

คำตอบ:


32

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

http://playground.arduino.cc/Learning/4051

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

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

ฉันทำ gif แบบเคลื่อนไหวให้คุณ

ป้อนคำอธิบายรูปภาพที่นี่


3
ในขณะที่การเชื่อมโยงตอบคำถามคุณช่วยอธิบายรายละเอียดเล็กน้อยได้ไหม? เขียนเกี่ยวกับวงจรสั้น ๆ ? (ลิงก์คำตอบเท่านั้นที่จะทำให้หมดกำลังใจบนเครือข่าย)
Manishearth

ถูก ขยายคำตอบแล้ว
Steve Cooley

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

1
เป็นที่น่าสังเกตว่า mux แบบอะนาล็อกนั้นไม่สำคัญในการเลือกผู้ออกแบบควรพิจารณาถึงการแกว่งของแรงดันไฟฟ้า (ส่วนใหญ่จะทำงานภายในช่วงของการจ่ายไฟเช่น opamps), แบนด์วิดท์, ความต้านทาน ON, crosstalk และอื่น ๆ แสดงจุก
มิสเตอร์Mystère

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

10

อาจเป็นเรื่องสำคัญที่ต้องจำไว้ว่าชิป ATmega ของ Arduino นั้นกำลังใช้งานอะนาล็อก MUX ชิป Uno-based (ATmega328) มีเพียง ADC เดียว อินพุตแบบอะนาล็อกทั้ง 6 ช่องเป็น MUX ที่เชื่อมต่อกับ ADC หนึ่งตัว

นี่คือเหตุผลที่คุณสามารถอ่านอินพุตแบบอะนาล็อกได้ครั้งละ 1 รายการเท่านั้น

เมื่อขยายอินพุตแบบอะนาล็อกคุณอาจจำเป็นต้องพิจารณาระยะเวลาที่ใช้ในการทำ MUXing นี้ทั้งหมดและจำเป็นต้องใช้ ADC ภายนอกเพิ่มเติมในแอปพลิเคชันของคุณหรือไม่


1

พิจารณาสิ่งนี้: เพิ่ม ATtiny 85 ด้วยการสื่อสารแบบอนุกรมกับ Arduino มันใช้ 2 พินสำหรับ Rx, Tx และคุณมี 3 พินที่สามารถใช้เป็นอะนาล็อกได้อีก 3 ตัว aay นี้คุณสามารถพัฒนาโปรโตคอลของคุณเอง ATtiny สามารถประมวลผล algoritm และส่งข้อมูลที่ประมวลผลไปยัง Arduino มันราคาถูกมากฉันลองด้วยตัวเองมันเป็นสถาปัตยกรรมที่ดีที่ฉันคิด

ขอให้เป็นวันที่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.