[ บทความ : Robot ] ตอนที่ 4 เรื่อง ... การควบคุม ET-ROBOT RD2 (การตรวจสอบ Input แบบ Analog (A/D))

 

การตรวจสอบ Input แบบ Analog (A/D)

     ระบบ Input / Output ของ ไมโครคอนโทรลเลอร์ P89C51RD2 ของ Philips นั้น ตามปรกติแล้วจะเป็นแบบ Logic TTL ซึ่งสามารถเชื่อมต่อโดยตรงกับ Input / Output แบบ TTL เท่านั้น แต่ในการประยุกต์ใช้งานบางอย่าง อาจมีความจำเป็นต้องติดตั้งอุปกรณ์ตรวจจับ ซึ่งให้ Output การทำงานเป็นสัญญาณแบบ Analog นั้น ตามปรกติแล้วจะไม่สามารถเชื่อมต่อสัญญาณแบบ Analog เข้ากับ CPU ได้โดยตรง  ดังนั้นจำเป็นต้องจัดหาอุปกรณ์ที่จะทำหน้าที่เป็นสื่อกลางในการรับค่าสัญญาณ Input แบบ Analog เพื่อส่งต่อให้ CPU ได้รับรู้ โดยสำหรับบอร์ดควบคุมของ ET-ROBOT-RD2 นั้น ได้จัดเตรียมวงจรสำหรับทำหน้าที่แปลงสัญญาณ Input แบบ Analog ให้เป็นสัญญาณข้อมูลแบบติจิตอลขนาด ความละเอียด 12 บิต จำนวน 4 ช่อง Input โดยใช้ชิพ A/D สำเร็จรูป เบอร์ ADS7841 เป็นตัวแปลงสัญญาณ 

 

     โดยวงจรการเชื่อมต่อของ ADS7841 กับไมโครคอนโทรลเลอร์ P89C51RD2 ในบอร์ดควบคุมรถหุ่นยนต์ ET-ROBOT-RD2 นั้น เป็นดังรูป

 

รูปแสดง วงจร A/D ที่ใช้กับบอร์ด ET-ROBOT-RD2

 

     โดยวงจร A/D นี้จะสามารถรับสัญญาณ Analog ได้ระหว่าง 0-5V จำนวน 4 ช่องสัญญาณ โดยค่าผลลัพธ์ของแต่ละช่องจะมีค่าความละเอียดขนาด 12บิต (0-4095 Step) เช่น ถ้า Analog Input มีขนาด 0V จะได้ผลลัพธ์เป็น 0 (0000H) แต่ถ้า Analog Input มีขนาด 2.5V จะได้ผลลัพธ์เป็น 2047 (07FFH) หรือถ้าสัญญาณ Analog Input มีขนาดเป็น 5V ก็จะได้ผลลัพธ์เป็น 4095 (0FFFH) ดังนี้ เป็นตน

     โดยจะเห็นได้ว่าลักษณะของสัญญาณของ Analog Input นั้นจะรับเป็นแบบแรงดันเท่านั้น โดยค่าผลลัพธ์ที่ได้จากการแปลงค่า Analog Input ก็จะได้เป็นค่า Step ดังนั้นถ้าต้องการนำค่าผลลัพธ์ที่อ่านได้จาก A/D มาทำงานแปลงเป็นค่าแบบแรงดัน ก็จะต้องทำการนำค่า Step ที่ได้มาทำการคำนวณเพื่อเปลี่ยนจากค่า Step เป็นค่าแรงดันเสียก่อนดังนี้

 

  ขนาดสูงสุดของสัญญาณ  Analog Input =    5V  
  ขนาดผลลัพธ์สูงสุดของการแปลงข้อมูลจาก  A/D =    4095  
  ค่าแรงดันใน   1   Step ของผลลัพธ์ =    5V / 4095  
    =    0.001221001 V  
            ดังนั้นเมื่อต้องการเปลี่ยนค่าผลลัพธ์ที่อ่านได้  จาก  A/D ให้เป็นค่าแรงดัน  จะต้องนําค่าผลลัพธ์นั้นไป คูณด้วย  0.001221001V เพื่อให้ได้ 
     ผลลัพธ์เป็นค่าแรงดันที่ต้องการ 

     สำหรับการสั่งอ่านค่าข้อมูลจาก A/D ของ ADS7841 ด้วยโปรแกรม BASCOM-8051 นั้น ตามปรกติแล้วจะยังไม่มีคำสั่งสำหรับสั่งอ่านค่าผลลัพธ์จาก ADS7841 ไว้ให้ใช้งานโดยตรง ซึ่งจำเป็นที่เราจะต้องสร้าง Library คำสั่งขึ้นมาใช้งานเอง ซึ่งถ้าต้องการให้การทำงานของโปรแกรมมีความเร็วและเกิดประ

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

 

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

  • กำหนดชื่อสัญญาณที่เชื่อมต่อกับ DCLK ของ ADS7841 เป็น ADS7841_DCLK

  • กำหนดชื่อสัญญาณที่เชื่อมต่อกับ CS ของ ADS7841 เป็น ADS7841_CS

  • กำหนดชื่อสัญญาณที่เชื่อมต่อกับ DIN ของ ADS7841 เป็น ADS7841_DIN

  • กำหนดชื่อสัญญาณที่เชื่อมต่อกับ DOUT ของ ADS7841 เป็น ADS7841_DOUT

  • ต้องสร้างตัวแปรชนิด Byte เพื่อรองรับการทำงานของคำสั่งในการผ่านค่า Channel ของ A/D ที่ต้องการจะอ่านค่า

  • ต้องสร้างตัวแปรชนิด Word เพื่อรองรับการทำงานของคำสั่งในการผ่านค่าผลลัพธ์ของ A/D

 

  การสร้าง Library คำสั่งเพื่ออ่านค่า A/D จาก ADS7841 ของบอร์ด ET-ROBOT-RD2.......


   

 

.....อ่านต่อ (DOWNLOAD)...



เขียนโดย : อีทีที
Author : ETT
e-mail : sales@etteam.com
วันที่ทำการปรับปรุง : ๘ มิ.ย. ๒๕๔๗