Mga kategorya: Mga circuit ng Microcontroller
Bilang ng mga tanawin: 19709
Mga puna sa artikulo: 0

Kontrol ng motor at servo kasama ang Arduino

 

Sa mga simpleng disenyo ng mga sistema ng automation, madalas na kinakailangan hindi lamang upang basahin ang mga pagbabasa ng mga sensor, kundi pati na rin upang itakda ang mga mekanismo ng paggalaw. Para sa mga ito, ginagamit ang iba't ibang mga de-koryenteng motor. Ang pinakasimpleng at pinakapopular na pagpipilian ay isang DC motor. Nanalo siya ng pag-ibig ng mga mahilig sa kanyang pag-access, kadalian ng pagsasaayos ng bilis. Kung ang gawain ay ilipat ang anumang mekanismo sa isang naibigay na anggulo o distansya, maginhawa na gumamit ng isang servo drive o isang motor na stepper.

Sa artikulong ito, titingnan namin ang mga servo at maliit na DC motor, na kumokonekta sa kanila sa isang board ng Arduino, at inaayos ang DCT.

Kontrol ng motor at servo kasama ang Arduino

DC motor

Ang pinaka-karaniwang electric motor na ginagamit sa mga portable na aparato, mga laruan, mga modelo na kinokontrol ng radyo at iba pang mga aparato. Ang mga permanenteng magneto ay naayos sa maliit na de-koryenteng motor sa stator, at isang paikot-ikot na rotor.

DC motor

Ang kasalukuyang ay ibinibigay sa paikot-ikot sa pamamagitan ng pagpupulong ng brush. Ang mga brush ay gawa sa grapayt, kung minsan ay matatagpuan ang mga contact na sliding ng tanso. Dumausdos ang mga brush sa mga lamellas na matatagpuan sa isang dulo ng rotor. Kung hindi ka pumunta sa mga detalye, ang bilis ng pag-ikot nito ay nakasalalay sa armature paikot-ikot na kasalukuyang.

Kolektor ng motor ng Kolektor

Sa malalaking DC motor, sa stator, ang isang paikot-ikot na paggulo ay konektado, na konektado sa paikot-ikot na rotor (sa pamamagitan ng pagpupulong ng brush) sa isang tiyak na paraan (sunud-sunod, kahanay o halo-halong pagganyak). Kaya, ang nais na metalikang kuwintas at bilang ng mga rebolusyon ay nakamit.


Pagkontrol ng bilis

Elektriko DC Motor

Kapag nakakonekta sa mga mains, ang DC motor ay nagsisimulang iikot sa bilis ng rate. Upang mabawasan ang bilis na kailangan mo upang limitahan ang kasalukuyang. Upang gawin ito, ang mga resistensya ng ballast ay ipinakilala, ngunit binabawasan nito ang kahusayan ng pag-install nang buo at lilitaw ang labis na mapagkukunan ng init. Para sa mas mabisang regulasyon ng boltahe at kasalukuyang, ginagamit ang isa pang pamamaraan - Regulasyon ng PWM.

Regulasyon ng PWM

Ang isang paraan ng pagkontrol ng pulso-width modulated signal (boltahe) ay upang makabuo ng nais na halaga ng boltahe sa pamamagitan ng pagbabago ng lapad ng pulso, na may isang palaging tagal ng panahon (dalas).

Iyon ay, ang panahon ay nahahati sa dalawang bahagi:

1. Masayang oras.

2. I-pause ang oras.

Ang ratio ng oras ng pulso sa kabuuang oras ng panahon ay tinatawag na duty cycle:

Ks = ti / tper

ang gantimpala ay tinatawag na "duty cycle":

D = 1 / KZ = tper / t at

Upang mailalarawan ang operating mode ng PWM controller, ang parehong mga konsepto ay ginagamit: parehong duty cycle at duty cycle.

Ang kasalukuyang pagkonsumo ng motor ay nakasalalay sa kapangyarihan nito. Ang bilang ng mga rebolusyon, tulad ng sinabi, ay depende sa kasalukuyang. Ang kasalukuyang maaaring maiayos sa pamamagitan ng pagbabago ng dami ng boltahe na inilalapat sa mga paikot-ikot. Sa katunayan, kapag pinalakas ng isang boltahe na lumampas sa nominal na halaga ayon sa motor ng motor, ang bilis nito ay lalampas din sa bilis ng nominal. Gayunpaman, ang naturang mga mode ng operating ay mapanganib para sa motor, dahil ang isang mas malaking kasalukuyang daloy sa mga paikot-ikot, na nagiging sanhi ng kanilang pagtaas ng pag-init.

Kung ang pinsala sa makina mula sa mga panandaliang impulses o paulit-ulit na panandaliang mga mode ng pagpapatakbo ay minimal, kung gayon sa panahon ng matagal na operasyon sa mataas na boltahe at mga rebolusyon ay susunugin o ang mga pagdadala nito ay magpapainit at mag-jam, at pagkatapos ang mga windings ay susunugin kung ang suplay ng kuryente ay hindi ididiskonekta.

Kung ang boltahe ng pag-input ay masyadong mababa, ang maliit na motor ay maaaring hindi sapat na lakas upang ilipat. Samakatuwid, kinakailangan upang mag-eksperimentong malaman ang normal na bilis at boltahe para sa isang partikular na makina na hindi hihigit sa nominal.


Kumonekta kami sa arduino

Nagkaroon ako ng isang maliit na motor, tila mula sa isang cassette player, na nangangahulugan na ang na-rate na boltahe nito ay magiging mas mababa sa 5 volts, pagkatapos ay magiging sapat ang output ng arduino. Pipilitin ko ito mula sa 5V pin, i.e. mula sa output ng linear stabilizer na matatagpuan sa board. Ayon sa scheme na nakikita mo sa ibaba.

Hindi ko alam ang kasalukuyang motor na ito, kaya ikinonekta ko ito sa kuryente, at na-install ko ang isang trans-transpormasyong patlang sa pagitan ng motor at power pin, sa gate kung saan inilalapat ang isang signal mula sa PWM output, maaaring magamit ang anumang magagamit.

Diagram ng Arduino DC Motor Connection

Upang ayusin ang bilis, nagdagdag ako ng isang variable na risistor sa circuit, na kinokonekta ito sa analog input A0. Para sa isang mabilis na koneksyon, gumamit ako ng isang hindi nabebenta na tinapay, na tinatawag din na breadboard.

Nag-install ako ng isang kasalukuyang naglilimita sa risistor sa mga kable ng transistor (upang mabawasan ang kasalukuyang singil sa gate, ito ay i-save ang port mula sa pagkasunog at ang supply ng kuryente ng microcontroller mula sa paghupa at ang pagyeyelo nito) ng 240 Ohms, at hinila ito sa lupa na may isang 12 kOhm resistor, dapat itong gawin upang gawin itong mas matatag ang tangke ng shutter ay nagtrabaho at mas mabilis na pinalabas.

Inilarawan ang mga detalye sa mga epekto ng transistor sa isang artikulo sa aming website. Gumamit ako ng isang malakas, pangkaraniwan at hindi masyadong mahal na mosfet na may n-channel at isang built-in na IRF840 reverse diode.

Ehekutibo at pagtukoy ng bahagi ng circuit

Ganito ang hitsura ng aking kinatatayuan sa laboratoryo:

DC motor at arduino

Ang PWM control function ay tinawag kapag sumusulat sa kaukulang output (3, 5, 6, 9, 10, 11) na mga halaga mula 0 hanggang 255 kasama ang utos ng AnalogWrite (pin, halaga). Ang lohika ng kanyang trabaho ay inilalarawan sa mga grap sa ibaba.

PWM Control Function

Ang nasabing signal ay inilalapat sa gate ng transistor:

Ang nasabing signal ay inilalapat sa gate ng transistor

Ang code ng programa sa disgrace ay maikli at simple, sa detalye ng lahat ng mga pag-andar na ito ay inilarawan sa mga naunang artikulo tungkol sa arduino.

int sensorPin = A0; // input mula sa potensyomiter

int motorPin = 3; // PWM output sa gate ng camera

walang pag-setup () {

pinMode (motorPin, OUTPUT);

}

walang bisa na loop () {

analogWrite (motorPin, mapa (analogRead (sensorPin), 0, 1023, 0, 256));

}

Sa pagpapaandar ng analogWrite, nagtalaga ako ng isang halaga sa output ng PWM, sa pamamagitan ng utos ng mapa, pinapayagan ka nitong gamitin na alisin ang ilang mga linya ng code at isang variable.


Ito ay isang scheme ng pagtatrabaho at ito ay mahusay para sa pagmamasid sa mga proseso kapag inaayos ang lakas ng pag-load, ang ningning ng mga LED, ang bilis ng engine, kailangan mo lamang ikonekta ang nais na pag-load sa halip na ang engine. Kasabay nito, sa halip na 5V, ang anumang boltahe ay maaaring mailapat sa pagkarga, halimbawa 12V, huwag kalimutan na ikonekta ang minus power supply sa contact, halimbawa 12V, huwag kalimutan na ikonekta ang minus power supply sa GND pin sa lupon ng microcontroller.

Sa arduino, ang dalas ng PWM, kung tinawag sa pamamagitan ng pag-andar ng analogWrite, 400 Hz lamang, sa pinakamababang halaga ng boltahe, isang tao ng kaukulang dalas ay narinig mula sa mga paikot-ikot ng motor.

Arduino at servo

Mga Servos

Ang isang motor na maaaring nasa isang paunang natukoy na posisyon, at kapag nakalantad sa mga panlabas na kadahilanan, halimbawa, isang sapilitang pag-alis ng baras, pinapanatili ang posisyon nito - ay tinatawag na isang servo drive. Sa pangkalahatan, ang kahulugan ay tunog ng ibang naiiba:

Si Servo ay isang negatibong feedback na motor na hinihimok.

Karaniwan, tatlong mga wire ang lumabas sa isang servo drive:

  • Dagdag na kapangyarihan.

  • Mas kaunting lakas.

  • Ang signal signal.

Ang servo drive ay binubuo ng:

  • DC motor (o walang motor na walang motor);

  • Mga bayad sa pamamahala;

  • Posisyon sensor (encoder para sa servos na may anggulo ng pag-ikot ng 360 ° o isang potensyomiter para sa servos na may anggulo ng pag-ikot ng 180 °);

  • Ang pagbawas ng gear (nagpapababa ng bilis ng engine, at pinatataas ang metalikang kuwintas sa baras ng drive).

Inihahambing ng control unit ang signal sa built-in na sensor ng posisyon at signal na dumating sa control wire, kung magkakaiba sila, pagkatapos ay mayroong isang pag-ikot sa isang anggulo kung saan ang pagkakaiba sa pagitan ng signal ay nai-level.

Ang prinsipyo ng pagpapatakbo ng servo

Pangunahing katangian ng servos:

  • Ang bilis ng pag-on (oras kung saan ang shaft ay umiikot sa pamamagitan ng isang anggulo ng 60 °);

  • Torque (kg / cm, i.e. kung gaano karaming kilo ang makatiis ng makina sa pingga 1 cm mula sa baras);

  • Supply boltahe;

  • Kasalukuyang pagkonsumo;

  • Sa pamamagitan ng paraan ng control (analog o digital, walang makabuluhang pagkakaiba, ngunit ang digital ay mas mabilis at mas matatag).

Karaniwan, ang signal signal ay 20 ms, at ang tagal ng control pulse:

  • 544 μs - tumutugma sa 0 °;

  • 2400 μs - tumutugma sa isang anggulo ng 180 °.

Sa mga bihirang kaso, ang haba ng pulso ay maaaring magkakaiba, halimbawa, 760 at 1520 μ, ayon sa pagkakabanggit, ang impormasyong ito ay maaaring linawin sa dokumentong teknikal para sa drive. Ang isa sa mga pinakatanyag na servo ng hobby ay ang Tower Pro SG90 at mga katulad na modelo.Ito ay mura - mga 4 na dolyar.

Sevroprivod para sa arduino

May hawak na 1.8 kg / cm sa baras, at kumpleto kasama nito ang mga mounting screws at levers na may mga splines para sa baras. Sa katunayan, ang sanggol na ito ay lubos na malakas, at napakahirap na pigilan ito sa isang daliri - ang drive mismo ay nagsisimulang bumagsak sa mga daliri - ganoon ang lakas nito.


Servo control at Arduino

Tulad ng nabanggit na, ang kontrol ay isinasagawa sa pamamagitan ng pagbabago ng tagal ng tibok, ngunit huwag malito ang pamamaraang ito sa PWM (PWM), ang tamang pangalan ay PDM (Pulse Duration Modulation). Ang mga bahagyang paglihis sa dalas ng signal (20 ms - tagal, dalas 50 Hz) ay hindi naglalaro ng isang espesyal na papel. Ngunit huwag lumihis mula sa dalas ng higit sa 10 Hz, ang makina ay maaaring magpatakbo o masunog.

Servo control at Arduino

Ang koneksyon sa arduino ay medyo simple, maaari mo ring kapangyarihan ang drive mula sa isang 5v pin, ngunit hindi kanais-nais. Ang katotohanan ay na sa simula ay may isang maliit na tumalon sa kasalukuyang, maaari itong maging sanhi ng isang pagkasira ng kuryente at Maling microcontroller output. Bagaman posible ang 1 maliit na biyahe (uri ng SG90), ngunit wala na.

Upang makontrol ang nasabing mga servo sa arduino, mayroon kang silid ng Servo na binuo sa IDE, mayroon itong isang maliit na hanay ng mga utos:

  • ilakip () - magdagdag ng isang variable sa pin. Halimbawa: drive name.attach (9) - ikonekta ang isang servo sa pin 9. Kung ang iyong biyahe ay nangangailangan ng mga hindi pamantayang haba ng mga pulse ng control (544 at 2400 s), pagkatapos ay maaari silang itakda ng paghihiwalay ng isang kuwit pagkatapos ng numero ng pin, halimbawa: servo.attach (pin, min anggulo (μs), max na anggulo sa ISS));

  • isulat () - nagtatakda ng anggulo ng pag-ikot ng baras sa mga degree;

  • writeMicroseconds () - nagtatakda ng anggulo sa pamamagitan ng haba ng pulso sa microseconds;

  • basahin () - tinutukoy ang kasalukuyang posisyon ng baras;

  • naka-attach () - Suriin kung ang isang pin ay naka-set na may koneksyon na servo;

  • detach () - kanselahin ang utos ng attach.

Pinapayagan ka ng aklatang ito na kontrolin ang 12 servos mula sa UNO, Nano at ang mga katulad na board (mega368 at 168), habang ang kakayahang gumamit ng PWM sa pin 9 at 10 ay nawala. Kung mayroon kang MEGA, maaari mong kontrolin ang 48 na mga server, ngunit ang PWM sa mga pin 11 at 12 ay mawawala, kung gumagamit ka ng hanggang sa 12 servos, pagkatapos ang PWM ay mananatiling ganap na gumagana sa lahat ng mga contact.

Kung ikinonekta mo ang aklatang ito, hindi ka makakapagtrabaho sa 433 na mga receiver / transmiter ng MH3. Mayroong isang library ng Servo2 para dito, na kung hindi man magkapareho.

Servo2 Library

Narito ang isang halimbawa ng code na ginamit ko para sa mga eksperimento na may isang servo drive, ito ay nasa karaniwang hanay ng mga halimbawa:

#include // ikonekta ang library

Servo myservo; // ipinahayag variable na pangalan para sa myservo servo

int potpin = 0; // pin para sa pagkonekta sa setting ng potensyomiter

int val; // variable upang mai-save ang mga resulta ng pagbabasa ng signal mula sa potensyomiter

walang pag-setup () {

myservo.attach (9); // set 9 pin bilang control output para sa servo

}

walang bisa na loop () {

val = analogRead (potpin); // mga resulta ng pagbabasa ng potentiometer na naka-save sa trans. val, sila ay nasa saklaw mula 0 hanggang 1023

val = mapa (val, 0, 1023, 0, 180); // isalin ang saklaw ng pagsukat mula sa analog input 0-1023

// sa saklaw ng mga gawain para sa servo 0-180 degree

myservo.write (val); // ipasa ang conversion signal mula sa pot-ra upang makontrol input ng servo

pagkaantala (15); / Ang pagkaantala ay kinakailangan para sa matatag na operasyon ng system

 

Ikinonekta namin ang servo sa Arduino

Konklusyon

Ang paggamit ng pinakasimpleng electric motor na ipinares sa isang arduino ay isang medyo simpleng gawain, habang ang mastering ng materyal na ito ay nagpapalawak ng iyong mga kakayahan sa larangan ng automation at robotics. Ang pinakasimpleng mga robot o mga modelo na kontrolado ng radyo ng mga kotse na binubuo ng naturang mga motor, at ang mga servo ay ginagamit upang makontrol ang pag-ikot ng mga gulong.

Sa mga halimbawa na isinasaalang-alang, ang isang potensyomiter ay ginamit upang itakda ang anggulo ng pag-ikot o bilis ng pag-ikot, ang anumang iba pang mapagkukunan ng signal ay maaaring magamit sa halip, halimbawa, ang pag-ikot o pagbabago sa bilis ay maaaring mangyari bilang isang resulta ng impormasyon na natanggap mula sa mga sensor.

Isang halimbawa ng paggamit ng mga servo sa alternatibong enerhiya: pagsubaybay sa anggulo ng saklaw ng sikat ng araw at pag-aayos ng posisyon ng mga solar panel sa mga halaman ng kuryente.

Upang maipatupad ang tulad ng isang algorithm, maaari kang gumamit ng maraming photoresistors o iba pang mga aparato ng optoelectroniko para sa pagsukat ng dami ng ilaw ng insidente at, depende sa kanilang mga pagbasa, itinakda ang anggulo ng pag-ikot ng solar panel.

Tingnan din sa electro-tl.tomathouse.com:

  • Paano inayos ang servo at gumagana
  • Arduino at stepper motor: mga pundasyon, scheme, koneksyon at kontrol
  • Nagtatampok ng pagkonekta ng mga aparato sa Arduino
  • Paano makilala ang isang induction motor mula sa isang DC motor
  • Paano ikonekta ang dumadagdag na encoder sa Arduino

  •