Analog input ของ adruino ม ขนาดก บ ต

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

หน่วยที่ 8 Arduino กับ อนาล็อกอินพุ ต ใ น อุ ป ก ร ณ์ อิ เ ล็ ก ท ร อ นิ ก ส์ ใ ช้ สั ญ ญ า ณ ส า ห รั บ ก า ร ติด ต่ อ ส่ื อ ส า ร อ ยู่ 2 แ บ บ คื อ สั ญญ า ณ อ น า ล็ อ ก แ ล ะ สัญญาณดิจิตอล ซ่ึงสัญญาณอนาล็อกนามาใช้ในอุปกรณ์ อิเล็กทรอนิกส์โดยท่ัวไปและใช้ในการควบคุมแบบยุคเก่า ปัจจุบันระบบไมโครคอนโทรลเลอร์เข้ามาช่วยในการควบคุม อุปกรณ์อิเล็กทรอนิกส์ต่าง ๆ มากมายซ่ึงทาให้การควบคุม สามารถทาได้ง่ายและรวดเร็วยิ่งข้ึน แต่ในการควบคุม อุปกรณ์เหล่านั้นจาเป็นต้องใช้สัญญาณดิจิตอลในการติดต่อ กับไมโครคอนโทรลเลอร์ ดังนั้นจึงต้องเปล่ียนสัญญาณ อนาล็อกให้เป็นสัญญาณดิจิตอลก่อนเพ่ื อใช้ควบคุมระบบ ต่อไป สญั ญาณอนาลอ็ ก คอื อะไร สัญญาณอนาลอ็ ก (Analog Signal) คือ สัญญาณท่ีมีการ เปล่ียนแปลงของข้อมูลแบบต่อเน่ือง (Continuous Data) หรือ คล่ืนไซน์ มีความถ่ีและความแรงของสัญญาณไม่คงท่ี มีลักษณะ เปน็ เส้นโค้งต่อเน่ืองกันไป และสัญญาณอนาล็อกอยู่ในรูปแบบของ พลังงานชนิดต่างๆ ที่มนุษย์สัมผัสได้ ได้แก่ เสียง แสงสว่าง ความร้อน ความดัน โดยสามารถวัดพลังงานได้จากอุปกรณ์ เซน็ เซอร์การส่งสญั ญาณแบบอนาลอ็ ก การแปลงสญั ญาณอนาล็อกเปน็ สญั ญาณดิจิตอล สัญญาณอนาล็อกเป็นสัญญาณแบบต่อเนื่องท้ังขนาดความแรง ของสัญญาณและเวลา เม่ือวาดสัญญาณอนาล็อกออกมาเป็นกราฟ จะมี ลกั ษณะเปน็ เส้นแบบตอ่ เน่ืองกนั สัญญาณดิจิตอลเป็นสัญญาณแบบไม่ต่อเนื่องทั้งขนาดความแรง ของคา่ สญั ญาณและเวลา การเปลี่ยนแปลงสัญญาณอนาล็อกเป็นสัญญาณดิจิตอลเรียกว่า (Analog to Digital Convertor, ADC) โดยของไมโครคอนโทรลเลอร์จะ เป็นการการแปลงแรงดันไฟฟา้ ขนาด 0 - 5 V ให้เป็นสัญญาณดิจิตอลที่มี ความละเอียดขนาดบิต ซ่ึงจานวนบิตมากหรือน้อยข้ึนอยู่กับผู้ผลิต ไมโครคอนโทรลเลอรส์ รา้ งข้ึน โดยสว่ นมากจะมคี วามละเอยี ด 10 บติ ADC การแปลงสญั ญาณอนาล็อกเปน็ สัญญาณดิจิตอล บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3 มีพอร์ตอนาล็อก อนิ พุ ตจานวน 6 พอรต์ คอื พอร์ต A0 ถงึ A5 แตล่ ะพอรต์ มคี วามละเอยี ด ขนาด 10 บิต ซึ่งสามารถแบ่งระดับความแตกต่างได้ทั้งหมด 1,024 ค่าน้ันก็ คือ (0–1,023) โดยเร่ิมต้นจากระดับแรงดัน 0 โวลต์ ไปจนถึงระดับแรงดัน 5 โวลต์ อปุ กรณท์ ่ีใชส้ ่งค่าแบบอนาล็อก โดยอุปกรณ์เบ้ืองต้นท่ีใช้ในการส่งค่าแบบอนาล็อกคือ โพเทนทิโอมิเตอร์ (Potentiometer) ตัวต้านทานชนิดนี้สามารถปรับค่าความต้านทานได้ เมื่อต่อ แรงดันไฟฟ้าเข้าไปยังโพเทนทิโอมิเตอร์แล้วจะทาให้แรงดันเอาต์พุ ตมีค่า เปล่ียนแปลงต้ังแต่ 0 ถึง 5 โวลต์ และการนาเอาต์พุ ตของโพเทนทิโอมิเตอร์ ต่อเข้าพอร์ตอนาล็อกเพื่ อทาการแปลงจากสัญญาณอนาล็อกเป็นสัญญาณ ดจิ ติ อล อุปกรณ์ทีใ่ ชส้ ่งคา่ แบบอนาล็อก การต่อโพเทนทิโอมิเตอร์กบั บอร์ด Arduino ซ่ึงจะเห็นได้ว่าถ้า ปรับค่าความต้านทานต่าสุดทาให้ค่าแรงดันมีค่าเท่ากับ 0 โวลต์ และ ถ้าปรับค่าความต้านทานสูงสุดทาให้ค่าแรงดันมีค่าเท่ากับ 5 โวลต์ สัญญาณเอาต์พุ ตของโพเทนทิโอมิเตอร์ถูกส่งเข้าไปยังพอร์ต อนาลอ็ กของบอรด์ Arduino ที่ต้องการ การต่อใชง้ านโพเทนทโิ อมเิ ตอร์ ขาท่ี 1 ต่อไฟ 5V ขาท่ี 2 เป็นขา OUTPUT ตอ่ กับพอรต์ อนาล็อกอินพุ ต ขาท่ี 3 ตอ่ กราวด์ ขาที่ 1 ตอ่ กราวด์ ขาที่ 2 เป็นขา OUTPUT ต่อกับพอร์ตอนาลอ็ กอนิ พุ ต ขาที่ 3 ตอ่ ไฟ 5V การเขียนโปรแกรมเพ่ื ออ่านคา่ สัญญาณอนาลอ็ ก 1. analogRead(); เป็นคาส่ังสาหรับการอ่านค่าสัญญาณอนาล็อกที่พอร์ตอินพุ ตท่ี ต้องการ รูปแบบคาส่ัง analogRead (ตาแหน่งพอร์ต INPUT); ตวั อยา่ ง ถ้าต้องการอา่ นค่าสัญญาณอนาล็อกให้พอร์ต A0 ของบอร์ด Arduino ตอ้ งใชค้ าสง่ั analogRead(0); การเขยี นโปรแกรมเพื่ ออา่ นค่าสัญญาณอนาลอ็ ก 2. Serial.begin(); เปน็ คาส่งั สาหรับการกาหนดอัตราการส่งขอ้ มูล รปู แบบคาสง่ั Serial.begin (ความเรว็ ในการส่งข้อมลู ); ตัวอย่าง Serial.begin(1200); คือ การกาหนดว่าจะใช้ความเร็วท่ี 1200 ซ่ึง สามารถเปล่ียนเป็นค่าอ่ืนได้ตามค่ามาตรฐานเช่น 300 , 1200 , 2400 , 4800 , 9600 , 14400 , 38400 , 57600 , 115200 , 230400 , 460800 , 921600 ยงิ่ ค่าสงู ก็จะส่งข้อมลู ไดร้ วดเร็วข้ึน การเขียนโปรแกรมเพื่ ออ่านคา่ สญั ญาณอนาลอ็ ก 3. Serial.print(); เปน็ คาสั่งสาหรับการพิ มพ์ ข้อมูลไปยังหน้าจอ Serial Monitor รูปแบบคาสั่ง Serial.print (“ขอ้ มูลท่ีแสดงบน Serial Monitor“); ตวั อย่าง Serial.print (“Love“); คือ เป็นการแสดงคาว่า Love บน Serial Monitor การเขียนโปรแกรมเพื่ ออ่านคา่ สัญญาณอนาล็อก 4. Serial.println(); เป็นคาส่ังสาหรับการพิ มพ์ ข้อมูลไปยังหน้าจอ Serial Monitor แล้วขนึ้ บรรทดั ใหม่ รูปแบบคาส่งั Serial.println (“ขอ้ มลู ทีแ่ สดงบน Serial Monitor“); ตัวอยา่ ง Serial.println (“Love“); คือ เป็นการแสดงคาว่า Love บน Serial Monitor แลว้ ขึน้ บรรทดั ใหม่ Thank you

หนว่ ยท่ี 8

Arduino กบั อนาล็อกอนิ พตุ

20128 – 2109 รายวิชาการประยกุ ตใ์ ชง้ านไมโครคอนโทรลเลอร์ ผู้สอน นางสาวรัชฎาเนตร สรุ าไพ แผนกวชิ าเทคโนโลยีคอมพวิ เตอร์ วทิ ยาลยั เทคนคิ สิงหบ์ รุ ี

Arduino กบั อนาลอ็ กอนิ พตุ

1. สญั ญาณอนาลอ็ ก

สัญญาณอนาล็อก (Analog Signal) คอื สัญญาณที่มกี ารเปล่ียนแปลงของขอ้ มูล แบบตอ่ เนอ่ื ง(Continuous Data) หรือคลน่ื ไซน์ มีความถี่และความแรงของสญั ญาณไม่ คงที่ มลี กั ษณะเปน็ เส้นโคง้ ต่อเนือ่ งกนั ไป

2. การแปลงสญั ญาณอนาล็อกเป็นสัญญาณดจิ ิตอล

เปน็ สัญญาณท่มี กี ารเปลี่ยนแปลงแบบตอ่ เน่ืองทัง้ ขนาดความแรงของสัญญาณ และเวลา ดงั นนั้ เม่อื วาดสัญญาณอนาลอ็ กออกมาเป็นกราฟ จะมีลักษณะเปน็ เสน้ แบบ ต่อเนือ่ งกัน ส่วนสญั ญาณดจิ ิตอลเป็นสัญญาณที่มีการเปลี่ยนแปลงแบบข้นั ทงั้ ขนาด ความแรงของคา่ สัญญาณและเวลา

สัญญาณอนาล็อก สัญญาณดจิ ิตอล

ADC

3. วิธีการอ่านค่าอนาล็อกของบอรด์ Arduino

บอร์ดไมโครคอนโทรลเลอร์ Arduino Uno R3 มพี อรต์ อนาล็อกอนิ พตุ (Analog Input) จานวน 6 พอรต์ คือ พอรต์ A0 ถึง A5 แตพ่ อรต์ มีความละเอียดขนาด 10 บติ ซึ่ง สามารถแบ่งระดับความแตกตา่ งได้ทง้ั หมด 1,024 ค่า

- แรงดนั 0 โวลต์ = 00 0000 00002 หรือ มเี ท่ากบั 010 - แรงดนั 5 โวลต์ = 11 1111 11112 หรอื มเี ท่ากับ 102310

3. วธิ ีการอา่ นคา่ อนาลอ็ กของบอร์ด Arduino

พอร์ตอะนาล็อก พอร์ตอะนาลอ็ กของบอร์ด Arduino

3. วธิ ีการอา่ นคา่ อนาล็อกของบอรด์ Arduino

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

3. วธิ ีการอา่ นคา่ อนาลอ็ กของบอร์ด Arduino

การต่อโพเทนทิโอมเิ ตอรก์ ับบอร์ด Arduino

Arduino กบั อนาลอ็ กอินพตุ

การเขยี นโปรแกรมเพื่อใชง้ านการอ่านคา่ สัญญาณอนาล็อก มคี าส่งั เพอื่ ใช้ในการ อา่ นอนาล็อกดังนี้ - คาสั่ง analogRead(); เปน็ คาส่ังสาหรับการอา่ นคา่ สัญญาณอนาล็อกที่พอรต์ อินพุตท่ี ตอ้ งการ

รูปแบบคาสัง่ analogRead(ตาแหน่งพอร์ต INPUT)