instructables-logo

mga instructable na VHDL Motor Speed ​​​​Control Magpasya ng Direksyon at Bilis sa Kaliwa at Kanan na Speed ​​Controller

instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-PRODUCT

TANDAAN: Ang page na ito ay isang bahagi ng mas malaking build. Pakitiyak na magsisimula ka DITO, para maunawaan mo kung saan nababagay ang mga sumusunod sa loob ng mas malaking proyekto

Tapos naview

Ang bilis ng motor at kontrol ng direksyon ay isa sa dalawang pangunahing dibisyon sa photodetector robot, ang isa pa ay ang photodetector o light detector division. Habang ang photodetector division ay nakatuon sa paningin ng robot, ang motor speed at direction control division ay nakatuon sa paggalaw ng robot. Ang bilis ng motor at data ng proseso ng kontrol sa direksyon na ibinigay mula sa photodetector division at nagbibigay ng pisikal na output sa anyo ng paggalaw ng motor.

Ang layunin ng dibisyong ito ay kontrolin ang bilis at direksyon ng parehong kaliwa at kanang motor ng light-seeking robot. Upang mapagpasyahan ang mga halagang ito, kakailanganin mo ang laki at posisyon ng liwanag na nakuhanan ng camera at naproseso sa pamamagitan ng thresholding. Kakailanganin mo rin ang sinusukat na bilis sa bawat isa sa mga motor. Mula sa mga input na ito, magagawa mong i-output ang halaga ng PWM (Pulse-Width Modulation) para sa bawat isa sa mga motor.

Upang makamit ito, kakailanganin mong gawin itong mga VHDL modules (naka-link din sa ibaba):

  1. Ang kontrol
  2. Ang pagkalkula ng error
  3. Ang binary conversion
  4.  Ang kawalan ng ilaw na pinagmumulan

Maaari mong tingnan ang VHDL code para sa dibisyong ito dito.

Mga gamit
Inirerekomenda naming mag-code gamit ang ISE Design Suite 14.7 dahil magagamit din ito upang subukan ang code sa VHDL. Gayunpaman, para ma-upload ang code sa BASYS 3, kakailanganin mong i-install ang Vivado (ver. 2015.4 o 2016.4) at isulat ang constraint na may extension na .xdc.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-1

VHDL Motor Speed ​​Control: Magpasya ng Direksyon at Bilis, Kaliwa at Kanan na Speed ​​Controller: Pahina 1

HAKBANG NG INSTRUKSYON

Hakbang 1: Ang Kontrol
Upang maunawaan kung paano kontrolin ang pag-uugali ng robot na naghahanap ng liwanag, ipapaliwanag namin ang nais na pag-uugali ng robot kapag nakakita ito ng pinagmumulan ng liwanag. Ang gawi na ito ay makokontrol ayon sa posisyon at laki ng pinagmumulan ng liwanag.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-

Ang algorithm na ginamit ay kahalintulad sa isang RC robot controller, na may isang pingga na maaaring iliko pakaliwa o pakanan, at isa pang pingga na maaaring iliko pasulong o paatras.

Upang maghanap ng liwanag, gusto mong gumalaw ang robot na ito sa isang tuwid na linya kung ang posisyon ng pinagmumulan ng liwanag ay nasa harap mismo ng robot. Upang gawin iyon, gusto mo ang parehong bilis sa parehong kaliwa at kanang mga motor. Kung ang ilaw ay matatagpuan sa kaliwang bahagi ng robot, gusto mong ang kanang motor ay gumalaw nang mas mabilis kaysa sa kaliwang motor upang ang robot ay lumiko sa kaliwa patungo sa liwanag. Sa kabaligtaran, kung ang ilaw ay matatagpuan sa kanang bahagi ng robot, gusto mong ang kaliwang motor ay gumalaw nang mas mabilis kaysa sa kanang motor upang ang robot ay lumiko sa kanan patungo sa liwanag. Ito ay kahalintulad sa kaliwang lever ng RC controller, kung saan makokontrol mo kung gusto mong ilipat ang robot pakaliwa, kanan, o tuwid.

Pagkatapos, gusto mong umusad ang robot kung malayo ang pinagmumulan ng ilaw (maliit na pinagmumulan ng liwanag), o umusad kung masyadong malapit ang natukoy na pinagmumulan ng liwanag (malaking pinagmumulan ng liwanag). Gusto mo rin na kung mas malayo ang robot sa pinagmumulan ng liwanag, mas mabilis ang paggalaw ng robot. Ito ay kahalintulad sa kanang lever ng RC controller, kung saan makokontrol mo kung gusto mong sumulong o paatras, at kung gaano mo kabilis ito gustong gumalaw.

Pagkatapos ay maaari kang makakuha ng isang mathematical formula para sa bilis ng bawat isa sa mga motor, at pipiliin namin ang hanay ng bilis sa pagitan ng -255 hanggang 255. Ang isang negatibong halaga ay nangangahulugan na ang motor ay liliko pabalik, habang ang isang positibong halaga ay nangangahulugan na ang motor ay liliko pasulong.

Iyon ang pangunahing algorithm para sa paggalaw ng robot na ito. Upang matuto nang higit pa tungkol sa modyul na ito, mag-click dito.

Hakbang 2: Ang Pagkalkula ng Error
Dahil mayroon ka nang layunin na bilis at direksyon para sa mga motor, gusto mo ring isaalang-alang ang sinusukat na bilis at direksyon ng mga motor. Kung naabot nito ang layunin ng bilis, gusto namin na ang motor ay gumagalaw lamang sa momentum nito. Kung wala pa, gusto naming dagdagan ang bilis ng motor. Sa Control theory, kilala ito bilang closed-loop feedback control system.

Upang matuto nang higit pa tungkol sa modyul na ito, mag-click dito.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-2

Hakbang 3: Ang Binary Conversion
Mula sa mga nakaraang kalkulasyon, alam mo na ang pagkilos na kailangan para sa bawat isa sa mga motor. Gayunpaman, ang mga kalkulasyon ay ginagawa gamit ang pinirmahang binary. Ang layunin ng module na ito ay i-convert ang mga nilagdaang value na ito sa isang value na mababasa ng PWM generator, na kung saan ay ang direksyon (alinman sa clockwise o counter-clockwise) at ang bilis (mula sa pagitan ng 0 hanggang 255). Gayundin, dahil ang feedback mula sa motor ay sinusukat sa unsigned binary, kailangan ng isa pang module upang i-convert ang mga hindi napirmahang halaga (direksyon at bilis) sa isang sign na halaga na maaaring kalkulahin ng module ng pagkalkula ng error. Upang matuto nang higit pa tungkol sa modyul na ito, mag-click dito.

Hakbang 4: Ang Kawalan ng Pinagmulan ng Liwanag
Nakagawa ka ng robot na gumagalaw para humanap ng liwanag kapag na-detect ng robot ang liwanag. Ngunit ano ang mangyayari kapag ang robot ay hindi nakakita ng liwanag? Ang layunin ng modyul na ito ay idikta kung ano ang dapat gawin kapag may ganitong kondisyon.

Ang pinakamadaling paraan upang maghanap at maghanap ng ilaw na mapagkukunan ay ang pag-ikot ng robot sa lugar. Pagkatapos ng pag-ikot para sa isang itinakdang bilang ng mga segundo, kung ang robot ay hindi pa rin nakakahanap ng isang ilaw na pinagmumulan, gusto mong huminto ang robot sa paggalaw, upang makatipid ng kuryente. Pagkatapos ng isa pang itinakdang bilang ng mga segundo, ang robot ay dapat umikot muli sa lugar upang hanapin ang liwanag. Upang matuto nang higit pa tungkol sa modyul na ito, mag-click dito.

Hakbang 5: Paano Ito Gumagana
Maaari kang sumangguni sa larawan sa itaas para sa paliwanag na ito. Tulad ng nabanggit sa simula ng itinuturo na ito, kakailanganin mo ang mga input na "laki" at "posisyon" mula sa thresholding division. Upang matiyak na ang mga input na ito ay wasto (para sa halample, kapag nakatanggap ka ng laki = 0, ang laki ay tunay na zero dahil ang camera ay hindi naka-detect ng liwanag, at hindi dahil ang camera ay nag-initialize pa) kakailanganin mo rin ng ilang uri ng indicator, na tinatawag naming "READY". Ang mga data na ito ay ipoproseso ng kontrol (Ctrl. vhd) upang matukoy ang bilis ng layunin ng bawat motor (9 bits, pinirmahan).

Para sa isang mas matatag na output sa motor, gusto mong gumamit ng feedback sa isang closed-loop system. Nangangailangan ito ng mga input"direksyon" at "bilis" ng bawat motor mula sa dibisyon ng pagsukat ng bilis ng motor. Dahil gusto mong isama ang mga input na ito sa iyong mga kalkulasyon, kakailanganin mong i-convert ang mga unsigned value na ito sa 9-bit signed binary. Ginagawa ito ng hindi nakapirma sa binary converter (US2S.vhd).

Ang ginagawa ng pagkalkula ng error (error. vhd) ay ibawas ang sinusukat na bilis mula sa bilis ng layunin upang matukoy ang aksyon para sa bawat motor. Nangangahulugan ito na kapag pareho ang halaga, ang pagbabawas ay magiging zero at ang motor ay kikilos lamang sa momentum nito. Maaari ka ring magdagdag ng factor ng multiplication para mas mabilis na maabot ng robot ang goal speed.

Dahil kailangan ng motor controller ang bilis at direksyon ng bawat motor, kailangan mong i-translate ang mga nilagdaang value ng aksyon sa dalawang magkahiwalay na unsigned value: bilis (1 bit) at direksyon (8 bits). Ginagawa ito ng signed-to-unsigned binary converter (S2US.vhd), at magiging mga input sa motor control division.

Nagdagdag din kami ng module para matukoy kung ano ang gagawin kapag hindi nakita ang liwanag (walang light counter. Bhd). Dahil ang module na ito ay karaniwang isang counter, bibilangin nito kung gaano katagal kailangan ng robot na umikot o manatili sa lugar. Sisiguraduhin nitong "nakikita" ng robot ang kapaligiran nito sa halip na kung ano lang ang nasa harapan nito, at magtitipid sa lakas ng baterya kapag walang talagang available na ilaw.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-3

Hakbang 6: Pagsamahin ang Files
Upang pagsamahin ang files, kailangan mong ikonekta ang mga signal mula sa bawat module. Para magawa iyon, kailangan mong gumawa ng bagong top level na module file. Ipasok ang mga input at output ng nakaraang module bilang mga bahagi, magdagdag ng mga signal para sa mga koneksyon at italaga ang bawat port sa kaukulang pares. Maaari kang sumangguni sa mga koneksyon sa paglalarawan sa itaas, at tingnan ang code dito.instructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-4

Hakbang 7: Subukan Ito
Pagkatapos mong matapos ang buong code, kailangan mong malaman kung gumagana ang iyong code bago mo ito i-upload sa board, lalo na dahil ang mga bahagi ng code ay maaaring ginawa ng iba't ibang tao. Nangangailangan ito ng testbench, kung saan maglalagay ka ng mga dummy na halaga at tingnan kung kumikilos ang code sa paraang gusto naming kumilos ito. Maaari kang magpahinga na magsimula sa pamamagitan ng pagsubok sa bawat module, at kung gumagana ang lahat ng ito nang tama, maaari mong subukan ang pinakamataas na antas ng module.

Hakbang 8: Subukan Ito sa Hardware
Pagkatapos masuri ang iyong code sa iyong computer, maaari mong subukan ang code sa tunay na hardware. Kailangan mong gawin ang paghihigpit file sa Vivado (.xdc file para sa BASYS 3) upang makontrol kung aling mga input at output ang pupunta sa kung aling mga port.

MAHALAGA TIP: Natutunan namin ang mahirap na paraan na ang mga de-koryenteng bahagi ay maaaring may pinakamataas na halaga ng kasalukuyang o voltages. Tiyaking sumangguni sa datasheet para sa mga halaga. Para sa PMOD HB5, siguraduhing itakda ang voltage mula sa pinagmumulan ng kuryente sa 12 volts (dahil ito ang kinakailangang voltage para sa motor), at ang kasalukuyang kasing liit ng kinakailangan para gumalaw ang motor.

Hakbang 9: Pagsamahin Ito Sa Iba Pang Mga Bahagi
Kung matagumpay ang mga nakaraang hakbang, pagsamahin ang code sa iba pang mga grupo para sa huling code na ia-upload sa robot. Tapos, voila! Matagumpay kang nakagawa ng light-seeking robot.

Hakbang 10: Mga Contributor
Mula kaliwa hanggang kanan:

  • Antonius Gregorius Deaven Rivaldi
  • Felix Wiguna
  • Nicholas Sanjaya
  • Richard Medyantoinstructables-VHDL-Motor-Speed-Control-Decide-Direction-and-Speed-Left-and-Right-Speed-Controller-fig-6

Napakaganda: VHDL Motor Speed ​​Control: Magpasya ng Direksyon at Bilis, Kaliwa at Kanan na Speed ​​Controller: Pahina 6
Salamat sa mulingviewing! Ang proyektong ito ay talagang isang bahagi lamang ng isang proyekto ng klase (Light Seeking Robot na may BASYS 3 board at OV7670 camera), kaya idaragdag ko ang link sa itinuturo ng klase sa lalong madaling panahon!

Kahanga-hanga: I'm looking forward to see everything set together.

Mga Dokumento / Mga Mapagkukunan

mga instructable na VHDL Motor Speed ​​​​Control Magpasya ng Direksyon at Bilis sa Kaliwa at Kanan na Speed ​​Controller [pdf] Mga tagubilin
VHDL Motor Speed ​​Control Magpasya ng Direksyon at Bilis Kaliwa at Kanan Speed ​​Controller, VHDL Motor Speed, Control Magpasya Direksyon at Bilis Kaliwa at Kanan Speed ​​Controller

Mga sanggunian

Mag-iwan ng komento

Ang iyong email address ay hindi maipa-publish. Ang mga kinakailangang field ay minarkahan *