Lliurament 1.- Servo motor estandard
Servomotors
Un servomotor és un dispositiu similar a un motor de corrent continu que té la capacitat d'ubicar-se en qualsevol posició dins del seu rang d'operació i mantenir-se estable en aquesta posició.
El servomotor es compon d'un motor de corrent continu , una caixa reductora , i un sistema de posicionament, generalment un potenciòmetre . Al següent vídeo es mostra com és un servomotor per dins.
Els servomotors poden ser de gir continu , en què es pot controlar la velocitat de gir , o de gir fix que són els que giren dins d'un rang limitat per a control de posició .
És important saber definir quin utilitzarem nosaltres ja que són molt semblants, així que a l'hora de comprar ens haurem de fixar molt bé en aquest detall.
Per exemple , un servomotor de rotació contínua , ens vindrà bé per crear un cotxe seguilines , mentre que un servomotor de rang pot ser útil per a projectes com un robot bípede .
Cables i connexió d'un servomotor
És força possible que els cables dels nostres servomotors siguin diferents depenent del model. En resum, necessitarem 3 cables per connectar un servomotor. Vcc ( + ), GND ( – ) i el pin de senyal.
A la següent imatge podrem veure ràpidament quins cables són els més usuals en funció del fabricant.
Aleshores només necessitarem connectar la nostra placa Arduino al corresponent pin de voltatge, terra ia un pin de senyal.

IMPORTANT: Només podem connectar els nostres servomotors als pins que tenen sortida PWM. Per identificar aquest tipus especial de pins de sortida, tenim un símbol ~ per reconèixer-los.
Programant els nostres servomotors de rang fix
Per programar un servomotor necessitarem carregar una llibreria anomenada Servo.h que ja tindrem preinstal·lada al nostre IDE d'Arduino .
Un aspecte molt important a tenir en compte és que la sortida definida per al cicle de treball d'un servomotor és de 0 a 180 . 0 determina potència nul·la, mentre que 180 definirà la màxima potència.
En el cas d'un servomotor de gir 180 graus , el mateix valor de senyal identificarà l'angle a què s'haurà de moure.
Per fer servir la llibreria, hem d'usar un model de programació orientat a objectes en què instanciarem un objecte de la classe Servo com si fos una variable.
Les funcions que hem de fer servir a l'hora d'instància d'un motor són les següents.
- attach() -> defineix el pin al que connectarem el nostre servomotor.
- write() -> Mou el servomotor especificant el seu valor de gir.
- detach() -> Desconnecta el servomotor del pin.
- read() -> Lectura de la posició actual del servomotor.
TASCA 1:
Per tal de controlar els servos, utilitzarem una llibreria anomenada Servo. Una llibreria és un fragment de codi que ja ha estat escrit i que pots cridar cada vegada que necessitis usar-lo. Enlloc d’haver d’escriure tot el codi, només has d’afegir aquesta línia de codi #include <Servo.h> al teu programa.
Escriu el següent al teu Arduino IDE:
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(10);
}
void loop() {
myservo.write(0);
delay(1000);
myservo.write(180);
delay(1000);
}
#include <Servo.h>: Inclou el codi que realment utilitzem per a controlar els motors.Servo myservo: Crea un objecte servomyservo. És el que utilitzes per a controlar el motor.myservo.attach(pinNumber): Aquí és on indiques a quin pin connectes el servo.myservo.write(degrees): Ordena al servo a quina posició girar. Com que només pot girar 180 graus, aquest valor varia de 0 a 180.
El programa fa girar el servo a una posició de 0 graus, espera 1 segon i després el gira a una posició de 180 graus.
Contesta a la tasca el següent:
- Canvia l’angle del servo modificant-ne el valor dins de la funció
write. Prova d’afegir més posicions al programa. Observa què passa si canvies el temps de retard. - Intenta escriure un programa que permeti que el servo faci una escombrada d’un costat a l’altre de manera suau. (SUGGERIMENT: mira l’exemple Arxiu -> Exemples -> Servo -> Sweep)
TASCA 2:
Fes el muntatge següent pel corresponent codi:
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(10);
}
void loop() {
myservo.write(0);
delay(1000);
myservo.write(180);
delay(1000);
}
Com programaries perquè el motor retorni a la posició 0?
Fes un vídeo, puja-te'l al drive i enllaça-me'l. Contesta també les preguntes.
Resum de la qualificació
| Ocult per a l'estudiantat | Sí |
|---|---|
| Participants | 19 |
| S'han tramès | 0 |
| Necessiten qualificació | 0 |
| Temps restant | 1 any 38 dies |