Ang Raspberry Pi ay isang ARM architecture processor based board na dinisenyo para sa mga elektronikong inhinyero at libangan. Ang PI ay isa sa pinaka mapagkakatiwalaang mga platform sa pagbuo ng proyekto doon ngayon. Sa mas mataas na bilis ng processor at 1 GB RAM, maaaring magamit ang PI para sa maraming mga proyekto sa mataas na profile tulad ng pagproseso ng Imahe at Internet of Things.
Para sa paggawa ng alinman sa mga proyekto sa mataas na profile, kailangang maunawaan ng isa ang mga pangunahing pag-andar ng PI. Saklawin namin ang lahat ng mga pangunahing pag-andar ng Raspberry Pi sa mga tutorial na ito. Sa bawat tutorial tatalakayin namin ang isa sa mga pagpapaandar ng PI. Sa pagtatapos ng serye ng tutorial magagawa mong mag-isa ang mga proyekto ng mataas na profile sa iyong sarili. Suriin ang mga ito para sa Pagsisimula sa Raspberry Pi at Raspberry Pi Configuration.
Tinalakay namin ang LED Blinky, Button Interfacing at PWM na henerasyon sa mga nakaraang tutorial. Sa tutorial na ito makokontrol namin ang Bilis ng isang DC motor na gumagamit ng diskarteng Raspberry Pi at PWM. Ang PWM (Pulse Width Modulation) ay isang pamamaraan na ginamit para sa pagkuha ng variable na boltahe mula sa pare-pareho na mapagkukunan ng kuryente. Tinalakay namin ang tungkol sa PWM sa nakaraang tutorial.
Mayroong 40 GPIO output pin sa Raspberry Pi 2. Ngunit sa labas ng 40, 26 na GPIO pin lamang (GPIO2 hanggang GPIO27) ang maaaring mai-program. Ang ilan sa mga pin na ito ay nagsasagawa ng ilang mga espesyal na pagpapaandar. Na isantabi ang espesyal na GPIO, mayroon kaming natitirang 17 GPIO. Upang malaman ang higit pa tungkol sa mga GPIO pin, dumaan sa: LED Blinking with Raspberry Pi
Ang bawat isa sa mga 17 GPIO pin na ito ay maaaring maghatid ng maximum na 15mA. At ang kabuuan ng mga alon mula sa lahat ng mga GPIO Pins ay hindi maaaring lumagpas sa 50mA. Kaya maaari kaming gumuhit ng maximum na 3mA sa average mula sa bawat isa sa mga GPIO pin na ito. Kaya't hindi dapat pakialaman ng isa ang mga bagay na ito maliban kung alam mo kung ano ang iyong ginagawa.
Mayroong + 5V (Pin 2 & 4) at + 3.3V (Pin 1 & 17) na mga power output pin sa board para sa pagkonekta ng iba pang mga module at sensor. Ang power rail na ito ay konektado kahanay sa lakas ng processor. Kaya't ang pagguhit ng Mataas na kasalukuyang mula sa power rail na ito ay nakakaapekto sa Processor. Mayroong fuse sa PI board na kung saan ay maglakbay sa sandaling mag-aplay ka ng mataas na pagkarga. Maaari kang gumuhit ng 100mA nang ligtas mula sa + 3.3V rail. Pinag-uusapan natin ito dito dahil; kinokonekta namin ang DC motor sa + 3.3V. Sa pag-iisip sa limitasyon ng kuryente, makokonekta lamang namin ang mababang motor na de-kuryente dito, kung nais mong magmaneho ng mataas na de-motor na motor, isaalang-alang ang pag-lakas nito mula sa isang hiwalay na mapagkukunan ng kuryente.
Kinakailangan ang Mga Bahagi:
Narito ginagamit namin ang Raspberry Pi 2 Model B kasama ang Raspbian Jessie OS. Ang lahat ng pangunahing mga kinakailangan sa Hardware at Software ay dati nang tinalakay, maaari mo itong tingnan sa Panimula ng Raspberry Pi, bukod sa kailangan namin:
- Kumokonekta na mga pin
- 220Ω o 1KΩresistor (3)
- Maliit na DC Motor
- Mga Pindutan (2)
- 2N2222 Transistor
- 1N4007 Diode
- Kapasitor- 1000uF
- Lupon ng Tinapay
Paliwanag sa Circuit:
Tulad ng sinabi nang mas maaga, hindi kami makakakuha ng higit sa 15mA mula sa anumang mga pin ng GPIO at ang DC motor ay kumukuha ng higit sa 15mA, kaya ang PWM na binuo ng Raspberry Pi ay hindi maaaring direktang maipakain sa DC motor. Kaya kung direktang ikinonekta natin ang motor sa PI para sa kontrol sa bilis, maaaring permanenteng masira ang board.
Gagamit kami ng isang NPN transistor (2N2222) bilang isang switching device. Ang transistor dito ay hinihimok ang mataas na kapangyarihan DC motor sa pamamagitan ng pagkuha ng signal ng PWM mula sa PI. Narito dapat bigyang pansin ang isang maling pagkonekta sa transistor na maaaring ma-load ang board nang mabigat.
Ang motor ay isang induction at sa gayon habang inililipat ang motor, nakakaranas kami ng inductive spiking. Ang spike na ito ay magpapainit ng transistor, kaya gagamitin namin ang Diode (1N4007) upang magbigay ng proteksyon sa transistor laban sa Inductive Spiking.
Upang mabawasan ang mga pagbabago-bago ng boltahe, magkokonekta kami ng isang 1000uF capacitor sa kabuuan ng supply ng kuryente tulad ng ipinakita sa Circuit Diagram.
Paggawa ng Paliwanag:
Kapag ang lahat ay konektado ayon sa diagram ng circuit, maaari nating buksan ang PI upang isulat ang programa sa PYHTON.
Pag-uusapan natin ang ilang mga utos na gagamitin namin sa programa ng PYHTON.
Mag-a-import kami ng GPIO file mula sa silid-aklatan, sa ibaba ang pagpapaandar ay nagbibigay-daan sa amin upang mai-program ang mga pin ng GPIO ng PI. Pinapalitan din namin ang pangalan ng "GPIO" sa "IO", kaya sa programa tuwing nais naming mag-refer sa mga GPIO pin gagamitin namin ang salitang 'IO'.
i-import ang RPi.GPIO bilang IO
Minsan, kapag ang mga GPIO pin, na sinusubukan naming gamitin, ay maaaring gumagawa ng ilang iba pang mga pagpapaandar. Sa kasong iyon, makakatanggap kami ng mga babala habang isinasagawa ang programa. Sa ibaba ng utos ay sinasabi sa PI na huwag pansinin ang mga babala at magpatuloy sa programa.
IO.setwarnings (Mali)
Maaari naming i-refer ang mga GPIO pin ng PI, alinman sa pamamagitan ng pin number sa board o ng kanilang function number. Tulad ng 'PIN 35' sa pisara ay 'GPIO19'. Kaya sasabihin namin dito alinman na ilalarawan namin ang pin dito sa pamamagitan ng '35' o '19'.
IO.setmode (IO.BCM)
Itinatakda namin ang GPIO19 (o PIN35) bilang output pin. Makakakuha kami ng output ng PWM mula sa pin na ito.
IO.setup (19, IO.IN)
Matapos itakda ang pin bilang output kailangan naming i-setup ang pin bilang PWM output pin, p = IO.PWM (output channel, dalas ng PWM signal)
Ang utos sa itaas ay para sa pagse-set up ng channel at para din sa pag-set up ng dalas ng PWM signal. Ang 'p' dito ay isang variable na maaaring maging anupaman. Gumagamit kami ng GPIO19 bilang PWM output channel . Ang ' dalas ng signal ng PWM ' ay napili nang 100, dahil ayaw naming makita ang LED na kumikislap.
Ang utos sa ibaba ay ginagamit upang simulan ang pagbuo ng signal ng PWM, ang ' DUTYCYCLE ' ay para sa pagtatakda ng ratio ng Turn On, 0 ay nangangahulugang ang LED ay ON para sa 0% ng oras, 30 ay nangangahulugang magiging ON ang LED para sa 30% ng oras at 100 nangangahulugang ganap na ON.
p.start (DUTYCYCLE)
Kung sakaling ang Kundisyon sa mga brace ay totoo, ang mga pahayag sa loob ng loop ay papatayin nang isang beses. Kaya't kung ang GPIO pin 26 ay bumaba, kung gayon ang mga pahayag sa loob ng IF loop ay naisasagawa nang isang beses. Kung ang GPIO pin 26 ay hindi bumaba, kung gayon ang mga pahayag sa loob ng IF loop ay hindi naisakatuparan.
kung (IO.input (26) == Mali):
Habang ang 1: ay ginagamit para sa infinity loop. Gamit ang utos na ito ang mga pahayag sa loob ng loop na ito ay patuloy na maisasagawa.
Mayroon kaming lahat ng mga utos na kinakailangan upang makamit ang bilis ng kontrol dito.
Matapos isulat ang programa at ipatupad ito, ang natitira lamang ay ang pagpapatakbo ng kontrol. Mayroon kaming dalawang mga pindutan na konektado sa PI; isa para sa pagdaragdag ng Duty Cycle ng PWM signal at iba pa para sa pagbawas ng signal ng Duty Cycle ng PWM. Sa pamamagitan ng pagpindot sa isang pindutan, tumataas ang bilis ng DC motor at sa pamamagitan ng pagpindot sa kabilang pindutan, bumababa ang bilis ng motor na DC. Sa pamamagitan nito nakamit namin ang DC Motor Speed Control ni Raspberry Pi.
Suriin din:
- Pagkontrol sa Bilis ng DC Motor
- DC Motor Control gamit ang Arduino