Inicio

lunes, 14 de mayo de 2018

LABORATORIO NRO 11

PROGRAMACIÓN CON ARDUINO
PROYECTO NRO 3



FASE 3: RUTINAS DEL PASTILLERO


I. CAPACIDAD TERMINAL
  •  Utilizar al micro controlador en aplicaciones de control electrónico.
  •  Desarrollar y ejecutar programas en un microcontrolador PIC.
  •  Programar y configurar interfaces básicas del micro controlador.
II. COMPETENCIA ESPECIFICA DE LA SESIÓN

  •  Conocer el entorno ARDUINO
  •  Instalar y configurar IDE ARDUINO
  •  Familiarizarce con la programación.
III. CONTENIDOS A TRATAR
  • Plataforma arduino, entradas y salidas digitales. Estructuras de control. Aplicaciones al control.
IV. RESULTADOS
  • Diseñan y optimizan sistemas y procesos para cumplir con las condiciones establecidas y gestionando adecuadamente los recursos materiales y humanos.

V. MATERIALES Y EQUIPO
  •  IDE Arduino instalado.
  • Tarjeta ARDUINO UNO
  •  Protoboard y accesorios
  • Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
  • PC con Software de simulación.
VI. FUNDAMENTO TEÓRICO
  •  Revise el siguiente link:
  •  www.coursera.org
  •  Curso a inscribirse: Arduino y algunas aplicaciones
VII. TAREAS GUIADAS DENTRO DEL LABORATORIO:
  1.  Ingrese a la página www.coursera.org y regístrese en el mismo
  2.  Busque el curso “Arduino y algunas aplicaciones” e inscríbase en él.
  3.  Visualice el video “De los microcontroladores a la tarjeta Arduino” y responda el cuestionario respectivo.
  4.  Visualice el video “Descarga e instalación del software de Arduino” y responda el cuestionario respectivo.
  5.  SEMANA 2: Visualice el video “Explorando el ambiente de programación con la ejecución de link” y responda el cuestionario respectivo.

VIII. EVIDENCIA DEL LABORATORIO:


1. Investigue sobre los siguientes temas: Diagrama de la tarjeta Arduino UNO, Hoja técnica del uC utilizado en el mismo. Funcionamiento del Bootloader

QUE ES UN ARDUINO
  • Arduino es una plataforma de prototipos electrónica de código abierto (open – source) basada en hardware y software flexibles y  fáciles de usar.
  • Arduino trabaja como controlador de un entorno mediante la recepción de entradas desde una variedad de sensores y puede afectar a su alrededor mediante el control de luces motores y otros artefactos.
  • El microcontrolador ATmega 2560 de la placa se programa usando el “Arduino programming language”(Basado en wiring) y el “Arduino Develoment Environmet”(basado en Processing). 
  • Los proyectos de Arduino pueden ser autónomos o se pueden comunicar con software en ejecución un ordenador (por ejemplo el FLASH,PROCESSING,MaxMSP,etc).
Las características generales de todas las placas Arduino son las siguientes: 
  • El microprocesador ATmega328 
  • 32 kbytes de memoria Flash 
  • 1 kbyte de memoria RAM 
  • 16 MHz
  • 13 pins para entradas/salidas digitales (programables) 
  • 5 pins para entradas analógicas 
  • 6 pins para salidas analógicas (salidas PWM) 
  • Completamente autónomo: Una vez programado no necesita estar
  • conectado al PC 
  • Microcontrolador ATmega328 
  • Voltaje de operación 5V 
  • Voltaje de entrada (recomendado) 7-12 V 
  • Voltaje de entrada (limite) 6-20 V 
  • Digital I/O Pins 14 (con 6 salidas PWM) 
  • Entradas analógicas Pins 6 
  • DC corriente I/O Pin 40 mA 
  • DC corriente 3.3V Pin 50 mA 
  • Memoria Flash 32 KB (2 KB para el bootloader) 
  • SRAM 1 KB 
  • EEPROM 512 byte 
  • Velocidad de reloj 16 MHz



FUNCIONAMIENTO DEL BOOTLOADER

Cuando cargamos un programa en Arduino desde el USB con el IDE, estamos haciendo uso del bootloader, se trata de un pequeño programa que ha sido guardado previamente en el microcontrolador de la placa y que nos permite cargar código sin necesidad de hardware adicional. El bootloader solo está activo unos segundos cuando se resetea el Arduino y después comienza el sketch que está cargado en la flash de Arduino y que hemos programado y subido a la placa.El bootloader se ejecuta cuando el microcontrolador se enciende o se pulsa el botón reset, durante un corto espacio de tiempo espera que le llegue por el puerto serie un nuevo sketch desde el IDE de Arduino (este distingue un sketch de otra cosa porque tiene un formato definido). Si llega un sketch, este es guardado en la memoria flash y ejecutado, en caso contrario ejecuta el sketch anteriormente cargado.La mayoría de los Arduinos tienen la función autoreset que permite al IDE de Arduino subir el código sin tener que pulsar el botón de reset.El bootloader hace que parpadee el pin 13 (led integrado en la placa) cuando se ejecuta.La mayoría de los microcontroladores de AVR pueden reservar una zona de la memoria flash (entre 256B a 4 KB) para el bootloader. El programa bootloader reprograma el microcontrolador para guardar en la memoria flash el código binario a través de cualquier interface disponible.El bootloader de Arduino está programado en la memoria flash del ATMega328p y ocupa 0,5 KB de los 32KB disponibles. Este bootloader viene precargado en la memoria flash del microcontrolador y es lo que diferencia el ATMega328p de Arduino de otro que viene de fábrica.El Arduino UNO viene con el microcontrolador ATMega328p precargado con un bootloader que permite cargar nuevo código sin un programador. El bootloader se comunica usando el protocolo STK500.El protocolo STK500 http://www.atmel.com/Images/doc2525.pdf es propio de Atmel. Es un protocolo serie y los programadores emulan este protocolo sobre un puerto serie virtual en un USB. Originalmente STK500 fue un programador fabricado por Atmel y a raíz de ello liberaron el protocolo STK500.
FUNCIONAMIENTO DEL uC
PARÁMETROSVALORES
Flash32 Kbytes
SRAM2 Kbytes
Cantidad Pines28
Frecuencia máxima de operación20 MHz
CPU8-bit AVlR
Pines máximos de E/S23
Interrupciones internas24
SPI1
UART1
Canales ADC8
Resolución de ADC10
Eeprom1K
Canales PWM6
Voltaje de operación1.8-5.5 v
Timers3

El Atmega328 AVR 8-bit es un Circuito integrado de alto rendimiento que está basado un microcontrolador RISC, combinando 32 KB ISP flash una memoria con la capacidad de leer-mientras-escribe, 1 KB de memoria EEPROM, 2 KB de SRAM, 23 líneas de E/S de propósito general, 32 registros de proceso general, tres temporizadores flexibles/contadorescon modo de comparación, interrupciones internas y externas, programador de modo USART, una interfaz serial orientada a byte de 2 cables, SPI puerto serial, 6-canales 10-bit Conversor A/D (canales en TQFP y QFN/MLF packages), "watchdog timer" programable con oscilador interno, y cinco modos de ahorro de energía seleccionables por software. El dispositivo opera entre 1.8 y 5.5 voltios. Por medio de la ejecución de poderosas instrucciones en un solo ciclo de reloj, el dispositivo alcanza una respuesta de 1 MIPS, balanceando consumo de energía y velocidad de proceso 

3. EL IDE DEL PROGRAMA:

/* Programa PastilleroV10.ino
 Controla la operación del pastillero.
 Contiene, además de las funciones setup() y loop(),
 las funciones ConversionHminMs(), ConversionMsHmin(),
 ActivaMotor(), Alarma(), Despliegue(),
 DespliegueHoraToma() e Interruptor(). */
// Variables Alarma
int pinBuzzer = 15;
int pinLed1 = 16;
int pinLed2 = 17;
int pinBoton = 2;
boolean banderaAlarma = HIGH;
int rep;
int numRep = 10;
int tiempoEnc = 600;
int tiempoApag = 400;
int tiempoEspera = 9900;
// Variables ActivaMotor
int pinIntLamina = 5;
int pinIN1 = 7;
int pinIN2 = 8;
int pinPWM = 9;
boolean estadoIntLamina;
int valorPWM = 230;
long tiempoActivacion[5];
int toma = 0;
// Variables Despliegue
long tiempoMs;
long tiempoBase;
long tiempoActual;
long hora;
long minuto;
long horaActual;
long minActual;
int tiempoRet = 19000;
// Se incluye el código de la biblioteca del LCD
#include <LiquidCrystal.h>
// Inicializa la biblioteca con el número de los pines
LiquidCrystal lcd(4, 6, 11, 12, 13, 14);
// Función setup
void setup()
{
// Hora de reinicio
 hora = 8;
 minuto = 40;
// Cálculo tiempo base
 ConversionHminMs();
 tiempoBase = tiempoMs;
// Configuración del número de columnas y renglones del LCD
 lcd.begin(16,2);
// Configuración terminales buzzer, led y botón alarma
 pinMode(pinBuzzer, OUTPUT);
 pinMode(pinLed1, OUTPUT);
 pinMode(pinLed2, OUTPUT);
 pinMode(pinBoton, INPUT);
 attachInterrupt(0, Interruptor, RISING);
// Configuración terminales del puente H y del interruptor
 pinMode(pinIN1, OUTPUT);
 pinMode(pinIN2, OUTPUT);
 pinMode(pinIntLamina, INPUT);
// Cálculo tiempos de activación del motor
// Hora de la primera toma
 hora = 8;
 minuto = 40;
 ConversionHminMs();
 tiempoActivacion[0] = tiempoMs;
// Hora de la segunda toma
 hora = 8;
 minuto = 42;
 ConversionHminMs();
 tiempoActivacion[1] = tiempoMs;
// Hora de la tercera toma
 hora = 8;
 minuto = 43;
 ConversionHminMs();
 tiempoActivacion[2] = tiempoMs;
// Hora de la cuarta toma
 hora = 8;
 minuto = 44;
 ConversionHminMs();

 tiempoActivacion[3] = tiempoMs;
// En caso de que haya más tomas, agregarlas a continuación:
// Hora final
 hora = 23;
 minuto = 59;
 ConversionHminMs();
 tiempoActivacion[4] = tiempoMs;
}
// Función loop
void loop()
{
// Envío señales iniciales al puente H: motor detenido
 digitalWrite(pinIN1, 0);
 digitalWrite(pinIN2, 0);
 analogWrite(pinPWM, valorPWM);
 Despliegue();
 delay(tiempoRet);
/* Mientras el tiempoActual sea menor que el tiempoActivacion[toma]
 + tiempoBase, sólo despliega la hora */
 do
 {
 Despliegue();
 delay(tiempoRet);
 tiempoActual = millis() + tiempoBase;
 } while(tiempoActual < tiempoActivacion[toma]);
/* Cuando el tiempoActual es mayor que el tiempoActivacion[toma]
 se sale de la estructura do–while, activa el motor, despliega la
 hora de toma y enciende la alarma */
 ActivaMotor();
 banderaAlarma = HIGH;
 do
 {
 // Despliegue de la hora de toma
 DespliegueHoraToma();
 Alarma();
 } while(banderaAlarma == HIGH);
/* La alarma se apagará cuando se oprima el botón de apagado, el
 cual hará que la variable banderaAlarma tome el valor LOW, de
 manera que se saldrá de la estructura do–while anterior */
// Borra lcd
 lcd.clear();
 toma++;

}
/* Función ConversionHminMs
 Convierte el tiempo en horas y minutos a milisegundos */
void ConversionHminMs()
{
 minuto = minuto + hora*60;
 tiempoMs = minuto*60000;
}
/* Función ConversionMsHmin
 Convierte el tiempo en milisegundos a horas y minutos */
void ConversionMsHmin()
{
 horaActual = tiempoActual/60/60000;
 minActual = tiempoActual/60000 - horaActual*60;
}
/* Función Despliegue
 Despliega en un LCD la hora, con formato hora:minutos 24 h
* Pin RS del LCD al pin 4
* Pin E del LCD al pin 6
* Pin D4 del LCD al pin 11
* Pin D5 del LCD al pin 12
* Pin D6 del LCD al pin 13
* Pin D7 del LCD al pin 14
* Pin R/W del LCD a tierra */
void Despliegue()
{
// Calcula el tiempoActual con respecto al tiempoBase
 tiempoActual = millis() + tiempoBase;
// Conversión del tiempoActual a horas:munutos
 ConversionMsHmin();
// Se inicializa el LCD
 lcd.begin(16,2);
// Se coloca el cursor en el origen
 lcd.setCursor(0,0);
// Limpia el primer renglón
 lcd.print(" ");
// Se coloca el cursor en el origen
 lcd.setCursor(0,0);
// Escribe el letrero Hora
 lcd.print("Hora ");
// Escribe horas:minutos

 lcd.print(horaActual);
 lcd.print(":");
 lcd.print(minActual);
}
/* Función Activa Motor
 Controla el motor de CD del pastillero, con base en
 la señal de un interruptor de lámina activa alta */
void ActivaMotor()
{
 do
 {
 digitalWrite(pinIN1, 1);
 estadoIntLamina = digitalRead(pinIntLamina);
 } while(estadoIntLamina == HIGH);
 delay(200);
 do
 {
 digitalWrite(pinIN1, 1);
 estadoIntLamina = digitalRead(pinIntLamina);
 } while(estadoIntLamina == LOW);
 digitalWrite(pinIN1, 0);
}
/* Función Alarma
 Hace sonar intermitentemente un buzzer, y al mismo tiempo
 prende un led intermitentemente, hasta que se oprime el
 botón de apagado de la alarma */
void Alarma()
{
 for (rep = 0; rep < numRep; rep++)
 {
 digitalWrite(pinBuzzer, HIGH);
 digitalWrite(pinLed1, HIGH);
 digitalWrite(pinLed2, HIGH);
 delay(tiempoEnc);
 digitalWrite(pinBuzzer, LOW);

 digitalWrite(pinLed1, LOW);
 digitalWrite(pinLed2, LOW);
 delay(tiempoApag);
 }
 delay(tiempoEspera);
}
/* Función Interruptor
 Rutina de servicio de interrupción */
void Interruptor()
{
 banderaAlarma = LOW;
}
/* Función DespliegueHoraToma
 Despliega en el segundo renglón del LCD la hora de la toma de
 las pastillas, indicando también a qué toma corresponde */
void DespliegueHoraToma()
{
 Despliegue();
// Calcula el tiempo de la toma con respecto al tiempoBase
 tiempoActual = tiempoActivacion[toma];
// Conversión del tiempoActual a horas:munutos
 ConversionMsHmin();
// Se coloca el cursor en el origen del segundo renglón
 lcd.setCursor(0,1);
// Limpia el segundo renglón
 lcd.print(" ");
// Se coloca el cursor en el origen
 lcd.setCursor(0,1);
// Escribe el número de la toma
 lcd.print(toma+1);
// Escribe el letrero "a toma "
 lcd.print("a toma ");
// Escribe horas:minutos
 lcd.print(horaActual);
 lcd.print(":");
 lcd.print(minActual);



EVIDENCIA DEL PROGRAMA CARGADO:



4. EVIDENCIA VIDEO DEL PROGRAMA EL EL DRIVER Y PROTOVOAR



LINK DEL VIDEO:





5.FOTO GRUPAL



6. OBSERVACIONES 

  • Existen plataformas de hardware libre, como lo es el Arduino, una placa con un controlador y un entorno de desarrollo, su sencillez y bajo costo nos permiten hacer múltiples diseños y múltiples tipos de uso de éste.
  • El uso del Arduino permite realizar muchas tareas, ahorrando elementos electrónicos y en sustitución, el uso de un lenguaje de programación, lo que hace que sea de muy fácil uso.
  • El experimento usará elementos electrónicos, y se decidió hacer algo que involucrara los elementos electrónicos que vimos en horario de clases, además que fuera algo novedoso y singular.
  •  Este tipo de proyectos nos ayudan a aumentar nuestras capacidades, y más desde primer semestre

7. CONCLUSIONES

  •  Se conoció un poco más sobre las partes utilidades ventajas del Arduino
  • EL proyecto se mostró el tipo de plataforma de desarrollo que se puede emplear, utilizando Arduino y sus distintas aplicaciones de uso.
  •  Tener conocimientos básicos de electrónica y electricidad para las conexiones ya que es importante tener conocimientos de programación en lenguaje java y lenguaje C, para el desarrollo de la lógica de encendido y apagado de leds que interpretara la placa Arduino.


    IX. RESÚMEN
    •  IDE Arduino
    X. PROXIMO LABORATORIO:
    •  Programación de Chaleco para ciclista
    XI. BIBLIOGRAFIA Y WEBGRAFIA RECOMENDADA
    •  Marin, Francisco (2007) Diseño basado en microcontroladores. Málaga: Universidad de Málaga. (004.16/M26D).
    •  Pereira, Fabio (2007) Microcontroladores PIC. Sao Paulo:s.n. (005.13/P43).
    •  José María Angulo Usátegui [y otros]. (2007) Electrónica digital y microprogramable .Madrid: Thomson. (621.381/A37/I).

    lunes, 7 de mayo de 2018

    CHALECO PARA CICLISTAS

    Programación con Arduino chaleco para ciclistas


    1 1.    Competencias Especificas  

    Utilizar el micro controlador  en aplicaciones de control electrónico 
    Desarrollar y ejecutar programas en un micro-controlado     
    Programar y  configurar interfaces básicas del micro controlador.   

    2.    Marco Teórico      
           
    Funciones de lectura y escritura digital en arduino      

    Una función es un conjunto de líneas de código que realizan una tarea específica y pueden retornar un valor. Las funciones pueden tomar parámetros que modifiquen su funcionamiento, por ejemplo algunas  funciones son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de códigos.

    Nuestro Arduino no sólo puede enviar señales sino que también puede recibirlas con dos propósitos principales como son leer datos de sensores y recibir mensajes de otros dispositivos (shield, otro Arduino, PC, etc.). Las entradas las clasificaremos en analógicas y digitales

    Entradas analógicas



    Ideales para la lectura y escritura de valores análogos, las entradas analógicas del modelo Uno son las correspondientes a los pines de A0 a A5. Se caracterizan por leer valores de tensión de 0 a 5 Voltios con una resolución de 1024 (10 bits). Si dividimos 5 entre 1024 tenemos que ser capaz de detectar variaciones en el nivel de la señal de entrada de casi 5 mV.


    Para hacer la lectura de uno de estos pines escribiremos en nuestro código


    “lectura” lo sustituimos por el nombre de la variable donde queramos almacenar el valor leído y en “pinentrada” tendremos que poner el número del pin analógico que hemos elegido (0,1,...5) o el nombre de la variable que almacena dicho número


    Entradas digitales

    Las entradas digitales son las mismas que las salidas digitales, es decir, los pines que van del 1 al 13. Se diferencian de las analógicas porque éstas son capaces de “entender” sólo dos niveles de señal, LOW o valores cercanos a 0 V y HIGH o valores cercanos a 5 V. Puede parecer una desventaja pero en realidad puede ser todo lo contrario.

     Y no sólo porque a veces únicamente necesitemos saber dos estados (interruptor, pulsador, sensor de presencia, final de carrera....) sino porque así es capaz de leer señales de pulsos digitales. Esto significa que puede comunicarse 


    Por poner un ejemplo, un sensor analógico de temperatura como es el LM35 incrementaría el nivel de la tensión que llega a la placa de forma proporcional a la temperatura. Sin embargo, uno digital como el ds18b20 lo que haría es cambiar la sucesión de pulsos y por tanto el mensaje que contiene el valor de la temperatura.
    Aunque los pines digitales por defecto vienen configurados como entradas, si queremos hacerlo manualmente escribimos en nuestro código




    Para almacenar los dos valores posibles LOW o HIGH en una variable llamada “lectura” escribimos





    Estructura básica de un programa

    La estructura básica de programación de Arduino es bastante simple y divide la ejecución en dos partes: setup y loop. Setup() constituye la preparación del programa y loop() es la ejecución. En la función Setup() se incluye la declaración de variables y se trata de la primera función que se ejecuta en el programa. 

    Esta función se ejecuta una única vez y es empleada para configurar el pinMode (p. ej. si un determinado pin digital es de entrada o salida) e inicializar la comunicación serie. La función loop() incluye el código a ser ejecutado continuamente (leyendo las entradas de la placa, salidas, etc.).


    Como se observa en este bloque de código cada instrucción acaba con ; y los comentarios se indican con //. Al igual que en C se pueden introducir bloques de comentarios con /* ... */.

    TRABAJO DE INVESTIGACION

    DIFERENCIA Y SIMILITUDES ENTRE PIC Y ARDUINO



    Inicialmente se deben conocer los dos tipos de Microcontroladores de los que se discutirá en este foro

    -PIC


    Es un microcontrolador de Microchip, es un microcontrolador muy popular hasta hace un par de años era el microcontrolador más vendido en el mundo, sin embargo su popularidad ha bajado desde la llegada del conocido arduino, un micro controlador es un dispositivo que se puede programar para hacer diferentes tareas , es capaz de realizar muchas tareas, algo así como el CPU de una computadora, pero a diferencia de sin alguna interface no podríamos hacer uso de él.



    -Arduino 

    Es una plataforma de código abierto con la cual un entusiasta de la electrónica puede crear proyectos de electrónica digital, domótica, robótica , etc. de forma rápida y sencilla además de económica, es decir tiene las tres "B" Bueno Bonito y Barato, y es que los cientos de proyectos que andan circulando por la red son realmente increíbles. Su placa más popular el Arduino UNO,

    Esta comparación no será específicamente ente Microcontroladores ATmel y MICROCHIP, aunque en parte se tomarán en cuenta sus características de Arquitectura. Empecemos con la siguiente afirmación, no existe comparación entre los microcontroladores actuales de 8 bits ATmel y los de MICROCHIP, los microcontroladores de ATmel son de una tecnología más reciente, mientras de los de MICROCHIP llevan muchos años en el mercado, por lo tanto no extraña que los ATmega sean mejores en sus características.


    Por lo tanto un ATmega328 supera en creces a un PIC10F, PIC12F, PIC16F e incluso a un PIC18F. Pero también según reseñas que he leído el microcontrolador de MICROCHIP de 16 y 32 bits supera en creces a los Atmel de 16 y 32 bits.





    Pero volvamos al tema de Arduino y PICAXE, así que te invito a que leas y sobre todo ANALICES la siguiente tabla 










    3. TAREAS GUIADAS DENTRO DEL LABORATORIO: 

    3.1. Ingrese a la página www.coursera.org e inicie sesión en el mismo.
    3.2. En la SEMANA 2, vea el video “Armado del prototipo de chaleco para ciclistas” y responda el cuestionario respectivo.
    3. Vea el video “Programando la rutina de alto para el prototipo de chaleco para ciclistas” y
    responda el cuestionario respectivo.
    4. Vea el video “Programando la rutina de vuelta a la derecha con estructuras para el prototipo de
    chaleco para ciclistas” y responda el cuestionario respectivo.
    5. Vea el video “Programando la rutina de vuelta a la derecha simple para el prototipo de chaleco
    para ciclistas” y responda el cuestionario respectivo.
    6. Vea el video “Programando la rutina ociosa simple para el prototipo de chaleco para ciclistas” y
    responda el cuestionario respectivo.
    7. Vea el video “Integración de las rutinas para el prototipo de chaleco para ciclistas” y responda
    el cuestionario respectivo.
    8. Envíe la tarea solicitada para ser revisada por sus compañeros.


    EVIDENCIA:

    LINKS DEL VIDEO







    OBSERVACIONES

    Debemos de tener en cuenta la conexion de la tarjeta arduino con la pc, verificar el puerto com y los controladores de este.

    Incluir las librerias necesarias y verificar el programa hasta que pueda compilar.

    Verificar el estado de los componentes a usar para no tener problemas en el circuito y asi mismo controlar la programacion. 


    CONCLUSIONES 

    Verificamos que la placa arduino esta constituida con un microcontrolador atmega328p. Tiene su propio quemador y esto hace que solo necesitemos la placa para transferir datos.

    Aprendimos a usar el programador, verificamos que le lenguaje es muy parecido al de cs compiler, asi que la programcion ya es familiar para nosotros.

    Podemos asigna variables, entradas y salidas (analogicas y diigtales),realizar tareas en nuestra placa para asi poer llegar a tener un control elecronico muy facil de un proceso y editarlo para poder mejorar su comportamiento.

    Realizamos modificaciones a los programas para cmabiar su comportamiento y asi poder evidenciar que arendimos y entendimos la programacion. En esta etapa entendimos los comandos void setup, void loop, int , bool, for, while, do. 

    lunes, 23 de abril de 2018

    LABORATORIO NRO 9

    PROGRAMACIÓN CON ARDUINO
    PROYECTO NRO 3

    FASE 1: Programar en Arduino

    I. CAPACIDAD TERMINAL
    •  Utilizar al micro controlador en aplicaciones de control electrónico.
    •  Desarrollar y ejecutar programas en un microcontrolador PIC.
    •  Programar y configurar interfaces básicas del micro controlador.

    II. COMPETENCIA ESPECIFICA DE LA SESIÓN

    •  Conocer el entorno ARDUINO
    •  Instalar y configurar IDE ARDUINO
    •  Familiarizarce con la programación.

    III. CONTENIDOS A TRATAR
    • Plataforma arduino, entradas y salidas digitales. Estructuras de control. Aplicaciones al control.
    IV. RESULTADOS
    • Diseñan y optimizan sistemas y procesos para cumplir con las condiciones establecidas y gestionando adecuadamente los recursos materiales y humanos.

    V. MATERIALES Y EQUIPO
    •  IDE Arduino instalado.
    • Tarjeta ARDUINO UNO
    •  Protoboard y accesorios
    • Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
    • PC con Software de simulación.

    VI. FUNDAMENTO TEÓRICO
    •  Revise el siguiente link:
    •  www.coursera.org
    •  Curso a inscribirse: Arduino y algunas aplicaciones
    VII. TAREAS GUIADAS DENTRO DEL LABORATORIO:
    1.  Ingrese a la página www.coursera.org y regístrese en el mismo
    2.  Busque el curso “Arduino y algunas aplicaciones” e inscríbase en él.
    3.  Visualice el video “De los microcontroladores a la tarjeta Arduino” y responda el cuestionario respectivo.
    4.  Visualice el video “Descarga e instalación del software de Arduino” y responda el cuestionario respectivo.
    5.  SEMANA 2: Visualice el video “Explorando el ambiente de programación con la ejecución de link” y responda el cuestionario respectivo.

    VIII. EVIDENCIA DEL LABORATORIO:


    1. Investigue sobre los siguientes temas: Diagrama de la tarjeta Arduino UNO, Hoja técnica del uC utilizado en el mismo. Funcionamiento del Bootloader

    QUE ES UN ARDUINO

    • Arduino es una plataforma de prototipos electrónica de código abierto (open – source) basada en hardware y software flexibles y  fáciles de usar.
    • Arduino trabaja como controlador de un entorno mediante la recepción de entradas desde una variedad de sensores y puede afectar a su alrededor mediante el control de luces motores y otros artefactos.
    • El microcontrolador ATmega 2560 de la placa se programa usando el “Arduino programming language”(Basado en wiring) y el “Arduino Develoment Environmet”(basado en Processing). 
    • Los proyectos de Arduino pueden ser autónomos o se pueden comunicar con software en ejecución un ordenador (por ejemplo el FLASH,PROCESSING,MaxMSP,etc).
    Las características generales de todas las placas Arduino son las siguientes: 
    • El microprocesador ATmega328 
    • 32 kbytes de memoria Flash 
    • 1 kbyte de memoria RAM 
    • 16 MHz
    • 13 pins para entradas/salidas digitales (programables) 
    • 5 pins para entradas analógicas 
    • 6 pins para salidas analógicas (salidas PWM) 
    • Completamente autónomo: Una vez programado no necesita estar
    • conectado al PC 
    • Microcontrolador ATmega328 
    • Voltaje de operación 5V 
    • Voltaje de entrada (recomendado) 7-12 V 
    • Voltaje de entrada (limite) 6-20 V 
    • Digital I/O Pins 14 (con 6 salidas PWM) 
    • Entradas analógicas Pins 6 
    • DC corriente I/O Pin 40 mA 
    • DC corriente 3.3V Pin 50 mA 
    • Memoria Flash 32 KB (2 KB para el bootloader) 
    • SRAM 1 KB 
    • EEPROM 512 byte 
    • Velocidad de reloj 16 MHz



    FUNCIONAMIENTO DEL BOOTLOADER

    Cuando cargamos un programa en Arduino desde el USB con el IDE, estamos haciendo uso del bootloader, se trata de un pequeño programa que ha sido guardado previamente en el microcontrolador de la placa y que nos permite cargar código sin necesidad de hardware adicional. El bootloader solo está activo unos segundos cuando se resetea el Arduino y después comienza el sketch que está cargado en la flash de Arduino y que hemos programado y subido a la placa.El bootloader se ejecuta cuando el microcontrolador se enciende o se pulsa el botón reset, durante un corto espacio de tiempo espera que le llegue por el puerto serie un nuevo sketch desde el IDE de Arduino (este distingue un sketch de otra cosa porque tiene un formato definido). Si llega un sketch, este es guardado en la memoria flash y ejecutado, en caso contrario ejecuta el sketch anteriormente cargado.La mayoría de los Arduinos tienen la función autoreset que permite al IDE de Arduino subir el código sin tener que pulsar el botón de reset.El bootloader hace que parpadee el pin 13 (led integrado en la placa) cuando se ejecuta.La mayoría de los microcontroladores de AVR pueden reservar una zona de la memoria flash (entre 256B a 4 KB) para el bootloader. El programa bootloader reprograma el microcontrolador para guardar en la memoria flash el código binario a través de cualquier interface disponible.El bootloader de Arduino está programado en la memoria flash del ATMega328p y ocupa 0,5 KB de los 32KB disponibles. Este bootloader viene precargado en la memoria flash del microcontrolador y es lo que diferencia el ATMega328p de Arduino de otro que viene de fábrica.El Arduino UNO viene con el microcontrolador ATMega328p precargado con un bootloader que permite cargar nuevo código sin un programador. El bootloader se comunica usando el protocolo STK500.El protocolo STK500 http://www.atmel.com/Images/doc2525.pdf es propio de Atmel. Es un protocolo serie y los programadores emulan este protocolo sobre un puerto serie virtual en un USB. Originalmente STK500 fue un programador fabricado por Atmel y a raíz de ello liberaron el protocolo STK500.
    FUNCIONAMIENTO DEL uC
    PARÁMETROSVALORES
    Flash32 Kbytes
    SRAM2 Kbytes
    Cantidad Pines28
    Frecuencia máxima de operación20 MHz
    CPU8-bit AVlR
    Pines máximos de E/S23
    Interrupciones internas24
    SPI1
    UART1
    Canales ADC8
    Resolución de ADC10
    Eeprom1K
    Canales PWM6
    Voltaje de operación1.8-5.5 v
    Timers3

    El Atmega328 AVR 8-bit es un Circuito integrado de alto rendimiento que está basado un microcontrolador RISC, combinando 32 KB ISP flash una memoria con la capacidad de leer-mientras-escribe, 1 KB de memoria EEPROM, 2 KB de SRAM, 23 líneas de E/S de propósito general, 32 registros de proceso general, tres temporizadores flexibles/contadorescon modo de comparación, interrupciones internas y externas, programador de modo USART, una interfaz serial orientada a byte de 2 cables, SPI puerto serial, 6-canales 10-bit Conversor A/D (canales en TQFP y QFN/MLF packages), "watchdog timer" programable con oscilador interno, y cinco modos de ahorro de energía seleccionables por software. El dispositivo opera entre 1.8 y 5.5 voltios. Por medio de la ejecución de poderosas instrucciones en un solo ciclo de reloj, el dispositivo alcanza una respuesta de 1 MIPS, balanceando consumo de energía y velocidad de proceso .






    2. IMAGENES DE LAS NOTAS OBTENIDAS EN EL CURSO VIRTUAL COURSERA


















    3.IMAGENES  MOSTRANDO EL IDE EN EL DRIVER







    4. VIDEO DEL PROGRAMA EL EL DRIVER Y PROTOVOAR












    5.FOTO FRUPAL









    6. OBSERVACIONES 

    • ·         Existen plataformas de hardware libre, como lo es el Arduino, una placa con un controlador y un entorno de desarrollo, su sencillez y bajo costo nos permiten hacer múltiples diseños y múltiples tipos de uso de éste.
    • ·         El uso del Arduino permite realizar muchas tareas, ahorrando elementos electrónicos y en sustitución, el uso de un lenguaje de programación, lo que hace que sea de muy fácil uso.
    • ·         El experimento usará elementos electrónicos, y se decidió hacer algo que involucrara los elementos electrónicos que vimos en horario de clases, además que fuera algo novedoso y singular.
    • ·         Este tipo de proyectos nos ayudan a aumentar nuestras capacidades, y más desde primer semestre

    7. CONCLUSIONES

    • ·         Se conoció un poco más sobre las partes utilidades ventajas del Arduino
    • ·          EL proyecto se mostró el tipo de plataforma de desarrollo que se puede emplear, utilizando Arduino y sus distintas aplicaciones de uso.
    • ·         Tener conocimientos básicos de electrónica y electricidad para las conexiones ya que es importante tener conocimientos de programación en lenguaje java y lenguaje C, para el desarrollo de la lógica de encendido y apagado de leds que interpretara la placa Arduino.


    IX. RESÚMEN
    •  IDE Arduino
    X. PROXIMO LABORATORIO:
    •  Programación de Chaleco para ciclista
    XI. BIBLIOGRAFIA Y WEBGRAFIA RECOMENDADA
    •  Marin, Francisco (2007) Diseño basado en microcontroladores. Málaga: Universidad de Málaga. (004.16/M26D).
    •  Pereira, Fabio (2007) Microcontroladores PIC. Sao Paulo:s.n. (005.13/P43).
    •  José María Angulo Usátegui [y otros]. (2007) Electrónica digital y microprogramable .Madrid: Thomson. (621.381/A37/I).