Tecnologia vestible

Per començar Elements d'entrada Programació CircuitPython   Recursos CITCEA
Elements no electrònics Elements de sortida Programació Arduino    
Projectes Elements de control Dades pràctiques   Inici

Servomotor

En alguns projectes ens pot interessar posar moviment; per exemple una flor que canvia d'orientació o bé un nino que mou la boca. Normalment necessitarem moviments relativament petits però, en canvi, ens caldrà poder posicionar el motor en una posició adequada. En aquests casos, el més adequat serà un servomotor.

Un servomotor ens permet demanar-li que es posicioni en un angle concret i ell es mourà fins a la posició especificada i allí es quedarà aturat. Normalment tenen un rang de 180° (mitja volta). Els servomotors petits que es fan servir en aplicacions de hobby i petita robòtica disposen de diverses peces que s'acoblen a l'eix per facilitar la transmissió del moviment.

Servomotor  [AF]

Normalment els servos s'alimenten a 5 V i és recomanable posar un condensador (per exemple de 100 μF) entre el positiu i el negatiu per evitar interferències. En total seran necessaris tres fils, el positiu a 5 V, el negatiu a GND i el de control a la sortida del microcontrolador que fem servir.

Per fer servir el servomotor en l'entorn Arduino ens caldrà la biblioteca Servo.h que ja està instal·lada en el programari Arduino i, per tant, no ens hem de preocupar per instal·lar-la. Això sí, a la part inicial, hem de carregar-la.

#include <Servo.h>

A la part de declaració de variables, hem de crear un objecte Servo.

Servo servo1;

En la inicialització del programa, cal indicar a quina sortida està connectat el servomotor.

  servo1.attach(9);

En el programa li indiquem a quina posició s'ha d'aturar el motor amb la instrucció servo1.write(). Dins el parèntesi posarem l'angle desitjat en graus (entre 0 i 179).

  servo1.write(45);

A continuació hi ha un programa de prova. En aquest cas, el motor s'anirà aturant en les posicions 0°, 45°, 90°, 135°, °79° i tornarà a començar per 0°. Aquest bucle es repeteix indefinidament.

#include <Servo.h>
Servo servo1;
void setup() {
  servo1.attach(9);
}
void loop() {  
  servo1.write(0);
  delay(200);
  servo1.write(45);
  delay(200);
  servo1.write(90);
  delay(200);
  servo1.write(135);
  delay(200);
  servo1.write(179);
  delay(200);
}

El següent exemple en CircuitPython fa aproximadament el mateix. El motor està connectat a la sortida D0 (que a la placa Circuit Playground Express correspon a la pota marcada amb A6).

import time
import board
import simpleio
# Cal ajustar els valors de pols al servo que es faci servir
servo = simpleio.Servo(board.D0, min_pulse = 0.5, max_pulse = 2.5)
while True:
    servo.angle = 0
    time.sleep(0.2)
    servo.angle = 45
    time.sleep(0.2)
    servo.angle = 90
    time.sleep(0.2)
    servo.angle = 135
    time.sleep(0.2)
    servo.angle = 179
    time.sleep(0.2)

 

 

 

En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.