Raspberry Pi เป็นบอร์ดที่ใช้โปรเซสเซอร์สถาปัตยกรรม ARM ที่ออกแบบมาสำหรับวิศวกรอิเล็กทรอนิกส์และมือสมัครเล่น PI เป็นหนึ่งในแพลตฟอร์มการพัฒนาโครงการที่น่าเชื่อถือที่สุดในขณะนี้ ด้วยความเร็วโปรเซสเซอร์ที่สูงขึ้นและ RAM 1 GB PI สามารถใช้กับโปรเจ็กต์ที่มีรายละเอียดสูงมากมายเช่นการประมวลผลภาพและ Internet of Things
สำหรับการทำโครงการที่มีรายละเอียดสูงจำเป็นต้องเข้าใจฟังก์ชันพื้นฐานของ PI เราจะกล่าวถึงฟังก์ชันพื้นฐานทั้งหมด ของ Raspberry Pi ในบทช่วยสอนเหล่านี้ ในแต่ละบทช่วยสอนเราจะพูดถึงฟังก์ชันหนึ่งของ PI ในตอนท้ายของชุดการสอนคุณจะสามารถทำโปรเจ็กต์ที่มีรายละเอียดสูงได้ด้วยตัวเอง ตรวจสอบสิ่งเหล่านี้สำหรับการเริ่มต้นใช้งาน Raspberry Pi และ Raspberry Pi Configuration
เราได้พูดถึงอินเทอร์เฟซ LED กะพริบและปุ่มกับ Raspberry Pi ในบทช่วยสอนก่อนหน้านี้ ในการสอน Raspberry Pi PWM นี้เราจะพูดถึงการรับเอาต์พุต PWM ด้วย Raspberry Pi PWM ย่อมาจาก ' Pulse Width Modulation ' PWM เป็นวิธีที่ใช้ในการรับแรงดันไฟฟ้าผันแปรจากแหล่งจ่ายไฟคงที่ เราจะสร้างสัญญาณ PWM จาก Raspberry PIและสาธิต PWM โดยเปลี่ยนความสว่างของ LED ที่เชื่อมต่อกับ Pi
การปรับความกว้างพัลส์:
ก่อนหน้านี้เราเคยพูดถึง PWM หลายครั้งใน: Pulse width Modulation with ATmega32, PWM with Arduino Uno, PWM with 555 timer IC and PWM with Arduino Due
ในรูปด้านบนหากสวิตช์ปิดอย่างต่อเนื่องในช่วงเวลาหนึ่งไฟ LED จะ 'ON' ในช่วงเวลานี้อย่างต่อเนื่อง หากสวิตช์ปิดเป็นเวลาครึ่งวินาทีและเปิดในครึ่งวินาทีถัดไป LED จะติดเฉพาะในครึ่งวินาทีแรกเท่านั้น ตอนนี้สัดส่วนที่ LED เปิดอยู่ตลอดเวลาเรียกว่า Duty Cycleและสามารถคำนวณได้ดังนี้:
Duty Cycle = เปิดเวลา / (เปิดเวลา + ปิดเวลา)
รอบการทำงาน = (0.5 / (0.5 + 0.5)) = 50%
ดังนั้นแรงดันขาออกเฉลี่ยจะเท่ากับ 50% ของแรงดันแบตเตอรี่
เป็นกรณีนี้เป็นเวลาหนึ่งวินาทีและเราจะเห็นไฟ LED ดับเป็นเวลาครึ่งวินาทีและ LED ติดสว่างอีกครึ่งวินาที ถ้าความถี่ของเวลาเปิดและปิดเพิ่มขึ้นจาก "1 ต่อวินาที" เป็น "50 ต่อวินาที" ตาของมนุษย์ไม่สามารถจับความถี่นี้ได้ สำหรับตาปกติจะเห็นไฟ LED สว่างขึ้นครึ่งหนึ่งของความสว่าง ดังนั้นเมื่อลดเวลา ON ลงมากขึ้น LED จึงดูเบาลงมาก
เราจะตั้งโปรแกรม PI เพื่อรับ PWM และเชื่อมต่อ LED เพื่อแสดงการทำงาน
มีหมุดเอาต์พุต 40 GPIO ใน Raspberry Pi แต่จากทั้งหมด 40 พินสามารถตั้งโปรแกรมได้เพียง 26 พิน GPIO (GPIO2 ถึง GPIO27) หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับพิน GPIO ให้ไปที่: LED กะพริบด้วย Raspberry Pi
ส่วนประกอบที่ต้องการ:
ที่นี่เราจะใช้ ราสเบอร์รี่ Pi 2 รุ่น B กับ Raspbian Jessie OS ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์พื้นฐานทั้งหมดได้กล่าวไว้ก่อนหน้านี้คุณสามารถค้นหาได้ในบทนำ Raspberry Pi นอกเหนือจากที่เราต้องการ:
- หมุดเชื่อมต่อ
- 220Ωหรือ1KΩตัวต้านทาน
- LED
- คณะกรรมการขนมปัง
คำอธิบายวงจร:
ดังที่แสดงในแผนภาพวงจรเราจะเชื่อมต่อ LED ระหว่าง PIN35 (GPIO19) และ PIN39 (กราวด์) ดังที่ได้กล่าวไว้ก่อนหน้านี้เราไม่สามารถดึงมากกว่า 15mA จากหมุดใด ๆ เหล่านี้ได้ดังนั้นเพื่อ จำกัด กระแสเรากำลังเชื่อมต่อตัวต้านทาน220Ωหรือ1KΩในอนุกรมกับ LED
คำอธิบายการทำงาน:
เมื่อเชื่อมต่อทุกอย่างแล้วเราสามารถเปิด Raspberry Pi เพื่อเขียนโปรแกรมใน PYHTON และดำเนินการได้
เราจะพูดถึงคำสั่งเล็ก ๆ น้อย ๆ ที่เราจะใช้ในโปรแกรม PYHTON
เรากำลังจะนำเข้าไฟล์ GPIO จากไลบรารีฟังก์ชันด้านล่างช่วยให้เราสามารถตั้งโปรแกรมพิน GPIO ของ PI ได้ นอกจากนี้เรายังเปลี่ยนชื่อ "GPIO" เป็น "IO" ดังนั้นในโปรแกรมเมื่อใดก็ตามที่เราต้องการอ้างถึงพิน GPIO เราจะใช้คำว่า 'IO'
นำเข้า RPi.GPIO เป็น IO
บางครั้งเมื่อพิน GPIO ที่เราพยายามใช้อยู่อาจจะทำหน้าที่อื่น ๆ ในกรณีนั้นเราจะได้รับคำเตือนขณะดำเนินการโปรแกรม คำสั่งด้านล่างบอกให้ PI เพิกเฉยต่อคำเตือนและดำเนินการกับโปรแกรม
IO.setwarnings (เท็จ)
เราสามารถอ้างอิงพิน GPIO ของ PI ไม่ว่าจะด้วยหมายเลขพินบนบอร์ดหรือตามหมายเลขฟังก์ชัน ในแผนภาพพินคุณจะเห็น 'PIN 35' บนบอร์ดคือ 'GPIO19' เราบอกตรงนี้ว่าเราจะแทนหมุดตรงนี้ด้วย "35" หรือ "19"
IO.setmode (IO.BCM)
เรากำลังตั้งค่า GPIO19 (หรือ PIN35) เป็นขาออก เราจะได้เอาต์พุต PWM จากพินนี้
IO.setup (19, IO.IN)
หลังจากตั้งค่าพินเป็นเอาต์พุตแล้วเราจำเป็นต้องตั้งค่าพินเป็นพินเอาต์พุต PWM
p = IO.PWM (ช่องสัญญาณความถี่ของสัญญาณ PWM)
คำสั่งดังกล่าวใช้สำหรับตั้งค่าช่องสัญญาณและสำหรับตั้งค่าความถี่ของสัญญาณ PWM 'p' นี่คือตัวแปรที่สามารถเป็นอะไรก็ได้ เราใช้ GPIO19 เป็น PWM ช่องเอาท์พุท ' ความถี่ของสัญญาณ PWM ' ถูกเลือก 100 เนื่องจากเราไม่ต้องการเห็น LED กะพริบ
คำสั่งด้านล่างนี้ใช้เพื่อเริ่มการสร้างสัญญาณ PWM ' DUTYCYCLE ' ใช้สำหรับตั้งค่าอัตราส่วนการเปิด, 0 หมายถึง LED จะติดเป็นเวลา 0% ของเวลา, 30 หมายถึง LED จะติดเป็นเวลา 30% ของเวลาและ 100 หมายถึงเปิดอย่างสมบูรณ์.
พีเริ่มต้น (DUTYCYCLE)
คำสั่งนี้รันลูป 50 ครั้ง x เพิ่มขึ้นจาก 0 ถึง 49
สำหรับ x ในช่วง (50):
ในขณะที่ 1: ใช้สำหรับอินฟินิตี้ลูป ด้วยคำสั่งนี้คำสั่งภายในลูปนี้จะดำเนินการอย่างต่อเนื่อง
เมื่อโปรแกรมทำงานวงจรการทำงานของสัญญาณ PWM จะเพิ่มขึ้น แล้วลดลงหลังจากถึง 100% เมื่อติด LED เข้ากับ PIN นี้ความสว่างของ LED จะเพิ่มขึ้นก่อนแล้วจึงลดลง