Šajā apmācībā mēs kontrolēsim ARDUINO UNO servomotoru. Servomotori tiek izmantoti tur, kur nepieciešama precīza vārpstas kustība vai novietojums. Tie nav paredzēti ātrgaitas lietojumiem. Tie tiek piedāvāti mazam ātrumam, vidējam griezes momentam un precīzai pozīcijas pielietošanai. Šos motorus izmanto robotu roku mašīnās, lidojuma vadības un vadības sistēmās.
Servomotori ir pieejami dažādās formās un izmēros. Servomotorā galvenokārt būs vadi, viens ir paredzēts pozitīvam spriegumam, otrs - zemējumam, bet pēdējais - pozīcijas iestatīšanai. RED vads ir savienots ar strāvu, melnais vads ir savienots ar zemi un dzeltens vads ir savienots ar signālu.
Servomotors ir līdzstrāvas motora, stāvokļa kontroles sistēmas, zobratu kombinācija. Līdzstrāvas motora vārpstas stāvokli regulē servo vadības elektronika, pamatojoties uz PWM signāla SIGNAL tapas darba attiecību.
Vienkārši runājot, vadības elektronika regulē vārpstas stāvokli, kontrolējot līdzstrāvas motoru. Šie dati par vārpstas stāvokli tiek nosūtīti caur SIGNAL tapu. Pozīcijas dati vadības ierīcei jānosūta PWM signāla veidā caur servomotora signāla tapu.
PWM (pulsa platuma modulēta) signāla frekvence var atšķirties atkarībā no servomotora veida. Svarīgi šeit ir PWM signāla DUTY RATIO. Pamatojoties uz šo DUTY RATION, vadības elektronika noregulē vārpstu.
Kā parādīts zemāk redzamajā attēlā, lai vārpstu varētu pārvietot uz 9o pulksteni, IESLĒGŠANAS RĀCIJAI jābūt 1/18. 1 ms ON laiks un 17 ms OFF laiks 18 ms signālā.
Lai vārpstu varētu pārvietot uz 12o pulksteni, signāla IESLĒGŠANAS laikam jābūt 1,5 ms un Izslēgšanas laikam 16,5 ms. Šo attiecību dekodē vadības sistēma servo, un tā pielāgo pozīciju, pamatojoties uz to. Šis PWM šeit tiek ģenerēts, izmantojot ARDUINO UNO.
Ķēdes komponenti
Aparatūra: ARDUINO UNO, barošanas avots (5v), 100uF kondensators, pogas (divi gabali), 1KΩ rezistors (divi gabali), servomotors (kas bija jāpārbauda).
Programmatūra: arduino IDE (Arduino katru nakti).
Arduino servomotora shēmas shēma un paskaidrojums
Normālos gadījumos mums jādodas uz kontrolieru reģistriem, lai pielāgotu frekvenci un iegūtu nepieciešamo darba attiecību, lai precīzi kontrolētu servo pozīciju, ARDUINO mums šīs lietas nav jādara.
ARDUINO mums ir iepriekš definētas bibliotēkas, kas attiecīgi iestatīs frekvences un slodzes koeficientus, kad galvenes fails tiks izsaukts vai iekļauts. ARDUINO mums vienkārši jānorāda nepieciešamais servo stāvoklis, un UNO automātiski pielāgo PWM.
Lietas, kas mums jādara, lai iegūtu precīzu servo stāvokli, ir:
|
Vispirms mums jāiestata PWM signāla frekvence, un tāpēc mums vajadzētu izsaukt “#include
Tagad mums ir jādefinē servo nosaukums “Servo sg90sevo”, šeit izvēlētais nosaukums “sg90servo”, tāpēc, rakstot dzirai, mēs izmantosim šo nosaukumu, šī funkcija ir noderīga, ja mums ir daudz servo, ko kontrolēt, ar to mēs varam kontrolēt astoņus servo.
Tagad mēs UNO pastāstām, kur ir pievienots servo signāla kontakts vai kur tam nepieciešams ģenerēt PWM signālu. Lai to izdarītu, mums ir “Sg90.attach (3);”, šeit mēs sakām UNO, ka mēs savienojām servo signāla tapu pie PIN3.
Atliek tikai iestatīt pozīciju, mēs iestatīsim servo pozīciju, izmantojot “Sg90.write (30);”, ar šo komandu servo roka pārvietojas par 30 grādiem, tāpēc viss. Pēc tam, kad mums ir jāmaina servo pozīcija, mums jāizsauc komanda “Sg90.write (needed_position_ angle);”. Šajā ķēdē mums būs divas pogas, viena poga palielina servo pozīciju, bet otra ir paredzēta servo pozīcijas samazināšanai.
Arduino servo vadības apmācība ir izskaidrots soli pa solim C kodu zemāk dota.