ประเภท: วงจรไมโครคอนโทรลเลอร์
จำนวนการดู: 18998
ความเห็นเกี่ยวกับบทความ: 0

การเชื่อมต่อเซ็นเซอร์อะนาล็อกกับ Arduino อ่านเซ็นเซอร์

 

เซ็นเซอร์ใช้สำหรับวัดปริมาณสภาพแวดล้อมและปฏิกิริยาต่อการเปลี่ยนแปลงสถานะและตำแหน่ง ที่สัญญาณขาออกของพวกเขาอาจมีทั้งสัญญาณดิจิตอลที่ประกอบด้วยสัญญาณหนึ่งและศูนย์และสัญญาณอะนาล็อกที่ประกอบด้วยแรงดันไฟฟ้าจำนวนไม่ จำกัด ในช่วงเวลาหนึ่ง


เกี่ยวกับเซ็นเซอร์

ดังนั้นเซ็นเซอร์จะถูกแบ่งออกเป็นสองกลุ่ม:

1. ดิจิตอล

2. อะนาล็อก

ในการอ่านค่าดิจิตอลคุณสามารถใช้ทั้งอินพุตดิจิตอลและอนาล็อกของไมโครคอนโทรลเลอร์ในกรณีของเรา Avr บนบอร์ด Arduino. เซ็นเซอร์อะนาล็อกต้องเชื่อมต่อผ่านตัวแปลงอนาล็อกเป็นดิจิตอล (ADC) ATMEGA328 มันคือมันที่ติดตั้งในบอร์ด ARDUINO ส่วนใหญ่ (เพิ่มเติมเกี่ยวกับเรื่องนี้ มีบทความในเว็บไซต์) มีในวงจร ADC ในตัว มีอินพุตแบบอะนาล็อกให้เลือกมากถึง 6 ช่อง

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

เชื่อมต่อเซ็นเซอร์อะนาล็อกกับ Arduino อ่านค่าการอ่านเซ็นเซอร์

รูปแบบทั่วไปของเซ็นเซอร์อะนาล็อกและการเชื่อมต่อ

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

รูปแบบทั่วไปของเซ็นเซอร์อะนาล็อกและการเชื่อมต่อ

วงจรด้านบนช่วยให้คุณอ่านค่าจาก 0 ถึง 1,023 เนื่องจากความจริงที่ว่าแรงดันไฟฟ้าทั้งหมดลดลงบนโพเทนชิออมิเตอร์ หลักการของตัวแบ่งแรงดันไฟฟ้าทำงานที่นี่ในตำแหน่งใด ๆ ของเครื่องยนต์แรงดันไฟฟ้าจะกระจายไปตามพื้นผิวของชั้นต้านทานหรือในสเกลลอการิทึม (ขึ้นอยู่กับโพเทนชิออมิเตอร์) ซึ่งเป็นส่วนหนึ่งของแรงดันไฟฟ้าที่เหลือระหว่างเอาต์พุตของแถบเลื่อน การเชื่อมต่อนี้มีลักษณะดังนี้:

แผนภาพการเดินสายไฟสำหรับเซ็นเซอร์อะนาล็อก

ตัวเลือกที่สองเชื่อมต่อตามรูปแบบของตัวต้านทานแบบคลาสสิกตัวแบ่งแรงดันไฟฟ้าที่จุดความต้านทานสูงสุดของโพเทนชิออมิเตอร์ขึ้นอยู่กับความต้านทานของตัวต้านทานส่วนบน (ในรูปที่ R2)

ตัวต้านทานแบบคลาสสิค

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

โครงการและความสัมพันธ์ในการออกแบบสำหรับการกำหนดค่าแรงดันไฟฟ้าที่แขนท่อนล่าง

การเชื่อมต่อดังกล่าวมีลักษณะไม่เพียง แต่สำหรับโพเทนชิออมิเตอร์ แต่สำหรับเซ็นเซอร์อะนาล็อกทั้งหมดเพราะส่วนใหญ่ทำงานบนหลักการของการเปลี่ยนแปลงความต้านทาน (การนำไฟฟ้า) ภายใต้อิทธิพลของแหล่งภายนอก - อุณหภูมิแสงรังสีหลายชนิดเป็นต้น

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

แผนภาพการเชื่อมต่อที่ง่ายที่สุดสำหรับเทอร์มิสเตอร์

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

photoresistor

รูปแสดงการเชื่อมต่อของ photoresistor กับ arduino

รูปแบบการเชื่อมต่อของ photoresistor กับ arduino

ส่วนซอฟต์แวร์

ก่อนที่ฉันจะพูดเกี่ยวกับการเชื่อมต่อเซ็นเซอร์ที่เฉพาะเจาะจงฉันตัดสินใจที่จะพิจารณาซอฟต์แวร์สำหรับการประมวลผลพวกเขา สัญญาณอะนาล็อกทั้งหมดจะถูกอ่านจากพอร์ตเดียวกันโดยใช้คำสั่ง analogRead ()เป็นที่น่าสังเกตว่า Arduino UNO และรุ่นอื่น ๆ ที่มี 168 และ 328 atmega มี ADC 10 บิต ซึ่งหมายความว่าไมโครคอนโทรลเลอร์จะเห็นสัญญาณอินพุตเป็นตัวเลขตั้งแต่ 0 ถึง 1023 - รวม 1024 ค่า หากคุณพิจารณาว่าแรงดันไฟฟ้าคือ 5 โวลต์ดังนั้นความไวของอินพุต:

5/1024 = 0.0048 V หรือ 4.8 mV

นั่นคือด้วยค่า 0 ที่อินพุตแรงดันไฟฟ้าเป็น 0 และมีค่า 10 ที่อินพุต - 48 mV

ในบางกรณีการแปลงค่าให้อยู่ในระดับที่ต้องการ (เช่นเพื่อส่งไปยังเอาต์พุต PWM) 1024 จะถูกหารด้วยตัวเลขและเนื่องจากการแบ่งควรได้รับค่าสูงสุดที่ต้องการ ฟังก์ชั่นแผนที่ (ต้นทาง, ต่ำ, สูง, สูง, ต่ำ, สูง) ทำงานได้ชัดเจนยิ่งขึ้นโดยที่:

  • หมายเลขต่ำ - ต่ำก่อนการแปลงโดยฟังก์ชัน

  • vch - บน;

  • VCh - ตัวเลขที่ต่ำกว่าหลังจากการประมวลผลโดยฟังก์ชั่น (ที่เอาท์พุท);

  • VHV - บนสุด

แอปพลิเคชั่นที่ใช้งานได้จริงสำหรับการแปลงฟังก์ชั่นเป็นค่าอินพุตสำหรับการส่งไปยัง PWM (ค่าสูงสุดคือ 255 สำหรับการแปลงข้อมูลจาก ADC ไปเป็นเอาต์พุต PWM 1024 หารด้วย 4):

ตัวเลือก 1 - การแบ่ง

int x;

x = analogRead (หม้อ) / 4;

// จะได้รับหมายเลขตั้งแต่ 0 ถึง 1023

// หารด้วย 4 เราได้จำนวนเต็มจาก 0 ถึง 255 analogWrite (led, x);

ตัวเลือกที่ 2 - ฟังก์ชัน MAP - เปิดโอกาสให้มากขึ้น แต่จะเพิ่มมากขึ้นในภายหลัง

เป็นโมฆะห่วง ()

{int val = analogRead (0);

val = map (val, 0, 1023, 0, 255);

analogWrite (LED, val); }

หรือสั้นกว่า:

analogWrite (นำ, แผนที่ (วาล, 0, 1023, 0, 255))

เซ็นเซอร์บางตัวมีเอาต์พุต 5 โวลต์ที่เอาท์พุทนั่นคือ หมายเลข 1024 นั้นไม่สะดวกเสมอที่จะหารเพื่อให้ได้ 256 เหมือนกันสำหรับ PWM (หรืออื่น ๆ ) นี่อาจเป็น 2 และ 2.5 โวลต์และค่าอื่น ๆ เมื่อสัญญาณสูงสุดจะเป็นเช่น 500


เซ็นเซอร์อะนาล็อกที่นิยม

มุมมองทั่วไปของเซ็นเซอร์สำหรับ Arduino และการเชื่อมต่อดังแสดงด้านล่าง:

วิธีการเชื่อมต่อเซ็นเซอร์อะนาล็อก

โดยปกติจะมีสามเอาต์พุตอาจมีหนึ่งในสี่ส่วน - ดิจิทัล แต่เป็นคุณลักษณะ

คำอธิบายการกำหนดเอาต์พุตของเซ็นเซอร์อะนาล็อก:

  • G - กำลังลบ, รถบัสทั่วไป, กราวด์ อาจถูกกำหนดให้เป็น GND, "-";

  • V - บวกพลังงาน อาจแสดงเป็น Vcc, Vtg, "+";

  • S - สัญญาณ, สัญกรณ์ที่เป็นไปได้ - ออก, SGN, Vout, เครื่องหมาย

ผู้เริ่มต้นเรียนรู้วิธีการอ่านค่าของเซ็นเซอร์เลือกโครงการของเครื่องวัดอุณหภูมิทุกชนิด เซ็นเซอร์ดังกล่าวอยู่ในรูปแบบดิจิตอลเช่น DS18B20 และในแบบอะนาล็อก - เหล่านี้เป็นไมโครวงจรทุกชนิดเช่น LM35, TMP35, TMP36 และอื่น ๆ นี่คือตัวอย่างของการออกแบบแบบแยกส่วนของเซ็นเซอร์ดังกล่าวบนบอร์ด

เซนเซอร์แบบอะนาล็อกบน TMP36

ความแม่นยำของเซ็นเซอร์อยู่ในช่วง 0.5 ถึง 2 องศา สร้างขึ้นบนชิป TMP36 เช่นเดียวกับอะนาล็อกหลายตัวค่าเอาต์พุตของมันคือ 10 mV / ° C ที่ 0 °สัญญาณเอาท์พุตคือ 0 V และเพิ่ม 10 mV ต่อ 1 ดีกรี นั่นคือที่ 25.5 องศา, แรงดันไฟฟ้าคือ 0.255 V, ส่วนเบี่ยงเบนเป็นไปได้ภายในข้อผิดพลาดและการทำความร้อนด้วยตนเองของคริสตัล IC (สูงถึง 0.1 ° C)


ช่วงการวัดและแรงดันไฟฟ้าเอาท์พุทอาจแตกต่างกันขึ้นอยู่กับ microcircuit ที่ใช้ดูตาราง

ช่วงอุณหภูมิและแรงดันเอาท์พุทเซ็นเซอร์

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

รหัสสำหรับการทำงานกับเซ็นเซอร์ส่วนใหญ่มีขนาดค่อนข้างใหญ่ดังนั้นฉันจะไม่ให้พวกเขาทั้งหมดพวกเขาสามารถพบได้ง่ายในเครือข่ายโดยการร้องขอ "เซ็นเซอร์ + ชื่อ Arduino"

เซ็นเซอร์ต่อไปที่วิศวกรหุ่นยนต์ arduino มักใช้คือเซ็นเซอร์เส้น มันขึ้นอยู่กับอุปกรณ์ photoelectronic ประเภทของโฟโตทรานซิสเตอร์.

เซ็นเซอร์เส้น

ด้วยความช่วยเหลือของพวกเขาหุ่นยนต์ที่เคลื่อนที่ไปตามสาย (ใช้ในการผลิตแบบอัตโนมัติเพื่อส่งชิ้นส่วน) กำหนดว่ามีแถบสีขาวหรือดำ ที่ด้านขวาของรูปจะเห็นอุปกรณ์สองชิ้นที่คล้ายกับไฟ LED หนึ่งในนั้นคือ LED มันสามารถเปล่งในสเปกตรัมที่มองไม่เห็นและที่สองคือ phototransistor

แสงจะสะท้อนออกจากพื้นผิวถ้ามันมืด - phototransistor ไม่ได้รับกระแสสะท้อน แต่ถ้าแสงได้รับและมันเปิดขึ้น อัลกอริทึมที่คุณใส่ในไมโครคอนโทรลเลอร์ประมวลผลสัญญาณและกำหนดความถูกต้องและทิศทางของการเคลื่อนไหวและแก้ไขให้ถูกต้อง ออพติกคอลเม้าส์ซึ่งคุณมักจะถืออยู่ในมือในขณะที่อ่านบรรทัดเหล่านี้จัดเรียงไว้ในทำนองเดียวกัน

ฉันจะเสริมด้วยเซ็นเซอร์ที่อยู่ติดกัน - เซ็นเซอร์วัดระยะทางจากชาร์ปยังใช้ในหุ่นยนต์เช่นเดียวกับในการตรวจสอบตำแหน่งของวัตถุในอวกาศ (ที่มีข้อผิดพลาด TX ที่สอดคล้องกัน)

เซ็นเซอร์วัดระยะทางที่คมชัด

มันทำงานบนหลักการเดียวกัน ห้องสมุดและตัวอย่างของภาพร่างและโครงการที่มีอยู่เป็นจำนวนมากในเว็บไซต์ที่อุทิศให้กับ Arduino


ข้อสรุป

การใช้เซ็นเซอร์อะนาล็อกนั้นง่ายมากและด้วยภาษาการเขียนโปรแกรม Arduino ที่เรียนรู้ได้ง่ายคุณจึงเรียนรู้อุปกรณ์อย่างง่ายได้อย่างรวดเร็ว วิธีนี้มีข้อเสียอย่างมีนัยสำคัญเมื่อเทียบกับคู่ดิจิตอล นี่เป็นสาเหตุมาจากพารามิเตอร์ที่หลากหลายทำให้เกิดปัญหาเมื่อเปลี่ยนเซ็นเซอร์ คุณอาจต้องแก้ไขซอร์สโค้ดของโปรแกรม

จริงอุปกรณ์อะนาล็อกแต่ละตัวรวมแหล่งอ้างอิงแรงดันไฟฟ้าและความคงตัวในปัจจุบันซึ่งมีผลในเชิงบวกต่อผลิตภัณฑ์ขั้นสุดท้ายและการทำซ้ำอุปกรณ์ในการผลิตจำนวนมาก ปัญหาทั้งหมดสามารถหลีกเลี่ยงได้โดยใช้อุปกรณ์ดิจิตอล

วงจรดิจิตอลเช่นนี้ช่วยลดความจำเป็นในการปรับแต่งและปรับวงจรหลังจากประกอบ สิ่งนี้ให้โอกาสคุณในการรวบรวมอุปกรณ์ที่เหมือนกันหลายอย่างในซอร์สโค้ดเดียวกันรายละเอียดที่จะให้สัญญาณเดียวกันกับเซ็นเซอร์ตัวต้านทานซึ่งหายาก

ดูได้ที่เว็บไซต์ของเรา:การเชื่อมต่ออุปกรณ์ภายนอกเข้ากับ Arduino

ดูได้ที่ e.imadeself.com:

  • ความแตกต่างระหว่างเซ็นเซอร์อะนาล็อกและดิจิตอลคืออะไร
  • การวัดอุณหภูมิและความชื้นบน Arduino - การเลือกวิธีการ
  • การแปลงสัญญาณอนาล็อกเป็นดิจิตอลอย่างไร
  • เซ็นเซอร์ยอดนิยมสำหรับ Arduino
  • วิธีการจัดเรียงเซ็นเซอร์เส้นและการทำงาน

  •