Aprende a variar la velocidad del robot de forma manual con un potenciómetro.

Info

  • Principiantes
  • Edades: 11+

Temas STEAM

  • Ciencia
  • Tecnología
  • Ingeniería
  • Matemáticas

Logros y habilidades

  • Realiza cambios  a la configuración de los parámetros de la tarjeta Innobot de forma dinámica.
  • Comprende conceptos sobre resistencia eléctrica fijas y variables.
  • Reconoce el funcionamiento de un potenciómetro y su implementación como un divisor de tensión.
  • Reconoce el  mundo de la robótica y la programación por medio de actividades prácticas.

Materiales

Paso 1

Utilizar el potenciómetro como divisor de tensión de forma análoga.

Realiza el siguiente montaje. Donde el cable rojo está conectado a 5v de la tarjeta Innobot y al terminal del pin derecho del potenciómetro;  el cable gris va conectado de GND de la tarjeta innobot y a la terminal del pin izquierdo del potenciometro; y el cable azul va conectado al A0 de la tarjeta innobot y al terminal del pin del medio del potenciómetro.

  • Proceder con el multímetro a realizar una medición de tensión; juntar  el terminal negativo (negro) del multímetro al pin izquierdo del potenciómetro; y el  terminal positivo (rojo) del multímetro al pin del medio del potenciómetro.

  • Ubicar la perilla del multímetro en Voltios DC (corriente directa), escala de 20V

Para finalizar mover la perilla del potenciómetro con suavidad en ambas direcciones y observar en la pantalla del multímetro como ocurre la variación (desde 0.00  hasta 5.00) del voltaje en la terminal sensada. Observamos que en un sentido dicho valor se incrementa y en el sentido contrario disminuye.  

Paso 2

luego de realizar el montaje de forma análoga,  se procede a la realización de forma digital; para esto es necesario conectar el módulo del potenciómetro a alguno de los puertos analógicos J de la tarjeta, por ejemplo el J1, también hay que conectarlo por medio de un tornillo a la estructura del robot de tal manera como se aprecia en la siguiente figura:

Paso 3

Programar el robot para monitorear el comportamiento del divisor de tensión.

En BLOCKS, construye el siguiente código

Una vez cargada la programación abrir el monitor y observar los valores medidos, como se evidencia, todos están entre 0 y 1023, siendo 0 el equivalente a un voltaje 0v (GND) y 1023 el equivalente a la alimentación de 5 voltios. Para los valores intermedios utiliza una regla de tres para determinar el voltaje equivalente que está siendo sensado. Así:

Vmonitor=(Vsensado × 1023)/5

En CODE, construye el siguiente código

void setup () {

}
void loop () {
  Serial.println(sensorRead(J1));

}

Una vez cargada la programación abrir el monitor y observar los valores medidos, como se evidencia, todos están entre 0 y 1023, siendo 0 el equivalente a un voltaje 0v (GND) y 1023 el equivalente a la alimentación de 5 voltios. Para los valores intermedios utiliza una regla de tres para determinar el voltaje equivalente que está siendo sensado. Así:

Vmonitor=(Vsensado × 1023)/5

Paso 4

Hasta el momento para modificar la velocidad del Innobot es necesario cambiarlo en la programación, pero con el variador de velocidad se pueden hacer variaciones manuales y en tiempo real; pero para ello es necesario realizar la siguiente programación.

En BLOCKS, construye el siguiente código

 

En CODE, construye el siguiente código.

  float velocidad = 0;
  int referencia = 0;
  float potenciometro;

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

}
void loop () {
  potenciometro= sensorRead(J1);
  velocidad= (potenciometro/1023)*100;
  Serial.println(velocidad);
  delay(200);
  if (velocidad != referencia) {
    motorSpeed(M1,velocidad);;
    motorSpeed(M2,velocidad);;
    motorOn(M1,FORWARD);
    motorOn(M2,FORWARD);
  }

}

Variable

Seguidor de línea con variador de velocidad.: Para realizar esta variable es necesario agregar los sensores de línea a tu robot Innobot. Para mayor información ir a Guía Innobot 07 – Robot seguidor de línea.

Paso 1 

Realiza el siguiente montaje combinando seguidores de línea y potenciómetro.

 

Conecta los sensores de línea  a lo puertos J1 (derecho) y J2 (izquierdo); y el  potenciómetro al puerto J6.

Paso 2

Luego, realiza la siguiente programación.

En BLOCKS

 

En CODE

  int velocidad = 0;
  int auxiliar = 0;
  int potenciometro;
  int referencia = 1023;

void setup () {
  lineCompare(J1,800);
  lineCompare(J2,800);

}
void loop () {
  potenciometro=sensorRead (J6);
  auxiliar=velocidad;
  velocidad=(float)potenciometro/referencia*100;
  if (auxiliar != velocidad) {
    motorSpeed(M1, velocidad);
    motorSpeed(M2, velocidad);
  }
  if (lineRead(J2) == WHITE && lineRead(J1) == WHITE) {
    motorOn(M1,FORWARD);
    motorOn(M2,FORWARD);
  }
  if (lineRead(J2) == WHITE && lineRead(J1) == BLACK) {
    motorOn(M1,REVERSE);
    motorOn(M2,FORWARD);
  }
  if (lineRead(J2) == BLACK && lineRead(J1) == WHITE) {
    motorOn(M1,FORWARD);
    motorOn(M2,REVERSE);
  }

}

Conceptos claves

Divisor de tensión: Circuito conformado por dos o más resistores conectados en serie y alimentados por una fuente de voltaje, en el cual cada resistor posee un parte del voltaje total de la fuente, la cantidad de voltaje por resistor depende del valor de éste, entre mayor sea su valor más voltaje de la fuente tendrá y la suma de todos los voltajes de las resistencias siempre será igual al voltaje de la fuente.

Potenciómetro: Es un resistor cuya resistencia es variable, esta varía de forma manual mediante una perilla. El potenciómetro está constituido por dos resistencias conectadas en serie, el valor de la resistencia total se divide entre estas dos resistencias y sus valores dependen de la posición de la perilla.

Variador: Sistema electrónico o mecánico que permite controlar el valor de alguna variable a gusto del usuario.

Puertos J: Son puertos de comunicación entre la tarjeta y sus sensores, constan de tres terminales, la alimentación, la tierra y la señal de información, dichos puertos censan la información de forma analógica.

Casting: Operación entre variables informáticas que permite cambiar el tipo de una variable a otra, cuando esto es necesario, por ejemplo, cuando deseamos dividir dos variables tipo entero, y queremos que la división entre enteros no trunque las cifras decimales, para ello, se hace una conversión (casting) de tipo entero a tipo flotante (float).

Offset: Valor por defecto que tiene una variable, se utiliza cuando se desea que una variable cambie su valor con respecto a un valor mínimo o promedio.

Float: Tipo de datos para nueros de coma flotante, un número que tiene un punto decimal. Los números coma flotante a menudo se usan para aproximar valores analógicos y continuos porque tiene una resolución mayor que los enteros. (float sensorCalbrate=1.117;)

Unsigned char: Es un tipo de datos sin signo que ocupa 1 byte de memoria, el tipo de datos Char sin signo codifica números del 0 al 255. (unsigned char myChar=240;)

Unsigned int: Los enteros sin signo son lo mismo que los int porque almacenan un valor de 2bytes; sin embargo en lugar de almacenar números negativos solo almacena valores positivos. ( unsigned int ledPin=13;)

Const int: La palabra clave const significa constante hace que la variable sea de “solo lectura”; esto significa que la variable se puede usar como cualquier otra variable de su tipo, pero su valor no se puede cambiar. ( const int pi=3.14;)