- PWM (Pulse Width Modulation):
- Servo Motor at PWM:
- Kinakailangan ang Mga Bahagi:
- Diagram ng Circuit:
- Paggawa at Programming Paliwanag:
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 Raspberry Pi Tutorial Series na ito, magagawa mong mag-isa ang mga proyekto ng mataas na profile na mag-isa. Dumaan sa mga tutorial sa ibaba:
- Pagsisimula sa Raspberry Pi
- Pag-configure ng Raspberry Pi
- LED Blinky
- Pag-interfacing ng Button ng Raspberry Pi
- Paglikha ng Raspberry Pi PWM
- Pagkontrol sa DC Motor gamit ang Raspberry Pi
- Control ng Stepper Motor na may Raspberry Pi
- Interfacing Shift Magrehistro kasama ang Raspberry Pi
- Tutorial ng Raspberry Pi ADC
Sa tutorial na ito makokontrol namin ang Servo Motor sa Raspberry Pi. Bago pumunta sa servo pag-usapan natin ang tungkol sa PWM dahil ang konsepto ng pagkontrol sa Servo Motor ay nagmula rito.
PWM (Pulse Width Modulation):
Dati ay napag-usapan natin ang tungkol sa PWM nang maraming beses sa: Pulse width Modulation na may ATmega32, PWM na may Arduino Uno, PWM na may 555 timer IC at PWM na may Arduino Dahil. Ang PWM ay nangangahulugang 'Pulse Width Modulation'. Ang PWM ay isang pamamaraan na ginagamit para sa pagkuha ng variable ng boltahe mula sa isang matatag na suplay ng kuryente. Para sa mas mahusay na pag-unawa sa PWM isaalang-alang ang circuit sa ibaba,
Sa itaas na pigura, kung ang switch ay sarado nang tuluy-tuloy sa loob ng isang panahon, ang LED ay 'ON' sa oras na ito na tuloy-tuloy. Kung ang switch ay sarado para sa kalahating segundo at binuksan para sa susunod na kalahating segundo, pagkatapos ang LED ay ON lamang sa unang kalahating segundo. Ngayon ang proporsyon kung saan NAKA-ON ang LED sa kabuuang oras ay tinatawag na Duty Cycle, at maaaring kalkulahin tulad ng sumusunod:
Duty Cycle = I-ON ang oras / (I-ON ang oras + I-OFF ang oras)
Duty Cycle = (0.5 / (0.5 + 0.5)) = 50%
Kaya't ang average na boltahe ng output ay 50% ng boltahe ng baterya.
Habang pinapataas namin ang bilis ng ON at OFF sa isang antas makikita namin ang LED na dimmed sa halip na ON at OFF. Ito ay dahil ang aming mga mata ay hindi mahuli ang mga frequency na mas mataas sa 25Hz nang malinaw. Isaalang-alang ang 100ms cycle, LED na OFF para sa 30msec at ON para sa 70msec. Magkakaroon kami ng 70% ng matatag na boltahe sa output, kaya't ang LED ay patuloy na mamula sa 70% ng kasidhian.
Ang Duty Ratio ay napupunta sa 0 hanggang 100. Ang '0' ay nangangahulugang ganap na OFF at '100' na ganap na ON. Ang Duty Ratio na ito ay napakahalaga para sa Servo Motor. Ang posisyon ng Servo Motor ay natutukoy ng Duty Ratio na ito. Suriin ito para sa demonstrasyon ng PWM gamit ang LED at Raspberry Pi.
Servo Motor at PWM:
Ang Servo Motor ay isang kombinasyon ng DC motor, posisyon control system at gears. Maraming mga aplikasyon ang mga servos sa modernong mundo at kasama nito, magagamit ang mga ito sa iba't ibang mga hugis at sukat. Susundan natin ang gamit SG90 Servo Motor sa tutorial na ito, ito ay isa sa mga sikat at cheapest isa. Ang SG90 ay isang 180 degree servo. Kaya sa servo na ito maaari nating iposisyon ang axis mula 0-180 degree.
Ang isang Servo Motor pangunahin ay mayroong tatlong mga wire, ang isa ay para sa positibong boltahe, ang isa pa ay para sa lupa at ang huli ay para sa setting ng posisyon. Ang Red wire ay konektado sa lakas, ang Brown wire ay konektado sa ground at Yellow wire (o WHITE) ay konektado sa signal.
Sa servo, mayroon kaming isang control system na kumukuha ng signal ng PWM mula sa Signal pin. Ini-decode nito ang signal at kinukuha ang ratio ng tungkulin mula rito. Pagkatapos nito, inihahambing nito ang ratio sa mga paunang natukoy na mga halaga ng posisyon. Kung mayroong isang pagkakaiba sa mga halaga, inaayos nito ang posisyon ng servo nang naaayon. Kaya't ang posisyon ng axis ng servo motor ay batay sa duty ratio ng PWM signal sa Signal pin.
Ang dalas ng signal ng PWM (Pulse Width Modulated) na signal ay maaaring magkakaiba batay sa uri ng servo motor. Para sa SG90 ang dalas ng PWM signal ay 50Hz. Upang malaman ang dalas ng pagpapatakbo para sa iyong servo, suriin ang Datasheet para sa partikular na modelo. Kaya't sa sandaling napili ang dalas, ang iba pang mahalagang bagay dito ay ang DUTY RATIO ng PWM signal.
Ipinapakita ng talahanayan sa ibaba ang Posisyon ng Servo para sa partikular na Datio Ratio. Maaari kang makakuha ng anumang anggulo sa pagitan ng pagpili ng halaga nang naaayon. Kaya't para sa 45º ng servo ang Duty Ratio ay dapat na '5' o 5%.
POSISYON |
RUTIO NG DUTY |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Bago ang Interfacing Servo Motor sa Raspberry Pi, maaari mong subukan ang iyong servo sa tulong ng Servo Motor Tester Circuit na ito. Suriin din ang aming mga proyekto sa ibaba ng Servo:
- Servo Motor Control gamit ang Arduino
- Servo Motor Control na may Arduino Dahil
- Servo Motor Interfacing kasama ang 8051 Microcontroller
- Servo Motor Control gamit ang MATLAB
- Servo Motor Control ng Flex Sensor
- Servo Position Control na may Timbang (Force Sensor)
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
- 1000uF capacitor
- SG90 Servo Motor
- Breadboard
Diagram ng Circuit:
Ang A1000µF ay dapat na konektado sa kabila ng +5V power rail kung hindi man ang PI ay maaaring magsara ng sapalaran habang kinokontrol ang servo.
Paggawa at Programming 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 29' sa pisara ay 'GPIO5'. Kaya sasabihin namin dito alinman na ilalarawan namin ang pin dito sa pamamagitan ng '29' o '5'.
IO.setmode (IO.BCM)
Itinatakda namin ang PIN39 o GPIO19 bilang output pin. Makakakuha kami ng output ng PWM mula sa pin na ito.
IO.setup (19, IO.OUT)
Matapos itakda ang output pin, 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 Channel ”. Ang 'p' dito ay isang variable na maaaring maging anupaman. Gumagamit kami ng GPIO19 bilang PWM na "Output channel. "Dalas ng signal ng PWM" pipiliin namin ang 50, dahil ang dalas ng pagtatrabaho ng SG90 ay 50Hz.
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' tulad ng ipinaliwanag dati , p.start (DUTYCYCLE)
Ang utos sa ibaba ay ginagamit bilang walang hanggang loop, kasama ang utos na ito ang mga pahayag sa loob ng loop na ito ay patuloy na isasagawa.
Habang ang 1:
Narito ang programa para sa Pagkontrol ng Servo gamit ang Raspberry Pi ay nagbibigay ng isang PWM signal sa GPIO19. Ang Duty Ratio ng signal ng PWM ay binago sa pagitan ng tatlong mga halaga sa loob ng tatlong segundo. Kaya't para sa bawat segundo ang Servo ay umiikot sa isang posisyon na tinutukoy ng Duty Ratio. Patuloy na umiikot ang servo sa 0º, 90º at 180º sa tatlong segundo.