Som diskutert tidligere er Arduino Due et ARM-kontrollerbasert kort designet for elektroniske ingeniører og hobbyister. Dette DUE-kortet kan brukes til å lage CNC-maskiner, 3D-skrivere, robotarmer etc. Alle disse prosjektene har en felles funksjon som er Position Control. Noen av disse prosjektene trenger nøyaktighet i forhold til deres posisjon. Nøyaktige posisjoner i disse maskinene kan oppnås av Servo Motors. I denne økten skal vi kontrollere posisjonen til en servomotor med Arduino Due. Vi har allerede dekket servomotorgrensesnittet med Arduino Uno og servomotorgrensesnittet med 8051 mikrokontroller.
Servomotorer:
Servomotorer er kjent for sin nøyaktige akselbevegelse eller posisjon. Disse er ikke foreslått for applikasjoner med høy hastighet. Disse er foreslått for lav hastighet, middels dreiemoment og nøyaktig påføring av posisjon. Disse motorene brukes i robotarmmaskiner, flykontroller og kontrollsystemer. Servomotorer brukes også i noen av skrivere og faksmaskiner.
Servomotorer er tilgjengelige i forskjellige former og størrelser. Vi bruker SG90 Servo Motor i denne opplæringen. SG90 er en 180 graders servomotor. Så med denne servoen kan vi plassere aksen fra 0 til 180 grader.
En servomotor har hovedsakelig tre ledninger, den ene er for positiv spenning, den andre er for bakken og den siste er for posisjonsinnstilling. RØD ledning er koblet til strøm, Brun ledning er koblet til jord og GUL ledning (eller HVIT) er koblet til signal.
En servomotor er en kombinasjon av likestrømsmotor, posisjonskontrollsystem og gir. I servo har vi et kontrollsystem som tar PWM-signalet fra signalpinnen. Den dekoder signalet og får pliktforholdet fra det. Deretter sammenlignes forholdet til de forhåndsdefinerte posisjonsverdiene. Hvis det er forskjell i verdiene, justerer den posisjonen til servoen deretter. Så akseposisjonen til servomotoren er basert på driftsforholdet mellom PWM-signalet og SIGNAL-pinnen.
Frekvensen av PWM (Pulse Width Modulated) signal kan variere avhengig av type servomotor. Det viktige her er plikten for PWM-signalet. Sjekk dette for PWM med Arduino Due. Men i dette tilfellet trenger vi ikke engang å bekymre oss for med Duty Ratio-utvalget. I Arduino har vi en spesiell funksjon; Når vi kaller det, kan vi justere posisjonen til servoen, bare ved å angi vinkelen. Vi vil snakke om det i Arbeidsavsnittet nedenfor.
Før du kobler servomotor til Arduino Due, kan du teste servoen din ved hjelp av denne servomotortesterkretsen. Sjekk også disse prosjektene til Control Servo by Flex Sensor eller Force Force.
Komponenter:
Maskinvare: Arduino Due, strømforsyning (5v), Servomotor.
Programvare: Arduino nattlig, last den ned fra lenken nedenfor (https://www.arduino.cc/en/Main/Software)
For detaljer om hvordan du laster ned og installerer denne programvaren, besøk den første veiledningen Komme i gang med Arduino Due.
Kretsdiagram og arbeidsforklaring:
Som sagt tidligere i ARDUINO, har vi forhåndsdefinerte biblioteker, som vil stille frekvenser og pliktforhold tilsvarende, når toppfilen er ringt eller inkludert. I ARDUINO må vi ganske enkelt oppgi posisjonen til servoen som trengs, og DUE genererer passende PWM-signal for servoen. De tingene vi trenger å gjøre for å få en nøyaktig posisjon av servo er,
#inkludere
Servo myservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (nødvendig_posisjon_vinkel);
Overskriftsfilen “#include
For det andre skal det velges et navn på servoen ved å bruke “Servo myservo” , her er myservo navnet som er valgt, så mens vi skriver for posisjon skal vi bruke dette navnet, denne funksjonen kommer til nytte når vi har mange servoer å kontrollere, vi kan kontrollere så mange som 12 servoer ved dette.
Med Arduino Due som har 12 PWM-kanaler, må vi fortelle DUE hvor signalpinnen til servoen er koblet til, eller hvor den trenger å generere PWM-signalet. For å gjøre dette har vi “myservo.attach (2);” , her forteller vi DUE at vi har koblet signalpinnen til servoen ved PIN2.
Alt som er igjen er å sette posisjonen, vi skal sette posisjonen til servo ved å bruke “ myservo.write (45);” , ved denne kommandoen beveger servohånden seg 45 grader. Hvis vi endrer '45' til '175', vinkler servoaksen til 175 grader og blir der. Etter det, når vi trenger å endre posisjonen til servo, trenger vi bare å kalle kommandoen " myservo.write (needed_position_angle);" .
I programmet skal vi øke og redusere vinklene ved hjelp av løkker. Så servo feier fra 0 til 180, deretter fra 180 til 0 og så videre. Den Servo Motor kontroll av Arduino Due er best forklart i trinn for trinn av C-kode ned nedenfor.