10 มิถุนายน 2559

อาร์ดุยโน : นำเข้าสัญญาณแอนะล็อก

ลองเล่นอินพุท-เอาท์พุทกับสัญญาณดิจิทัลแล้ว มาในตอนนี้ ลองเล่นการนำเข้าสัญญาณแอนะล็อกกันบ้าง

ก่อนอื่นเราลองทำมาทำความเข้าใจกับสัญญาณแอนะล็อกกันสักหน่อยก่อน

สัญญาณแอนะล็อกเป็นสัญญาณที่ค่าสัญญาณทางไฟฟ้ามีการเปลี่ยนแปลงแบบต่อเนื่อง หมายความว่า เมื่อจะมีการเปลี่ยนแปลงแรงดันไฟฟ้า ระหว่าง 0 ถึง 5 โวลท์ มันจะค่อยๆ เปลี่ยนแปลง เช่นจาก 0.1, 0.2, 0.3, .... ไปเรื่อยๆ จนกระทั่งถึง 5 โวลท์ ซึ่งแตกต่างจากสัญญาณดิจิทัล ที่มันจะมีเพียง 2 สถานะ คือ ประมาณ 0 โวลท์ กับประมาณ 5 โวลท์ เท่านั้น ใครยังไม่เข้าใจ ลองอ่านเรื่อง สัญญาณแอนะล็อก กับสัญญาณดิจิทัล เมื่อบทความที่แล้วดูอีกที

อาร์ดุยโนจัดการสัญญาณแอนะล็อกอย่างไร

เมื่อมีสัญญาณแอนะล็อก ซึ่งอยู่ในรูปแรงดันไฟฟ้า(voltage)ที่มีการเปลี่ยนแปลงอย่างต่อเนื่องเข้ามายังขาเข้าแอนะล็อก ไม่ว่าขาไหนช่องใดก็ตาม อาร์ดุยโนก็ต้องแปลงมันให้เป็นดิจิทัลอยู่ดี การแปลงนี้เรียกว่า ADC (Analog to Digital Converter) วิธีการแปลงก็คือ มันจะแบ่งระดับของแรงดันไฟฟ้าขาเข้าออกเป็น 1024 ระดับ (210) คือตั้งแต่ค่า 00000000002 (010) จนถึง 11111111112 (102310) ตัวเลขที่ห้อยท้ายหมายถึงฐานของเลขที่เราต้องการอ้างถึงนะครับ

สมมติว่าแรงดันไฟฟ้าที่ผ่านเข้ามายังช่องแอนะล็อก มีตั้งแต่ 0 โวลท์ ถึงสูงสุด 5 โวลท์ นั่นคือ
แรงดันไฟฟ้าที่เข้ามา 0 โวลท์ จะถูกแปรผลเป็นตัวเลข 0
แรงดันไฟฟ้าที่เข้ามา 0.005 โวลท์ จะถูกแปรผลเป็นตัวเลข 1
แรงดันไฟฟ้าที่เข้ามา 0.010 โวลท์ จะถูกแปรผลเป็นตัวเลข 2
แรงดันไฟฟ้าที่เข้ามา 0.015 โวลท์ จะถูกแปรผลเป็นตัวเลข 3
.
.
.
แรงดันไฟฟ้าที่เข้ามา 4.995 โวลท์ จะถูกแปรผลเป็นตัวเลข 1022
แรงดันไฟฟ้าที่เข้ามา 5.000 โวลท์ จะถูกแปรผลเป็นตัวเลข 1023

โดย...

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


จุดประสงค์การทดลอง

  • เพื่อทำความเข้าใจกับการจัดการสัญญาณป้อนเข้าแบบแอนาล็อกของอาร์ดุยโน

อุปกรณ์การทดลอง

  1. บอร์ด Arduino UNO
  2. ตัวต้านแบบปรับค่าได้ 10kΩ (แบบเกือกม้าก็ได้ แบบมือหมุนก็ได้)
  3. สายไฟ
  4. magnetic buzzer (ลำโพงขนาดเล็กๆ นิยมนำมาทำเป็นเสียงออด)
ต่ออุปกรณ์ดังรูป


ขยายให้เห็นชัดๆ ต่อจะได้ไม่ผิด



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

เขียนและรันโปรแกรม 


  1. เปิด IDE
  2. คลิก File > New
  3. บันทึกไฟล์ให้เรียบร้อย เสียบสาย USB จากบอร์ดเข้ายังคอมพิวเตอร์
  4. คลิก  เพื่อทำการตรวจสอบ คอมไพล์และอัพโหลด(ในคลิกเดียว) ถ้ามีปัญหาอะไร IDE ก็จะแจ้ง ครูเชื่อว่าถ้าพิมพ์ตามที่ครูบอกก็จะไม่มีปัญหาอะไร
  5. ตอนนี้ควรจะได้ยินเสียงออด (ฟังดูน่ารำคาญอยู่ ) ลองหมุนปรับโวลุ่มดู จะเห็นว่าเสียงออดมีการแปรเปลี่ยนได้ ด้านหนึ่งจะได้ยินเสียงต่ำ ด้านหนึ่งจะได้ยินเสียงสูง

การทำงานของโปรแกรม

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


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

aValue=analogRead(5);
digitalWrite(9, HIGH);
delayMicroseconds(1000+10*aValue);
digitalWrite(9, HIGH);
delayMicroseconds(1000+10*aValue);

ค่า aValue คือ ค่าตัวเลขที่ได้จากฟังก์ชั่น analogRead(5);
ถัดมาก็เซตสถานะสัญญาณดิจิทัลช่อง 9 เป็น HIGH แรงดัน 5 โวลท์จะถูกจ่ายออกไปที่บัซเซอร์ ถัดมาอีกบรรทัดหนึ่งเป็นคำสั่งที่เลื่อนเวลาออกไป เป็นเวลา 1000+10*aValue  ในหน่วยไมโครวินาที ค่า aValue จะมีค่าจะอยู่ระหว่าง 0-1023 ดังได้กล่าวมาแล้ว เมื่อเอามาคูณ 10 แล้วบวกกับ 1000 ก็จะกลายเป็นจาก 1000-11230 ไมโครวินาที จากนั้นก็เซตสถานะสัญญาณดิจิทัลของช่อง 9 เป็น LOW (0 โวลท์) แล้วก็รอไปอีกเท่าช่วงเวลาเดิม ก่อนวนกลับไปเริ่มทำใหม่

แล้วเสียงเกิดได้อย่างไร 

ปกติความถี่เสียง(ƒ) ที่เราได้ยินคือ 20-20000 Hz หรือหากเราคิดเป็นคาบ(T) คือ 0.05-0.00005 วินาที หรือ 50000 ไมโครวินาที - 50 ไมโครวินาที

ทีนี้ไปพิจารณาการรอจังหวะสถานะ HIGH และสถานะ LOW รวมกัน (ครบ 1 ลูกคลื่น) จะมีค่าระหว่าง 2000 - 22460 ไมโครวินาที ซึ่งคิดเป็นความถี่เสียงที่ได้คือ 45-500 Hz

สรุป

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

ขอบคุณที่ติดตามครับ

09 มิถุนายน 2559

อิเล็กทรอนิกส์ : สัญญาณดิจิทัล กับ สัญญาณแอนะล็อก

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

เริ่มแรกเรามารู้จักกับนิยามมันก่อนดีกว่า เข้าใจหรือไม่เข้าใจก็ให้รู้จักกันไว้ก่อน

สัญญาณทางไฟฟ้า ในวิชาอิเล็กทรอนิกส์เขาแบ่งไว้เป็น 2 ประเภทคือ

  • สัญญาณดิจิทัล (Digital Signal)
    ใน wikipedia.org ได้ให้ความหมายของสัญญาณดิจิทัลไว้ว่า เป็นสัญญาณทางกายภาพที่เป็นตัวแทนของลำดับของค่าที่แยกจากกัน(สัญญาณที่มีปริมาณไม่ต่อเนื่องในแกนเวลา)
  • สัญญาณแอนะล็อก (Analog Signal)
    ใน wikipedia.org ได้ให้ความหมายของสัญญาณแอนะล็อกไว้ว่า เป็นสัญญาณแบบต่อเนื่อง มีลักษณะเป็นคลื่นไซน์ (sine wave) โดยที่แต่ละคลื่นจะมีความถี่และความเข้มของสัญญาณที่ต่างกัน
อ่านแล้วแม้คนที่มีพื้นฐานทางไฟฟ้า อิเล็กทรอนิกส์มาบ้างแล้วก็อาจจะยังงง ยิ่งไปอ่าน wikipedia ฉบับภาษาอังกฤษ ยิ่งมีการอธิบายไว้แบบพิสดาร

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

สัญญาณดิจิทัล

พิจารณาวงจรดังต่อไปนี้


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

ทีนี้ลองเขียนแผนภาพเวลา (time diagram) โดยแกนตั้งให้เป็นค่าความต่างศักย์คร่อมตัวต้านทาน ส่วน แกนนอนเป็นแกนของเวลา สมมติว่ามีการกด-ปล่อย กด-ปล่อย สวิทช์ด้วยช่วงเวลา 1 วินาทีเท่าๆ กัน


นี่ล่ะที่เขาเรียกกันว่า สัญญาณดิจิทัล  ถ้าเราให้สถานะที่มีความต่างศักย์คร่อมตัวต้านทาน 0 โวลท์ หมายถึง สถานะ LOW หรือ 0 และสถานะที่มีความต่างศักย์คร่อมตัวต้านทาน 5 โวลท์ หมายถึง สถานะ HIGH หรือ 1 จากตัวอย่างที่ให้มาดังภาพ ด้านบนนี้ ก็จะแปลความหมายได้เป็นตัวเลขได้ คือ  00101010

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

สัญญาณแอนะล็อก

พิจารณาวงจรดังต่อไปนี้


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


มาพิจารณาว่าเกิดอะไรขึ้น
จะเห็นว่าตัวต้านทานที่ต่อกันแบบอนุกรม มันก็คือวงจรแบ่งแรงดันนั่นเอง ในสภาวะเริ่มต้นที่กำหนดให้ VR มีค่าความต้านทานมากที่สุด แรงเคลื่อนไฟฟ้าส่วนใหญ่ก็จะไปตกคร่อมที่ VR  ประมาณ 4.5 โวลท์ ส่วนที่เหลือ 0.5 โวลท์จะตกคร่อมที่ R ซึ่งเราสามารถอ่านได้จากโวลท์มิเตอร์  ครั้นเมื่อเราหมุน VR ให้มีค่าน้อยลง ความต่างศักย์คร่อม R ก็จะเพิ่มขึ้น (เพราะความต่างศักย์ของ VR จะลดลง) จนกระทั่งเมื่อค่าความต้านทานVR มีค่าน้อยที่สุด(ใกล้เคียง 0) ความต่างศักย์ส่วนใหญ่ก็จะไปตกคร่อมที่ R คือประมาณ 5 โวลท์  (การคำนวณค่าความต่างศักย์ ศึกษาได้จากหัวข้อ Voltage Divider ที่่ http://hyperphysics.phy-astr.gsu.edu/hbase/electric/voldiv.html ) และเมื่อหมุนค่าความต้านทานของ VR กลับจากน้อยไปหามาก ความต่างศักย์ที่คร่อม R ก็จะค่อยๆ น้อยลง จนเหลือประมาณ 0.5 โวลท์เหมือนสภาวะเริ่มต้น แล้วก็กลับไปกลับมาเช่นนี้ ตามจังหวะการหมุน VR

ลองเอาเหตุการณ์ที่เกิดขึ้นมาสร้างเป็นกราฟเวลา เหมือนในหัวข้อสัญญาณดิจิทัล



จะแผนภาพเวลา จะเห็นว่าการเปลี่ยนแปลงสภาวะจาก 0.5 โวลท์(โดยประมาณ) ที่คร่อม R ก่อนไปเป็นสภาวะที่มีความต่างศักย์ 5 โวลท์นั้น ความต่างศักย์ที่คร่อม R จะไม่กระโดดทีเดียวจากค่าน้อยๆ ไปหาค่ามากเลยทีเดียว แต่จะค่อยๆ เปลี่ยนจาก 0.5 เป็น 0.6, 0.7, 0.8, 0.9, 1.0 ... ไปเรื่อยๆ จนถึง 5 โวลท์ ในทำนองเดียวกัน การเปลี่ยนแปลงความต่างศักย์จาก 5 โวลท์มาเป็น 0.5 โวลท์ ก็จะในทำนองเดียวกัน คือ เปลี่ยนแปลงอย่างต่อเนื่อง ไม่มีการกระโดดข้ามช่วง  และนี่คือต้วอย่างหนึ่งของสัญญาณที่เราเรียกกันว่า สัญญาณแอนะล็อก

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

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


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

ตอนนี้คงจบไว้แค่นี้ ขอบคุณที่ติดตามนะครับ



07 มิถุนายน 2559

อาร์ดุยโน : นำเข้าสัญญาณดิจิทัล

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

สัญญาณดิจิทัล เป็นสัญญาณที่มีสองสถานะ เช่นถ้าเราใช้แรงเคลื่อนไฟฟ้า 5 โวลท์ เป็นระดับอ้างอิง สัญญาณจะมีสองระดับ คือ 0 โวลท์ (อยู่ในสถานะ LOW) กับ 5 โวลท์ (อยู่ในสถานะ HIGH) ซึ่งใครที่ทำการทดลองตามครูเมื่อคราวที่แล้ว จะเห็นได้ว่าเมื่อเราใช้คำสั่ง digitalWrite(pinNumber, state) หมายถึง การสั่งให้ส่งสัญญาณดิจิทัลออกไปยังหมายเลขช่องที่ระบุใน pinNumber เช่น pinNumber = 10 ส่วน state เซตเป็น LOW  ก็จะมีแรงเคลื่อนไฟฟ้า 0 โวลท์ ออกที่ขาหมายเลข10 (LED ดับ) แต่หากระบุ state เป็น HIGH แรงเคลื่อนไฟฟ้าที่ช่องหมายเลข 10 จะมีแรงเคลื่อนไฟฟ้ากลายเป็น 5 โวลท์ (LED สว่าง)

สิ่งที่เราจะทำในครั้งนี้ก็คือ เซตสถานะจากภายนอกให้เป็น LOW (0 โวลท์) หรือ HIGH (5 โวลท์) แล้วให้ช่องรับข้อมูลของอาร์ดุยโนรับไปปฏิบัติงานต่อไป

จุดประสงค์ของการทำการทดลองหรือเล่นในครั้งนี้ 

  1. รู้จักสัญญาณดิจิทัลและสร้างสัญญาณดิจิทัลง่ายๆ เพื่อป้อนเข้าสู่บอร์ดอาร์ดุยโน
  2. เขียนโปรแกรมสั่งให้อาร์ดุยโนนำสัญญาณดิจิทัลขาเข้า มาควบคุม LED ให้ติดหรือดับ ผ่านช่องทางดิจิทัลขาออก

อุปกรณ์ต้องใช้ 

  1. บอร์ด Arduino UNO 1 บอร์ด
  2. เบรดบอร์ด 1 แผ่น
  3. สวิทช์กดติด ปล่อยดับ (push button) 1 ตัว
  4. หลอด LED 1 หลอด
  5. ตัวต้านทาน 10k , 220 Ω อย่างละตัว
  6. สายไฟสำหรับเสียบแผ่นบอร์ด

ลุย 

ต่ออุปกรณ์ดังภาพ

ขยายหน่อยให้เห็นชัดๆ ตัวต้านทาน 10k คือตัวนอน 220 Ω คือตัววางตั้ง

 


การทำงาน

      เมื่อกดสวิทช์ กระมีกระแสไฟฟ้าจากแหล่งจ่ายกำลัง 5 โวลท์ที่เราต่อออกจากบอร์ด ไหลผ่านตัวต้านทาน 10k ซึ่งจำให้เกิดความต่างศักย์ตกคร่อมที่ตัวต้านทานนี้ เกิดเป็นสถานะ HIGH ป้อนเข้าสู่ช่อง 11 ของพอร์ทดิจิทัล และเมื่อเราปล่อย กระแสไฟฟ้าไม่สามารถไหลผ่านตัวต้านทาน 10k ได้ ก็จะเกิดเป็นสถานะ LOW ขึ้น เราจะใช้ 2 สถานะนี้ในการควบคุมการกระพริบของ LED ที่เราต่อไว้ที่ขา 0 ของพอร์ทดิจิท้ล

ตรวจสอบความเรียบร้อยของสายไฟให้ดีก่อนนะครับ เตรียมสาย USB ไว้อย่าเพิ่งเสียบเข้ากับเครื่องคอมพิวเตอร์ รอก่อน

การดำเนินการทางซอฟท์แวร์
  1. เปิด IDE
  2. คลิก File > New
    พิมพ์โค้ดของโปรแกรมเข้าไปดังแสดงในภาพ

  3. คลิก File > Save
    ตั้งชื่อไฟล์ในโฟลเดอร์ที่เราต้องการ ครูตั้งชื่อไฟล์นี้ว่า digital_IN
  4. เสียบสาย USB จากบอร์ดอาร์ดุยโน เข้ากับเครื่องคอมพิวเตอร์
  5. คลิกที่ปุ่ม  เพื่อคอมไพล์ ตรวจสอบและอัพโหลดไฟล์ที่คอมไพล์แล้วไปยังหน่วยความจำแฟลชของอาร์ดุยโน
  6. ทดลองกดปุ่มสวิทช์กดติด ปล่อยดับ โดยกดแช่ไว้นิ่งๆ (เซตสถานะของสัญญาณดิจิทัลให้เป็น HIGH) สลับกับการปล่อย (เซตสถานะของสัญญาณดิจิท้ลให้เป็น LOW) แล้วเปรียบเทียบความแตกต่าง โดยสังเกตการกระพริบของ LED ทั้งสองสถานะเปรียบเทียบกัน

ผล

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

การทำงานของโปรแกรม

โปรแกรมนี้เราพิมพ์ขึ้นมาโล้นๆ เลย ไม่มีคอมเมนต์ใดๆ ทั้งสิ้นให้เสียเวลาล่ะ เริ่มต้นขึ้นมาก็
int button;

นี่เป็นการประกาศตัวแปร ให้เป็นแบบ int (หรือจะประกาศให้เป็นก boolean ก็ได้) ตั้งชื่อตัวแปรว่า button ตั้งไว้เฉยๆ ยังไม่มีการกำหนดค่าใดๆ 
จากนั้นในส่วนของการตั้งค่า ก็มีการตั้งค่าให้ช่อง 0 เป็นขาส่งออก(OUTPUT) ช่อง 11 เป็นขารับข้อมูล (INPUT) ด้วยโค้ดต่อไปนี้

pinMode(0, OUTPUT);
pinMode(11, INPUT);

ส่วนการวนรอบ(loop() ) เริ่มต้นก็มีการอ่านข้อมูลสถานะจากช่อง 11 โดยค่าที่ได้นำมาเก็บไว้ในตัวแปรชื่อ button ดังโค้ดคำสั่งต่อไปนี้

button=digitalRead(11);

แล้วก็นำมาตรวจสอบกับเงื่อนไขว่า button นี้สถานะอย่างไร HIGH หรือ LOW โดยใช้นิพจน์

if (button==HIGH) 

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

  digitalWrite(0, HIGH);
  delay(100);
  digitalWrite(0, LOW);
  delay(100);

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

  digitalWrite(0, HIGH);
  delay(1000);
  digitalWrite(0, LOW);
  delay(2000);

สรุป

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

if (เงื่อนไขหรือตัวแปรที่ต้องการตรวจสอบ) { 
ข้อความคำสั่ง เมื่อเงื่อนไขเป็นจริง ;
}
else {
ข้อความคำสั่ง เมื่อเงื่อนไขเป็นเท็จ ;
}

เริ่มสนุกขึ้นแล้วนะครับ

แล้วพบกันใหม่ ตอนต่อไปครับ



06 มิถุนายน 2559

อาร์ดุยโน : ไฟแอล อี ดี กระพริบ ตอนสอง

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

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


LED ตัวที่สองนี้ อาโนดถูกต่อเข้ากับช่องหมายเลข 5 (digital) ส่วนคาโทดต่อเข้ากับตัวต้านทาน 220 โอห์ม ส่วนของด้านหนึ่งของตัวต้านทานต่อเข้ากับกราวด์ซึ่งเราใช้สายโยงมายังต้วต้านทานตัวแรกได้เลยครับ แล้วมันจะมาลงกราวด์ที่บอร์ดด้วยกัน

ตรวจดูความเรียบร้อยอีกครั้ง ก่อนเสียบสาย USB เข้ากับคอมพิวเตอร์ แล้วดำเนินการ ดังนี้

  1. เปิด IDE
  2. เปิดไฟล์โปรแกรมที่เราได้แก้ไขไว้ เมื่อตอนที่แล้วขึ้นมา
  3. พิมพ์แก้ไขโปรแกรม ดังต่อไปนี้
  4. คลิกปุ่ม  เพื่อคอมไฟล์ ตรวจสอบ และอัพโหลด พร้อมกันเลยทีเดียว

คราวนี้ก็จะสังเกตเห็นหลอด LED ทั้งสองหลอดผลัดกันติด ผลัดกันดับช่วงเวลาละ 1 วินาที

อธิบายการทำงาน

ก่อนอื่นครูให้ข้อสังเกตว่า เราสามารถ Comment ด้วยภาษาไทยก็ได้นะครับ เพื่อให้เด็กๆ ที่ไม่ยังไม่ค่อยเก่งภาษาอังกฤษสามารถทำความเข้าใจกับโปรแกรมได้ แต่ครูก็ยังใช้ปนๆ กันอยู่ เพราะโปรแกรมต้นฉบับเดิมเขาคอมเมนต์เป็นภาษาอังกฤษ

ทีนี้มาดูส่วนส่วนแรก ซึ่งเป็นการประกาศตัวแปร ที่มีประเภทของตัวแปรเป็นจำนวนเต็ม โดยใช้คีย์เวิร์ดว่า int แล้วตามด้วยชื่อตัวแปร led1, led2 สำหรับเก็บหมายเลขพอร์ทดิจิทัล 10 และ 5 ตามลำดับ ส่วน delayTime1, delayTime2 สำหรับเก็บตัวเลขค่าหน่วงเวลาของการเกิดแสงสว่างของหลอดที่ 1 และ 2 ตามลำดับ

ต่อจากนั้นก็เป็นส่วน void setup()  ซึ่งเป็นการตั้งค่าให้พอร์ทดิจิทัล ทำหน้าที่เป็นเอาท์พุทส่งค่าไปยังภายนอก 
   pinMode(led1, OUTPUT) ;  //เป็นการเซ็ตพอร์ท led1 เป็นเอาท์พุด
   pinMode(led2, OUTPUT);  //เป็นการเซ็ตพอร์ท led2 เป็นเอาท์พุต

ส่วนที่สาม void loop() เป็นส่วนของการวนรอบการทำงานไม่สิ้นสุด ซึ่งก็จะเหมือนกับตัวอย่างในตอนที่แล้ว เพียงแต่ในตอนนี้ จะมีการควบคุมหลอด 2 หลอด โดยให้หลอดที่หนึ่ง led1 สว่างก่อน จากนั้นหน่วงเวลาตามค่าที่ตั้งไว้ที่ delayTime1 แล้วให้หลอดที่สอง led2 สว่าง จากนั้นก็หน่วงเวลาไว้อีกตามค่า delayTime2 จากนั้นก็ปิด แล้ววนรอบกลับไปทำซ้ำใหม่ ..... เรื่อยๆ ไม่รู้จบ

หากเราต้องการเปลี่ยนจังหวะการหน่วงเวลา ก็ทำได้โดยการแก้ไขค่าของตัวแปร delayTime1 กับ delayTime2 เราก็จะได้รูปแบบการกระพริบที่แปลกๆ ออกไปอย่างง่ายดาย 

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

แล้วพบกันใหม่ครับ


อาร์ดุยโน : ไฟแอล อี ดี กระพริบ ตอนแรก

ครูจะพาเริ่มเรียนรู้อิเล็กทรอนิกส์กับอาร์ดุยโน จะเริ่มไปพร้อมๆ กับการเขียนโปรแกรม วันนี้เราจะมาเริ่มรู้จักกับ Digital Output โดยใช้บทเรียนง่ายๆ ที่เรียกว่า ไฟแอล อี ดี กระพริบ

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

จุดประสงค์ของครูในการเขียนบทความนี้ ก็เพื่อให้ผู้เริ่มเรียนรู้อาร์ดุยโน ได้ในสิ่งเหล่านี้
  1. รู้จักการใช้ Arduino IDE เพื่อเขียนโปรแกรมและอัพโหลดโปรแกรมลงอาร์ดุยโน
  2. ฝึกการใช้ Digital Output แบบง่ายๆ โดยใช้ LED ในการแสดงผล
อุปกรณ์ที่จำเป็นต้องมี
  1. บอร์ดอาร์ดุยโน (จะของแท้ ของเทียม ของเทียบก็ได้ สำหรับครูใช้ของเทียบ)
  2. หลอด LED 2 หลอด สีอะไรก็ได้
  3. ตัวต้านทาน 220 โอห์ม 2 ตัว
  4. แผ่นเบรดบอร์ด พร้อมสายไฟสำหรับเสียบเบรดบอร์ด
  5. คอมพิวเตอร์ที่ติดตั้ง Arduino Software (IDE) แล้ว (ใครยังไม่มี ไปดาวน์โหลดฟรี  ได้ที่ https://www.arduino.cc/en/Main/Software )

    *** IDE คำนี้ครูจะใช้บ่อยมาก ความหมายก็คือ ชุดโปรแกรมมาตรฐานของอาร์ดุยโนที่เผยแพร่ ผ่านเว็บไซต์ arduino.cc 

เริ่มต้นการทดลอง

ทดลองใช้หลอด LED  กับตัวต้านทาน 220 โอห์มอย่างละอันก่อน ต่อสายไฟเข้ากับช่องเสียบ ดังแสดงในภาพ


ภาพที่แสดงนี้ครูแคปเจอร์มาจากหน้าจอของโปรแกรม Fritzing ครับ ในภาพครูต่อสายไฟเส้นหนึ่งจาก ช่อง 10 ของ Digital เข้าไปยังอาโนดของหลอด LED ซึ่งเสียบอยู่บนบอร์ดทดลอง จากนั้นนำความต้านทาน 220 โอห์ม (ถ้าไม่มีก็เอาใกล้เคียงก็พอได้ครับ) แล้วอีกด้านหนึ่งของตัวต้านทาน ต่อเข้ากราวด์ (GND) บนบอร์ดอาร์ดุยโน



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

ถึงเวลา IDE

  1. เปิด IDE ของอาร์ดุยโนขึ้นมา
  2. คลิก File > Examples > 01. Basics > Blink

  3. เมื่อไฟล์ Blink ได้เปิดขึ้นมาแล้ว เลื่อนแถบเลื่อนด้านขวาจนสุด เราจะเห็นข้อความ คล้ายๆ กันกับครูที่นำมาแสดง ดังภาพด้านล่าง



    เลื่อนเคอร์เซอร์ไปเปลี่ยนเลข 13 ให้เป็นเลข 10 ให้หมด ซึ่งมีอยู่ 3 ที่(ทำตามไปก่อน ครูจะอธิบายเหตุผลทีหลัง)
  4. คลิก File > Save as ... แล้วเลือกโฟลเดอร์ที่จะเก็บไฟล์ต้นฉบับโปรแกรมของเราไว้ (อาจสร้างใหม่เลยก็ได้) แล้วตั้งชื่อไฟล์ที่เราจำได้ง่าย ของครูตั้งว่า test_blink แล้วก็คลิก Save
  5. คลิกปุ่มเครื่องหมายถูก เพื่อตรวจสอบและคอมไพล์โปรแกรม ถ้าทำตามครู มันควรจะขึ้นข้อความที่แถบดำๆ ด้านล่าง ดังแสดงให้ภาพ



    หากไม่ขึ้นดังภาพ ปิดโปรแกรมแล้วย้อนกลับไปทำใหม่
  6. เมื่อเสร็จขั้นตอน 5 แล้ว ทีนี้ก็คลิกที่ปุ่มลูกศรขวา  เพื่ออัพโหลดโค้ดที่คอมไฟล์แล้ว (Object Code) ไปยังส่วนความจำแฟลชของอาร์ดุยโน
  7. สังเกตการหลอด LED ซึ่งตอนนี้มันจะติด 1 วินาที ดับ 1 วินาที สลับกันไปอย่างไม่มีสิ้นสุด หรือจนกว่าจะถอดสาย USB 

ทำความเข้าใจกับโครงสร้างของภาษาซีใน IDE

Comments

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

  • อยู่ภายในเครื่องหมาย /* ........... คอมเมนต์ ........... */   และ
  • อยู่หลังจากเครื่องหมาย // .......... คอมเมนต์

















ตัวอย่างการคอมเมนต์ในการเขียนโปรแกรม ซึ่งครูนำมาจากโค้ดตัวอย่างใน IDE

Function

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

เมื่ออ้างถึงฟังก์ชั่น จะต้องมีเครื่องหมายวงเล็บเปิด-ปิด ด้วยเสมอ  จากตัวอย่างที่ครูนำมาแสดง จะมี 2 ฟังก์ชั่นคือ setup() และ loop()  ซึ่งสองฟังก์ชั่นนี้เป็นฟังก์ชั่นหลักที่จะต้องมีอยู่ด้วยเสมอในการเขียนโปรแกรมบน IDE

Statements

Statements หรือ ข้อความคำสั่ง (ที่ครูจะใช้ในการเรียกเป็นภาษาไทย) ก็คือ ข้อความที่เราพิมพ์ เพื่อสั่งให้อาร์ดุยโนทำงาน ซึ่งแต่ละข้อความคำสั่งจะต้องจบด้วยเครื่องหมายเซมิโคลอน (;) จากตัวอย่างที่ครูนำมาให้เล่น จะมีดังนี้
   pinMode(10, OUTPUT);   // หมายถึงการตั้งค่าให้ช่องที่ 10 ของ Digital IO ใช้ส่งข้อมูลออก
   digitalWrite(10, HIGH);   // หมายถึง การตั้งค่าสถานะช่องที่ 10 ให้อยู่ในสถานะเป็น 1 ซึ่งจะมีความต่างศักย์ไฟฟ้า เท่ากับ +5 โวลท์
   delay(1000); // หมายถึง ให้มีการหน่วงเวลาไว้ 1000 มิลลิวินาที
   digitalWrite(10, LOW);   // หมายถึง การตั้งค่าสถานะช่องที่ 10 ให้อยู่ในสถานะเป็น 0 ซึ่งจะมีความต่างศักย์ไฟฟ้า เท่ากับ 0 โวลท์

ข้อความคำสั่งอยู่จะอยู่ภายในฟังก์ชั่นหลักของ IDE โดยมีเครื่องหมายวงเล็บปีกกา {......} ล้อมเอาไว้


Variables 

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

  • จำนวนเต็ม (integer) เป็นตัวแปรที่สามารถเก็บจำนวนเต็มตั้งแต่ -32,768 ถึง 32,767 ในการสร้างตัวแปรชนิดจำนวนเต็มนี้จะใช้หน่วยความจำ 2 ไบต์ (16 บิต) 
  • อักขระ (charactor)  เป็นตัวแปรที่ใช้เก็บตัวอักขระหรือตัวอักษรต่างๆ ได้ 1 ตัว ตัวแปรนี้จะใช้หน่วยความจำ 1 ไบต์ (8 บิต) รหัสที่ใช้เก็บเป็นรหัสแอสกี้ ซึ่งเราสามารถดูรหัสได้ที่ https://en.wikipedia.org/wiki/ASCII
  • บูลีน (Boolean) ใช้เก็บ "จริง" กับ "เท็จ" ใช้หน่วยความจำ 1 ไบต์ (8 บิต)
ครูแนะนำตัวแปรง่ายๆ เบื้องต้นเพียงแค่นี้ก่อนนะครับ เพราะเรายังไม่ได้ใช้งาน แม้ในต้วอย่างที่ครูยกมาในครั้งนี้ แต่เราจะลองใช้ตัวแปรในตอนต่อไป ซึ่งครูจะพาให้รู้จักตัวแปร และเริ่มใช้งานกัน

สรุปการเรียนรู้ในครั้งนี้

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

ครั้งต่อไป เราจะเริ่มเล่นกับตัวแปร และใช้ LED เป็น 2 ตัว อย่าลืมติดตามนะครับ



04 มิถุนายน 2559

อิเล็กทรอนิกส์ : รู้จักและเล่นกับ "หลอด LED"

LED ภาษาไทย เราเรียกทับศัพท์กันเลยว่า แอลอีดี (ออกเสียงเป็น แอว-อี-ดี) มาจากคำเต็มของภาษาอังกฤษว่า Light Emitting Diode แปลว่า ไดโอดเปล่งแสง

ปัจจุบันนี้มองไปทางไหน เราก็จะเห็น LED ทั้งสิ้น ไฟเขียว ไฟแดง บริเวณสี่แยก ไฟท้ายรถยนต์ ไฟหรี่รถยนต์ จอแสดงภาพยนตร์โฆษณาตามสี่แยก ไฟแสดงสถานะการเปิดปิดของโทรทัศน์ วิทยุ เครื่องเสียง ดีวีดี คอมพิวเตอร์ ฯลฯ


แอลอีดี เป็นสิ่งประดิษฐ์ที่ทำมาจากสารกึ่งตัวนำ โดยส่วนใหญ่จะใช้ธาตุแกลเลียม(Ga : Gallium) สารหนูหรืออาเซนิก (As : Arsenic) หรือไม่ก็ฟอสฟอรัส (P : Phosphurus)  ผสมกัน

ตามประวัติศาสตร์บุคคลที่นับได้ว่าเป็นคนแรกที่สังเกตปรากฏการณ์ในลักษณะของการเปล่งแสงแบบที่เรียกว่า electroluminescene  จากไดโอด คือ Captain Henry Joseph Round   ส่วน Vladimirovich Losev ก็สังเกตเห็นการเปล่งแสงออกจากรอยต่อของคาร์โบรันดัม (Carborundum) และบุคคลที่ได้พัฒนาแอลอีดีในย่านแสงที่เรามองเห็นได้ขึ้นมาเป็นคนแรกคือ Nick Holonyak, Jr. หลังจากนั้นเป็นต้นมาก็ได้มีการคิดค้นและประดิษฐ์ LED จากสีแดง สีเหลือง สีเขียว และอื่นๆ ออกมาอย่างมากมายอย่างที่เห็นก้นในปัจจุบัน

การทำงาน

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

ลองดูแอนิเมชั่น ที่ครูลิงค์มาจากยูทูป ซึ่งจะทำให้เราเข้าใจหลักการทำงานได้ง่ายขึ้น


สัญลักษณ์ที่ใช้ในวงจร


สัญลักษณ์ที่ใช้ในวงจรของไดโอดจะเหมือนหัวลูกศร(ดังภาพ) เหมือนกับจะบอกว่ายอมให้กระแสไฟฟ้าไหลผ่านได้ทางเดียวเท่านั้น นั่นคือไปตามทิศทางของลูกศร โดยด้านที่กระแสไฟฟ้าเข้าเรียกว่า Anode หรือ อาโนด (อ่านว่า อา-โหนด) และด้านที่กระแสไฟฟ้าออกเรียกว่า Cathode หรือ คาโทด (อ่านว่า คา-โถด)

การนำไปใช้งานในวงจร

หลอด LED มีหลากหลายสี หลากหลายรูปร่าง แต่ที่ครูจะนำมาแนะนำ และสาธิตการทำงานให้เห็นในบทความตอนนี้ก็คือ LED สีแดง รุ่นธรรมดา 5 mm ดังที่เห็นในภาพ 
ครูจำไม่ได้ว่ามันมีราคากี่บาท แต่ไปหาซื้อตามร้านขายอุปกรณ์อิเล็กทรอนิกส์ทั่วไปได้ ขนาดประมาณ 5 มิลลิเมตร ความต่างศักย์คร่อมตัวมันรับได้ในระหว่าง 2 โวลท์ (บวกลบได้นิดหน่อย) กระแสไฟฟ้าไม่เกิน 20 มิลลิแอมป์ (น้อยกว่าได้แต่ไม่ควรเกิน) ความเข้มการส่องสว่าง 150-200 มิลลิแคนเดลลา (ดูจาก datasheet ของอุปกรณ์ที่เราซื้อมา)

นี่คือวงจรการใช้งาน LED

สัญลักษณ์เหล่านี้เชื่อว่า ผู้ที่เรียนวิทยาศาสตร์ ระดับมัธยมศึกษาตอนต้นขึ้นมา น่าจะรู้จักกันเป็นอย่างดี แต่ครูก็ขออธิบายให้ฟังนะครับ เริ่มจากเซลล์ไฟฟ้า 3 โวลท์(ถ่านไฟฟ้า AA 2 ก้อน) ต่อกันแบบอนุกรม ขั้วบวกต่อเข้ากับอาโนดของ LED อีกด้านหนึ่งต่อเข้ากับตัวต้านทาน 58 โอห์ม อีกด้านหนึ่งของตัวต้านทานต่อเข้ากับขั้วลบของเซลล์ไฟฟ้า ดังภาพ

ทดลอง เล่น

รู้จัก LED กันไปบ้างแล้ว ต่อไปนี้ก็จะเป็นการทดลองเล่น เล่นแบบง่ายๆ สำหรับเด็กนักเรียน และมีความปลอดภัยพอสมควร แต่อย่างไรก็ตามควรศึกษาให้เข้าใจก่อนนะครับ แล้วก็ต้องใช้ความรอบคอบในการทดลองสักนิด จะได้ไม่เกิดความเสียหาย

สิ่งที่ต้องมี
  1. แผ่นเบรดบอร์ดหรือบอร์ดเสียบอุปกรณ์สำหรับการทดลอง หาตัวเล็กๆ ก็ได้
  2. ลวดสายไฟ

  3. หลอด LED
  4. ตัวต้านทาน 50-100 โอห์ม
  5. รังถ่าน AA 2 ก้อน
เอามาต่อกันดังภาพ
อย่าลืมนะครับ ขายาวคือ อาโนด ต่อขั้วบวก ขาสั้น คาโทด ขั้วลบ

การคำนวณหาค่าความต้านทาน

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

เมื่อเรามีแหล่งจ่ายกำลัง  ซึ่งมีแรงเคลื่อนไฟฟ้าต่างๆ และเราต้องการใช้แหล่งจ่ายกำลังนี้ต่อเข้ากับ LED เราต้องคำนวณค่าความต้านทานที่เหมาะสมด้วย ซึ่งมีขั้นตอนดังนี้ครับ

กำหนดให้
E คือ แรงเคลื่อนไฟฟ้าที่เราจ่ายให้วงจรทั้งหมด
VLED  คือ ความต่างศักย์คร่อม LED (ดูได้จากสเปคของ LED เอง)
ILED  คือ กระแสไฟฟ้าที่เราต้องการป้อนให้แก่ LED (ดูได้จากสเปคของ LED เอง)
R คือ ค่าความต้านทานของตัวทานที่เราจะนำมาต่ออนุกรมกับวงจร
สูตรคำนวณ คือ   R = (E-VLED) / ILED

เช่น จากการทดลองเล่นในตอนต้น ครูใช้แหล่งจ่ายกำลังที่มีแรงเคลื่อนไฟฟ้า E=3 โวลท์ ใช้หลอด LED ที่มีความต่างศักย์คร่อมตัวมัน VLED= 2 โวลท์ กระแสไฟฟ้าที่ต้องการให้ผ่านตัวหลอด ILED=18 มิลลิแอมป์ ดังนั้น ค่าความต้านทานที่ต้องใช้ คือ R = (3-2)/18x10-3 =55.6 ประมาณ 56 โอห์ม แต่ความต้านทานค่ามาตรฐานคือ 58 โอห์ม จึงใช้ค่าตามตัวอย่าง แต่อย่างไรก็ตาม เราอาจหาค่าที่ใกล้เคียงมาใช้ก็พอได้เหมือนกันครับ

ดูอีกสักตัวอย่าง เช่น การใช้แหล่งจ่ายกำลัง 12 โวลต์ จ่ายให้ LED 2 ตัวที่ต่อการแบบอนุกรม
E=12 volts,  VLED2ตัว= 4 volts (เพราะเอา 2 volts มาต่ออนุกรมกัน), ILED=18 mA
ดังนั้น R = (12-4)/18x10-3 =444.4 โอห์ม ค่าความต้านทานมาตรฐานคือ 470 โอห์ม ก็นำตัวนี้มาใช้

มีคำถามอะไร ถามได้ในคอมเมนต์นะครับ

ขอบคุณที่ติดตาม


01 มิถุนายน 2559

อาร์ดุยโน : ของแท้ ของเทียม ของที่เข้ากันได้

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

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

อาร์ดุยโนของแท้ 

อาร์ดุยโนเป็นโครงการที่ริเริ่มในประเทศอิตาลี ดังนั้นบอร์ดของอาร์ดุยโนของแท้จึงผลิตที่อิตาลี โดยทีมงานของอาร์ดุยโน ซึ่งดูข้อมูลได้ที่เว็บไซต์ของเขาเองที่ www.arduino.cc

แต่ด้วยเหตุที่โครงการของอาร์ดุยโนตั้งแต่แรกนั้น เป็นโครงการโอเพ่นซอร์ส ทั้งฮาร์ดแวร์และซอฟท์แวร์ ดังนั้นคำว่า "ของแท้" จึงอาจใช้คำว่า "ต้นฉบับ" แทนก็ได้ เพราะว่าทีมงานของอาร์ดุยโนเมื่อออกแบบขึ้นมาแล้วแทนที่จะทำเองแต่เพียงผู้เดียว เขากลับเผยแพร่พิมพ์เขียวต้นฉบับของงานให้เป็นสาธารณะ ด้วย (GPL : General Public License) แต่ยังคงสงวนคำว่า "อาร์ดุยโน" และเครื่องหมายการค้าไว้ใช้เฉพาะตัวเองอยู่ โดยจะสังเกตคำว่า TM ตัวเล็กๆ มุมบนด้านขวา (ตอนหลังนี่มีคำว่า Genuino ขึ้นมาอีก นี่ก็ของแท้เหมือนกันแต่สำหรับขายนอกประเทศสหรัฐอเมริกา ????  วุ่นวายดีนะครับ)


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


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

อาร์ดุยโนของเทียม (Counterfeit)

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

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

ในเว็บของอาร์ดุยโนเอง ก็ได้ให้ข้อสังเกตเกี่ยวกับ "ของแท้" กับ "ของเทียม" อยู่เหมือนกันนะครับ ซึ่งเมื่อเปรียบเทียบดูแล้ว ต้องบอกเลยว่า "ของเทียม" ทำได้เหมือน "ของแท้" มากๆ จนแทบแยกไม่ออก ลองฝึกแยกดูนะครับ จากหน้าเว็บนี้ https://www.arduino.cc/en/Products/Counterfeit

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

อาร์ดุยโนที่เข้ากันได้(กับของแท้)

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

นอกจากการใช้งานที่ส่วนใหญ่เข้ากันได้กับบอร์ดจากต้นฉบับแล้ว ยังมีราคาที่ถูกมาก ถูกอย่างไม่น่าเชื่อ บางบอร์ดราคาประมาณร้อยบาทเอง แต่...... ต้องดูดีๆ นิดนึงครับ ข้อเสียของบอร์ดประเภทนี้คือ หาเอกสารอ้างอิงหรือหาคนคุยด้วยเวลาเกิดปัญหาต่างๆ ได้ยาก อาจเสียเงินทิ้งไปเลยก็เป็นไปได้ นี่อาจต้องเสี่ยงนิดนึง

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

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


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

ขอบคุณที่ติดตามนะครับ