Kontroll ta 'Servomotors b'PWM u Arduino

Aħna diġà dehru fuq il-blog Arduino (https://www.ikkaro.com/kit-inicio-arduino-super-starter-elegoo/) u fil-fatt jidhru f'diversi proġetti inkluż dan (https://www.ikkaro.com/node/529)

Issa ejja ftit aktar u ejja jimmodulaw is-sinjali bil-wisa 'tal-impuls (PWM), dan jista 'jintuża pereżempju biex jimmaniġġa servo motors bħal dawk ippreżentati hawn (https://www.ikkaro.com/introduccion-al-aeromodelismo-electrico/) jew leds rgb fost l-oħrajn. Għal dawk li ma jafux x'inhu l-PWM, hija modulazzjoni li ssir fuq sinjal u li sservi biex "tittrasmetti informazzjoni permezz ta 'kanal ta' komunikazzjoni jew biex tikkontrolla l-ammont ta 'enerġija li tintbagħat lil tagħbija" (Wikipedija)

Is-servomoturi huma kkontrollati bi 3 wajers: waħda għall-vultaġġ pożittiv, oħra għall-art u oħra għas-sinjal tal-kontroll, li huwa modulat f'PWM.

Arduino min-naħa tiegħu għandu 6 outputs diġitali li jistgħu jaġixxu bħala outputs PWM (huma l-brilli: 11, 10, 9, 6, 5, 4) u wkoll librerija ppreparata biex timmaniġġa s-servos. Għalhekk, se nużaw wieħed minn dawk l-outputs biex nagħmlu l-ewwel testijiet tagħna li jikkontrollaw servomotor.

Il-kodiċi ta 'eżempju tal-librerija servo Arduino jista' jservina, aħna nikkonnettjaw il-vultaġġ ma '5v, ert għal gnd u s-sinjal ta' kontroll tas-servomotor (li huwa dak li jiġi modulat f'PWM) ma 'wieħed mill-pinnijiet arduino li għandu PWM, pereżempju f'dan il-kodiċi għal pin diġitali 9.

// Kines
// minn BARRAGAN

#inkludu
 
Servo myservo; // toħloq oġġett servo biex tikkontrolla servo
                // massimu ta 'tmien oġġetti servo jistgħu jinħolqu
 
int pos = 0; // varjabbli biex taħżen il-pożizzjoni tas-servo
 
setup null ()
{
  myservo.attach (9); // twaħħal is-servo fuq il-pin 9 mal-oġġett servo
}
 
 
linja vojta ()
{
  għal (pos = 0; pos <180; pos + = 1) // imur minn 0 gradi sa 180 grad
  {// fi stadji ta 'grad 1
    myservo.write (pos); // għid lis-servo biex imur fil-pożizzjoni fil-varjabbli 'pos'
    dewmien (15); // jistenna 15ms biex is-servo jilħaq il-pożizzjoni
  }
  għal (pos = 180; pos> = 1; pos- = 1) // imur minn 180 grad sa 0 gradi
  {                               
    myservo.write (pos); // għid lis-servo biex imur fil-pożizzjoni fil-varjabbli 'pos'
    dewmien (15); // jistenna 15ms biex is-servo jilħaq il-pożizzjoni
  }
}

Dan il-kodiċi jippermettilna nduru l- servomutur minn 0º sa 180º u mbagħad lura għal 0º.

Ftit iktar.

[enfasizzat] Dan l-artikolu kien oriġinarjament miktub minn ErSame għal Ikkaro [/ enfasizzat]

Ħalli kumment