Kā jau tika apspriests iepriekš, Arduino Due ir ARM kontrolieris, kas paredzēts elektronikas inženieriem un vaļaspriekiem. Šo DUE dēli var izmantot CNC mašīnu, 3D printeru, robotu roku izgatavošanai utt. Visiem šiem projektiem ir kopīga iezīme, kas ir Pozīcijas kontrole. Jebkuram no šiem projektiem ir nepieciešama precizitāte attiecībā uz viņu pozīciju. Precīzas pozīcijas šajās mašīnās var sasniegt ar Servo Motors. Šajā sesijā mēs kontrolēsim servomotora stāvokli ar Arduino Due. Mēs jau esam aplūkojuši servomotora saskarni ar Arduino Uno un servomotora saskarni ar mikrokontrolleru 8051.
Servo motori:
Servomotori ir pazīstami ar precīzu vārpstas kustību vai stāvokli. 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. Servomotorus izmanto arī dažos printeros un faksa aparātos.
Servomotori ir pieejami dažādās formās un izmēros. Šajā apmācībā mēs izmantosim servo motoru SG90. SG90 ir 180 grādu servomotors. Tātad ar šo servo mēs varam novietot asi no 0 līdz 180 grādiem.
Servomotoram galvenokārt ir trīs vadi, viens ir paredzēts pozitīvam spriegumam, otrs - zemējumam, bet pēdējais - pozīcijas iestatīšanai. RED vads ir pievienots strāvai, brūns vads ir savienots ar zemi un dzeltens vads (vai BALTS) ir pievienots signālam.
Servomotors ir līdzstrāvas motora, stāvokļa kontroles sistēmas un pārnesumu kombinācija. Servo mums ir vadības sistēma, kas paņem PWM signālu no signāla tapas. Tas atšifrē signālu un iegūst no tā darba attiecību. Pēc tam tas salīdzina attiecību ar iepriekš definētajām pozīciju vērtībām. Ja vērtībās ir atšķirība, tas attiecīgi pielāgo servo stāvokli. Tātad servomotora ass stāvoklis ir balstīts uz PWM signāla un SIGNAL tapas darba attiecību.
To biežums PWM (impulsa ilgums ir modulēta) signāls var mainīties atkarībā no servomotora veida. Svarīgi šeit ir PWM signāla DUTY RATIO. Pārbaudiet to PWM ar Arduino Due. Tomēr šajā gadījumā mums nav pat jāuztraucas par izvēli par nodokļa likmi. Arduino mums ir īpaša funkcija; to izsaucot, mēs varam noregulēt servo pozīciju, vienkārši norādot leņķi. Par to mēs runāsim zemāk esošajā darba sadaļā.
Pirms servomotora saskarnes ar Arduino Due jūs varat pārbaudīt servo ar šīs servomotora testēšanas shēmas palīdzību. Pārbaudiet arī šos projektus, lai kontrolētu servo ar Flex Sensor vai Force Sensor.
Komponenti:
Aparatūra: Arduino Due, barošanas avots (5v), servomotors.
Programmatūra: Arduino katru vakaru, lejupielādējiet to no saites zemāk (https://www.arduino.cc/en/Main/Software)
Lai iegūtu sīkāku informāciju par šīs programmatūras lejupielādi un instalēšanu, apmeklējiet pirmo pamācību Darba sākšana ar Arduino Due.
Shēmas shēma un darba skaidrojums:
Kā jau iepriekš teicām ARDUINO, mums ir iepriekš definētas bibliotēkas, kas attiecīgi iestatīs frekvences un slodzes koeficientus, tiklīdz galvenes fails tiks izsaukts vai iekļauts. ARDUINO mums vienkārši jānorāda nepieciešamais servo stāvoklis, un DUE ģenerē servo atbilstošu PWM signālu. Lietas, kas mums jādara, lai iegūtu precīzu servo stāvokli, ir
# iekļaut
Servo myservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (nepieciešams_pozīcijas_ leņķis);
Galvenes fails “#include
Otrkārt, servo ir jāizvēlas nosaukums, izmantojot “Servo myservo” , šeit myservo ir izvēlētais nosaukums, tāpēc, rakstot uz amatu, mēs izmantosim šo vārdu, šī funkcija ir noderīga, ja mums ir daudz servo, ko kontrolēt, ar to mēs varam kontrolēt pat 12 servo.
Ar Arduino Due, kam ir 12 PWM kanāli, mums DUE jāpasaka, kur servo signāla tapa ir pievienota vai kur tai jāveido PWM signāls. Lai to izdarītu, mums ir “myservo.attach (2);” , šeit mēs sakām DUE, ka mēs esam pievienojuši servo signāla tapu pie PIN2.
Atliek tikai iestatīt pozīciju, mēs iestatīsim servo pozīciju, izmantojot “ myservo.write (45);” , ar šo komandu servo roka pārvietojas par 45 grādiem. Ja mainām “45” uz “175”, servo ass leņķojas līdz 175 grādiem un paliek tur. Pēc tam, kad mums ir jāmaina servo pozīcija, mums vienkārši jāizsauc komanda “ myservo.write (needed_position_angle);” .
Programmā mēs palielināsim un samazināsim leņķus, izmantojot cilpas. Tātad servo slauka no 0 līdz 180, pēc tam no 180 līdz 0 un tā tālāk. Servo Motor Control ar Arduino Due vislabāk izskaidrots soli pa solim C kodu zemāk leju.