แสดงบทความที่มีป้ายกำกับ ไมโครคอนโทรลเลอร์ แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ ไมโครคอนโทรลเลอร์ แสดงบทความทั้งหมด

วันพุธที่ 26 เมษายน พ.ศ. 2560

การแปลงสัญญาณ A/D และ D/A

การแปลงสัญญาณ A/D และ D/A


การสื่อสารข้อมูลด้วยคอมพิวเตอร์ สามารถสื่อสารข้อมูลได้ทุกประเภท ประกอบด้วย เสียง (Voice) อักขระข้อความ (Text), ภาพ (Image) และข้อมูลคอมพิวเตอร์ (Data) ซึ่งแต่ละข้อมูล มีลักษณะเฉพาะของสัญญาณที่แตกต่างกัน แบ่งการกระทำของข้อมูลดังนี้
1. Analog Computer
สัญญาณอนาลอกคือ สัญญาณข้อมูลแบบต่อเนื่อง (Continuouse Data) มีขนาดของสัญญาณไม่คงที่ การเปลี่ยนแปลงขนาดของสัญญาณแบบค่อยเป็นค่อยไปแปรผันตามเวลา เป็นสัญญาณที่มนุษย์สามารถสัมผัสได้ เช่น แรงดันของน้ำ
2.Digital Computer
สัญญาณดิจิตัล คือ สัญญาณข้อมูลแบบไม่ต่อเนื่อง (Discrete Data) มีขนาดของสัญญาณคงที่ การเปลี่ยนแปลงขนาดของสัญญาณเป็นแบบทันที ทันใด ไม่แปรผันตามเวลา เป็นสัญญาณที่มนุษย์ไม่สามารถสัมผัสได้ เช่น สัญญาณไฟฟ้า

ความสัมพันธ์ของสัญญาณอะนาลอก ดิจิตอล และตัวแปลงสัญญาณ

สัญญาอะนาลอก (Analog) และสัญญาณดิจิตอล (Digital)ทั้งสองสัญญาณ เกี่ยวข้องกับตัวแปลงสัญญาณ (Transducer)การเชื่อมต่อระบบอนาลอกเข้าสู่ระบบคอมพิวเตอร์ จะต้องมีตัวกลางใน การแปลงเปลี่ยนจากAnalogให้เป็นสัญญาณทางอิเล็กทรอนิกส์ เรียกว่า“ทรานส์ดิวเซอร์”(Transducer) การแปลงสัญญาณกลับไปกลับมาระหว่างสัญญาณ Analog และ Digital อาศัย "ตัวเปลี่ยนสัญญาณข้อมูล Converter"
การแปลงสัญญาณมี 2 วิธีคือ
  1. การแปลงสัญญาณอนาลอกเป็นสัญญาณดิจิตอล
  2. การแปลงสัญญาณดิจิตอลเป็นสัญญาณอนาลอก

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

Analog to Digital Converter (A/D)ทำหน้าที่แปลงสัญญาณข้อมูลที่ มนุษย์รับรู้ สัมผัสได้ เป็นข้อมูลทางไฟฟ้า เพื่อป้อนเข้าสู่การประมวลผล จึงเป็นขบวนการหนึ่งของการรับข้อมูล (Input Unit)เป็นกระบวนการอีเลคโทรนิคส์ ที่สัญญาแปรผันต่อเนื่อง (analog) ได้รับการแปลงให้เป็นสัญญาณดิจิตอล โดยไม่มีการลบข้อมูลสำคัญผลลัพธ์ของ ADC มีลักษณะตรงข้าม คือ กำหนดระดับหรือสถานะ ตัวเลขของสถานะมักจะเป็นการยกกำลังของ 2 คือ 2, 4, 8, 16 เป็นต้น สัญญาณดิจิตอลพื้นฐานมี 2 สถานะและเรียกว่า binary ตัวเลขทั้งหมดสามารถแสดงในรูปของไบนารี ในฐานะข้อความของ หนึ่งและศูนย์
วงจรที่ใช้ในการแปลงสัญญาณอนาลอกเป็นดิจิตอลมีมากมายหลายชนิด โดยทั่วไปแล้ววงจรแปลงสัญญาณอนาลอกเป็นดิจิตอล (A/D converters) มีใช้งานอยู่ประมาณ 7 ชนิดคือ
  1. Parallel Comparator, Simultaneous, หรือ Flash A/D converter
  2. Single – Ramp หรือ Single – Slope A/D converter
  3. Dual – Slope A/D converter
  4. Charge balance A/D converter
  5. A/D converters using Counters and D/A converters
  6. Tracking A/D converters
  7. Successive – Approximation A/D converters

Counting Converter

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

ข้อบ่งเฉพาะของการแปลงสัญญาณ A/D (A/D SPECIFICATIONS)

ข้อบ่งเฉพาะจะบอกถึงขีดความสามารถของ converter โดยทั่วไปแล้วจะมีอยู่หลายคำ เช่น ความแม่นยำ,ความเที่ยงตรง และความเที่ยงตรงเป็นเส้นตรง ซึ่งค่าเหล่านี้จะขึ้นอยู่กับลักษณะของแต่ละวงจร แต่มีข้อบ่งเฉพาะอีกข้อหนึ่งที่ไม่ขึ้นอยู่กับลักษณะของวงจรคือ ค่าผิดพลาดระหว่างค่าจริงของสัญญาณอะนาลอก กับค่าของดิจิตอลที่ใช้แทนค่า (ค่าของ Output ของ A/D converter) ซึ่งเรียกว่า Quantizing error จะมีค่าอยู่ประมาณ +1/2 digit ต่ำสุด (LSB)ของการแปลงสัญญาณซึ่งก็เป็นการบ่งถึงความแม่นยำได้อีกทางหนึ่งด้วยค่า พารามิเตอร์ที่สำคัญอีกตัวหนึ่งสำหรับ A/D converter คือ conversiontime หรือค่าเวลาสำหรับการแปลงสัญญาณ ซึ่งมีช่วงเวลาอยู่ประมาณ 10-9 วินาที ถึง 10-3 วินาที ซึ่งขึ้นอยู่กับชนิดของconverterและจำนวน bit

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

Digital to Analog Converter (D/A) ทำหน้าที่แปลงข้อมูลผลลัพธ์จากการประมวลผลเป็นสัญญาณไฟฟ้า ให้เป็นสัญญาณที่มนุษย์รับรู้ได้ สัมผัสได้ เป็นการแสดงผลข้อมูล (Output Unit)digital-to-analog conversion เป็นกระบวนการซึ่งสัญญาณมีการกำหนดระดับ หรือสถานะจำนวนหนึ่ง ( ปกติ คือ 2 สถานะ) หรือสัญญาณดิจิตอล ให้เป็นสัญญาณที่ไม่จำกัดจำนวนของสถานะ หรือสัญญาณอนาลอก ตัวอย่าง กระบวนการของโมเด็มในการแปลงข้อมูลคอมพิวเตอร์ เป็นความถี่เสียง ให้สามารถส่งผ่านสายโทรศัพท์ twisted pair ในวงจรที่ทำงานให้กับฟังก์ชันนี้ เรียกว่า digital-to-analog converter (DAC) โดยพื้นฐาน digital-to-analog conversion ตรงข้ามกับ analog-to-analog conversion ถ้า analog-to-analog converter (ADC) วางอยู่ในวงจรการสื่อสารต่อจาก DAC สัญญาณดิจิตอลส่งออก จะตรงกับสัญญาณดิจิตอลนำเข้า ในกรณีที่ DAC วางอยู่ในวงจรต่อจาก ADC สัญญาณอะนาล๊อกส่งออกจะเป็นตรงกับสัญญาณอะนาล๊อกนำเข้าสัญญาณดิจิตอล แบบ binary จะปรากฏเป็นข้อความขนาดยาว ของ 1 และ 0 ซึ่งจะไม่มีความหมายต่อการอ่าน แต่เมื่อ DAC ใช้ถอดรหัสสัญญาณดิจิตอลแบบ binary จึงปรากฏผลลัพธ์ที่มีความหมาย ซึ่งอาจจะเป็น เสียง ภาพ เสียงดนตรี และกลไกการเคลื่อน
วงจรแปลงสัญญาณดิจิตอลเป็นสัญญาณอนาลอกมี 2 ลักษณะดังนี้

1.แบบรวมกระแส (weighted -resistor)

คุณลักษณะของ D/A แบบรวมกระแส
  1. จะต้องมีตัวต้านทานทุกอินพุทของสัญญาณดิจิตอล
  2. ตัวต้านทานนี้อินพุทของทุกบิทจะมีค่าเท่ากับเอาต์พุตของระดับดิจิตอลสูงสุด
  3. แรงเคลื่อนที่เอาต์พุตเต็มสเกลจะมีค่าเท่ากับเอาต์พุตของระดับดิจิตอลสูงสุด
  4. LSB จะมีน้ำหนักเป็น1/(2n-1) เมื่อ n เป็นจำนวนบิทที่อินพุท
  5. เมื่อ LSB เปลี่ยนแปลงแรงเคลื่อนไฟฟ้าที่เอาต์พุตจะเปลี่ยนไป 1/(2n-1) เมื่อ V เป็นระดับสัญญาณดิจิตอล

2.โครงข่ายแบบ R-2R (R-2R network)


การ Convert ค่าจากดิจิตอลเป็นอนาล็อกนั้น สามารถใช้ integrated circuit แปลงได้ แต่ถ้าหากคำนึงถึงเรื่องcostด้วยแล้ว วงจรที่สามารถทำได้และราคาถูกกว่าก็คือ R/2R Network นั่นเอง ซึ่งใช้ op-amp เป็นตัวควบคุมR/2R Network ทำได้จากการนำต่อต้านทานมาต่อดังรูป แต่ละบิตทั้งที่มีค่าเป็น 0 หรือที่เป็น operating voltage นั้นเป็นค่าที่อยู่ในวงจรของตัวต้านทานที่มีค่าเป็น 2 เท่าของrest network ซึ่งแต่ละบิตจะแสดงผลลัพธ์ออกเป็นoutput นั่นเอง จะเชื่อหรือไม่เชื่อว่าNetwork นี้ทำงานได้จริง ใช้เป็น Digital-to-Analog-Converters โดยใช้แค่เพียงตัวต้านทานต่อกันเป็นเครือข่ายตามรูป โดยไม่จำเป็นต้องใช้วงจรรวม integrated circuits แม้แต่วงจรเดียว 
Output จาก AVR port มีค่ากระแสไม่มากนัก เมื่อค่าความต่างศักย์ของมันควรจะมีค่าใกล้ๆศูนย์หรือพอกับ operating voltage ดังนั้นตัวต้านทานจึงควรมีค่าราวๆ 10กิโลโอห์ม เพราะจะทำให้วงจรไม่มีค่ากระแสมากเกินไปนั้นเอง และตัวop-amp เองก็สามารถทำงานกับวงจร R/2R Network ได้
R/2R Network and Buffer 


CA3140 เป็น Op-amp ที่มี FET stage เป็น input ซึ่งสามารถทำงานได้โดยค่าโวลต์ที่เป็นลบ หรือที่เรียกว่า Negative operating voltage นั่นเอง การทำงานของ CA3140นั้น ทำงานที่ค่าความต่างศักย์เป็น 5 โวลต์จาก 10-pin-connector ซึ่งConnector นี้ใช้กับboard STK200 หรือ STK500 ในที่จริงแล้วเราสามารถป้อนค่าความต่างศักย์ที่สูงกว่า 2 โวลต์ได้เช่นกัน โดยการใช้ตัวต้านทาน2ตัว ต่อขนานกันซึ่งจะได้ค่าประมาณครึ่งหนึ่งของ 100 k อาจจะเป็น 51k หรือมากกว่าหรือน้อยกว่าก็ได้ ซึ่งจะทำให้วงจรมี resolution เป็น 256 ซึ่งวงจรที่ได้ เป็นดังภาพด้านบน

ที่มา http://th.wikipedia.org

http://www.avr-asm-tutorial.net/avr_en/AVR_DAC.html

วันอาทิตย์ที่ 20 มีนาคม พ.ศ. 2559

[Arduino #7] Sublime Text สำหรับเขียนโค้ดอาร์ดูยโน่

[Arduino #7] Sublime Text สำหรับเขียนโค้ดอาร์ดูยโน่

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

Sublime Text เป็นโปรแกรมประเภทอิดิเตอร์ที่ใช้สำหรับเขียนโค้ดโปรแกรม รอรับการเขียนโปรแกรมได้หลายหลายภาษาเช่น ASP, ActionScript, AppleScript, BibTeX, C, C++, C#, CSS, Clojure, D, Diff, Erlang, Go, Graphviz, Groovy, HTML, Haskell, JSON, Java, JavaScript, LaTeX, Lisp, Lua, MATLAB, Markdown,  OCaml, Objective-C,  Objective-C++,  PHP, Pascal, Perl, Plain, Python, R, Ruby, SQL, Scala, TCL, XML, XSL เป็นต้น ถึงแม้ว่าโปรแกรม Sublime Text ไม่ใช่โปรแกรมที่ใช้ใช้งานได้ฟรี ๆ แต่ก็สามารถใช้งานได้ตามปกติเพียงแต่จะมีอะไร ๆ เด้งแจ้งมาเป็นระยะ ๆ ให้พอรำคาญบ้าง หากผู้ใช้งานต้องการให้สามารถใช้งานได้เต็มสามารถซื้อได้ในราคา 70 ดอลลาร์ (หรือจะหาวิธีทำให้เต็มได้ฟรี ๆ ก็ไม่ยาก ลองใช้กูเกิลหาวิธีนะครับ)
 
สำหรับการเขียนโค้ดอาร์ดูยโน่โดยใช้โปรแกรม Sublime Text มีข้อดีหลาย ๆ ข้อที่ผู้เขียนโปรแกรมต้องการแล้วหนึ่งในนั้นคือ ตัวโปรแกรม Sublime Text จะเชื่อมโยงค่าต่าง ๆ จากโปรแกรม Arduino IDE (ที่เราใช้เขียนโค้ดปกติอยู่แล้ว) จากโฟลเดอร์ที่ติดตั้งไว้ใช้งานเดิมอยู่แล้ว ดังนั้นคุณสมบัติต่าง ๆ จะเป็นเช่นเดียวกันกับ Arduino IDE ที่เราตั้งค่าเอาไว้

การใช้งานจะต้องมีส่วนประกอบอยู่ 3 ส่วนด้วยกันคือ

1. โปรแกรม Sublime Text (ปัจจุบันเป็นเวอร์ชั่น 3) สามารถดาวน์โหลดได้ที่ http://www.sublimetext.com เมื่อดาวน์โหลดเสร็จแล้วทำการติดตั้ง (การติดตั้งเหมือนกับการติดตั้งโปรแกรมทั่วไป)
2. ปลั๊กอิน Sublime Text Plugin for Arduino สามารถดาวน์โหลดได้ที่ https://github.com/Robot-Will/Stino เมื่อดาวน์โหลดเสร็จแล้วทำการให้ทำการแตกไฟล์ซึ่งจะได้โฟลเดอร์ชื่อ Stino-ST4ArduinoIDE
3. โปรแกรม Arduino IDE สามารถดาวน์โหลดได้ที่ https://www.arduino.cc/en/Main/Software ใน กรณีดาวน์โหลดเป็นไฟล์ zip ให้ทำการแตกไฟล์ หลังจากการแตกไฟล์ก็สามารถใช้งาน Arduino IDE ได้เลย จากการทดสอบจะสามารถใช้ได้เวอร์ชั่น 1.6.5 ส่วนเวอร์ชั่นที่สูงกว่าคอมไพล์ไม่ผ่าน (ติดปัญหาจากไฟล์ platform)

การตั้งค่าเพื่อให้ Sublime Text สามารถใช้งาน Arduino ได้

เมื่อติดตั้งโปรแกรม Sublime Text ใหม่ ๆ จะไม่สามารถเขียนโค้ด Arduino ได้ หน้าตาของโปรแกรมจะเป็นดังรูป

ดำเนินการติดตั้งปลั๊กอิน (Stino-ST4ArduinoIDE) ตัวที่เราได้ดาวน์โหลดมาแล้วดำเนินการดังนี้
1.เปิดโฟลเดอร์ที่เก็บโฟลเดอร์ปลั๊กอินค้างไว้

 2.เปิดโปรแกรม Sublime Text คลิกเมนู Preferences->Browse Packages…

 3. กลับไปคลิกที่ File manager ที่เราเปิดไว้ในข้อที่ 1 ทำการคัดลอกปลั๊กอิน (Stino-ST4ArduinoIDE) ทั้งโฟลเดอร์มาวางไว้ในโฟลเดอร์ Packages ที่โปรแกรม Sublime Text เด้งขึ้นมา

นำมาวางในโฟลเดอร์ Packages

ผลที่ได้...

 4.ปิดโปรแกรม Sublime Text แล้วเปิดใหม่จะมีเมนู Arduino เพิ่มขึ้นมาดังรูป

 5.เลือกโปรแกรม Arduino IDE ตัวที่เราต้องการจะให้โปรแกรม Sublime Text ดึงคุณสมบัติมาใช้

6.คลิกที่โฟลเดอร์ Arduino ที่เราต้องการ

หลังจากคลิกจะได้
 
การใช้งาน โปรแกรม Sublime Text ในเมนู Arduino จะทำการดึงคุณสมบัติของ Arduino IDE มาทั้งหมดดังนั้นการใช้งานจะต้องมีการเลือกค่าต่าง ๆ เพื่องานเช่นเดียวกับ Arduino IDE ปกติคือ
-เลือกบอร์ดที่ใช้งาน (Board)
-เลือกพอร์ตอนุกรมที่เชื่อมต่อกับบอร์ด Arduino (Serial Port)
-เลือกชนิดโปรแกรมที่ใช้เบิร์นลงบอร์ด (Programmer)
เท่านี้ก็สามารถใช้งาน Sublime Text เพื่อเขียนโค้ดอาร์ดูยโน่ได้แล้ว
 

[Arduino #6] ลองของจริง 2 ตอน"ทำบูตโหลดเดอร์"

[Arduino #6] ลองของจริง 2 ตอน"ทำบูตโหลดเดอร์"

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

อุปกรณ์ที่ใช้ในการดำเนินการทำบูตโหลดเดอร์ในตอนนี้ประกอบด้วย
1. บอร์ด Arduino UNO R3 (ที่ใช้งานได้ปกติทั่วไป)
2. ไอซี CPU ใหม่ เบอร์ ATmega8A, ATmega168, ATmega328 (ในตอนนี้ใช้ ATmega168)
3. คริสตอล 16 MHz
4. BreadBroad (แผงวจรที่ใช้ต่อวงจร CPU ตัวใหม่)
5. Capacitor 22pF
6. Resistor 10k
7. USB to UART (TTL Level) สำหรับทดสอบการทำงานเมื่อทำเสร็จ
วงจรที่ใช้ในการทำบูตโหลดเดอร์

เนื่องจากต้องการทำบูตโหลดเดอร์โดยใช้ไฟล์ optiboot (ซึ่งมีมาให้ในโปรแกรม Arduino) เนื่องจากไฟล์บูตโหลดเดอร์ดังกล่าวนี้มีขนาดเล็กทำให้เหลือพื้นที่ใช้งานมาก ขึ้น(เขียนโปรแกรมใส่ได้มากขึ้น) และมีความเร็วในการอัพโหลดสูงทำให้ใช้เวลาในการอัพโหลดน้อย วิธีการเราจะต้องเพิ่มรายการเข้าไปในไฟล์ broad.txt ซึ่งเป็นโฟลเดอร์ย่อยอยู่ภายในโปรแกรม arduino
-เปิดไฟล์ broad.txt (เพื่อแทรกรายการ)

ทำการแทรกรายการของไอซี ATmega168g เข้าไปดังรูป (ในตัวอย่างจะแทรกเข้าเป็นรายการที่สอง)

##############################################################
Opti168.name=[Optiboot] Arduino ATmega168
Opti168.upload.protocol=arduino
Opti168.upload.maximum_size=15872
Opti168.upload.speed=115200
Opti168.bootloader.low_fuses=0xFF
Opti168.bootloader.high_fuses=0xDD
Opti168.bootloader.extended_fuses=0x02
Opti168.bootloader.path=optiboot
Opti168.bootloader.file=optiboot_atmega168.hex
Opti168.bootloader.unlock_bits=0x3F
Opti168.bootloader.lock_bits=0x0F
Opti168.build.mcu=atmega168
Opti168.build.f_cpu=16000000L
Opti168.build.core=arduino:arduino
Opti168.build.variant=arduino:standard
##############################################################
Opti8.name=[Optiboot] Arduino ATmega8
Opti8.upload.protocol=arduino
Opti8.upload.maximum_size=7680
Opti8.upload.speed=115200
Opti8.bootloader.low_fuses=0xbf
Opti8.bootloader.high_fuses=0xdc
Opti8.bootloader.path=optiboot
Opti8.bootloader.file=optiboot_atmega8.hex
Opti8.bootloader.unlock_bits=0x3F
Opti8.bootloader.lock_bits=0x0F
Opti8.build.mcu=atmega8
Opti8.build.f_cpu=16000000L
Opti8.build.core=arduino:arduino
Opti8.build.variant=arduino:standard
##############################################################

ขั้นตอนการทำบูตโหลดเดอร์แบ่งออกเป็น 2 ขั้นตอนคือ
1. การทำบอร์ด Arduino UNO R3 กลายเป็นบอร์ดโปรแกรม (บอร์ดเบิร์น)
2. การเบิร์นบูตโหลดเดอร์ลง CPU ตัวใหม่
ขั้นตอนการทำบอร์ด Arduino UNO R3 กลายเป็นบอร์ดโปรแกรม (บอร์ดเบิร์น) เริ่มจาก 
-เปิดโปรแกรม Arduino IDE (สำหรับทำบูตโหลดเดอร์ให้กับ Atmega8 ต้องใช้เวอร์ชั่น 1.0.x เท่านั้น)
-เลือกบอร์ดเป็น Arduino Uno ดังรูป

-เลือกพอร์ตอนุกรมที่บอร์ด Arduino UNO เชื่อมต่อ มีวิธีการสังเกตุว่าเป็นพอร์ดใด สามารถทำได้ดังนี้ ในขณะที่ยังไม่เสียบสาย USB (ของบอร์ด Arduino UNO) มีรายการพอร์ตอะไรบ้าง

ทำการเสียบสาย USB ของบอร์ด Arduino UNO เข้าคอมพิวเตอร์

สังเกตุพอร์ตที่เพิ่มขึ้นมา ให้ทำการเลือกพร์ตที่เพิ่มขึ้นมานั้น

-เลือกชนิดเครื่องโปรแกรมเป็น AVRISP mkII (หากเลือกชนิดขึ้นเมื่อมีการคลิก upload โปรแกรมจะวิ่งเข้าสู่งบอร์ด Arduino ที่กำลังต่อสาย USB กับคอมพิวเตอร์อยู่)

-เปิดไฟล์ ArduinoISP

-คลิก Upload  หลังจากนี้บอร์ด Arduino UNO ก็จะกลายเป็นเครื่องโปรแกรมในชื่อว่า Arduino as ISP

ขั้นตอนการเบิร์นบูตโหลดเดอร์ลง CPU ตัวใหม่ เริ่มจาก-ต่อวงจร CPU ตัวใหม่ลง BreadBroad (หรื่อวงจรที่สร้างขึ้น)

-เชื่อมต่อสายสัญญาณระหว่างบอร์ด Arduino UNO (ที่ทำในขึ้นตอนแรก) กับวงจร CPU ใหม่โดยมีการเชื่อมต่อดังนี้
บอร์ดเบิร์น(ArduinoUNO)-->บอร์ด CPU ใหม่ที่สร้างขึ้น
D13-->D13
D12-->D12
D11-->D11
D10-->pin 1 (Reset)
และไฟเลี้ยงสำหรับวงจรใหม่ดังรูป

(รูปการเชื่อมต่อวงจรจริง)

-เปิดโปรแกรม Arduino IDE (Sketch) เลือกรายการบอร์ดเป็นบอร์ดใหม่ที่เราได้ทำการแทรกไปในตอนต้นดังรูป สำหรับ CPU ATmega8A ให้เลือก "[Optiboot] Arduino ATmega8" และกรณีใช้ CPU เบอร์ ATmega328 ให้เลือก Arduino Uno

-เสียบสาย USB (Arduini UNO) เลือกพอร์ตที่บอร์ดเชื่อมต่อ

-เลือกเครื่องโปรแกรมเป็น Arduino as ISP

-คลิกที่ Burn Bootloader

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


-ใช้ตัวแปลง USB to UART (TTL Level) ที่มีขา DTR มาให้ดังรูป

การเชื่อมต่อเป็นดังรูป

การเชื่อมต่อระหว่างตัวแปลง USB to UART กับวงจรมีดังนี้
DTR--->Reset (ผ่าน C 0.1uF)
RXD--->TXD
TXD--->RXD
+5V--->VCC
GND--->GND

-ต่อ USB เข้าคอมพิวเตอร์

-เลือกพอร์ตที่เป็นรายการที่เพิ่มขึ้นมา

-เลือกบอร์ดเป็นบอร์ดใหม่ที่เราสร้างขึ้น ([Optiboot] Arduino ATmega168)

-เปิดไฟล์ตัวอย่าง Blink

-คลิก Upload (ในการณีที่ LED เลื่อนไปต่อขา D9 ให้ทำการเปลี่ยน int led=13; เป็น int led=9;)

[Arduino #5] ลองของจริง 1 ตอน"เริ่มต้นด้วย UNO R3"

[Arduino #5] ลองของจริง 1 ตอน"เริ่มต้นด้วย UNO R3"

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

บอร์ด Arduino UNO R3 มีคุณสมบัติดังนี้
Microcontroller---------------------------ATmega328
Operating Voltage----------------------5V
Input Voltage (recommended)-----7-12V
Input Voltage (limits)------------------6-20V
Digital I/O Pins--------------------------14 (of which 6 provide PWM output)
Analog Input Pins-----------------------6
DC Current per I/O Pin---------------40 mA
DC Current for 3.3V Pin-------------50 mA
Flash Memory--------------------------32 KB (ATmega328) of which 0.5 KB used by bootloader
SRAM-------------------------------------2 KB (ATmega328)
EEPROM--------------------------------1 KB (ATmega328)
Clock Speed-----------16 MHz
http://arduino.cc/en/Main/arduinoBoardUno
ผังของบอร์ด Arduino UNO R3 เป็นดังรูป (คลิกที่รูปเพื่อขยายใหญ่)


เริ่มต้นการใช้งานบอร์ด Arduino UNO R3
บอร์ด Arduino UNO R3 เป็นบอร์ดที่มีการติดต่อสื่อสารผ่านทางสาย USB โดยใช้การบอร์ดจะมีการแปลงการสื่อสาร USB เป็น COM พอร์ตในตัว ดังนั้นก่อนที่จะใช้งานได้ต้องมีการติดตั้งไดร์เวอร์ (ทำครั้งแรกครั้งเดียว) ซึ่งมีขั้นตอนดังนี้
1. ก่อนการติดตั้งเข้าไปดูใน Device Manager ว่ามีรายการอะไรอยู่บ้าง

2. เสียบสาย USB (ซึ่งต่ออยู่กับบอร์ด Arduino) เข้าเครื่องคอมพิวเตอร์

จะมีรายการปรากฎขึ้นเพิ่มเติม (ซึ่งตอนที่ไม่ได้เสียบ USB ไม่มีรายการนี้) ดังรูป (Unknown Device)

3. คลิกขวาที่รายการดังกล่าว เลือก Update Driver Software...

4. คลิก Browse my computer for driver software

5. คลิก Browse เพื่อหาตำแหน่งเก็บไฟล์ไดร์เวอร์

ุ6. ตำแหน่งไดร์เวอร์จะอยู่ในโฟลเดอร์โปรแกรม arduino ดังรูป จากนั้นคลิก Next



7. คลิก Install เพื่อติดตั้งไดร์เวอรืลงวินโดว์

8. เสร็จสิ้นการติดตั้ง

9. เมื่อไปดูใน Device Manager จะเห็นรายการ Arduino UNO พร้อมหมายเลข Com พอร์ตที่ใช้ในการเชื่อมต่อ

เริ่มต้นการทดลอง
ก่อนที่จะเริ่มต้นการทดลองทุกครั้ง (หลังจากเปิดเครื่องคอมพิวเตอร์ใหม่) จำเป็นต้องมีการตั้งค่าบอร์ดที่ใช้งานโดยมีการตั้งค่า 3 รายการคือ
1. บอร์ดที่ใช้งาน ในที่นี้ใช้บอร์ด Arduino UNO R3 ดังนั้นต้องเลือกรายการ Arduino UNO ดังรูป

2. COM พอร์ตที่บอร์ดทำการเชื่อมต่อ โดยดูได้จาก Device Manager ดังที่ได้กล่าวมาแล้วข้างต้น

3. เลือกชนิดเครื่องโปรแกรม เนื่องจากบูตโหลดเดอร์ของบอร์ดได้จำลองตัวเองเป็น AVRISP mkII ดังนั้นเครื่องโปรแกรมจึงต้องเลือกรายการดังรูป

สำหรับการตั้งค่าให้แสดงตำแหน่งของไฟล์ภาษาเครื่อง เพื่อจะนำไปใช้ในการจำลองการทำงานจะต้องตั้งค่าที่ Preferences ดังรูป


เริ่มทดลองจากตัวอย่างไฟกระพริบ Blink โดยเรียกไฟล์ตัวอย่างดังรูป

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