Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Objetivos
Conocer el funcionamiento de los puertos de entrada-salida del ATMEGA328. Se
utilizarán como puertos digitales.
Introducción
El microcontrolador del Arduino UNO es ATMEGA328. Para poder simular el funcionamiento
de los programas en Proteus, hay que obtener el archivo compilado del IDE de Arduino con
la extensión. “.elf”. Se puede configurar el entorno de programación como podéis ver en el
anexo para tener más accesible ese archivo.
En este ejercicio se hace parpadear un led conectado al puerto D3 (L2 conectado al pin 5
del ARDUINO). En Arduino, abrir el ejemplo Blink. Cambiar el pin para que sea el pin 5
quién gobierne el LED. Una vez compilado el proyecto, abrid Proteus y realizad la
simulación.
3. En la parte inferior de la ventana de preferencias, haced click en la ruta donde se guarda el documento
preferences.txt.
4. Una vez se haya abierto la ventana donde se encuentra situado el archivo preferences.txt es importante
cerrar el programa de Arduino (De no hacerlo los cambios no se efectuarán como es debido).
5. Abrir el archivo preferences.txt, buscar la línea que dice export.application.stop=true y bajo escribir la
siguiente línea build.path=ruta deseada
Introducción
El ATMEGA328 posee características especiales que hay que tener en cuenta para
programarlo.
La secuencia de señales para controlar el motor paso a paso y que se tiene que
aplicar a las entradas del L293 es la que se muestra en la tabla siguiente. Para
invertir el sentido de giro, basta con invertir la secuencia de activación.
PASO TERMINALES
IN1 IN2 IN3 IN4
1 H L H L
2 H L L H
3 L H L H
4 L H H L
El control de sentido de giro se hace mediante la entrada 8. Hay que insertar un retraso
entre paso y paso del motor. Del retraso introducido depende la velocidad de giro del
motor.
Características del motor paso a paso real utilizado para la práctica conectado de
la forma que indica la mesa: Ángulo de giro: 1,8° por paso (7,2° en los 4 pasos).
Número de pasos por vuelta: 360/1,8 = 200.
Tiempo mínimo para cambiar de paso: 1,25 ms.
MONTAJE REAL
1. Modificaciones
a) Variación de la velocidad del motor. Cambiáis el +12V GND +5V EN IN1 IN2 IN3 IN4
programa porque el motor giro a velocidad doble
que el anterior.
b) Cambio de sentido del motor.
Conectad la entrada 8 de forma que, cuando se aplique un 0, el motor giro en un
sentido, y cuando se aplique un 1, gire en sentido contrario. Modificad el programa.
La forma más sencilla de realizar el programa es que el cambio de sentido solo se
pueda llevar a cabo en uno de los cuatro pasos. Para hacerlo así, la entrada es leída
en un solo paso de todo el ciclo y, según el valor de esta, el programa ejecuta la
secuencia de variación de las salidas para conseguir el movimiento del motor en un
sentido o en sentido contrario.
c) Que el motor se mueva cómo si el ángulo de paso sería mayor
Para que aparente que el ángulo de paso del motor es cuatro veces mayor, se puede
dejar un retraso (delay) pequeñísimo en tres pasos (el adecuado para conseguir al
menos 1,25 ms, que es el mínimo que admite el motor) y en el cuarto paso
mantener un retraso como el anterior (0,2 seg).
PRÁCTICA 10: LCD
Objetivos
Conocer el funcionamiento de los puertos de entrada-salida del ATMEGA328.
Aplicación a un display LCD
Introducción
En esta práctica se usa un visualizador alfanumérico LCD de 2 filas y 16 columnas. El
controlador que usa es HITACHI, y el juego de instrucciones y el mapa de caracteres
correspondientes se pueden ver en el anexo.
Para el montaje de la práctica se emplea el shield preparado, con el visualizador
completamente conectado.
Las líneas que se conectan al módulo ARDUINO son:
Líneas de datos:
D7->Pin 13; D6->Pin 12; D5->Pin 11; D4->Pin 10
Líneas de control:
E>Pin 9; RS->Pin 8
Para facilitar el uso del LCD se utilizan las librerías que trae incluidas arduino.
Ejercicio 1: inicialización del LCD
https://www.arduino.cc/en/Reference/LiquidCrystal
PRÁCTICA 11: AD
Objetivos
Conocer el funcionamiento del convertidor analógico-digital del Arduino.
Introducción
El shield ofrece la posibilidad de utilizar 3 entradas analógicas. Una para las teclas de
dirección (KEY), otra para el sensor de temperatura (LM35) y otra entrada de tensión,
proporcionada por el potenciómetro (POT). Las conexiones se indican en la tabla:
Dispositivo Puerto Canal analógico
Sensor temp. LM35 PORTC0 A0
Teclas dirección KEY PORTC1 A1
Potenciómetro POT PORTC2 A2
Ejercicio 1: milivoltímetro
Utilizando el sensor LM35 del shield (entrada analógica 0), elaborad un programa que
muestre la temperatura en grados centígrados (primera fila del LCD) y en grados
Fahrenheit (segunda fila del LCD). Usad la referencia interna (1.1V) para mejorar la
resolución.
3 A1
5 1 4
Elaborad un programa que nos muestre, en la primera fila del LCD, el número
resultante de la conversión AD al pulsar cada tecla; en la segunda fila, ha de
mostrar el código de la tecla i el símbolo correspondiente, según la tabla adjunta:
Código
Tecla 1 2 3 4 5
Símbolo
Hasta que no se pulse ninguna tecla, se debe visualizar el número 0 y ningún símbolo.
PRÁCTICA 12: Salidas analógicas PWM
Objetivos
Modulación por ancho de pulso (PWM “Pulse Width Modulation”).
Conocer el funcionamiento de la salida analógica de Arduino.
Esquema:
Medid el valor de la LDR con las luces del aula encendidas y con las luces del aula
apagadas. Elegíd para R2 un valor comprendido entre los dos obtenidos (con luz y sin luz).
luzreal = a * luzmedida + b
Mecanismo de control
En nuestro caso, la variable que hay que controlar será la iluminación, y la variable de
actuación será el ciclo de trabajo del PWM.
La idea de cualquier sistema de control es poder calcular una discrepancia (error) entre el
objetivo (iluminación deseada, introducida por el usuario) y la realidad (iluminación
obtenida a través de la LDR). Este error se usa como información de retorno (feedback)
para modificar la variable de control (PWM en nuestro caso).
Un controlador PID es un tipo de control muy usado en la práctica por la sencillez que
tiene, dado que no requiere una caracterización completa del sistema. Se basa a combinar
3 términos (proporcional, integral y diferencial) relacionados con el error con unas
constantes que se pueden determinar a través de un proceso de prueba y error.
En nuestro caso, siendo lref la iluminación deseada, target u objetivo, introducida mediante
el potenciómetro y siendo luz (determinada por el LDR) la iluminación real, el error en un
momento dado será:
La idea es que el primer término trata de reducir el error actual. Si el error es positivo (no
hemos llegado a lref), pid es positivo, por lo cual aumenta la iluminación y se reduce el
error. Si el error es negativo (nos hemos pasado), se invierte el duty y se reduce el PWM, y
nos acercamos de nuevo al objetivo.
El segundo término refleja la influencia del pasado del error: nuestra actuación no será la
misma si puntualmente tenemos un cierto error que si llevamos un rato largo con este
error. En el segundo caso, la actuación será más enérgica.
Finalmente el tercer término refleja el futuro del error (la tendencia que presenta,
capturada en la derivada correspondiente). Imaginad que nos encontramos en 5 unidades
de nuestra iluminación deseada, es decir, que tenemos un error e=5. No es lo mismo si nos
estamos acercando al objetivo (en este caso se está reduciendo el error, derivada negativa)
que si nos estamos alejando (derivada positiva, el error está aumentando). En el primer
caso quizás no hay que hacer casi nada (la misma inercia nos lleva hacia el objetivo),
mientras que en el otro caso está claro que hay que corregir la situación.
En nuestro caso, en vez del continuo descrito antes, tendremos una implementación
discreta. Cada cierto tiempo se mide la iluminación actual y se calcula un término de error:
• La integral se sustituye por una suma de valores anteriores del error. Además, se limita
en el tiempo, sumando los últimos N errores (por ejemplo 5), en vez del historial completo
de errores. Formalmente tendríamos que añadir un término h (el intervalo de tiempo entre
muestras) pero este término (constante) puede ser absorbido por la constante de
integración Ki.
En la variante discreta, el término de control que hay que calcular para actuar sobre el
PWM será, por lo tanto:
Hay que indicar, finalmente, que no hace falta que la frecuencia de toma de medidas sea la
misma que la frecuencia de actuación. Es posible, p. ej., tomar medidas con una frecuencia
de 100 Hz pero solo actuar 20 veces por segundo (20 Hz). En estos ejemplos, por
simplicidad, usamos la misma frecuencia para los dos, por lo cual después de tomar cada
medida, tenemos que calcular el término de control y modificar el ciclo del PWM.
Elaborad un programa que lleve a cabo un control proporcional de la iluminación (en este
apartado, los términos Ki y Kd serían 0).