Mbits with microBLOCK บทที่ 6 AX-Mbits กับ ZX-02F

ZX-02F แผงวงจรตรวจจับแสง

    ZX-02F คือแผงวงจรที่ใช้ตรวจจับแสงสว่างในแบบแปรผันตรงนั่นคือ แรงดันเอาต์พุตเพิ่มเมื่อแสงตกกระทบ อุปกรณ์สำคัญคือโฟโต้ทรานซิสเตอร์เบอร์ SFH310 โดยเมื่อได้รับแสงตัวโฟโต้ทรานซิสเตอร์จะนำกระแสไฟฟ้าทันทีโดยปริมาณกระแสไฟฟ้าที่เกิดขึ้น จะขึ้นกับความเข้มของแสงที่ตกกระทบ

การอ่านค่าแอนะล็อก

    บอร์ด Mbits บนพื้นฐาน ESP32 มีวงจรแปลงแอนะล็อกเป็นดิจิตัลขนาด 12 บิต ทำให้อ่านค่าได้ในช่วง 0-4095 โดย ใช้คำสั่ง analog read pin คำสั่งนี้สามารถอ่านค่าแอนะล็อกได้จากหลายๆ ขา แต่ขาที่แนะนำให้ใช้โดยไม่กระทบกับการทำงานของขาอื่นๆ ประกอบด้วย ขา P1 ,P2 P6 และ P7
(knob : ตัวต้านทานปรับค่าได้)

ตัวอย่างที่ 27 อ่านค่าจาก ZX-02F แสดงผลที่หน้าต่าง Terminal

ก่อนจะนำเซนเซอร์ไปใช้งาน ทดสอบอ่านค่าผ่าน Terminal ก่อน โดยจะให้แสดงค่าเมื่อกดสวิตช์ Button A

การทำงาน

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

ตัวอย่างที่ 28 เสียงปลุกยามเช้า

https://ide.microblock.app/?open=1648974265915-feA6Qu.mby

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

การทำงาน

    เมื่อค่าแสงมีค่าเท่ากับค่าแสงในช่วงเวลากลางวัน จะสั่งงานให้ LED RGB 5×5 แสดงรูปหัวใจและสร้างเสียงดนตรีออกที่ลำโพงสร้างเสร็จแล้ว ให้รอจนค่าแสงน้อยอีกครั้ง ถึงจะวนไปรอให้แสงมีค่ามากอีกครั้ง

ตัวอย่างที่ 29 สวิตช์สนธยา

เลียนแบบไฟถนน จะติดอัตโนมัติเมื่อตอนเย็นหลังพระอาทิตย์ตก และจะดับเมื่อตอนเช้าพระอาทิตย์ขึ้น

เลือกใช้ LED ต่อเข้ากับขา P4 จะเริ่มติดเมื่อมีแสงน้อย และจะดับเมื่อแสงมากขึ้น

การทำงาน

การเปรียบเทียบค่าที่อ่านได้จาก ZX-02F โดยจะใช้ค่า 50 สำหรับตรวจจับเมื่อแสงน้อย และค่า 200 ตรวจจับเมื่อแสงมาก ค่าที่เกิดขึ้นระหว่าง 50-200 จะไม่เปลี่ยนแปลง ช่วงกำกวมนี้ ถ้าเป็นการเปิดปิดหลอดไฟจริงๆ จะทำให้เกิดการกะพริบได้

PWM : Pulse Width Modulation

เป็นการปรับค่าความกว้างพัลส์ เพื่อให้ค่าแรงดันเฉลี่ยมีการเปลี่ยนแปลงตามต้องการ มักใช้กับการควบคุมความสว่างของ LED ,ปรับความเร็วมอเตอร์ โดยแทนที่จะส่งเป็นแรงดันเป็นไฟตรง จะส่งเป็นสัญญาณพัลส์ (สี่เหลี่ยม) ความถี่คงที่ออกไปแทน แล้วปรับค่าความกว้างพัลส์ช่วงบวก (Duty Cycle) ให้กว้างหรือแคบตามต้องการ พัลส์แคบจะให้แรงดันเฉลี่ยน้อย พัลส์กว้างจะให้แรงดันเฉลี่ยมาก

ตัวอย่างที่ 30 ปรับความสว่าง LED ตามค่าแสง

นำเอาคำสั่ง PWM มาควบคุมความสว่างของ LED

ค่าแอนะล็อกที่อ่านได้อยู่ในช่วง 0-4095 แต่ PWM จะอ่านได้ในช่วง 0-1023 ดังนั้นค่าแอนะล็อกจะต้องหารด้วย 4 ก่อนจะส่งไปยังคำสั่ง PWM Write

ตัวอย่างที่ 31 ไฟฉายควบคุมการเปิด/ปิดสวิตช์

https://ide.microblock.app/?open=1648900950984-tlvsQE.mby

นำแผงวงจรตรวจจับแสงมาใช้อย่างง่ายๆ ด้วยการสั่งเปิดปิดไฟจากไฟฉาย

ต่อ ZX-LED และ ZX-02F ตามตำแหน่งในรูป

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

    ตัวอย่างจะสร้างตัวแปร x สำหรับเก็บค่าสถานะของ LED ติดหรือดับ เมื่อมีแสงมากกว่าค่าที่ประมาณการไว้ จะตรวจสอบค่าตัวแปร x และสั่งให้ LED ที่ขา P4 ติดหรือดับตามค่าตัวแปร x พร้อมทั้งอัพเดตค่าตัวแปร x ใหม่ ก่อนจะจบการทำงานวนอ่านค่าเพื่อรอค่าแสงให้น้อยกว่า 800 ก่อนจากนั้นหน่วงเวลา 0.5 วินาที จึงจะวนกลับไปรอการส่องแสงใหม่อีกครั้ง ถ้าไม่ใช้คำสั่ง wait ultil เพื่อวนรอ แล้วส่องแสงค้างไว้ LED จะติดดับสลับกันไปเรื่อยๆ

ตัวอย่างที่ 32 ไฟฉายคุมสวิตช์เปิด/ปิด 3 หลอด

https://ide.microblock.app/?open=1648960039916-yM7qFj.mby

เพิ่มจำนวน LED ให้ติด/ดับ ตามลำดับการส่องไฟ โดยต่อ ZX-LED 3 ดวงเข้าที่ตำแหน่ง P4 P10 และ P13 ตามรูป

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

ปรับเปลี่ยนจากตัวอย่างก่อนหน้านี้ที่ตัวแปร x มีค่าเฉพาะ 0 และ 1 เท่านั้น ให้มีค่าเป็น 0 1 2 3 เพื่อให้ LED ติดตามรูปแบบที่ต้องการ หน้าจอ LED RGB 5×5 แสดงค่า x ด้วยเพื่อเห็นว่าปัจจุบันอยู่ที่สถานะใดแล้ว

ผลการทำงาน

เมื่อเอาไฟฉายส่องที่ ZX-02F ครั้งแรก LED ขา P4 ติดสว่าง ครั้งที่ 2 LED ที่ขา P10 จะติดสว่างเพิ่มอีกหลอด ครั้งที่ 3 LED จะติดทั้ง 3 ดวง และครั้งที่ 4 LED ทั้ง 3 ดวงจะดับ วนทำแบบนี้ไปเรื่อยๆ

 

แค่เซนเซอร์ ZX-02 เพียงอย่างเดียวก็ได้ตัวอย่างหลายตัวอย่างแล้วครับ

งั้นเซนเซอร์ที่เหลือขอยกไปไว้เป็นตอนต่อไปนะครับ

Facebook Comments Box