Raspberry Pi เป็นบอร์ดที่ใช้โปรเซสเซอร์สถาปัตยกรรม ARM ที่ออกแบบมาสำหรับวิศวกรอิเล็กทรอนิกส์และมือสมัครเล่น PI เป็นหนึ่งในแพลตฟอร์มการพัฒนาโครงการที่น่าเชื่อถือที่สุดในขณะนี้ ด้วยความเร็วโปรเซสเซอร์ที่สูงขึ้นและ RAM 1 GB PI สามารถใช้กับโปรเจ็กต์ที่มีรายละเอียดสูงมากมายเช่นการประมวลผลภาพและ Internet of Things
สำหรับการทำโครงการที่มีรายละเอียดสูงจำเป็นต้องเข้าใจฟังก์ชันพื้นฐานของ PI เราจะกล่าวถึงฟังก์ชันพื้นฐานทั้งหมด ของ Raspberry Pi ในบทช่วยสอนเหล่านี้ ในแต่ละบทช่วยสอนเราจะพูดถึงฟังก์ชันหนึ่งของ PI ในตอนท้ายของชุดการสอนคุณจะสามารถทำโปรเจ็กต์ที่มีรายละเอียดสูงได้ด้วยตัวเอง ตรวจสอบสิ่งเหล่านี้สำหรับการเริ่มต้นใช้งาน Raspberry Pi และ Raspberry Pi Configuration
เราได้พูดถึง LED Blinky, การเชื่อมต่อปุ่มและการสร้าง PWM ในบทช่วยสอนก่อนหน้านี้ ในบทช่วยสอนนี้เราจะควบคุมความเร็วของมอเตอร์กระแสตรงโดยใช้เทคนิค Raspberry Piและ PWM PWM (Pulse Width Modulation) เป็นวิธีการที่ใช้ในการรับแรงดันไฟฟ้าแปรผันจากแหล่งจ่ายไฟคงที่ เราได้พูดคุยเกี่ยวกับ PWM ในบทช่วยสอนก่อนหน้านี้
มี40 GPIO หมุดเอาท์พุทในราสเบอร์รี่ Pi 2 แต่จากทั้งหมด 40 พินสามารถตั้งโปรแกรมได้เพียง 26 พิน GPIO (GPIO2 ถึง GPIO27) หมุดเหล่านี้บางตัวทำหน้าที่พิเศษบางอย่าง ด้วย GPIO พิเศษเรามี 17 GPIO ที่เหลือ หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับพิน GPIO ให้ไปที่: LED กะพริบด้วย Raspberry Pi
แต่ละเหล่านี้ 17 GPIO ขาสามารถส่งมอบสูงสุดของ15mAและผลรวมของกระแสจากทั่วทุก GPIO Pins ไม่เกิน50mAดังนั้นเราจึงสามารถวาดค่าเฉลี่ยสูงสุด 3mA จากพิน GPIO เหล่านี้ ดังนั้นเราไม่ควรยุ่งเกี่ยวกับสิ่งเหล่านี้เว้นแต่คุณจะรู้ว่าคุณกำลังทำอะไรอยู่
มีหมุดเอาต์พุตกำลังไฟ + 5V (Pin 2 & 4) และ + 3.3V (Pin 1 & 17)บนบอร์ดสำหรับเชื่อมต่อโมดูลและเซ็นเซอร์อื่น ๆ รางจ่ายไฟนี้เชื่อมต่อแบบขนานกับกำลังของโปรเซสเซอร์ ดังนั้นการดึงกระแสไฟสูงจากรางจ่ายไฟนี้จึงส่งผลต่อโปรเซสเซอร์ มีฟิวส์บนบอร์ด PI ซึ่งจะเดินทางเมื่อคุณใช้โหลดสูง คุณสามารถดึง 100mA ได้อย่างปลอดภัยจากราง+ 3.3V เรากำลังพูดถึงเรื่องนี้ที่นี่เพราะ; เรากำลังเชื่อมต่อมอเตอร์กระแสตรงเข้ากับ + 3.3V เมื่อคำนึงถึงขีด จำกัด พลังงานเราสามารถเชื่อมต่อมอเตอร์กำลังต่ำได้ที่นี่เท่านั้นหากคุณต้องการขับเคลื่อนมอเตอร์กำลังสูงให้พิจารณาเปิดเครื่องจากแหล่งพลังงานแยกต่างหาก
ส่วนประกอบที่ต้องการ:
ที่นี่เราจะใช้ ราสเบอร์รี่ Pi 2 รุ่น B กับ Raspbian Jessie OS ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์พื้นฐานทั้งหมดได้กล่าวไว้ก่อนหน้านี้คุณสามารถค้นหาได้ในบทนำ Raspberry Pi นอกเหนือจากที่เราต้องการ:
- หมุดเชื่อมต่อ
- 220Ωหรือ1KΩตัวต้านทาน (3)
- มอเตอร์กระแสตรงขนาดเล็ก
- ปุ่ม (2)
- 2N2222 ทรานซิสเตอร์
- 1N4007 ไดโอด
- ตัวเก็บประจุ - 1000uF
- คณะกรรมการขนมปัง
คำอธิบายวงจร:
ดังที่กล่าวไว้ก่อนหน้านี้เราไม่สามารถดึงมากกว่า 15mAจากพิน GPIO ใด ๆ และมอเตอร์ DC ดึงมากกว่า 15mA ดังนั้น PWM ที่สร้างโดย Raspberry Pi จึงไม่สามารถป้อนเข้ากับมอเตอร์ DC ได้โดยตรง ดังนั้นหากเราเชื่อมต่อมอเตอร์เข้ากับ PI โดยตรงเพื่อควบคุมความเร็วบอร์ดอาจได้รับความเสียหายอย่างถาวร
ดังนั้นเราจะใช้ทรานซิสเตอร์ NPN (2N2222) เป็นอุปกรณ์เปลี่ยน ทรานซิสเตอร์นี้ขับเคลื่อนมอเตอร์กระแสตรงกำลังสูงโดยรับสัญญาณ PWM จาก PI ที่นี่ควรให้ความสนใจว่าการเชื่อมต่อทรานซิสเตอร์อย่างไม่ถูกต้องอาจทำให้บอร์ดหนัก
มอเตอร์เป็นตัวเหนี่ยวนำดังนั้นในขณะที่เปลี่ยนมอเตอร์เราพบว่ามีการหมุนแบบอุปนัย องศานี้จะร้อนขึ้นทรานซิสเตอร์อย่างมากดังนั้นเราจะใช้ไดโอด (1N4007)เพื่อให้การป้องกันทรานซิสเตอร์กับอุปนัยองศา
เพื่อลดความผันผวนของแรงดันไฟฟ้าเราจะเชื่อมต่อตัวเก็บประจุ 1000uFกับแหล่งจ่ายไฟดังที่แสดงในแผนภาพวงจร
คำอธิบายการทำงาน:
เมื่อทุกอย่างเชื่อมต่อตามแผนภาพวงจรแล้วเราสามารถเปิด 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)
ในกรณีที่เงื่อนไขในวงเล็บปีกกาเป็นจริงข้อความภายในลูปจะดำเนินการหนึ่งครั้ง ดังนั้นหาก GPIO พิน 26 อยู่ในระดับต่ำคำสั่งภายในลูป IF จะถูกดำเนินการหนึ่งครั้ง หาก GPIO พิน 26 ไม่ต่ำไปข้อความภายในลูป IF จะไม่ถูกดำเนินการ
ถ้า (IO.input (26) == False):
ในขณะที่ 1: ใช้สำหรับอินฟินิตี้ลูป ด้วยคำสั่งนี้คำสั่งภายในลูปนี้จะดำเนินการอย่างต่อเนื่อง
เรามีคำสั่งทั้งหมดที่จำเป็นในการควบคุมความเร็วด้วยสิ่งนี้
หลังจากเขียนโปรแกรมและเรียกใช้งานแล้วสิ่งที่เหลืออยู่ก็คือการควบคุมการทำงาน เรามีปุ่มสองปุ่มที่เชื่อมต่อกับ PI; หนึ่งสำหรับการเพิ่ม Duty Cycleของสัญญาณ PWM และอื่น ๆ สำหรับการลด Duty Cycleของสัญญาณ PWM เมื่อกดปุ่มเดียวความเร็วของมอเตอร์กระแสตรงจะเพิ่มขึ้นและเมื่อกดปุ่มอื่นความเร็วของมอเตอร์กระแสตรงจะลดลง ด้วยเหตุนี้เราจึงได้รับการควบคุมความเร็วมอเตอร์ DC โดย Raspberry Pi
ตรวจสอบด้วย:
- การควบคุมความเร็วมอเตอร์ DC
- DC Motor Control โดยใช้ Arduino