การแปลงอนาล็อกเป็นดิจิตอล (อนุกรมอ่านอนาล็อก) - พื้นฐาน Arduino

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





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

อนุกรมอ่านอนาล็อก

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



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

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



ต้องใช้ฮาร์ดแวร์

บอร์ด Arduino

โพเทนชิออมิเตอร์ 10 กิโลโอห์ม

การทำงานของวงจร

ดังที่แสดงไว้ในแผนภาพด้านบนต่อสายไฟสามเส้นที่ออกมาจากหม้อเข้ากับพอร์ต Arduino ของคุณ

ลวดจากหนึ่งในสายนำด้านนอกของหม้อถูกกำหนดด้วยกราวด์หรือสายลบของบอร์ด

สายด้านนอกสุดขั้วอื่น ๆ ฟรีเชื่อมต่อกับ + 5V ของบอร์ด

สิ่งที่เหลืออยู่คือแกนกลางของหม้อซึ่งถูกยกเลิกไปยังอินพุตอะนาล็อกของบอร์ด Arduino

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

ตัวอย่างเช่นเมื่อหมุนแขนเลื่อนไปทาง + 5V ตะกั่วตรงกลางจะเข้าใกล้ 5V มากขึ้นและมีแนวโน้มที่จะได้รับค่าทั้งหมดเมื่อสัมผัสกับตะกั่วที่กำหนด 5V ในทำนองเดียวกันเมื่อเลื่อนเพลาเลื่อนไปทางตะกั่วหม้อดินตะกั่วตรงกลางมีแนวโน้มที่จะเป็นศูนย์

แรงดันไฟฟ้าที่เปลี่ยนแปลงเชิงเส้นข้างต้นเหนือจุดศูนย์กลางของหม้อจะถูกอ่านโดยอินพุตอะนาล็อกของ arduino เพื่อตีความเป็นความต้านทานที่แตกต่างกันของหม้อ

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

ตำแหน่งเฉพาะเหนือเพลาหม้อส่งผลให้ตัวเลขสัดส่วนระหว่าง 0 ถึง 1023 ถูกแปลโดย Arduino และสำหรับค่าสุดท้ายของ 5V และศูนย์โวลต์การตีความจะเป็น 0 และ 1023 อย่างชัดเจน

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

คำสั่งที่คาดหวังอยู่ในรูปแบบ:

Serial.begin (9600)

ต่อจากนั้นในลูปหลักของโค้ดของคุณเราบังคับใช้ตัวแปรเพื่อแก้ไขค่าความต้านทาน (ซึ่งจะกล่าวถึงระหว่าง 0 ถึง 1023 เหมาะสำหรับประเภทข้อมูล int) ที่ได้รับจากลูกค้าเป้าหมาย:

int sensorValue = analogRead (A0)

ในการสรุปให้พิมพ์ข้อมูลนี้ไปยังหน้าต่างอนุกรมของคุณเป็นค่าทศนิยม (DEC) คุณสามารถใช้คำสั่ง Serial.println () เพื่อนำไปใช้ในบรรทัดสุดท้ายของโค้ด:

Serial.println (sensorValue, DEC)

หลังจากนี้เมื่อใดก็ตามที่ Serial Monitor เริ่มต้นในโดเมนการพัฒนา Arduino (ทำได้โดยคลิกปุ่มที่อยู่ทางขวามือของปุ่ม 'อัปโหลด' ในส่วนหัวของโปรแกรม)

เราจะเห็นชุดตัวเลขที่สอดคล้องกันตั้งแต่ 0-1023 ซึ่งสอดคล้องกับตำแหน่งการหมุนที่แตกต่างกันของเพลาหม้อ

หากเราหยุดการหมุนของเพลาหม้อในบางจังหวะตัวเลขทันทีที่ตรงกันจะปรากฏบนหน้าจอของ Arduino ซึ่งจะเปลี่ยนไปตามสัดส่วนอีกครั้งเมื่อเราเปลี่ยนตำแหน่งเพลาหม้อ

รหัส

/ *
AnalogReadSerial
อ่านอินพุตอะนาล็อกที่พิน 0 พิมพ์ผลลัพธ์ไปยังจอภาพอนุกรม
แนบพินกลางของโพเทนชิออมิเตอร์เข้ากับพิน A0 และพินด้านนอกเข้าที่ + 5V และกราวด์

โค้ดตัวอย่างนี้เป็นสาธารณสมบัติ
* /

// ขั้นตอนการตั้งค่าจะทำงานหนึ่งครั้งเมื่อคุณกดรีเซ็ต:
การตั้งค่าเป็นโมฆะ () {
// เริ่มต้นการสื่อสารแบบอนุกรมที่ 9600 บิตต่อวินาที:
Serial.begin (9600)
}

// รูทีนลูปทำงานซ้ำแล้วซ้ำเล่าตลอดไป:
ห่วงเป็นโมฆะ () {
// อ่านอินพุตบนพินอนาล็อก 0:
int sensorValue = analogRead (A0)
// พิมพ์ค่าที่คุณอ่าน:
Serial.println (sensorValue)
ล่าช้า (1) // หน่วงเวลาระหว่างการอ่านเพื่อความเสถียร
}




ก่อนหน้านี้: การตรวจสอบสถานะของสวิตช์ (Digital Read Serial) - Arduino Basics ถัดไป: 1.25V ถึง 120V Mains Adjustable Voltage Regulator Circuit