Talaan ng mga Nilalaman:

Servo Squirter - USB Water Gun: 5 Hakbang
Servo Squirter - USB Water Gun: 5 Hakbang

Video: Servo Squirter - USB Water Gun: 5 Hakbang

Video: Servo Squirter - USB Water Gun: 5 Hakbang
Video: The Best Water Gun Ever! Spyra 2 - The Electric Water Rifle 2024, Nobyembre
Anonim
Servo Squirter - USB Water Gun
Servo Squirter - USB Water Gun

Isang USB kinokontrol na servo water gun. Mahusay para sa pagpapaputok sa mga hindi mapagpasyang dumadaan, o pinapanatili ang mga tao na may nakakainis na mga katanungan. Ang proyektong ito ay isang maliit na water pump na naka-mount sa tuktok ng isang servo para sa direktang pagpapaputok. Ang buong bagay ay hinihimok ng isang microcontroller, at kinokontrol mula sa iyong keyboard sa pamamagitan ng USB. Upang makita ang higit pa sa aming mga proyekto at libreng mga tutorial sa video tingnan ang aming website

Hakbang 1: Ipunin ang Mga Materyal

Ipunin ang Mga Kagamitan
Ipunin ang Mga Kagamitan
Ipunin ang Mga Kagamitan
Ipunin ang Mga Kagamitan
Ipunin ang Mga Kagamitan
Ipunin ang Mga Kagamitan

Ang proyektong ito ay batay sa microcontroller. Maliban sa ATmega168 microcontroller na kasama sa USB NerdKit. Para sa proyektong ito, ginamit namin ang sumusunod: 1 Hobby Servo, Hitec HS-501 Low voltage piston water pump1 Maliit na n-channel MOSFET, 2N7000

Hakbang 2: Magtipon ng Circuit

Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit
Magtipon ng Circuit

Ang unang bahagi ng aming circuit ay kumokonekta lamang sa servo. Ito ay simple dito: isang kawad mula sa microcontroller papunta sa servo. Mayroong ilang iba't ibang mga label ng kulay depende sa tagagawa, kaya suriin bago subukan ito. Larawan ng Skematika ng ServoSquirter circuit sa NerdKits breadboard Ang pangalawang bahagi ng circuit ay nagbibigay-daan sa microcontroller na ilipat at i-off ang pump motor. Ang ATmega168 chip mismo ay pinapayagan lamang ang 40mA max sa o labas ng anumang pin, ngunit ang aming bomba ay nangangailangan ng malapit sa 1000mA! Kaya upang makontrol ang mas malaking karga na ito, pinili naming gumamit ng isang mas malaking transistor, ang 2N7000. Una naming ipaliwanag ang mga pangunahing kaalaman sa paggamit ng MOSFETs (Metal Oxide Semiconductor Field Effect Transistors) bilang mga switch: nagdadala ng boltahe ng Gate sa itaas ng Pinagmulan, maaari naming payagan ang kasalukuyang dumaloy mula sa Drain to Source. Mula sa 2N7000 datasheet, nakuha namin ang Larawan 1, na ipinapakita ang kaugnayan sa pagitan ng kasalukuyang alisan ng tubig at boltahe na mapagkukunan ng mapagkukunan para sa iba't ibang mga setting ng boltahe na pinagmulan ng gate. Mayroong ilang mahahalagang bagay na maaari mong malaman mula sa grap na ito: 1. Para sa VGS sa ibaba tungkol sa 3.0 volts, walang kasalukuyang pinapayagan na dumaloy. Ito ang off state, na tinatawag ding "cutoff". 2. Para sa maliit na VDS, ang kurba ay mukhang linear sa pamamagitan ng pinagmulan - na nangangahulugang electrically "mukhang" tulad ng isang risistor. Ang katumbas na paglaban ay ang kabaligtaran na dalisdis ng curve. Ang rehiyon ng pagpapatakbo ng MOSFET na ito ay tinatawag na "triode". 3. Para sa mas malaking VDS, naabot ang ilang maximum na antas ng kasalukuyang. Tinatawag itong "saturation". 4. Habang pinapataas namin ang VGS, mas maraming kasalukuyang pinapayagan na dumaloy sa parehong mga mode ng triode at saturation. At ngayon ay talagang natutunan mo ang tungkol sa lahat ng tatlong mga mode ng pagpapatakbo ng MOSFET: cutoff, triode, at saturation. Dahil ang aming control sa gate ay digital (+5 o 0), nag-aalala lamang kami tungkol sa curve na naka-highlight sa dilaw, para sa VGS = 5V. Karaniwan, ang paggamit ng isang MOSFET bilang isang switch sa pangkalahatan ay nagsasangkot ng triode mode ng operasyon, dahil ang MOSFET ay nagpapawalang-bisa ng power PD = ID * VDS, at ang isang mahusay na switch ay dapat magwawaldas ng kaunting lakas sa switch mismo. Ngunit sa kasong ito, nakikipag-usap kami sa isang motor, at ang mga motor ay may posibilidad na mangailangan ng maraming kasalukuyang (na may maliit na boltahe na drop) kapag una silang nagsisimula. Kaya't para sa unang segundo o dalawa, ang MOSFET ay tatakbo na may mataas na VDS, at malilimitahan ng maximum na kasalukuyang nito - mga 800mA mula sa pulang linya ng dashing na iginuhit namin sa datasheet. Nalaman namin na hindi ito sapat upang masimulan ang bomba, kaya gumamit kami ng isang maliit na trick at inilagay ang dalawang MOSFET sa parallel. Sa ganitong paraan, ibinabahagi nila ang kasalukuyang, at maaaring epektibo na lumubog tungkol sa 1600mA magkasama. Dahil din sa mataas na mga kinakailangan sa kuryente ng bomba, ginamit namin ang isang wall transformer na may mas mataas na kasalukuyang output. Kung mayroon kang isang wall transpormer na may higit sa 5V output - marahil 9V o 12V - pagkatapos ay ca

Hakbang 3: I-set up ang PWM sa MCU

I-set up ang PWM sa MCU
I-set up ang PWM sa MCU
I-set up ang PWM sa MCU
I-set up ang PWM sa MCU
I-set up ang PWM sa MCU
I-set up ang PWM sa MCU

Mga Rehistro at Pagkalkula ng PWM Sa video, pinag-uusapan namin ang tungkol sa dalawang antas na ginamit ng timer / counter module: ang nangungunang halaga, at ang ihambing na halaga. Ang pareho sa mga ito ay mahalaga sa pagbuo ng signal ng PWM na gusto mo. Ngunit upang maisaaktibo ang output ng PWM ng iyong ATmega168 sa unang lugar, kailangan naming mag-set up ng ilang mga rehistro. Una, pipiliin namin ang Mabilis na PWM mode na may OCR1A bilang nangungunang halaga, na nagpapahintulot sa amin na makatwirang itakda kung gaano kadalas magsimula ng isang bagong pulso. Pagkatapos, itinakda namin ang orasan upang tumakbo sa isang pre-dibisyon ng 8, na nangangahulugang tataas ang counter ng 1 bawat 8 / (14745600 Hz) = 542 nanoseconds Dahil mayroon kaming 16-bit na pagrehistro para sa timer na ito, nangangahulugan ito na maitatakda namin ang aming pangkalahatang panahon ng signal na kasing taas ng 65536 * 542ns = 36 milliseconds. Kung gumamit kami ng isang mas malaking numero ng paghahati, maaari naming gawing mas malayo ang aming mga pulso (na hindi makakatulong sa sitwasyong ito), at mawawalan kami ng resolusyon. Kung gumamit kami ng isang mas maliit na numero ng paghahati (tulad ng 1), hindi namin magagawa ang aming mga pulso nang hindi bababa sa 16 milliseconds na hiwalay, tulad ng inaasahan ng aming servo. Panghuli, itinakda namin ang Compare Output mode para sa isang "hindi inverting" PWM output, na inilalarawan sa aming video. Itinakda din namin ang pin PB2 upang maging isang output pin - hindi ipinakita dito, ngunit nasa code ito. I-click upang palakihin ang mga pag-shot na ito mula sa mga pahina 132-134 ng ATmega168 datasheet, kasama ang aming mga pagpipilian sa halaga ng rehistro na naka-highlight:

Hakbang 4: I-program ang Microcontroller

Ngayon ay oras na upang talagang programa ang MCU. Ang kumpletong source code ay ibinibigay sa aming website https://www.nerdkits.com/video/servosquirterAng unang set up ng code ang PWM upang himukin ang servo. Ang code pagkatapos ay nakaupo lamang sa isang habang loop na naghihintay para sa pag-input ng gumagamit. Ang mga character na 1 at 0 ay binabaling ang MCU pin na konektado sa pump transistor o naka-on. Ito ay magpapasara at magpapapatay sa pagbibigay sa amin ng kakayahang magpaputok sa kalooban. Tumutugon din ang code sa mga key na '[' at ']' ang mga key na ito ay tataas o babawasan ang ihambing na halaga sa PWM pin, na magiging sanhi ng servo motor upang baguhin ang posisyon. Binibigyan ka nito ng kakayahang maghangad bago magpaputok.

Hakbang 5: Serial Port Communication

Serial Port Communication
Serial Port Communication
Serial Port Communication
Serial Port Communication
Serial Port Communication
Serial Port Communication
Serial Port Communication
Serial Port Communication

Ang huling hakbang ay upang i-set up ang computer upang maipadala ang mga utos sa Microcontroller. Sa NerdKit, ginagamit namin ang serial cable upang magpadala ng mga utos, at impormasyon sa computer. Posibleng magsulat ng mga simpleng programa sa karamihan ng mga wika ng programa na maaaring makipag-usap sa serial port sa NerdKit. Gayunpaman mas simple na gumamit ng isang programa ng terminal upang gawin ang serial na komunikasyon para sa amin. Sa ganitong paraan maaari ka lamang mag-type sa keyboard, at makita ang tugon mula sa NerdKit. WindowsKung gumagamit ka ng Windows XP o mas maaga, kasama ang HyperTerminal, at dapat ay nasa iyong Start Menu sa ilalim ng "Start -> Programs -> Accessories -> Komunikasyon ". Kapag binuksan mo ang HyperTerminal, hinihiling ka nitong mag-set up ng isang koneksyon. Kanselahin ang mga iyon, hanggang sa ikaw ay nasa pangunahing HyperTerminal sceen. Kailangan mong i-set up ang HyperTerminal, piliin ang tamang COM port, at itakda ang mga setting ng port nang naaangkop upang gumana sa NerdKit. Sundin ang mga screenshot sa ibaba upang makakuha ng tamang pag-setup ng HyperTerm. Kung nasa Windows Vista ka, ang HyperTerminal ay hindi na kasama. Sa kasong ito, pumunta sa pag-download ng PuTTY (Windows installer). Gamitin ang mga setting ng koneksyon sa ibaba upang i-set up ang Putty, gamit ang tamang COM port. Mac OS XAfter pagpasok ng application ng Terminal, i-type ang "screen /dev/tty. PL* 115200" upang simulang makipag-usap sa serial port. LinuxOn Linux, ginagamit namin " minicom "upang makausap ang serial port. Upang magsimula, patakbuhin ang "mga minicom -s" sa console upang ipasok ang menu ng pag-setup ng minicom. Pumunta sa "Serial Port Setup". Itakda ang mga parameter tulad ng sumusunod: Pag-configure ng Minicom sa Linux Pagkatapos, pindutin ang makatakas at gamitin ang "I-save ang pag-set up bilang dfl" upang i-save ang mga setting bilang default. Dapat mo na ngayong ma-hit ang "Exit" at gumamit ng minicom para sa pakikipag-usap sa NerdKit.

Inirerekumendang: