Omet navegació

8.- Servomotor (0 a 360º)

El servomotor de gir continu gira 360 º sense poder-se aturar en un angle concret de forma predeterminada llevat que li acoblem un encoder.

El que anem a gastar , el DS04-NFC té una torsió de 5,5 Kg/cm a 4,8 V , treballa entre 4,8V i 6V, i pesa 38 g.

ds04-nfc

Si anem a utilitzar el servomotor amb carrega, cal que connectem a V extern la placa Arduino per protegir l'ordinador on fem les proves. Mira l'esquema elèctric.

Arduino amb Servomotor DS04-NFC

Mira el programa per controlar aquest servomotor de gir continu.

// Programa per fer anar el servomotor de gir continu DS04-NFC. Gira 360 graus de forma continua.
// Llicencia GNU GPL V3 https://www.gnu.org/licenses/gpl-3.0.html
// Autor BARRAGAN http://barraganstudio.com 
// Modificat ( 19-nov-2016) Carles Ferrando Garcia

#include <Servo.h>
 
Servo servo1;  // crea el objecte servomotor1 
 

int pos; // Posició de l'angle que regulara la velocitat del servomotor de gir continu
// Pos 0 fa sermotor1 gire de forma Horaria velocitat max
// Pos 180 fa servomotor1 gire de forma Antihoraria a velocitat max
// Pos 90 fa servomotor1 estiga quasi aturat
// La funcio servo1.detach(); atura completament el servomotor1 
// per cal reactivar el servomotor1 si volem que torne a funcionar
// Quan mes proxim esta el angle a 90 graus per exces o per defecte mes lentament gira el servomotor1
// Quan mes proxim esta el angle a 0 graus o a 180 graus mes rapid gira el motor
 
void setup() {
  servo1.attach(9);  //Connecta el servo1 al port 9 d'Arduino
        Serial.begin(9600); // Anem a deixar missatges al monitor serie
}
 
void loop() {

  //servo1 parat (equivalent a angle de 90 graus)
  pos = 90;
  servo1.write(pos); 
        Serial.println(" servo1 parat = equivalent a angle de 90 graus ");
  delay(2000); //Deixa 2 segons el servo1 parat   
 
  //servo1 100 per cent AntiHorari (equivalente a angle de 180 graus)
  pos = 180;
  servo1.write(pos);
        Serial.println(" servo 100 per cent  AntiHorari = equivalente a angle de 180 graus ");
  delay(2000); //Deixa 2 segons el servo1 en marxa

       //servo1  AntiHorari a baixa velocitat (equivalente a angle de 95 graus)
  pos = 95;
  servo1.write(pos);
        Serial.println(" servo AntiHorari a baixa velocitat = equivalente a angle de 95 graus ");
  delay(2000); //Deixa 2 segons el servo1 en marxa

        //servo1 parat COMPLETAMENT (utilitzem la funcio detach)
  servo1.detach(); // Desconectem el servo1 de la placa Arduino
        Serial.println(" servo1 parat COMPLETAMENT = utilitzem la funcio detach");
        delay(2000); //Deixa 2 segons el servo1 parat 
        
        servo1.attach(9); //Connecta el servo1 al port 9 d'Arduino
    
  //servo1 100 per cent Horari = equivalent a angle de 0 graus
  pos = 0;
  servo1.write(pos); 
        Serial.println(" servo1 100 per cent Horari = equivalent a anagle de 0 graus ");
  delay(2000); //Deixa 2 segons el servo1 en marxa

       //servo1 Horari a baixa velocitat = equivalent a angle de 85 graus
  pos = 85;
  servo1.write(pos); 
        Serial.println(" Horari a baixa velocitat = equivalent a angle de 85 graus ");
  delay(2000); //Deixa 2 segons el servo1 en marxa

Activitat 8.1

Fes que el servomotor es pose en marxa anant de 0º a 45º i que s'ature durant 20 segons.

Després fes que torne de 45º a 0º i s'ature durant 30 segons.

Repeteix el cicle.