Vous êtes sur la page 1sur 19

Instituto Politcnico Nacional.

Unidad Profesional Interdisciplinaria en Ingeniera en Tecnologas


Avanzadas.

Prctica#11- Crear un odmetro mediante el uso de un


encoder incremental.

Integrantes:
Pia Guadarrama Andhers Natanael
Portillo Villalobos Sabick Fernando
Toro Sandoval David Alejandro

Unidad de aprendizaje: Tpicos avanzados de sensores.

Profesor: Castaeda Galvn Adrin Antonio.


Marco Terico.

Los codificadores rotatorios (conocidos genricamente como encoders) son mecanismos


utilizados para entregar la posicin, velocidad y aceleracin del rotor de un motor. Sus
principales aplicaciones incluyen aplicaciones en robtica, lentes fotogrficas, aplicaciones
industriales que requieren medicin angular, militares, etc.

Un codificador rotatorio es un dispositivo electromecnico que convierte la posicin angular


de un eje, directamente a un cdigo digital. Los tipos ms comunes de encoders se
clasifican en: absolutos y relativos (conocidos tambin como incrementales). Los encoders
absolutos pueden venir codificados en binario o gray. Dentro de los encoders
incrementales, se encuentran los encoders en cuadratura, ampliamente utilizados en
motores de alta velocidad y en aplicaciones en las que interesa conocer la direccin del
movimiento del eje.

El encoder de cuadratura.

Corresponde a un tipo de encoder incremental que utiliza dos sensores pticos


posicionados con un desplazamiento de de ranura el uno del otro, generando dos seales
de pulsos digitales desfasada en 90 o en cuadratura. A estas seales de salida, se les
llama comnmente A y B. Mediante ellas es posible suministrar los datos de posicin,
velocidad y direccin de rotacin del eje. Si se incluye la seal de referencia, se le denomina
I (ndice). Usualmente, si la seal A adelanta a la seal B (la seal A toma valor lgico 1
antes que la seal
B, por ejemplo), se establece el convenio de que el eje est rotando en sentido horario,
mientras que, si B adelanta a A, el sentido ser anti horario.

Imagen 1. Seales de los canales A y B de un encoder incremental.

De manera particular, el encoder que se emplea para esta prctica posee un cambio global
de 20 pasos, donde por cada paso se generan tres cambios de flanco.
En la siguiente imagen se muestran los cambios de flanco que pueden existir en un paso
del encoder.
Imagen 2. Cambios de flanco de un encoder incremental.

Descripcin de la prctica.
Para la siguiente prctica se pretende hacer uso de un encoder de cuadratura para medir
longitud, el objetivo principal es crear un odmetro, todo lo anterior a travs de una tarjeta
arduino y un encoder incremental de cuadratura.

Cdigo empleado.
#define EncA 2
#define EncB 3
int i,A=0,B=0,estado=0,Decimal,Enteros;
unsigned int encoder=0, tAnt=0, tAct=0;
char str[512];

void setup() {
pinMode(EncA, INPUT);
pinMode(EncB, INPUT);
attachInterrupt(0, signalA, CHANGE );
attachInterrupt(1, signalB, CHANGE );
Serial.begin(9600);
}

void loop() {

tAct = millis();
if( (tAct-tAnt) >= 100 ){
//noInterrupts();
Enteros = (21*estado)/60;
Decimal = (4*estado)/60;
if(Decimal <10 & Decimal >0 ){ sprintf(str,"Estado=%d Distancia=%d.0%dcm
\n",estado,Enteros,Decimal); }
else if(Decimal <0 & Decimal >-10 ){
Decimal = abs(Decimal);
sprintf(str,"Estado=%d Distancia=%d.0%dcm
\n",estado,Enteros,Decimal);}
else{sprintf(str,"ESTADO=%d Distancia=%d.%dcm
\n",estado,Enteros,Decimal);}
Serial.print(str);
tAnt = tAct;
//interrupts();
}

void signalB(){
if(digitalRead(EncB) == HIGH){
if( digitalRead(EncA) == HIGH) estado=estado;
else estado++;
}
else{
if( digitalRead(EncA) == LOW) estado--;
else estado++;
}
}

void signalA(){
if(digitalRead(EncA) == HIGH){
if( digitalRead(EncB) == HIGH) estado=estado;
else estado--;
}
else{
if( digitalRead(EncB) == LOW) estado++;
else estado--;
}
}
Cdigo.

Conexiones.
En la presente prcticas se ha hecho uso de un tipo de encoder tal y como se muestra a
continuacin.
Imagen 3. Encoder incremental de cuadratura.

Tabla 1. Conexiones necesarias para el odmetro.

Encoder. Arduino Genuino UNO.


GND GND
+ 5v
SW -
DT Pin 3
CLK Pin 2

Las conexiones se realizan como se muestra en la siguiente tabla, los elementos de la


columna izquierda se conectan con los de la derecha, siendo la columna izquierda los pines
del enconder y la columna derecha los de la tarjeta arduino.

Imagen 4. Diagrama de conexiones.

A continuacin, se muestran algunas imgenes, en ellas se puede ver el mecanismo


empleado para la creacin de nuestro odmetro.
Imagen 5. Mecanismo final empleado para la creacin del odmetro.

Imagen 6. En la imagen se aprecia el sistema como se ajust la rueda al encoder.


Instituto Politcnico Nacional.

Unidad Profesional Interdisciplinaria en Ingeniera en Tecnologas


Avanzadas.

Prctica 13-14 - Control y uso del GSM y GPS de la


SIM808.

Integrantes:
Pia Guadarrama Andhers Natanael
Portillo Villalobos Sabick Fernando
Toro Sandoval David Alejandro

Unidad de aprendizaje: Tpicos avanzados de sensores.

Profesor: Castaeda Galvn Adrin Antonio.


Marco Terico.
El modulo empelado para esta prctica est basado en el chip SIMCOM SIM808 y nos ofrece las
funciones de envo y recepcin de datos GSM/GPRS (Tcnologia 2G), la tecnologa GPS de
navegacin por satlite entre otras. Gracias a este mdulo y utilizando una tarjeta SIM, es posible
enviar y recibir llamadas y SMS, conectarse a Internet y conocer las coordenadas y el horario UTC
(Tiempo Universal Coordinado). As mismo el modulo posee una serie de puertos para conectar
audfonos y micrfono, esto nos permitir comunicarnos con aquel que nos llame.

Imagen 7. Mdulo de la SIM808.

A continuacin, se muestran la forma en la que se deben de conectar las antenas al mdulo.

Imagen 8. Conexin bsica del mdulo.

De manera general, el modulo posee una serie de pines a los cuales se deben conectar las etradas
y salidas de la tarjeta de control, as mismo se tienen una cierta cantidad de leds que nos ayudaran
a conocer el estado del sensor. En la siguiente imagen se muestran los elementos del mdulo y se
identifican algunos de estos.
Imagen 9. En la imagen se identifican algunos de los elementos del mdulo.

Es importante mencionar hasta este punto que la fuente de energa para alimentar al mdulo
puede ser por una fuente de alimentacin o bien una pila. Las caractersticas que la fuente externa
y la pila deben tener son las siguientes:

Tabla 2. Caractersticas de alimentacin

Alimentacin Vmax Vmin Imin


Fuente externa. 26v 5v 500mA
Pila. 3.3v 4.5v 400mA

El control de las funciones que el modulo posee se realiza mediante comandos AT, mismos que a
continuacin detallamos.

Tabla 3. Tabla de comando AT.

Comando. Descripcin.
AT Comprueba estado del mdulo.
AT+CPIN=XXXX Introducir el PIN de la SIM. Cambiar XXXX por el PIN.
AT+CREG? Comprueba la conexin a la red.
Realiza una llamada. Sustituir XXXXXXXXX por el n al
ATDXXXXXXX;
que queramos llamar.
ATH Finaliza la llamada.
Configura el modo texto para enviar o recibir
AT+CMGF=1
mensajes. Devuelve > como inductor.
AT+CMGS=XXXXXXXXX N al que vamos a enviar el mensaje.
AT+CLIP=1 Activamos la identificacin de llamada.
Configuramos el mdulo para que muestre los SMS
AT+CNMI=2,2,0,0,0
por el puerto serie.
AT+CGATT=1 Conectamos a la red GPRS.
AT+CSTT=APN,usuario,contrasea Definimos APN. usuario y contrasea
AT+CIICR Activamos el perfil de datos inalmbrico
AT+CIFSR Obtenemos nuestra IP
AT+CIPSTART=TCP,direccionIP,puer Indicamos el tipo de conexin, direccin IP y puerto
to al que realizamos la conexin
Preparamos el envo de datos. Devuelve > como
AT+CIPSEND
inductor.
AT+CIPCLOSE Cerramos la conexin.
AT+CIPSHUT Cierra el contexto PDP del GPRS
AT+CGPSPWR=1 Activar el GPS.
AT+CGPSSTATUS? Comprueba que el GPS ha encontrado la red.
Obtiene los datos del
GPS: Modo,Latitud,Longitud,Altitud,HorarioUTC,Tie
AT+CGPSINF=0
mpo de respuesta,Nmero de
satlites,Velocidad,Curso
para obtener los datos del GPS usando la
especificacin de la NMEA: Horario
AT+CGPSOUT=32 UTC,Estado,Latitud,Longitud,Velocidad en
nudos,ngulo de derrota en grados,Fecha,Variacin
magntica,Datos del Cheksum
AT+CGPSPWR=0 Cerrar el GPS.
Prctica #13-Detectar el doble-tap del sensor ADXL345 para
enviar un mensaje con la informacin adquirida de un puerto.

Descripcin de la prctica.
En esta prctica se pretende generar un mensaje mediante el mdulo de la SIM808, esto se
realizar una vez que el sensor ADXL345 genere un doble-tap

Cdigo empleado.

Conexiones.
A continuacin, se muestran las conexiones necesarias que deben realizarse entre la tarjeta
arduino y la SIM808, relacionando una a una las filas de cada columna.

Tabla 4. Conexiones entre la SIM808 y la tarjeta arduino.

SIM808. Arduino MEGA.


RX TX1
TX RX1
VMCU 5v
GND GND

A continuacin, se muestran las conexiones necesarias que deben realizarse entre la tarjeta
arduino y el sensor ADXL348, relacionando una a una las filas de cada columna.

Tabla 5. Conexione entre el sensor ADXL345 y la tarjeta arduino.

Arduino Pin ADXL345 Pin

GND GND

3V3 VCC

3V3 CS

GND SDO

A4 SDA

A5 SCL
Prctica #14-Detectar el doble-tap del sensor ADXL345 para
generar una llamada telefnica.

Descripcin de la prctica.
En esta prctica se pretende generar una llama mediante el mdulo de la SIM808, esto se realizar
una vez que el sensor ADXL345 genere un doble-tap

Cdigo empleado.

Conexiones.
A continuacin, se muestran las conexiones necesarias que deben realizarse entre la tarjeta
arduino y la SIM808, relacionando una a una las filas de cada columna.

Tabla 6. Conexiones entre la SIM808 y la tarjeta arduino.

SIM808. Arduino MEGA.


RX TX1
TX RX1
VMCU 5v
GND GND

A continuacin, se muestran las conexiones necesarias que deben realizarse entre la tarjeta
arduino y el sensor ADXL348, relacionando una a una las filas de cada columna.

Tabla 7.Conexiones entre el sensor ADXL345 y la tarjeta arduino.

Arduino Pin ADXL345 Pin

GND GND

3V3 VCC

3V3 CS

GND SDO

A4 SDA

A5 SCL
Prctica #15-Leer un SMS para activar una carga a distancia.
Descripcin de la prctica.
La presente prctica consiste en hacer uso del sistema GSM que el microchip SIM808 posee,
manipulando as la recepcin y envi de mensajes de texto. El control del GSM se logra a travs de
comandos AT, todo mediante una tarjeta arduino que a su vez se encarga de procesar los mensajes
que recibe y enva de la SIM.

El objetivo de esta prctica es activar una carga mediante un mensaje sms, si dicho mensaje coincide
con el comando adecuado la carga puede ser activada o desactivada. Particularmente, hemos
elegido como carga el motor de un carrito de control remoto. Los comandos para activar o desactivar
la carga son los siguientes:

motor_on_R => El motor del carrito gira en sentido horario.

motor_on_L => El motor del carrito gira en sentido anti-horario.

motor off => El motor del carrito es apagado.

Cdigo empleado.
char incoming_char =0; //Variable para guardar los caracteres que enva el SIM900
String mensaje = "";
void setup()
{
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);

Serial1.begin(19200); //Configura velocidad del puerto serie para el SIM900


Serial.begin(19200); //Configura velocidad del puerto serie del Arduino

Serial.println("OK");
delay (1000);
Serial1.print("AT+CMGF=1\r");
delay(1000);
Serial1.print("AT+CNMI=2,2,0,0,0\r");
delay(1000);
}

void loop()
{
if (Serial1.available() > 0)
{
incoming_char = Serial1.read();
mensaje = mensaje + incoming_char;
Serial.print(incoming_char);

if ( mensaje.indexOf("on_motor_R") >= 0 ){
digitalWrite(7,HIGH) ;
digitalWrite(8,LOW) ;
mensaje = "";
}
else if ( mensaje.indexOf("on_motor_L") >= 0 ){
digitalWrite(7,LOW) ;
digitalWrite(8,HIGH) ;
mensaje = "";
}
else if ( mensaje.indexOf("off_motor") >= 0 ){
digitalWrite(7,LOW) ;
digitalWrite(8,LOW) ;
mensaje = "";
}
else {}

}
}

Conexiones.
A continuacin, se muestran las conexiones necesarias que deben realizarse entre la tarjeta
arduino y la SIM808, relacionando una a una las filas de cada columna.

Tabla 8. Tabla de conexiones SIM808-Arduino Mega.

SIM808. Arduino MEGA.


RX TX1
TX RX1
VMCU 5v
GND GND
Prctica #16-Leer un SMS para para recibir a travs de otro la
ubicacin GPS actual del sensor.
Descripcin de la prctica.
En la siguiente prctica se desea manipular nuevamente el sistema GSM y GPS de la
SIM808. El objetivo principal es recibir mediante un mensaje de texto la posicin GPS que
el sensor posee, dicha accin se efectuar una vez que el sensor haya solicitado la
ubicacin mediante un mensaje de texto especifico.
En esta ocasin el comando que permite enviar la ubicacin GPS es Ubicacion

Cdigo empleado.
String Gps_Inf = "" , Latitud = "" , Longitud = "" , sms_Receptor="" ;
char SMS;

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

Serial1.print("AT+CMGF=1\r"); //Configura el modo texto para enviar o recibir


mensajes
delay(1000);
Serial1.print("AT+CNMI=2,2,0,0,0\r"); //Configuramos el mdulo para que nos
muestre los SMS recibidos por comunicacion serie
delay(1000);
}

void loop() {

if (Serial1.available() > 0)
{
SMS = Serial1.read();
sms_Receptor = sms_Receptor + SMS ;
Serial.print(SMS); //Mostramos el caracter en el monitor serie

if ( sms_Receptor.indexOf("Ubicacion") >= 0 ){
GPS();
SMS_Enviar( Latitud + " " + Longitud );
sms_Receptor = "";
SMS = 0;
}
else {}
}

}
void SMS_Enviar(String Mensaje){
Serial1.print("AT+CMGF=1\r"); //Configura el modo texto para enviar o recibir
mensajes
delay(1000);

Serial1.print("AT+CMGS=\"+525536481228\"\r");
delay(1000);
Serial1.print(Mensaje);
delay(1000);
Serial1.write(0x1A); //Equivalent to sending Ctrl+Z
}

void GPS(){
Serial1.print("AT+CMGF=0\r");
delay(1000);

Gps_Inf="";
Serial1.println("AT+CGNSPWR=1");
delay(100);
Serial1.println("AT+CGPSINF=0");
delay(5);

long int time = millis();


while( (time + 1000) > millis()){
while(Serial1.available()){
Gps_Inf += char(Serial1.read());
}
}

Gps_Inf = Gps_Inf.substring( Gps_Inf.indexOf("+CGPSINF:") );


Latitud = Gps_Inf.substring(12,23);
Longitud = Gps_Inf.substring(24,35);
}

Conexiones.
A continuacin, se muestran las conexiones necesarias que deben realizarse entre la tarjeta
arduino y la SIM808, relacionando una a una las filas de cada columna.

Tabla 9.Tabla de conexiones SIM808-Arduino Mega.

SIM808. Arduino MEGA.


RX TX1
TX RX1
VMCU 5v
GND GND
Instituto Politcnico Nacional.

Unidad Profesional Interdisciplinaria en Ingeniera en Tecnologas


Avanzadas.

Prctica#18 - Controlar un sistema robtico a travs de


la GSM y GPS de la SIM808.

Integrantes:
Pia Guadarrama Andhers Natanael
Portillo Villalobos Sabick Fernando
Toro Sandoval David Alejandro

Unidad de aprendizaje: Tpicos avanzados de sensores.

Profesor: Castaeda Galvn Adrin Antonio.


Descripcin de la prctica.
En esta prctica se pretende controlar la posicin y orientacin de un sistema robtico, para
lograr esto se hizo uso del sensor GY88 y la SIM808.
Especficamente, se desea enviar un mensaje con las coordenadas de la ubicacin a la que
se quiere que el robot se posicione. Inicialmente el robot puede estar orientado de una
forma poco deseada, para orientarlo se hace uso del sensor GY88.
Una vez que el robot se ha orientado adecuadamente y mediante el clculo adecuado, este
podr comenzar con su trayecto para llegar a la ubicacin deseada. En nuestro caso se ha
optado por controlar un carrito de control remoto.
Inicialmente el carrito estar en reposo hasta que el usuario solicite la ubicacin actual del
mismo, esto mediante un mensaje de texto, dicho mensaje debe de contener el siguiente
string: UA. Una vez que la SIM reciba dicho mensaje, enviara las coordenadas GPS
actuales del sistema al celular del cual recibi el mensaje.
En el momento que se reciban las coordenadas por mensaje, el usuario podr enviar las
nuevas coordenadas mediante un mensaje, dicho mensaje debe de poseer el siguiente
formato:
UN-Latitud-Longitud

Justo despus de enviar este ltimo mensaje el carrito se orientar y trasladar hacia la
nueva ubicacin.

Cdigo empleado.
Conexiones.
A continuacin, se muestran las conexiones necesarias entre la tarjeta arduino, la SIM808
y el sensor GY88 relacionando una a una las filas de cada columna.

Tabla 10. Tabla de conexiones SIM808-Arduino Mega.

SIM808. Arduino MEGA.


RX TX1
TX RX1
VMCU 5v
GND GND

Tabla 11. Tabla de conexiones GY88-Arduino Mega

GY88 Arduino MEGA.


SDA SDA-Pin
SCL SCL
Vin 3.3v
GND GND

Resultados.
A continuacin, se muestran algunas imgenes del carrito controlado mediante GPS.

Tabla 12. Carro ensamblado, se puede ver como se ha montado el mdulo de la SIM808.