Está en la página 1de 92

E.T.

N°1
Ing. “Otto Krause”

Taller de Electrónica

Título: Informe
Proyecto: Robot Explorador
Integrantes: Rojas Gabriel – Santoandré Germán
Profesor: Nicolás Potenza
Curso: 4° División: 1°
Horarios: Lunes y martes de 7:45 hs. a 12:05 hs.
Ciclo lectivo: 2017

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 1


Índice
Caratula _______________________________________________________________ Página 1
Índice General ______________________________________________________________ Página 2
Objetivos Primarios y Secundarios ______________________________________________ Página 3
Introducción _______________________________________________________________ Página 4-5
Desarrollo Teórico ____________________________________________________________ Página 6
Hardware________________________________________________________ Página 6-21
Software_________________________________________________________ Página 22-34
Desarrollo Práctico ___________________________________________________________ Página 35
Hardware_____________________________________________________ Página 35-39
Software______________________________________________________ Página 40-83
Futuras mejoras ____________________________________________________________ Página 84
Algoritmo principal _________________________________________________________ Página 85
Código Fuente Final _________________________________________________________Página 86-90
Observaciones finales _________________________________________________________ Página 91

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 2


Objetivos primarios:
- Llegar al grado mínimo de funcionalidad del proyecto.
- Integrar todos los contenidos vistos hasta ahora del microcontrolador.
- Completar el proyecto con una mínima ayuda de los profes.
- Aprender y desarrollar PWM.
- Aprender y desarrollar Bluetooth.
Objetivos Secundarios:
- Superar el grado mínimo de funcionalidad, mejorar el proyecto.
- Aprender el uso de:
.Sensor de ultrasonido HC-SR04
.Sensor de luminancia (Fotorresistencia LDR).
.Sensor de calidad de aire MQ-135.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 3


INTRODUCCIÓN
Características generales:
Los robots exploradores son aquellos que se han diseñado con el fin de conocer y explorar un lugar en
concreto con el fin de evitar poner en peligro la vida de personas o conseguir acceso a entornos en los que
el hombre no llega. Este tipo de robots cuentan con cámaras integradas y diversos sensores que capturan
información para posteriormente retransmitirlas a la base para su posterior análisis. Aunque los robots
exploradores pueden ser controlados de forma remota, también existen unidades capaces de tomar
decisiones gracias a que cuentan con inteligencia artificial.

Robot explorador de tuberías Explorador de terreno

Robot de exploración submarina

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 4


Diagramas de bloques

Nuestro robot explorador:


Características del “Explorador” finalizada la segunda etapa:
- Control del “Explorador” a través de bluetooth.
- Medición de temperatura ambiente.
- Medición de calidad de aire.
- Medición de luminancia.
- Direccionamiento inteligente (evitar choque contra las paredes utilizando sensores de distancia)
- Cámara.
- Luces.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 5


DESARROLLO TEÓRICO
Hardware:
Un micro controlador es un circuito integrado que en su interior contiene una unidad central de
procesamiento (CPU), unidades de memoria (RAM y ROM), puertos de entrada y salida y periféricos.
Estas partes están interconectadas dentro del micro controlador, y en conjunto forman lo que se le conoce
como microcomputadora.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 6


Microcontrolador MC9S08SH8:
Pin out:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 7


Mapa de memoria:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 8


Diagrama de bloques:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 9


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 10
Sensor de Distancia de Ultrasonido HC-SR04.

Características principales:

- El HC-SR04 es un sensor ultrasónico de bajo costo que no sólo puede detectar si un objeto se
presenta, como un sensor PIR (Passive Infrared Sensor), sino que también puede sentir y transmitir la
distancia al objeto.
- Tienen dos transductores, básicamente, un altavoz y un micrófono.
- Ofrece una excelente detección sin contacto (remoto) con elevada precisión y lecturas estables en
un formato fácil de usar.
- El funcionamiento no se ve afectado por la luz solar o el material negro como telémetros ópticos
(aunque acústicamente materiales suaves como telas pueden ser difíciles de detectar).
- La velocidad del sonido en el aire (a una temperatura de 20 °C) es de 343 m/s. (por cada grado
centígrado que sube la temperatura, la velocidad del sonido aumenta en 0,6 m/s).
Características técnicas:
- Los módulos incluyen transmisores ultrasónicos, el receptor y el circuito de control.
- Número de pines:
VCC: Alimentación +5V (4.5V min – 5.5V max)
TRIG: Trigger entrada (input) del sensor (TTL)
ECHO: Echo salida (output) del Sensor (TTL)
GND
- Corriente de reposo: < 2mA
- Corriente de trabajo: 15mA
- Ángulo de medición: 30º
- Ángulo de medición efectivo: < 15º
- Detección de 2cm a 400cm o 1" a 13 pies (Sirve a más de 4m, pero el fabricante no garantiza una
buena medición).
- “Resolución” La precisión puede variar entre los 3mm o 0.3cm.
- Dimensiones: 45mm x 20mm x 15mm
- Frecuencia de trabajo: 40KHz

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 11


Funcionamiento:
- Enviar un Pulso "1" de al menos de 10uS por el Pin Trigger (Disparador).
- El sensor enviará 8 Pulsos de 40KHz (Ultrasonido) y coloca su salida Echo a alto (seteo), se debe
detectar este evento e iniciar un conteo de tiempo.
- La salida Echo se mantendrá en alto hasta recibir el eco reflejado por el obstáculo a lo cual el
sensor pondrá su pin Echo a bajo, es decir, terminar de contar el tiempo.
- Se recomienda dar un tiempo de aproximadamente 50ms de espera después de terminar la cuenta.
- La distancia es proporcional a la duración del pulso y puedes calcularla con las siguiente formula
(Utilizando la velocidad del sonido = 340m/s).
Notas
- Tener en cuenta, que la distancia que recorre la onda es dos veces (x2) la distancia del objeto, al
usar: “distancia recorrida = velocidad x tiempo transcurrido”
- Conecte el pin GND primero antes de suministrar alimentación a VCC.
- Por favor, asegúrese de que la superficie del objeto a detectar debe tener al menos 0,5m para un
mejor rendimiento.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 12


Sensor Temperatura LM35
Disposición de pines:

Calculo de temperatura:
Si os acordáis de cuando hablamos de la API de Arduino, hay una función que se
llama analogRead donde le pasamos como parámetro el número de pin que queremos leer y nos da un
valor entre 0 y 1023 osea, 1024 valores. Esto quiere decir que si en el pin tenemos 0V nos dará 0 y si
tenemos 5V o 3.3V (depende de a que voltaje esté funcionando nuestro Arduino) nos dará 1023, así de
sencillo.

Por lo tanto si queremos saber que voltaje tenemos en la entrada analógica solo debemos de multiplicar
por 5/1024 (0.0048V de precisión). Esto nos da el voltaje de nuestro sensor, ahora hay que transformar los
voltios en grados. Ya hemos averiguado, gracias a la ficha técnica, que 1ºC equivale a 10mV (0.01V) por
lo tanto solo debemos de dividir el valor de voltaje obtenido antes entre 0.01 y nos dará la temperatura.
Para que os quede más claro os dejo aquí la formula que deberíamos aplicar.

Temperatura = (Valor * 5 / 1024) / 0.01 = Valor * 5 * 100 / 1024

Circuito interno:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 13


Sensor calidad de aire MQ-135
Este sensor se encarga de la detección de concentración de gas en diversos porcentajes, tal y como los son
sus análogos MQ-3/4/5. La señal de salida que proporciona el MQ-135 es dual, de carácter analógico y
digital. Respecto a la señal analógica proporcionada, esta viene a ser directamente proporcional al
incremento de voltaje. La señal digital, esta presenta niveles TTL por lo que esta señal puede ser
procesada por un microcontrolador.
Características técnicas:
-Voltaje de operación: 5V DC
-Corriente de operación: 150mA
-Potencia de consumo: 800mW
-Tiempo de precalentemiento: 20 segundos
-Resistencia de carga: Potenciómetro (Ajustable)
-Detección de partes por millón: 10ppm~1000ppm
-Concentración detectable: Amoniaco, sulfuro, benceno, humo
-Concentración de oxígeno: 2%~21%
-Humedad de operación: <95%RH
-Temperatura de operación: -20°C~70°C

Disposición de pines:

DOUT: Depende del valor del potenciómetro, ya que establece un umbral que al superarlo hace que la
salida sea 0 (funciona con lógica inversa).
AOUT: Esta da el valor de contaminante en el aire (entre 100 y 150 es normal).

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 14


Circuito interno:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 15


Sensor de luz (Fotoresistencia LDR)

-Fotoresistencia LDR: Componente cuya resistencia varía sensiblemente con la cantidad de luz percibida.
La relación entre la intensidad lumínica y el valor de la resistencia no es lineal. Se utiliza ampliamente
para medir la iluminación en dispositivos electrónicos que requieren un precio agresivo. Su
comportamiento es el siguiente:
Más luz = menor resistencia eléctrica
Menos luz = mayor resistencia eléctrica
- Divisor de tensión: Mediante un par de resistencias en serie, es posible repartir la tensión suministrada
por la fuente entre las terminales de estas, en nuestro caso, el divisor se utiliza con el LDR (R1) para
obtener una tensión variable de acuerdo a la cantidad de luz percibida.

-Conversión Analógico-Digital (ADC): Es el proceso mediante el cual se convierte una magnitud física
como un voltaje, corriente, temperatura, etc. en un número binario (o señal digital) con el propósito de
facilitar su manejo por circuitos digitales como un CPU. El micro realiza este proceso para conocer la
cantidad de luz percibida por el LDR y poder procesarla numéricamente.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 16


Adaptadores de señal:
Adaptadores o acondicionadores de señal Adaptadores o acondicionadores de señal
- Convierten una señal (eléctrica Convierten una señal (eléctrica o no) en una señal eléctrica de o no) en
una señal eléctrica de características especiales.
Para el robot explorador usamos un sensor de temperatura LM35 pero ante el problema de que la
temperatura ambiente normal es aproximadamente 25 grados y eso en el sensor lm35 serian 250 mV, ya
que cada 10 mV es un grado. Este valor de tensión es demasiado pequeño para poder realizar las
mediciones con precisión por ende se usa un amplificador operacional que amplifica la señal 10 veces. El
amplificador operacional que usamos es el LM358.
Características:
 Número de amplificadores operacionales: 2.
 No requiere fuente dual (Sin embargo con fuente sencilla no es posible que la salida
obtenga voltajes negativos).
 Tensión de alimentación: 3 V a 32 V fuente sencilla (±1.5 V a ±16 V fuente dual).
 Bajo consumo de potencia.
 Ancho de banda típico: 0.7 MHz.
 Compensado en frecuencia internamente.
 Alta ganancia.
 Compatible con todas las formas de lógica.
 Encapsulado: DIP 8 pines.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 17


Etapa de potencia:
El primer concepto que se debe tener en cuenta para controlar un motor mediante un microcontrolador es
que no se pueden conectar directamente, ya que el motor tiene un consumo de corriente que el chip no le
puede proporcionar. La conexión directa provocar a que se quemase la electrónica. Para evitar este
desastre, se coloca una etapa de potencia entre el microcontrolador y los motores. Para que un motor gire
en el sentido contrario hay que invertir la polaridad entre los bornes del mismo. La forma más corriente de
diseñar las etapas de potencia es mediante el uso de puentes. Nosotros usamos el L298N
Este módulo permite controlar dos motores de corriente continua y motores paso a paso de no más de 2
amperes, existen algunos módulos disponibles para la compra que ya vienen con el driver soldado y
algunos pines para controlar las entradas y las salidas.

Como se puede ver en la imagen el módulo ya cuenta con lo siguiente:

-Regulador de tensión LM7805

-Conectores Output A y Output B que son las salidas de los motores

-Control inputs, son los terminales de control, dos de ellos son los pines de habilitación de cada motor

-Jumper para decidir si voy a utilizar el regulador LM7805 o no lo voy a utilizar.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 18


Hay que tener presente la tensión con la cual lo vamos a alimentar, si bien el módulo tiene un regulador de
tensión y es capaz de soportar tensiones de hasta 36V, también tiene un Jumper que nos permite decidir si
lo usamos o no.

Puede llegar a manejar un motor paso a paso de dos fases y cuatro fases, o dos motores de corriente
continua. Este módulo incluye un regulador de tensión 78M05 para obtener la energía de alimentación del
dispositivo, sin embargo, cuando se superan los 12V, se sugiere usar una fuente de poder externa de 5V
como fuente de alimentación digital y deshabilitar el jumper de 12V. Este módulo tiene gran capacidad de
filtrado de ruido, cuenta con un diodo de protección ante corriente inversa, haciendo que su
funcionamiento sea más estable y fiable.

Controlador L298/ Doble Puente H

Interfaz de potencia 7V~46V

Corriente máxima 2A por canal

Voltaje de control 5V

· Nivel alto 2.3V <= Vin <= Vss

Nivel de entrada de señal de control · Nivel bajo: -0.3V <= Vin <= 1.5 V

Corriente de control 36mA

Potencia de salida 25W

Luces indicadoras Encendido, control, dirección

Temperatura de operación -20°C~+135°C

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 19


ENA EN 1 EN 2 Descripción

0 N/A N/A Motor A está apagado

1 0 0 Motor A se detiene (frenado)

1 0 1 El motor A está encendido y da vuelta al revés

1 1 0 Motor A está en y hacia delante de giro

1 1 1 Motor A se detiene (frenado)

Tabla de verdad del motor B

ENB IN3 IN4 Descripción

0 N/A N/A Motor B está apagado

1 0 0 Se detiene el motor B (frenado)

1 0 1 Motor B está encendido y da vuelta al revés

1 1 0 Motor B está en torneado y hacia delante

1 1 1 se detiene el motor B (frenado)

Tabla de verdad del motor A

OUT 4, OUT 1: POSTIVO (+)

OUT 3, OUT 2: NEGATIVO (-)

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 20


Circuito interno:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 21


Actuadores:

Los actuadores son los dispositivos que permiten al sistema de control ‘actuar’ sobre el ‘mundo real’ para
realizar las acciones deseadas, existen multitud de sistemas actuadores aunque el mando y control de los
mismos es más fácil, en general, que el manejo de sensores.

TIPOS DE ACTUADORES.

• Electrónicos.

• Hidráulico

• Neumáticos.

• Eléctricos.

Los actuadores hidráulicos, neumáticos y eléctricos son usados para manejar aparatos mecatrónicos.
Los actuadores electrónicos también son muy utilizados en los aparatos mecatrónicos, como por ejemplo,
en los robots.

Los motores de corriente continua son actuadores de tipo electronicos. El motor de corriente continua es
una máquina que convierte energía eléctrica en mecánica, provocando un movimiento rotatorio, gracias a
la acción de un campo magnético.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 22


SOFTWARE

Lenguaje de programación:

El lenguaje C es un lenguaje de programación de tipos de datos estáticos, débilmente tipificado, de medio


nivel, ya que dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de
construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer
extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder
directamente a memoria o dispositivos periféricos.

Entorno de desarrollo integrado (IDE):

TUTORIAL CODE WARRIOR

 Crear un proyecto.

1. Crear nuevo proyecto.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 23


2. Elijo el microcontrolador a utilizar.

3. Elijo lenguajes a utilizar.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 24


4. Nombro al proyecto.

5. Elijo la ubicación de la carpeta.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 25


6. Finalizar.

 Editar.

 Compilar.

 Simular.

 Simular en circuito.

 Programar.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 26


Funciones:

A medida que un programa va adquiriendo complejidad es necesario incrementar el nivel de eficiencia y


prolijidad de su código. Una manera de lograr esto es practicar lo que se llama programación modular. Es
decir, agrupar grupos de líneas de código que resuelvan problemas más sencillos. De esta manera se
simplifica el desarrollo y mantenimiento del programa. En la siguiente figura se muestra la relación del
programa principal con los distintos módulos:

Fig. 8

La función o módulo puede procesar los datos que se le envíen -printf(), bioskey(), etc. - o simplemente
ejecutarse -kbhit(), getch(), etc. -. A los datos que se le envían a una función se los denomina argumentos.
A su vez, puede devolver un dato a la función llamadora -pow(), getchar(), etc.- o no devolver nada –
clrscr(), _setcursortype(), etc. -.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 27


Declaración

Para declarar una función debo especificar 3 parámetros:

 Si devuelve un dato o no.

 Su nombre.

 Cantidad, tipo y orden de sus argumentos.

Forma general:

tipo de dato que devuelve nombre (cantidad, tipo y orden de sus argumentos);

Por ejemplo, si deseo crear una función que calcule el promedio de 3 números su declaración podría ser la
siguiente.

float promedio (float, float, float);

La declaración de una función se realiza antes del main y después de la definición de constantes.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 28


Llamadas

Para llamar una función, es decir, pedir que se ejecute, tengo 4 posibilidades:

1. Función que no devuelve ningún dato ni posee argumentos.

Forma general:

nombre();

Ejemplo:

clrscr();

2. Función que no devuelve ningún dato pero le envío argumentos.

Forma general:

nombre(argumento1, argumento2, …..);

Ejemplo:

printf(“Hola mundo!”);

3. Función que devuelve un dato pero no posee argumentos.

Forma general:

variable=nombre();

Ejemplo:

letra=getche();

4. Función que devuelve un dato y le envío argumentos.

Forma general:

variable=nombre(argumento1, argumento2, …..););

Ejemplo:

prom=promedio(n1,n2,n3);

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 29


Las llamadas a las funciones pueden realizarse dentro de cualquier módulo.

Prototipo

El prototipo de una función son el grupo de líneas de código que la componen.

Forma general:

tipo de formato del dato a devolver nombre (lista de parámetros)

Declaración de variables locales.

Proceso/s.

return (dato a devolver);

Los parámetros son las variables que van a recibir los datos provenientes de la función llamadora. En el
caso de nuestro ejemplo quedaría de la siguiente forma:

float promedio (float n1b,float n2b, float n3b)

float promb;

promb=(n1b+n2b+n3b)/3;

return(promb);

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 30


IMPORTANTE: a la función se le envía una copia de los datos de las variables de la función llamadora.

La utilización de la letra ‘b’ como sufijo de cada identificador es para diferenciar las variables de la
función local de las variables de la función llamadora.

Variables locales / variables globales

Las variables declaradas dentro de una función son locales de la misma, es decir, solo puedo afectar a esas
posiciones de memoria cuando estoy ejecutando la función propiamente dicha. Al declararlas al comienzo
de la función se reserva el espacio de memoria para utilizarlo durante la misma. Sin embargo, al finalizar
esta y regresar al punto de donde se había llamado estos espacios de memoria se liberan nuevamente.

El prototipo de una función se escribe después de finalizar el main.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 31


Vectores:

Un vector es un conjunto de posiciones de memoria relacionadas entre sí por el hecho de tener el mismo
nombre y tipo formato. Cada variable se identifica por el nombre del vector seguido de un número
llamado ‘subíndice numérico’ indicado entre corchetes. Este comienza en 0 para la primer posición de
memoria y va incrementándose de a uno.

Además, estas variables están ordenadas en la memoria de manera consecutiva.

En resumen, las vectores son un conjunto de variables que poseen las siguientes características:

 Mismo nombre.

 Mismo tipo de formato.

 Se identifican por un subíndice numérico (de 0 a tamaño-1).

 Están ordenadas en la memoria de manera consecutiva.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 32


Declaración

La forma de declarar un vector es especificando 3 características: tipo de formato, nombre y su tamaño, es


decir, la cantidad de variables que lo componen. Este último se identifica entre corchetes.

Forma general:

Tipo de formato Nombre [tamaño];

Por ejemplo, un vector en el que guardemos las notas de 10 alumnos podría declararse de la siguiente
manera:

int notas [10];

Cargar un vector

Una de las principales ventajas que presentan los vectores es que con una misma línea de código se
pueden afectar diferentes posiciones de memoria. Esto se logra utilizando una variable como subíndice
numérico.

Forma general:

for (i=0;i<=tamaño-1;i++)

printf(“Ingrese el valor Nº%d: ”, i+1);

scanf(“%d”, &nombre[i]);

En el ejemplo anterior si las notas se ingresan por teclado el código podría ser el siguiente:

for (i=0;i<=9;i++) {

printf(“Ingrese la nota del alumno Nº%d: ”, i+1);

scanf(“%d”, &notas[i]);

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 33


Mostrar un vector por pantalla

Del mismo modo, para mostrar el contenido de un vector por pantalla se puede utilizar el mismo criterio:

Forma general:

for (i=0;i<=tamaño-1;i++)

printf(“El valor Nº%d es: %tipo de formato\n”, i+1, nombre[i]);

En el ejemplo anterior quedaría de la siguiente manera:

for (i=0;i<=9;i++)

printf(“La nota del alumno Nº%d es: %d\n”, i+1, notas[i]);

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 34


Inicialización

Para darle un valor inicial a cada una de las variables de un vector (numérico) existen dos alternativas:

 Valores distintos:

Forma general:

tipo de formato nombre[tamaño]={valor1,valor2,valor3,…,valortamaño};

Ejemplo:

int notas[10]={7,5,8,10,5,4,7,3,9,6};

NOTA: esta forma de inicializar un vector tiene la ventaja de que se puede omitir especificar el tamaño
del mismo. Es decir, si hiciéramos lo siguiente:

int notas[]={7,5,8,10,5,4,7,3,9,6};

Se crearía un vector tipo int de tamaño 10, al igual que en el primer caso.

 Mismo valor:

Forma general:

for(i=0;i<=tamaño-1;i++)

nombre[i]=valor;

Ejemplo:

for(i=0;i<=4;i++)

goles[i]=0;

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 35


DESARROLLO PRÁCTICO

Hardware:

Placa multiproposito:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 36


Placa de control por radiofrecuencia: Estas placas, la emisora y la receptora no las usamos debido a que
decidimos controlar el vehiculo mediante Bluetooth, aunque por la consigna las tuvimos que hacer.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 37


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 38
Placa Modulo L298N:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 39


Placa receptora y sensores:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 40


Software:
Se hizo el programa integrador V1.0 de control por Radiofrecuencia.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 41


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 42
ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 43
Se realizaron los siguientes cambios al código integrador V1.0:
-Cambio en la forma para verificar si solo hay UN botón presionado.
-Parada automática si detecta que el emisor esta fuera de rango.
Código integrador V2.0:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 44


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 45
´

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 46


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 47
Se modificaron las funciones config_puertos(), Timer() y CAD() para hacerlas más entendibles e
intituivas.
Nota: Fíjese en la manera en la que está armado el programa y no en como lo está configurando, sea el
CAD, timer, los puertos, etc.
Función “config_puertos()”:
Antes:

Despues:

Función “Timer()”:
Antes:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 48


Después:

Función “CAD()”:
Antes:

Despues:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 49


Programa sensor de distancia:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 50


Nota: Las funciones “medirDistancia()” y “config_TPM()” fueron provistas por los profesores debido a su
complejidad.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 51


Programa Fotoresistencia:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 52


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 53
Programa Temperatura:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 54


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 55
Programa calidad de aire:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 56


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 57
Calibración del integrado SH8 para la que funcione correctamente a 8MHz, la función fue provista por los
profesores.
Esto consistió en medir la señal cuadrada que emitía el SH8 con un osciloscopio e ir cambiando el valor
del registro “ICSTRM” hasta que su frecuencia sea de exactamente 1KHz.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 58


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 59
Prueba bluetooth, encendido de unos LEDs mediante bluetooth.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 60


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 61
ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 62
Programa en Android creado con AppInventor2.
Aspecto:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 63


Bloques:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 64


Programa control de la velocidad de un motor a través de un potenciómetro.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 65


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 66
Explicación del módulo TPM para el uso de PWM por parte de los profesores.

Programa de control de motores utilizando comunicación bluetooth con un Android.


Se realizaron los siguientes cambios al código integrador V2.0:
-Se modificó el código para que se pueda controlar mediante bluetooth.
-Utilización de PWM
-Cambio en las funciones de dirección y control de motores.
-Medición de temperatura.
Programa integrador V3.0:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 67


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 68
ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 69
ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 70
ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 71
ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 72
El programa en Android es exactamente el mismo que el del día 17 de octubre.
Nota: En este programa se usa PWM aunque no sea necesario para facilitar la adaptación del código
cuando el programa bluetooth del celular pueda enviar los datos para controlar las mismas. Este programa
fue probado y funcionó correctamente, el video se encuentra en la carpeta correspondiente.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 73


Se realizaron los siguientes cambios al código integrador V3.0:
-Cambio en la dirección, ya que ahora permites intermedios entre adelante/atrás y derecha/izquierda.
Programa integrador V4_Beta:
El programa está en Beta debido a que cuando fue probado no funcionó correctamente, se cree que debido
a que el SH8 como está configurado no es capaz de recibir dos datos distintos como se le está pidiendo (X,
Y).
Nota: TODAS las funciones son exactamente las mismas que en el programa integrador V3.0.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 74


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 75
ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 76
ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 77
Se realizaron los siguientes cambios a el programa integrador V4_Beta:
-Se modifico la forma en la que calcula la velocidad del motor, el cálculo lo realiza directamente el celular
y envía el porcentaje de funcionamiento del motor.
Está encriptado ya que solo se puede enviar un dato solamente y no 2 (motor 1 y motor 2) como
necesitamos.
En el celular se divide a el valor del motor 1 y motor 2 por 2, ya que los valores de ambos motores están
entre 0 y 100, por ende, los valores divididos serán entre 0 y 50.
Ahora se le suma una constante para indicar si se está hablando del motor 1 o el motor 2 y si estos tienen
que ir hacia adelante o hacia atrás, entonces se decidió que el bit más significativo sería el que indicase el
número del motor (0 = motor 1 y 1 = motor 2) y el segundo más significativo la dirección del mismo (0 =
adelante y 1 = atrás). Es decir:
Motor 1 ADELANTE = dato + 0
Motor 1 ATRÁS: dato + 64 (64 = 2^6)
Motor 2 ADELANTE = dato + 128 (128 = 2^7)
Motor 2 ATRÁS = dato + 192 (192 = 2^7 + 2^6)
Programa integrador V4.0:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 78


Nota: Las funciones y lo demás omitido en las capturas del programa integrador V4.0 son las mismas que
las del programa integrador V4_Beta.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 79


Se modificó el programa bluetooth del celular:
-Se agrego una pantalla de introducción.
-Se agregaron 2 controles:
Control básico: Temperatura, dirección (adelante, atrás, izquierda, derecha)
Control avanzado: Temperatura, calidad de aire, luz, jostick.
Pantalla introducción:

Bloques:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 80


Control básico:

Bloques:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 81


Control avanzado:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 82


Bloques:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 83


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 84
FUTURAS MEJORAS:
Vehiculo explorador logrado:
- Control del “Explorador” a través de bluetooth.
- Medición de temperatura ambiente.
- Medición de calidad de aire.
- Medición de luminancia.
- Variación de la velocidad por PWM.
Ventajas:
- Logramos superar el grado mínimo de funcionalidad, nuestro explorador cuenta con un sensor de
calidad de aire y de luminancia, además del sensor de temperatura.
- Puede variar la velocidad mientras dobla.
- No necesitamos hacer una placa de control remoto porque podemos usar el celular como control
creando una aplicación mediante AppInventor.
- Es más fácil mostrar los datos de los sensores en la aplicación.
Desventajas:
- Por falta de tiempo, nuestro vehículo no tiene luces.
- Uno de los objetivos era ponerle al vehículo direccionamiento inteligente, si este se dirigía hacia
una pared y nosotros no lo re direccionábamos, automáticamente corrige la dirección para no
chocar con obstáculos en el camino.
- Los exploradores convencionales cuentan con cámaras para mostrar el terreno en tiempo real al
que lo controla y este era uno de nuestros objetivos pero no llegamos por falta de tiempo.
Nosotros pensamos mejorar el vehículo en completar nuestros objetivos, tales son el direccionamiento
inteligente, la cámara y obviamente las luces que le faltan.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 85


Algoritmo principal del Explorador:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 86


Código fuente:

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 87


ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 88
ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 89
ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 90
ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 91
Observaciones finales:
- Primero que nada, no tener todo en un solo lugar, hacer copias de seguridad en distintos dispositivos, en
la nube, etc. Debido a que se corre el riesgo de perder información y no recuperarla.
-Al momento de planificar el proyecto tener en cuenta el tiempo y no especular sobre cuánto tiempo toma
una etapa.
-No perder tiempo en cosas que no se van a implementar en el proyecto, a menos que sea muy necesario.
-A medida que se avanza en el proyecto completar SIEMPRE la bitácora porque facilita la información y
a corregir errores en un futuro.
-Documentar en fotos, videos y/o notas de voz todas las pruebas, aunque funcionen o no.
-Prestar mucha atención a las placas, revisarlas antes de imprimirlas para la transferencia hasta estar
seguro.
-En el programa integrador v4.0_Beta existía el error de no poder hacer llegar los datos necesarios, en este
caso X e Y, ya que el SH8 puede recibir solo un byte y no dos como necesitábamos.
-En el programa Bluetooth, en el principio su falla de funcionamiento consistía en no haber llamado a la
función SCI indispensable para el funcionamiento.

ROJAS-SANTOANDRE | 4° 1° | E.T N°1 ING. “OTTO KRAUSE” | ELECTRÓNICA | 2017 | 92

También podría gustarte