luokat: Mikrokontrolleripiirit
Katselukuvien lukumäärä: 19709
Kommentit artikkeliin: 0

Moottori- ja servo-ohjaus Arduinolla

 

Automaatiojärjestelmien yksinkertaisissa malleissa on usein anturien lukemien lukemisen lisäksi välttämätöntä myös asettaa liikemekanismit. Tätä varten käytetään erilaisia ​​sähkömoottoreita. Yksinkertaisin ja suosituin vaihtoehto on tasavirtamoottori. Hän voitti rakastajien rakkauden saavutettavuudellaan, nopeuden säädön helppoudella. Jos tehtävänä on siirtää mitä tahansa mekanismia tiettyyn kulmaan tai etäisyyteen, on tarkoituksenmukaista käyttää servoajoa tai askelmoottoria.

Tässä artikkelissa tarkastellaan servoja ja pieniä tasavirtamoottoreita, kytkemällä niitä Arduino-korttiin ja säätämällä DCT.

Moottori- ja servo-ohjaus Arduinolla

DC-moottori

Yleisin sähkömoottori, jota käytetään kannettavissa laitteissa, leluissa, radio-ohjattavissa malleissa ja muissa laitteissa. Pysyvät magneetit kiinnitetään pieneen sähkömoottoriin staattorissa ja käämi roottoriin.

DC-moottori

Virta syötetään käämiin harjakokoonpanon kautta. Harjat on valmistettu grafiitista, joskus löydetään liukukoskettimia kuparista. Harjat liukuvat roottorin toisessa päässä olevien lamellien yli. Jos et mene yksityiskohtiin, sen pyörimisnopeus riippuu ankkurikäämin virrasta.

Moottorin ankkuri

Suurilla tasavirtamoottorilla, staattorilla, on kytketty virityskäämi, kytketty roottorin käämiin (harjakokoonpanon kautta) tietyllä tavalla (peräkkäinen, rinnakkainen tai sekoitettu viritys). Siten saavutetaan haluttu vääntömomentti ja kierrosten lukumäärä.


Nopeuden hallinta

Sähköinen DC-moottori

Kun verkkovirta on kytketty, tasavirtamoottori alkaa pyöriä nimellisnopeudella. Nopeuden pienentämiseksi sinun on rajoitettava virtaa. Tätä varten liitäntälaiteresistanssit otetaan käyttöön, mutta tämä vähentää koko asennuksen hyötysuhdetta ja ylimääräinen lämmönlähde ilmestyy. Jännitteen ja virran tehokkaampaan säätämiseen käytetään toista menetelmää - PWM-ohjaus.

PWM-ohjaus

Menetelmä pulssileveysmoduloidun signaalin (jännitteen) ohjaamiseksi on tuottaa haluttu jännitearvo muuttamalla pulssinleveyttä jakson vakiokertoimella (taajuus).

Eli ajanjakso on jaettu kahteen osaan:

1. Impulssiaika.

2. Tauko aika.

Pulssiajan suhdetta jakson kokonaisaikaan kutsutaan työsykliksi:

Ks = ti / tper

vastavuoroista kutsutaan "työsykliksi":

D = 1 / KZ = tper / t ja

PWM-ohjaimen toimintatavan kuvaamiseksi käytetään molempia käsitteitä: sekä käyttöjakso että työjakso.

Moottorin virrankulutus riippuu moottorin tehosta. Kierrosten lukumäärä, kuten sanottiin, riippuu virrasta. Virta voidaan säätää muuttamalla käämiin kohdistetun jännitteen määrää. Itse asiassa, kun sitä käytetään jännitteellä, joka ylittää moottorin passin nimellisarvon, sen nopeus ylittää myös nimellisnopeuden. Tällaiset toimintatavat ovat kuitenkin vaarallisia moottorille, koska käämiin virtaa suurempi virta, mikä aiheuttaa niiden lisääntynyttä lämmitystä.

Jos moottorin vaurioituminen lyhytaikaisista impulsseista tai toistuvasti lyhytaikaisesta käyttötavasta on minimaalista, niin pitkitetyn käytön aikana suurennetulla jännitteellä ja nopeudella se palaa tai sen laakerit kuumenevat ja kiilaavat, ja käämitykset palavat, jos virtalähdettä ei katkaista.

Jos tulojännite on liian alhainen, pienellä moottorilla ei yksinkertaisesti ole tarpeeksi virtaa liikkuakseen. Siksi on välttämätöntä kokeilla tietyn moottorin normaali nopeus ja jännite, joka ei ylitä nimellisarvoa.


Yhdistämme arduinoon

Minulla oli pieni moottori, kasettisoittimesta näyttää siltä, ​​että sen nimellisjännite on alle 5 volttia, sitten arduinon lähtöteho riittää. Annan virran siitä 5 V: n nastaa, ts. kortilla olevan lineaarisen stabilisaattorin ulostulosta. Alla olevan järjestelmän mukaan.

En tiedä tämän moottorin virtaa, joten kytken sen moottoriin ja asennin moottorin ja virtapistokkeen väliin kenttätehostetransistorin, jonka portille annettiin PWM-lähdön signaali, mitä tahansa käytettävissä olevista voidaan käyttää.

Arduino DC-moottorin kytkentäkaavio

Nopeuden säätämiseksi lisäsin piiriin muuttuvan vastuksen kytkemällä sen analogiatuloon A0. Nopeaan yhteyteen käytin juottamatonta leipälautaa, jota kutsutaan myös leipälautaksi.

Asensin virranrajoittajan vastuksen transistorin johtimeen (portin varausvirran pienentämiseksi, tämä säästää porttia palamisesta ja mikro-ohjaimen virtalähteen laskeutumisesta ja sen jäätymisestä) 240 ohmilla, ja vedin sen maahan 12 kOhm: n vastuksella, tämä on tehtävä, jotta se pysyy vakaampana sulkimen säiliö toimi ja purkautui nopeammin.

Yksityiskohdat kuvatuista kenttävaikutteisista transistoreista verkkosivustomme artikkelissa. Käytin tehokasta, yleistä ja ei liian kallista mosfettiä, jolla on n-kanava ja sisäänrakennettu IRF840 käänteisdiodi.

Piirin johtava ja määrittelevä osa

Näyttää siltä, ​​että laboratorion jalustakokoonpanoni näyttää:

DC-moottori ja arduino

PWM-ohjaustoiminto kutsutaan, kun kirjoitetaan vastaavalle ulostulolle (3, 5, 6, 9, 10, 11) arvoille 0 - 255 AnalogWrite-komennolla (nasta, arvo). Hänen työnsä logiikka on kuvattu alla olevissa kaavioissa.

PWM-ohjaustoiminto

Tällainen signaali kohdistetaan transistorin hilaan:

Tällainen signaali johdetaan transistorin hilaan

Häpeän ohjelmakoodi on lyhyt ja yksinkertainen, kaikki nämä toiminnot on kuvattu yksityiskohtaisesti aiemmissa artikkeleissa arduinosta.

int sensorPin = A0; // tulo potentiometristä

int motorPin = 3; // PWM-lähtö kameran portille

tyhjä asennus () {

pinMode (motorPin, OUTPUT);

}

tyhjä silmukka () {

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

}

Annan analogWrite-toiminnossa arvon PWM-ulostulolle karttakomennon kautta, sen käytön avulla voit poistaa useita koodiriviä ja yhden muuttujan.


Tämä on toimiva kaavio ja se on hieno tapa tarkkailla prosesseja säätäessäsi kuormitustehoa, ledien kirkkautta, moottorin kierroslukua, sinun on vain kytkettävä haluttu kuorma moottorin sijasta. Samalla, 5 V: n sijasta, kuormaan voidaan kytkeä mitä tahansa jännitettä, esimerkiksi 12 V, älä unohda kytkeä miinusvirtalähdettä kontaktiin, esimerkiksi 12 V, älä unohda kytkeä miinus virtalähde GND-nastaan ​​mikrokontrollerilevyllä.

Arduinossa PWM-taajuus, kun sitä kutsutaan analogWrite-toiminnon kautta, on vain 400 Hz, minimijännitearvoilla moottorin käämityksistä kuultiin vastaavan taajuuden hum.

Arduino ja servo

Servo

Moottoria, joka voi olla ennalta määrätyssä asennossa ja joka altistuu esimerkiksi ulkoisille tekijöille, esimerkiksi akselin pakotetulle taipumalle, pitää asemansa muuttumattomana - kutsutaan servomoottoriksi. Yleensä määritelmä kuulostaa hiukan erilaiselta:

Servo on negatiivisella palautteella toimiva moottori.

Tyypillisesti servoasemasta tulee kolme johtoa:

  • Plus teho.

  • Vähemmän voimaa.

  • Ohjaussignaali.

Servo-asema koostuu:

  • DC-moottori (tai harjaton moottori);

  • Hallintapalkkiot;

  • Paikkatunnistin (koodaaja servoille, joiden kiertokulma on 360 °, tai potentiometri servoille, joiden kiertokulma on 180 °);

  • Vaihteen pienentäminen (alentaa moottorin kierroslukua ja lisää käyttöakselin vääntömomenttia).

Ohjausyksikkö vertaa sisäänrakennetun sijaintianturin signaalia ja ohjauskaapelin läpi kulkevaa signaalia, jos ne eroavat toisistaan, silloin tapahtuu kierto kulmassa, jossa signaalin välinen ero tasoitetaan.

Servon toimintaperiaate

Servojen pääominaisuudet:

  • Kääntönopeus (aika, jonka akseli pyörii 60 ° kulman läpi);

  • Vääntömomentti (kg / cm, ts. Kuinka monta kiloa moottori kestää vivussa 1 cm päässä akselista);

  • Syöttöjännite;

  • Nykyinen kulutus;

  • Ohjausmenetelmällä (analoginen tai digitaalinen) ei ole merkittävää eroa, mutta digitaalinen on nopeampaa ja vakaampaa).

Tyypillisesti signaalijakso on 20 ms ja ohjauspulssin kesto:

  • 544 μs - vastaa 0 °;

  • 2400 μs - vastaa 180 ° kulmaa.

Harvinaisissa tapauksissa pulssin pituus voi vaihdella, esimerkiksi 760 ja 1520 μs, nämä tiedot voidaan selventää taajuusmuuttajan teknisissä asiakirjoissa. Yksi suosituimmista harrastuksen servoista on Tower Pro SG90 ja vastaavat mallit.Se on edullinen - noin 4 dollaria.

Sevroprivod arduinolle

Se pitää akselilla 1,8 kg / cm, ja siinä on akselin kiinnitysruuvit ja vivut, joissa on uria. Itse asiassa tämä vauva on melko vahva, ja on erittäin ongelmallista lopettaa se yhdellä sormella - asema itse alkaa pudota sormista - sellainen onkin sen vahvuus.


Servo-ohjaus ja Arduino

Kuten jo mainittiin, ohjaus suoritetaan muuttamalla pulssin kestoa, mutta älä sekoita tätä menetelmää PWM: ään (PWM), sen oikea nimi on PDM (Pulse Duration Modulation). Signaalin taajuuden pienillä poikkeamilla (20 ms - kesto, taajuus 50 Hz) ei ole erityistä merkitystä. Älä kuitenkaan poikkea taajuudesta yli 10 Hz: llä, moottori voi käydä äänekkäästi tai palaa.

Servo-ohjaus ja Arduino

Yhteys arduinoon on melko yksinkertainen, voit myös käyttää virtaa 5V-nastaisesta, mutta ei toivottavaa. Tosiasia, että alussa on pieni virran hyppy, tämä voi aiheuttaa virranoton ja Väärä mikro-ohjaimen lähtö. Vaikka 1 pieni asema (tyyppi SG90) on mahdollista, mutta ei enempää.

Tällaisten servojen ohjaamiseksi arduinolla sinulla on Servo-kirjasto, joka on rakennettu IDE: hen, siinä on pieni joukko komentoja:

  • liitä () - lisää muuttuja tappiin. Esimerkki: aseman nimi.attach (9) - kytke servo nastaan ​​9. Jos taajuusmuuttajasi tarvitsee epästandardipituisia ohjauspulsseja (544 ja 2400 μs), niin ne voidaan määrittää pilkulla erotettuina pin-numeron jälkeen, esimerkiksi: servo.attach (nasta, minikulma (μs), maksimikulma ISS: ssä);

  • write () - asettaa akselin pyörimiskulman asteina;

  • writeMicroseconds () - asettaa kulman pulssin pituuden läpi mikrosekunnissa;

  • read () - määrittää akselin nykyisen sijainnin;

  • lisatud () - Tarkistaa, onko nasta asetettu kytkettynä servolla;

  • irrota () - peruuta kiinnityskomento.

Tämän kirjaston avulla voit hallita 12 servosta UNO: n, Nanon ja vastaavien taulukoiden (mega368 ja 168), kun taas kyky käyttää PWM: ää pin 9 ja 10 katoaa. Jos sinulla on MEGA, voit hallita 48. palvelinta, mutta nappien 11 ja 12 PWM katoaa, jos käytät enintään 12 servota, PWM pysyy täysin toiminnassa kaikissa kontakteissa.

Jos kytket tämän kirjaston, et voi työskennellä 433 MHz: n vastaanottimien / lähettimien kanssa. Tätä varten on olemassa Servo2-kirjasto, joka on muuten identtinen.

Servo2-kirjasto

Tässä on esimerkki koodista, jota käytin kokeissa servoaseman kanssa, se on vakiona esimerkkejä:

#include // yhdistä kirjasto

Servo myservo; // myservo-servon muutettu nimi

int potpin = 0; // nasta, joka kytkee asetuspotentiometrin

int val; // muuttuja tallentaa signaalin lukemisen tulokset potentiometristä

tyhjä asennus () {

myservo.attach (9); // aseta 9-nastainen servon ohjauslähdöksi

}

tyhjä silmukka () {

val = analoginen lukema (potpin); // potentiometrin lukemisen tulokset tallennettuna trans. val, ne ovat välillä 0-1023

val = kartta (val, 0, 1023, 0, 180); // käännä mittausalue analogiatulosta 0-1023

// tehtäväalueella servoon 0-180 astetta

myservo.write (val); // läpäistä muuntaminen signaali pot-ra: sta ohjattavaksi servotulo

viive (15); // viive tarvitaan järjestelmän vakaan toiminnan kannalta

 

Yhdistämme servon Arduinoon

johtopäätös

Yksinkertaisten sähkömoottorien käyttö arduinon kanssa on melko yksinkertainen tehtävä, kun taas tämän materiaalin hallitseminen laajentaa kykyjäsi automaation ja robotiikan alalla. Tällaisista moottoreista koostuvat yksinkertaisimmat robotit tai radio-ohjattavat automallit, ja servoilla pyörien pyörimistä ohjataan.

Tarkasteltavissa esimerkeissä käytettiin potentiometriä pyörimiskulman tai pyörimisnopeuden asettamiseksi, sen sijaan voidaan käyttää mitä tahansa muuta signaalilähdettä, esimerkiksi pyöriminen tai nopeuden muutos voi tapahtua antureilta vastaanotetun tiedon seurauksena.

Esimerkki servojen käytöstä vaihtoehtoisessa energiassa: auringonvalon esiintymiskulman seuraaminen ja aurinkopaneelien sijainnin säätäminen voimalaitoksissa.

Tällaisen algoritmin toteuttamiseksi voit käyttää useita fotoresisteihin tai muut optoelektroniset laitteet tulevan valon määrän mittaamiseksi ja niiden lukemista riippuen aurinkopaneelin pyörimiskulman asettamiseksi.

Katso myös osoitteesta i.electricianexp.com:

  • Kuinka servo on järjestetty ja toimii
  • Arduino ja askelmoottori: perusteet, kaaviot, kytkentä ja hallinta
  • Ominaisuudet yhdistää laitteet Arduinoon
  • Kuinka erottaa induktiomoottori DC-moottorista
  • Kuinka kytkeä inkrementaalianturi Arduinoon

  •