Servomotor

En aquest projecte es plantejarà controlar l'angle d'un servomotor a partir d'un potenciòmetre. Per tant, l'actuador que s'utilitza per a aquesta pràctica és un servomotor (concretament el SM-S2309S). Els servomotors són un tipus de motor els quals es pot controlar la posició en la que es vol que estigui cada moment d'una manera molt senzilla. Aquests aparells tenen tres sortides, dues d'alimentació i una tercera la qual va connectada a la placa Arduino i la que se li dona la informació per tal de controlar la posició del servomotor. Per tant en aquest projecte s'aprendrà a fer un circuit elèctric el qual tindrà un interruptor i quan aquest estigui presionat el servomotor ferà un recorregut determinat, i quan no l'estigui, mitjançant un potenciòmetre podrem controlar la posició del servomotor.





Per tal de primer realitzar l'esquema elèctric, necessitarem els següents materials:

  • 1xArduino UNO
  • 1xPotoboard
  • 1xServomotor
  • 1xPotenciòmetre
  • 2xcondensadors de 100uF
  • 1xpulsador
  • 1xresistència de 10 kilo ohm
  • cables



Una vegada ja hem realitzat el circuit elèctric, és hora de porgramar la placa. Abans de tot cal descarregar una llibreria anomenada Servo.h en cas de que no es tingui per defecte en el programa. El programa corresponent a aquest projecte és el següent:


#include <Servo.h>             //Incluïm la llibreria de Servo.h per tal de poder utilitzar el sero
                               //En comptes dutilitzar la llibreria també es pot programar a mà però és més pesat.
Servo MiServo;                 //En aquesta llibreria se li ha de donar un nom al servo que s'utilitza
int Switchstate=0;             //Creem una variable per a la posició de l'interruptor

int const PinPot=A0;           //Creem una constant per al pin a on connectem el potenciòmetre
int ValorPot;                  //Creem una variable per a guardar el que dona el potenciòmetre
int Angulo;                    //Creem una variable per a saber l'angle en el que ha d'estar el servo

void setup() {
  // put your setup code here, to run once:
MiServo.attach(9);             //Li diem a la placa a quin pin va connectat el servo
Serial.begin(9600);            //Inicialitzem el Serial
pinMode(2,INPUT);              //Configurem el pin 2 com a sortida
}

void loop() {
 //Guardem la posició de l'interruptor en la variable Switchstate
  Switchstate=digitalRead(2);
  /*Li diem a la placa que si el interruptor està pulsat(HIGH) que posi el servo a 180 graus,
  que esperi 550 milisegons i que el torni a posar a 0. O sigui que fagi una repetició com
  si sigués un eixugavidres. En cas contrari si el interruptor està en LOW, li diem a la placa 
  que el servo estigui en la posició de la variable angle. Per tal de calcular el valor 
  d'aquesta variable mapejem el valor que es llegeix del potenciòmetre, que va des de 0 a 1023,
  i que vagi des de 0 a 180. Tant el valor del potenciòmetre com l'angle que es calcula, es
  printen per el Serial. Aquesta seqüència es repeteix cada 100 milisegons.
  */
  if(Switchstate==HIGH){
    MiServo.write(0);
    delay(550);
    MiServo.write(180);
    delay(550);
  }else{
ValorPot=analogRead(PinPot);
Serial.print("Quantitat de potencia:");
Serial.print(ValorPot);
Angulo=map(ValorPot,0,1023,0,180);
Serial.print("Angle:");
Serial.println(Angulo);
MiServo.write(Angulo);
delay(100);
}


Una vegada acabat el programa es pot observar que tenim un servo que el podem controlar perfectament amb un potenciòmetre. Si es vol saber perquè és tant utilitzat aquest aparell només cal observar la força que té només per ser tan petit. En el botó inferior podeu descarregar l'arxiu arduino.







Cap comentari:

Publica un comentari a l'entrada

↓↓↓ Si vols deixar un comentari fes-ho aquí ↓↓↓