Upload
jorge-salazar
View
232
Download
8
Embed Size (px)
DESCRIPTION
Trabajo
Citation preview
COMPONENTES PARA ARMAR TU ROBOT
CONTENIDO
Introducción a Arduino
Robot mini-sumo
Material
Programación
Robot seguidor de línea
Material para construir seguidor de línea
Programación
MATERIAL PARA ROBOT SEGUIDOR DE
LÍNEA
2(en total 6 para seguidor de línea y sumo) Led infrarrojo CNY70
Hc-sr04
2 Resistencias 220
2 Resistencias 47K
1 Driver para motor L293 B ó SN754410NE
2 Secciones de acrílico de 12x12 cms de 10 mm. de ancho para las partes superior e inferior.
Tornillos y Tuercas
2 Ruedas de 8 cm de diámetro
1 Rueda loca
1Twin Motor GrearBox
1 Placa Arduino ATMega168
1 Protoboard
Cables para conexiones
5 Condensadores
1xMotor CD, 5 o 6v
– 1xTransistor Bipolar NPN de uso general,
BC547, 2N2222, 2N3904
– 1xDiodo de proposito general, 1N4001, 1N4007
– 1xResistencia 330 ohms (naranja, naranja,
cafe)
… y lo que no puede faltar:
– Arduino
– Protoboard (Tabla Prototipo)
– Algunos jumpers
/ Declaramos la variable d3 para referenciar el pin digital 3
int d3 = 3;</code></code>void setup(){
// Iniciamos el pin digital como salida.
pinMode(d3, OUTPUT);
}
void loop(){
digitalWrite(d3, HIGH); // escribimos en el pin un valor de salida Alto (Digital 1)
delay(1500); // esperamos 1.5 segundos
digitalWrite(d3, LOW); // escribimos en el pin un valor de salida Bajo (Digital 0)
delay(1000); // esperamos 1.5 segundos
}
PRÁCTICA 5
#include <Servo.h>
Servo Servo1; //Declaramos que queremos controlar un Servo int val; //El valor a leer por el puerto análogo
void setup() { Servo1.attach(9); //El pin al cual conectaremos nuestro Servo }
void loop() { val = analogRead(pot); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023 val = map(val, 0 ,1023, 0, 180); //Traduce la lectura anáolga (0, 1023) a grados (0°, 180°) Servo1.write(val); //Mueve el Servo según la lectura análoga delay(15); }
SISTEMAS INDUSTRIALES CON
MICROCONTROLADORES 3-2-5
La presente asignatura genera una aportación al
perfil del ingeniero electrónico en el conocimiento y
habilidades que son necesarios para comprender,
seleccionar, diseñar e implementar sistemas de
control de procesos industriales basados en
microcontroladores, que permiten un desarrollo
tecnológico de vanguardia en el sector productivo.
El programa está diseñado de manera teórico-práctico
dando énfasis en la práctica que permita comprobar la
teoría, por lo que se tiene la necesidad de hacer grupos
pequeños de estudiantes que trabajen en equipo.
OBJETIVO PRINCIPAL DE LA MATERIA
Implementa sistemas de control industrial
basados en el uso de microcontroladores y sus
periféricos.
COMPETENCIAS GENÉRICAS
Capacidades metodológicas para mejorar el
ambiente: ser capaz de organizar el tiempo y las
estrategias para el aprendizaje, tomar decisiones
o resolver problemas.
Capacidad de análisis y síntesis.
Capacidad de organizar y planificar.
Comunicación oral y escrita.
Habilidades básicas de manejo de la
computadora.
Habilidad para buscar y analizar
Información proveniente de fuentes diversas.
Solución de problemas.
Toma de decisiones.
COMPETENCIAS INTERPERSONALES
Capacidad crítica y autocrítica.
Trabajo en equipo.
Habilidades interpersonales.
Compromiso ético.
(Pero no copiar los
programas o prestarse los
micros con los programas
ya precargados)
COMPETENCIAS SISTÉMICAS
Capacidad de aplicar los conocimientos en la
práctica.
Habilidades de investigación.
Capacidad de aprender.
Capacidad de adaptarse a nuevas situaciones.
Capacidad de generar nuevas ideas (creatividad).
Habilidad para trabajar en forma autónoma.
Búsqueda del logro.
Capacidad para diseñar y gestionar proyectos
Iniciativa y espíritu emprendedor.
COMPETENCIAS PREVIAS (LO QUE DEBO DE
SABER)
Programación estructurada y orientada a objetos.
Aplicar los principios del álgebra Booleana.
Diseño de circuitos digitales y analógicos.
Aplicar fundamentos de controles eléctricos.
Seleccionar interruptores y sensores.
Aplicar y seleccionar relevadores.
Interpretar diagramas de controles eléctricos.
UNIDAD I. FUNDAMENTOS DE LOS SISTEMAS
INDUSTRIALES BASADOS EN MICROCONTROLADORES
1.1 Introducción
1.2 El microcontrol en los sistemas industriales
1.3 Pasos de diseño de un sistema industrial con
base en un microcontrolador embebido
1.4 Herramientas de desarrollo de un
microcontrolador
1.3 PASOS DE DISEÑO DE UN SISTEMA INDUSTRIAL
CON BASE EN UN MICROCONTROLADOR EMBEBIDO
Microcontrolados + etapa de potencia = PLC
UNIDAD II. COMUNICACIONES SERIALES
USART, I2C, SPI Y RS485
2.1 Comunicación de datos seriales entre
computadora y microcontrolador
2.2 Implementación de un reloj de tiempo
real externo mediante I2C
2.3 Integración de un puerto de expansión
mediante SPI
2.4 Comunicación RS485 entre dos
microcontroladores
2.1 COMUNICACIÓN DE DATOS SERIALES
ENTRE COMPUTADORA Y MICROCONTROLADOR Fundamento para Arduino-Pc
Iniciamos siempre con
Serial.begin(9600);
Ya que solo necesitamos correr esta orden una
vez, normalmente iría en el bloque void setup()
COMANDOS DE IMPRESIÓN DE DATOS
Las funciones print y println (lo mismo que la
anterior pero con salto de renglón) tienen
opcionalmente un modificador que puede ser de
varios tipos:
Serial.print(data, DEC); // decimal en ASCII
Serial.print(data, HEX); // hexadecimal en ASCII
Serial.print(data, OCT); // octal en ASCII
Serial.print(data, BIN); // binario en ASCII
Serial.print(data, BYTE); // un Byte
En el modo más sencillo y común de
comunicación serial (asincrónica, 8 bits, más un
bit de parada) siempre se está enviando un byte,
es decir un tren de 8 pulsos de voltaje legible por
la máquina como una serie de 8 bit (1 ó 0):
EJEMPLO
Si Arduino lee en un sensor analógico un valor de
65, equivalente a la serie binaria 01000001 esta
será enviada, según el modificador, como:
Es evidente como el modificador BYTE permite el
envío de información más económica (menos
pulsos para la misma cantidad de información) lo
que implica mayor velocidad en la comunicación.
Y ya que esto es importante cuando se piensa en
interacción en tiempo real es el modo que
usaremos.
int firstSensor = 0;
int secondSensor = 0;
int thirdSensor = 0;
int inByte = 0;
void setup()
{
// inicializa la comunicación serial:
Serial.begin(9600);
while (!Serial) {
; // espera a que el puerto serial se conecte. Necesitado solo por Arduino Leonardo.
}
pinMode(2, INPUT); // sensor digital esta en el pin digital 2
establishContact(); // envía un byte para establecer contacto
// hasta recibir una respuesta
}
void loop()
{
// si se obtiene un byte valido
if (Serial.available() > 0) {
// obtiene el byte entrante:
inByte = Serial.read();
// lectura del primer sensor
firstSensor = analogRead(A0);
// lectura del segundo sensor
secondSensor = analogRead(A1);
// lectura del pulsador, mapea esta lectura entre 0 o 255L
thirdSensor = map(digitalRead(2), 0, 1, 0, 255);
// envía el valor de los sensores:
Serial.print(firstSensor);
Serial.print(",");
Serial.print(secondSensor);
Serial.print(",");
Serial.println(thirdSensor);
}
}
void establishContact() {
while (Serial.available() <= 0) {
Serial.println("0,0,0"); // envía una cadena inicial
delay(300);
}
COMUNICACIÓN I2C
I²C es un bus de comunicaciones en serie. Su nombre viene
de Inter-Integrated Circuit (Circuitos Inter-Integrados). La
versión 1.0 data del año 1992 y la versión 2.1 del año 2000,
su diseñador es Philips. La velocidad es de 100 kbit/s en el
modo estándar, aunque también permite velocidades de
3.4 Mbit/s. Es un bus muy usado en la industria,
principalmente para comunicar microcontroladores y
sus periféricos en sistemas integrados
ESPECIFICACIONES
La misma línea de datos envía la información en las dos direcciones, por lo que es necesario un control de acceso al bus y un direccionamiento de cada elemento.
En I2C hay un valor fuerte y otro valor débil, normalmente el 0 es el valor fuerte y el 1 el débil Esto es así porque el 0 se consigue forzando la línea a esa tensión pero por contra el 1 se consigue con pull-up, por lo tanto en caso de que alguien transmita un 0 y otro un 1, en la línea solo se vera reflejado el 0. Por lo tanto se define como el valor de reposo del bus como el 1, ya que si alguien quiere empezar a comunicar siempre podrá modificar el estado del bus y los demás se darán cuenta.
Otro aspecto a tener en cuenta en I2C es que los
maestros o maestro son los únicos que pueden
controlar la linea de SCL, eso implica que solo un
maestro puede iniciar una transmisión por lo que un
Slave tendrá que esperar a que un maestro le pregunte
por un dato para poder enviarlo.
Así en I2C cada dispositivo tiene una dirección de 7
bits, es decir se pueden tener hasta 128 dispositivos
conectados al mismo bus, hay que tener en cuenta que
existen versiones extendidas de I2C con
direccionamiento a 8,10 y 12 bits.
En el caso del I2C el protocolo del bus si reserva unos
campos para poder realizar la transmisión, cosa
totalmente diferente con el SPI donde podíamos enviar
en cada byte el dato que queramos.
Una trama I2C esta comprendida por los siguientes campos.
Bit de start: Este es un bit especial ya que como hemos dicho antes la linea SDA no puede cambiar a menos que SCL este a 0. Este bit rompe dicha norma y provoca un cambio de 1 a 0 cuando SCL esta a nivel alto.
Address: El primer byte enviado empieza con 7 bits de dirección, el cual indica a quien enviamos o solicitamos el dato.
R/W (Read/Write): El siguiente bit indica si vamos a realizar una operación de lectura o escritura.
ACK: Este bit esta presente al final de cada byte que enviamos y nos permite asegurarnos que el byte ha llegado a su destino. De este modo el que envía deja el bit a 1 y si alguien a recibido el mensaje fuerza ese bit a 0. De esta manera confirma que le ha llegado el byte y la transmisión puede continuar.
1º Byte de datos: Este es el primer byte de datos propiamente dicho ya que lo anterior no lo podemos elegir nosotros y nos viene impuesto por el protocolo. Aquí podemos poner el dato que queramos en caso de comunicación con sensores remotos un uso habitual es poner el numero de registro al que queremos escribir o leer. Después del byte de datos se espera otro ACK del receptor.
Se repite el paso 5 tantas veces como sea necesario.
Bit de Stop. En este caso ocurre lo contrario al bit de Start, se pasa de 0 a 1 cuando la linea SCL se encuentra en alto. Esto termina la transmisión y deja el bus libre para que otro puede empezar a transmitir.
PRÁCTICA 1. YA EN CÓDIGO
Wire.beginTransmission(dirección) :Inicia el bus
y ponemos con que dirección vamos a
comunicarnos.
Wire.write(bytes): Esta función envía uno o
varios bytes a la dirección anterior.
Wire.endTransmission(): Finaliza la
comunicación con un STOP y deja el bus libre.
PINES
SCLK (Clock): Es el pulso que marca la sincronización. Con cada pulso de este reloj, se lee o se envía un bit. También llamado TAKT (en Alemán).
MOSI (Master Output Slave Input): Salida de datos del Master y entrada de datos al Slave. También llamada SIMO.
MISO (Master Input Slave Output): Salida de datos del Slave y entrada al Master. También conocida por SOMI.
SS/Select: Para seleccionar un Slave, o para que el Master le diga al Slave que se active. También llamada SSTE.
Mayor velocidad de transmisión que con I²C
Protocolo flexible en que se puede tener un control absoluto sobre los bits transmitidos No está limitado a la transferencia de bloques de 8 bits
Elección del tamaño de la trama de bits, de su significado y propósito
Su implementación en hardware es extremadamente simple Consume menos energía que I²C o que SMBus debido que posee menos
circuitos (incluyendo las resistencias pull-up) y estos son más simples
No es necesario arbitraje o mecanismo de respuesta ante fallos
Los dispositivos clientes usan el reloj que envía el servidor, no necesitan por tanto su propio reloj
No es obligatorio implementar un transceptor (emisor y receptor), un dispositivo conectado puede configurarse para que solo envíe, sólo reciba o ambas cosas a la vez
Usa mucho menos terminales en cada chip/conector que una interfaz paralelo equivalente
Como mucho una única señal específica para cada cliente (señal SS), las demás señales pueden ser compartidas
VENTJAS
Consume más pines de cada chip que I²C, incluso en la variante de 3 hilos
El direccionamiento se hace mediante líneas específicas (señalización fuera de banda) a diferencia de lo que ocurre en I²C que se selecciona cada chip mediante una dirección de 7 bits que se envía por las mismas líneas del bus
No hay control de flujo por hardware
No hay señal de asentimiento. El servidor podría estar enviando información sin que estuviese conectado ningún cliente y no se daría cuenta de nada
No permite fácilmente tener varios servidores conectados al bus
Sólo funciona en las distancias cortas a diferencia de, por ejemplo, RS-232, RS-485, o Bus CAN
TRAMA
El funcionamiento para un envió de un Master es el
siguiente:
Se habilita el chip al que hay que enviar la
información mediante el CS (Opcional).
Se carga en el buffer de salida el byte a enviar.
La línea de Clock empieza a generar la señal
cuadrada donde normalmente por cada flanco de
bajada se pone un bit en MOSI.
El receptor normalmente en cada flanco de
subida captura el bit de la línea MISO y lo
incorpora en el buffer.
DUAL-SIMULTANEA (FULL-DUPLEX)
La comunicación dual-simultanea (full-duplex) requiere la utilización de 2 pares de cables (cuatro hilos) para la comunicación. Se ha de separar la transmisión y la recepción con hilos independientes, conectando el transmisor de un elemento con el receptor del otro y viceversa.
FULL-DUPLEX
Se pueden montar redes de cuatro hilos con
una comunicación dual-simultánea (full-duplex)
con una conexión semejante a la conexión punto a
punto. Aunque la comunicación entre dos nodos
puede ser (full-duplex) solo un nodo de la red
tiene la facultad de comunicarse con todos los
demás, a este nodo se le denomina maestro
(Master), al resto de nodos se les denomina
esclavos (Slave). Los modos esclavos no pueden
establecer una comunicación entre si, estos se
han de comunicar siempre con el master.
Se puede montar una red con dos hilos simplificando de
esta forma considerablemente las conexiones en el bus de
comunicación. Las redes de 2 hilos rs2485 solo
pueden comunicarse de forma dual-no simultánea
(half-duplex), lo que conlleva a un tipo de comunicación
de pregunta-respuesta.
La ventaja de estas redes es que se puede montar una
estructura multi-maestro (multi-master), es decir cada
nodo tiene la facultad de comunicarse con cualquier otro.
Evidentemente todo tiene un precio, las reglas de
arbitraje y la detección de colisiones se hace
imprescindible en este tipo de redes.
UNIDAD 3:IMPLEMENTACIÓN DE REDES
ETHERNET CON MICROCONTROLADORES
3.1 Introducción
3.2 Programación general para la comunicación
con Ethernet
3.3 Consiguiendo una dirección IP
automáticamente
3.4 Resolviendo nombres de dominio para
direcciones IP (DNS)
3.5 Solicitando datos de un Servidor Web
3.6 Usando HTML para un formato de respuesta
del servidor Web
DNS
DNS son las iniciales de Domain Name
System (sistema de nombres de dominio) y es
una tecnología basada en una base de datos que
sirve para resolver nombres en las redes, es
decir, para conocer la dirección IP de la máquina
donde está alojado el dominio al que queremos
acceder.
#UNAM 132.248.10.2 132.248.204.1 132.248.64.250 132.248.237.250 #PRODIGY 200.33.146.193 200.33.146.201 200.33.146.209 200.33.146.217 #AVANTEL 148.240.241.9 148.240.241.41 #ZONEEDIT 209.126.159.80 216.122.4.160 #REDIRIS 130.206.1.39 130.206.1.2 130.206.1.3
AT
El conjunto de comandos Hayes es un
lenguaje desarrollado por la compañía Hayes
Communications que prácticamente se convirtió
en estándar abierto de comandos para configurar
y parametrizar módems. Los caracteres «AT», que
preceden a todos los comandos, significan
«Atención», e hicieron que se conociera también a
este conjunto de comandos como comandos AT.
Midiendo la longitud de los bits se puede
determinar en detalle la velocidad de
transmisión.
BLUETOOTH
Módulo VCC → VCC Arduino
Módulo GND → GND Arduino
Módulo RX → PIN 3 Arduino
Módulo TX → PIN 2 Arduino
UNIDAD IV: REDES INALÁMBRICAS PARA
MICROCONTROLADORES
4.1 Conexión de un microcontrolador a un módulo
inalámbrico
4.2 Envío de mensajes utilizando módulos
inalámbricos
4.3 Obtención de datos de un sensor a través de
una red inalámbrica
4.4 Activando un actuador conectado a la red
inalámbrica