Som tidligere omtalt er Arduino Due et ARM-controller-baseret kort designet til elektroniske ingeniører og hobbyister. Dette DUE-kort kan bruges til fremstilling af CNC-maskiner, 3D-printere, robotarme osv. Alle disse projekter har en fælles funktion, der er Positionskontrol. Ethvert af disse projekter har brug for nøjagtighed i forhold til deres position. Nøjagtige positioner i disse maskiner kan opnås af Servo Motors. I denne session skal vi kontrollere positionen for en servomotor med Arduino Due. Vi har allerede dækket Servo Motor Interfacing med Arduino Uno og Servo Motor Interfacing med 8051 Microcontroller.
Servomotorer:
Servomotorer er kendt for deres nøjagtige akselbevægelse eller position. Disse foreslås ikke til applikationer med høj hastighed. Disse foreslås til lav hastighed, medium drejningsmoment og nøjagtig placeringsanvendelse. Disse motorer bruges i maskiner med robotarm, flyvekontrol og kontrolsystemer. Servomotorer bruges også i nogle af printere og faxmaskiner.
Servomotorer fås i forskellige former og størrelser. Vi bruger SG90 Servomotor i denne vejledning. SG90 er en 180 graders servomotor. Så med denne servo kan vi placere aksen fra 0 til 180 grader.
En servomotor har hovedsageligt tre ledninger, den ene er for positiv spænding, den anden er for jord og den sidste er for positionsindstilling. Den RØDE ledning er tilsluttet strøm, Brun ledning er forbundet til jord og GUL ledning (eller HVID) er forbundet til signalet.
En servomotor er en kombination af jævnstrømsmotor, positionskontrolsystem og gear. I servo har vi et styresystem, der tager PWM-signalet fra signalstiften. Det afkoder signalet og får pligtforholdet fra det. Derefter sammenlignes forholdet med de foruddefinerede positionsværdier. Hvis der er en forskel i værdierne, justerer den servopositionen i overensstemmelse hermed. Så servomotorens akseposition er baseret på PWM-signalets driftsforhold til SIGNAL-stiften.
Frekvensen af PWM- signal (Pulse Width Modulated) kan variere afhængigt af servomotorens type. Det vigtige her er Pligt-signalets Pligtforhold. Tjek dette for PWM med Arduino Due. Men i dette tilfælde behøver vi ikke engang bekymre os med valg af toldforhold. I Arduino har vi en særlig funktion; Når vi kalder det, kan vi justere placeringen af servo bare ved at angive vinklen. Vi vil tale om det i arbejdssektionen nedenfor.
Inden interfacering af servomotor til Arduino Due kan du teste din servo ved hjælp af dette Servo Motor Tester Circuit. Kontroller også disse projekter til Control Servo via Flex Sensor eller Force Sensor.
Komponenter:
Hardware: Arduino Due, strømforsyning (5v), Servomotor.
Software: Arduino om natten, download den fra nedenstående link (https://www.arduino.cc/da/Main/Software)
For detaljer om hvordan du downloader og installerer denne software, skal du besøge den første vejledning Kom godt i gang med Arduino Due.
Kredsløbsdiagram og arbejdsforklaring:
Som sagt tidligere i ARDUINO har vi foruddefinerede biblioteker, som vil indstille frekvenser og pligtforhold i overensstemmelse hermed, når headerfilen kaldes eller inkluderes. I ARDUINO er vi simpelthen nødt til at angive positionen for servo, der var nødvendig, og DUE genererer passende PWM-signal til servoen. De ting, vi skal gøre for at få en nøjagtig position af servo er,
#omfatte
Servo myservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (behov_position_ vinkel);
Overskriftsfilen “#include
For det andet skal der vælges et navn til servoen ved hjælp af "Servo myservo" , her er myservo det valgte navn, så mens vi skriver til position, skal vi bruge dette navn, denne funktion er praktisk, når vi har mange servoer at kontrollere, vi kan styre så mange som 12 servoer ved dette.
Med Arduino Due, der har 12 PWM-kanaler, er vi nødt til at fortælle DUE, hvor signalstiften på servo er tilsluttet, eller hvor den skal generere PWM-signalet. For at gøre dette har vi "myservo.attach (2);" , her fortæller vi DUE, at vi har tilsluttet signalstiften på servo ved PIN2.
Alt tilbage er at indstille positionen, vi skal indstille positionen for servo ved hjælp af " myservo.write (45);" , ved denne kommando bevæger servohånden sig 45 grader. Hvis vi ændrer '45' til '175', vinkler servoaksen til 175 grader og forbliver der. Efter det, når vi har brug for at ændre placeringen af servo, er vi bare nødt til at kalde kommandoen " myservo.write (needed_position_angle);" .
I programmet skal vi øge og mindske vinklerne ved hjælp af sløjfer. Så servo fejer fra 0 til 180, derefter fra 180 til 0 og så videre. Den Servo Motor Control af Arduino Due forklares bedst i trinvis af C-kode ned nedenfor.