Instrumentación con Microcontroladores Ing. Rodrigo Alejandro Gutiérrez Arenas 22/03/12 al 29/03/12
Contenido Problemas relativos a los proyectos Introducción y motivación para utilizar a Arduino Entrada y salida (IO) analógica y digital Alarma de ventanas abiertas
Detección y Adquisición de Datos Distancia/alcance, posición/orientación, fuerza/presión, movimiento/velocidad, ópticas, químicas, flujo, voltaje/corriente. La elección del sensor depende de la aplicación, pero también está relacionada con: Sistemas de adquisición de datos (Entradas analógicas y digitales) Número de sensores Rango de valores Problemas de la conversión analógico digital tales como resolución y tasa de muestreo. Tipos de señales Retraso/ancho de banda
Procesamiento y Plataforma de Programación Tarjetas externas (microcontroladores/microprocesadores) Ambiente de desarrollo o generación de prototipos Lenguaje de programación de bajo nivel: compilador/ensamblador Conexión a una computadora o LCD para su visualización DAQ (adquisición de datos) incluida Funcionamiento Independiente Computadora Conexión externa a un DAQ Ambiente de programación o análisis Tiempo de procesamiento depende del OS y controladores
Actuadores (Salidas Digitales y Analógicas, PWM) Relevadores Motores DC, de pasos, servos. Amplificadores de señales. Fuentes de poder, baterias. Polaridad, puente H. Displays
Elección y Retos Costo Facilidad de uso Flexibilidad Portabilidad Procesos no triviales aun para proyectos simples Algunos retos son inherentes a la naturaleza del problema y son los más adecuados para que los resuelva el estudiante (sensores, actuadores, potencia, diseño, etc.) Retos no inherentes al problema (corrección del código, controladores, limitaciones del hardware, altos costos, manuales complicados, etc.)
Contenido Problemas relativos a los proyectos Introducción y motivación para utilizar a Arduino Entrada y salida (IO) analógica y digital Alarma de ventanas abiertas
Arduino Microcontrolador de código abierto con un ambiente asociado de desarrollo (C).
Filosofía Los esquemas y software están publicados bajo la licencia de Creative Commons. La manufactura y distribución de un producto realizado a partir de Arduino esta sujeto a pocas restricciones (básicamente tienes que avisarle a los autores) con la finalidad de que: El proyecto cumple con la filosofía de los autores Se manufactura bajo un ambiente justo de trabajo
Especificaciones (Arduino UNO) Microcontrolador Atmega328 16 MHz, 32 KB de memoria FLASH, 2KB SRAM, 1 K EEPROM 14 pines DIO (Digital Input/Output) de los cuales 6 puedes se salidas PWM (8-bits 500 Hz) 6 entradas analógicas (10 bits en un rango de 0 a 5 V). Voltaje de operación de 5 V y corriente de 40 ma por cada pin de IO. Conexión USB Conexión a fuente externa
Contenido Problemas relativos a los proyectos Introducción y motivación para utilizar a Arduino Entrada y salida (IO) analógica y digital Alarma de ventanas abiertas
En qué es bueno Arduino? Proyectos que requieren IO analógica y digital Proyectos que requieran el uso de motores de pasos, motores de DC o servomotores. Proyectos con restricciones en el presupuesto y volumen o tamaño. Proyectos que requieran flexibilidad y adaptabilidad (cambio de código y funciones al momento)
En qué es bueno Arduino? Básicamente cualquier proyecto que requiere del uso de sensores y actuadores, considerando que los requerimientos computacionales no son muy grandes (e. g. no se puede hacer procesamiento de señales con ellos). Ideal para estudiantes Existe una comunidad muy grande de usuarios, por lo que el soporte y ayuda es relativamente sencilla de obtener.
Arduino
Matlab y Arduino Paquete Arduino IO Realiza entradas y salidas, tanto digitales como analógicas desde la línea de comando de Matlab Paquete Arduino Target Compila código en Simulink directamente al Arduino
Arduino IO
Matlab vs Ambiente IDE Matlab es más interactivo, los resultados de las instrucciones de las IO analógicas/digitales pueden verse sin necesidad de compilar, subir y ejecutar cada vez. El código en Matlab es generalmente más compacto y fácil de entender que C (tipos de variables más abstractas, vectorización, sin necesidad de inicializar variables, menos líneas de código).
Contenido Problemas relativos a los proyectos Introducción y motivación para utilizar a Arduino Entrada y salida (IO) analógica y digital Alarma de ventanas abiertas
IO analógicas y digitales Funcionamiento Se conecta la tarjeta Uso: Se asigna el modo (IO) a los distintos pines. Entrada digital Salida digital Entrada analógica Salida analógica Se cierra la sesión y se desconecta
Conexión Se instala la librería (una sola vez) Se usa el comando a=arduino( COM# ), donde # es el número de puerto donde se encuentra el dispositivo, para conectar Matlab con la tarjeta y crear un objeto en el espacio de trabajo
Asignación del modo en los pines Se usa el comando a.pinmode(pin,str) para obtener o fijar el modo de un determinado pin. Ejemplo: >>a.pinmode(11, output ) >> a.pinmode(10, input ) >> a.pinmode(5) >> a.pinmode;
Lectura digital (Input digital) Se usa el comando a.digitalread(pin) para leer el estatus digital de un pin: Ejemplos: >>val=a.digitalread(4) Devuelve el valor (0 o 1) del pin digital número 4.
Ejemplo lectura digital
Escritura digital (Output digital) Se utiliza el comando a.digitalwrite(pin,val), donde el número de pin es el primer argumento y el valor (0 o 1) como segundo argumento: Ejemplos: a.digitalwrite(13,1); % pone el pin #13 en uno lógico a.digitalwrite(13,0); %pone el pin #13 en cero lógico
Ejemplo: Escritura Digital
Lectura analógica (Input analógica) Se usa el comando val=a.analogread(pin), donde el pin es un valor entero; Ejemplo: val=a.analogread(0); %lee el valor del pin # 0 El argumento que regresa son valores entre 0 y 1023.
Ejemplo lectura analógica
Escritura analógica (Output analógico, PWM) Se usa el comando a.analogwrite(pin,val) con el número de pin como primer argumento y el valor (de 0 a 255) como segundo argumento: Ejemplo: a.analogwrite(11,90); %pone el pin #11 a 90 a.analogwrite(3,10); %pone el pin #3 a 10
Ejemplo: Escritura Analógica
Desconectar Se usa el comando delete(a) para desconcetar la sesión de Matlab del Arduino.
Contenido Problemas relativos a los proyectos Introducción y motivación para utilizar a Arduino Entrada y salida (IO) analógica y digital Alarma de ventanas abiertas