top of page

Sensor de Ultrasonido y Servo Motor

  • Foto del escritor: Matías García
    Matías García
  • 9 sept 2020
  • 2 Min. de lectura

Continuamos experimentando con Arduino y probando más componentes, a su vez, mezclando para ir avanzando un poco más.

En esta ocasión, a nuestra placa de Arduino, le colocamos nuevamente un sensor de ultrasonido, pero le agregamos un Servo Motor. Un Servo Motor es un dispositivo de accionamiento para el control de precisión de velocidad. Constituye un mejor desempeño y precisión frente a accionamientos mediante convertidores de frecuencia, ya que éstos no nos proporcionan control de posición y resulta poco efectivo en bajas velocidades.

La idea del ejercicio, es mezclar estos dos dispositivos e indicar que dependiendo de la distancia que toma nuestro sensor de ultrasonido, que movimiento va a realizar nuestro motor.



Hacemos las conexiones pertinentes y a continuación, modificamos el código, indicándole que queremos que haga el motor, en base a la distancia.


#include <Servo.h>

//importamos la libreria de servo

int pos = 0;


Servo motoruno;

int inches = 0;

int cm = 0;

long readUltrasonicDistance(int triggerPin, int echoPin)

//En este punto, vamos a definir la variable de leer el sensor con 2 parametros

{

pinMode(triggerPin, OUTPUT); //Clear the trigger

digitalWrite(triggerPin, LOW);

delayMicroseconds(2);

digitalWrite(triggerPin, HIGH);

delayMicroseconds(10);

digitalWrite(triggerPin, LOW);

pinMode(echoPin, INPUT);

//Lee el pin echo y devuelve el tiempo de viaje de la onda de sonido en microsegundos

return pulseIn(echoPin, HIGH);

}


void setup()

{

Serial.begin(9600);//escucha que esta conectado en el puerto

motoruno.attach(3);//seteamos el PIN 3 donde esta el servomotor

}


void loop()

{

cm = 0.01723 * readUltrasonicDistance(8, 7);

Serial.print("medida en in: ");

inches = (cm / 2.54);

Serial.print(inches);

Serial.print("in, ");

Serial.print("medida en cm: ");

Serial.print(cm);

Serial.println("cm");

delay(100);

if(cm >= 100) {

for (pos = 0; pos <= 180; pos += 45) {

motoruno.write(pos);

delay(2000);

//si la distancia es mayor a 100,

//el motor va de 0 a 180 de una y le setee 2 segundos, para que

//vaya cambiando de posicion mas lentamente

}

}

else {

for (pos = 75; pos >= 0; pos -= 10) {

motoruno.write(pos);

delay(1000);

//de lo contrario, si es menor a 100

//el motor va a 75° y va retrocediendo a la posicion 0, a

//una velocidad bastante mas reducida que en el caso anterior

}

}

}


Esta todo el código comentado, indicando que hace cada línea

Comments


  • Instagram
  • Facebook
  • Twitter
  • YouTube
  • Pinterest

© 2020 Matías García. Estudiante de Ingeniería Audiovisual

bottom of page