Etiquetas: , , ,

A robot is constituted of four main components: Motors for motion, Mechanics to hold the pieces together, sensors to make it react to environment and a code to control them and create the desired functionality.

Los sensores juegan un papel importante cuando se trata de un robot autónomo. Veremos aquí cómo usarlos.

 

Presentación

El propósito de un sensor es medir un valor físico (velocidad, ángulo, temperatura, etc.). Existen numerosos sensores de diferentes tipos pasivos y activos (requieren alimentación). En este ejemplo, usamos un fotoresistor, pero se puede aplicar a otro tipo de sensor.

Ejamplo de sensores :

Passivo:

  • photoresistor
  • tilt
  • push button

Activo:

  • infrared distance sensor
  • ultrasonic distance sensor

 

Cableado

Sensores tiene un cableado diferente dependiendo de la cantidad de pines que utilizan. Por lo general, un sensor tiene 3 pines a tierra, suministro de voltaje 5V y la señal. Para el sensor pasivo, se crea una tercera salida para leer el voltaje en sus extremos.

pushbutton scheme

infrared sensor scheme

Codigo basico

Dependiendo de su tipo, el sensor puede devolver dos informaciones: un estado (presencia o no) o un valor de voltaje continuo.

Para leer un estado, la función a utilizar es digitalRead(). Devuelve un nivel ALTO(HIGH) o BAJO(LOW) que representa el voltaje aplicado en el pin digital (0, 1, 2, etc.).

/*Read digital state*/
// Constants
#define DELAY 500 // Delay between two measurements in ms

// Parameters
const int sensorPin = 2; // Pin connected to sensor

//Variables
int sensorState; // state from the sensor

void setup(void) {
  Serial.begin(9600);
  pinMode(sensorPin,INPUT);
}

void loop(void) {
  sensorState = digitalRead(sensorPin);
 
  if (sensorState == HIGH) {
     Serial.print("Sensor state is HIGH ");
  } else {
     Serial.print("Sensor state is LOW ");
  }
  delay(DELAY);
}

 

Para leer un valor continuo, la función que usamos es analogRead() . Devuelve un valor entre 0 y 1023 que representa el voltaje aplicado en el pin analógico de Arduino (A0, A1, A2, etc.).

/*Read analog signal*/
// Constants
#define DELAY 500 // Delay between two measurements in ms

// Parameters
const int sensorPin = A0; // Pin connected to sensor

//Variables
int sensorVal; // Analog value from the sensor

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  sensorVal = analogRead(sensorPin);
  Serial.print("Sensor reading = ");
  Serial.println(sensorVal); // the analog reading
  delay(DELAY);
}

 

Aplicaciones

Measure temperature and humidity with sensor DHT11

Measure temperature with sensor LM35

Distance measurement with sensor HC-SR04

Luminosity measurement with a photoresistor