ฉันจะเชื่อมต่อแอนะล็อกกับตัวแปลงดิจิตอล (ADC) ได้อย่างไร


22

ฉันกำลังดูตัวเลือกสำหรับ ADC บน Rasbperry Pi ฉันสงสัยว่าจะเป็นไปได้จนถึงตอนนี้ แน่นอนง่ายและราคาถูกดี


คุณต้องการอะไร
Jivings

@ Jivings ฉันคิดว่าสองโครงการที่สามารถทำกับอัตราตัวอย่างค่อนข้างต่ำ
John La Rooy

คำตอบ:


15

Adafruitมีบทช่วยสอนที่ดีเกี่ยวกับการใช้MCP3008 ($ 3.75) - ADC 8-Channel 10-Bit 8-Channel พร้อม SPI Interface เพื่อควบคุมระดับเสียงของไฟล์ mp3 แต่ควรให้จุดเริ่มต้นที่ดีสำหรับโครงการอะนาล็อกกับดิจิตอล


1
ทั้ง Arduino และ PICAXE เป็นคำตอบที่ผิด
อเล็กซ์แชมเบอร์เลน

ฉันไม่เห็นด้วยว่า Arduino เป็นทางออกที่ผิดที่นี่ Arduino ใช้ USB ในขณะที่ MCP3008 ใช้ SPI Arduino พร้อมติดตั้งทั้งหมดและพร้อมใช้งานได้ทันทีในขณะที่ MCP3008 จะต้องมีอุปกรณ์เสริมและทำงานเพื่อไปต่อ MCP3008 นั้นราคาถูกกว่า แต่เมื่อคุณเพิ่มในทุกสิ่งที่คุณต้องการ (GPIO แบ่งออกติดตั้งเขียงหั่นขนม .. ) ช่องว่างต้นทุนไม่มากเท่าที่ควร สรุปถ้าคุณต้องการที่จะทดสอบและหันกลับมาใช้ Arduino อย่างรวดเร็วนั้นเป็นตัวเลือกที่ดีกว่า แต่ถ้าคุณกำลังมองหาการติดตั้งแบบถาวรฉันจะยอมรับว่า MCP3008 นั้นทำงานได้ดีที่สุด
Dan B

8

ADS1115

ADS1113, ADS1114 และADS1115เป็นตัวแปลงอนาล็อกเป็นดิจิตอลที่มีความแม่นยำด้วยความละเอียด 16 บิตที่นำเสนอในแพ็คเกจ QFN-10 ขนาดเล็กพิเศษไร้สารตะกั่วหรือแพ็คเกจ MSOP-10 ADS1113 / 4/5 ได้รับการออกแบบโดยคำนึงถึงความแม่นยำพลังงานและความสะดวกในการใช้งาน ADS1113 / 4/5 มีการอ้างอิงแบบออนบอร์ดและออสซิลเลเตอร์ ข้อมูลจะถูกถ่ายโอนผ่านอินเตอร์เฟสอนุกรมI²Cที่รองรับ; สามารถเลือกที่อยู่ทาสสี่I²Cได้ ADS1113 / 4/5 ทำงานจากแหล่งจ่ายไฟเดียวตั้งแต่ 2.0V ถึง 5.5V

ก่อนอื่นคุณต้องแน่ใจว่าโหลดโมดูลI²Cแล้ว ถัดไปเชื่อมต่อ ADS1115 ดังที่แสดงด้านล่าง มีที่อยู่ได้ 4 ที่แตกต่างกันขึ้นอยู่กับว่า ADDR แบบใดที่เชื่อมต่อ ซึ่งหมายความว่าคุณสามารถเชื่อมต่อทั้งหมด 16 ช่องกับบัสI²Cเดียว

GND = 0x48, VDD = 0x49, SDA = 0x4A, SCL = 0X4B

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

คุณสามารถดูผลลัพธ์ของการแปลงล่าสุดเช่นนี้

# i2cget -y 0 0x49 0 w
0x0000

ค่าเริ่มต้นของ 0x0000 จะถูกส่งกลับมาที่นี่เนื่องจากยังไม่มีการแปลง ตอนนี้ให้ดูที่การลงทะเบียนการกำหนดค่า

# i2cget -y 0 0x49 1 w
0x8385

LSB เป็นครั้งแรกดังนั้นสิ่งนี้จึงเทียบเท่า 0b1000010110000011

ฉันต้องการที่จะทำแปลงเดียวสิ้นสุดวันที่ AIN0 ดังนั้นฉันต้องเขียนบิต [14:12] 0b100เช่น กล่าวคือ0b1100010110000011

# i2cset -y 0 0x49 1 0xC385 w
# i2cget -y 0 0x49 0 w
0xa30b

LSB เป็นคนแรกดังนั้นนี่จะเท่ากับ 2979 ทศนิยม


1
แพคเกจเหล่านี้ไม่ใช่ประเภทที่ยากกว่าในการทำงานด้วยเนื่องจากขนาดพิน / ระยะห่าง โดยเฉพาะอย่างยิ่งสำหรับผู้ที่ชอบฉันด้วยโรคข้ออักเสบ (ซึ่ง จำกัด ความชำนาญของฉัน
Steve Robillard

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

1

ตราบใดที่การใช้งานที่คุณต้องการนั้นไม่ต้องการบิตเรตหรือความละเอียดสูงคุณก็อาจใช้ Arduino ได้ Arduinos นั้นดีเพราะพวกเขามีชุมชนขนาดใหญ่ที่ให้การสนับสนุนพวกเขาเคยอยู่มานานแล้วและมีการสื่อสารผ่านทาง USBไม่มี GPIO!

นี่คือลิงค์สำหรับโพสต์บล็อกของ Simon Monkพร้อมคำแนะนำเกี่ยวกับวิธีที่เขาสื่อสารกับ Arduino จาก Raspberry Pi กับ python

ในกรณีที่คุณไม่เคยได้ยิน Arduino มาก่อน (บางทีคุณเคยอยู่ใต้ก้อนหิน) นี่คือลิงค์ไปยังหน้าบทนำและตัวอย่างระดับเริ่มต้นของอินพุตอะนาล็อก


0

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


0

ในหนึ่งหรือสองเดือน (เนื่องจากการจัดส่งไปแอฟริกา) ฉันจะได้รับบอร์ด I2C PCF8591 ที่มีการเดินสายสนับสนุนเว็บไซต์ WiringPiและคณะกรรมการใช้ 3.3v (โดยทั่วไป) ฉันได้รับเวอร์ชัน WaveShare ในลิงก์ amazon Amazonจากสิ่งที่ฉัน ' ฉันอ่าน PCF8591 ก็ค่อนข้างดี แต่จนกว่าฉันจะมีบอร์ดต่อหน้าฉันฉันไม่สามารถพูดได้ว่ามันดีหรือไม่


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