sábado, 25 de mayo de 2019

LABORATORIO N°11

MICROCONTROLADORES

LABORATORIO 11

Programación de Arduino 

  1. Capacidad Terminal
  • Utilizar al microcontrolador en aplicaciones de control electrónico.
  • Desarrollar y ejecutar programas en un microcontrolador PIC
  • Programar y configurar interfaces básicas del microcontrolador.
    2. Competencia Específica de la Sesión
    • Programar la tarjeta Arduino UNO utilizando el lenguaje gráfico y comparar con lenguaje de texto. 
    • Recibir datos de la tarjeta arduino en el monitor serie.
    • Realizar programación básica utilizando el software mencionado.
    3. Materiales y Equipos

    IDE Arduino




    Tarjeta ARDUINO UNO



    Componentes y accesorios


                                               
    4. Fundamento teórico:


    PWM
    • Arduino Uno tiene entradas analógicas que gracias a los conversores analógico digital puede entender ese valor el microcontrolador, pero no tiene salidas analógicas puras y para solucionar esto, usa la técnica de PWM.
    • Las Salidas PWM (Pulse Width Modulation) permiten generar salidas analógicas desde pines digitales. Arduino Uno no posee salidas analógicas puras.
    • La modulación por ancho de pulsos (también conocida como PWM, siglas en inglés de pulse-width modulation) de una señal o fuente de energía es una técnica en la que se modifica el ciclo de trabajo de una señal periódica (una senoidal o una cuadrada, por ejemplo), ya sea para transmitir información a través de un canal de comunicaciones o para controlar la cantidad de energía que se envía a una carga.
    • El ciclo de trabajo de una señal periódica es el ancho relativo de su parte positiva en relación con el período. duty cycle = (tiempo que la salida está a uno o HIGH)/ (periodo de la función).
    • En Arduino la frecuencia de PWM es de 500Hz. Pero es un valor que puede modificarse en caso que lo necesitemos.
    • En la actualidad existen muchos circuitos integrados en los que se implementa la modulación PWM, por ejemplo para lograr circuitos funcionales que puedan controlar fuentes conmutadas, controles de motores, controles de elementos termoeléctricos, choppers para sensores en ambientes ruidosos y algunas otras aplicaciones.

    5. Desarrollo de actividades indicadas en el laboratorio:

    • En el presente laboratorio se propone realizar la actividad mediante la visualización de los valores del voltaje en un rango de 0 a 25 en el monitor serie, para se requiere de utilizar cuatro led's y un potenciómetro; cada led se encenderá según la posición en la que se encuentre el potenciómetro, esto se puede interpretar a partir de los porcentajes de 10, 30, 70 y el 100% que sería cuando la perilla del potenciómetro se giró completamente.
    • Se muestra  en las siguientes imágenes la programación realizada la cual inicia con la declaración de los pines a usar tanto para los leds como para el potenciómetro, dentro de esta misma declaración ya se indica la configuración como salidas y entrada respectivamente; continuamos con la declaración de variables que en esta oportunidad serán de tipo flotante para así poder obtener valores con decimales y no solo enteros. Se declara ya valores destinados para posiciones del potenciómetro e intensidades correspondiente al brillo de los leds de acuerdo al porcentaje que se pide en el enunciado.  
    • En la parte de void Setup solo se introduce lo correspondiente para llevar a cabo la comunicación serial con el monitor serie de IDE Arduino. En void Loop se tiene que la lectura de los datos enviados del potenciómetro serán almacenados en la variable sensorValue que a su vez en la siguiente línea será multiplicado por 25 y dividido entre 1023 y guardado en la variable voltaje que al final será utilizado para mostrarse en el monitor serie. Continuando, se propone distintas condiciones que evalúa los valores de la variable sensorValue y de las posiciones ya previamente declarados anteriormente para obtener así cuatro estados que posteriormente serán evaluados en la parte de Switch Case. 
    • Una vez que se realiza lo anterior pasamos a la evaluación de las variables mencionadas anteriormente mediante la instrucción Switch Case; los estados que se determinaron a partir de las condiciones propuestas  pasan a ser evaluados en cada case para que así se determine el led que se encenderá más el mensaje dando a conocer la intensidad de brillo en un correspondiente rango de voltaje, tal como se muestra a continuación: 
    • Finalmente se muestra la implementación y conexión realizada para demostrar el funcionamiento de la programación.




          6. EVIDENCIA DE TRABAJO
          7. OBSERVACIONES Y RECOMENDACIONES

              OBSERVACIONES

    • Se observó, que fue necesario declarar variables en formato de dato de tipo flotante para poder así mostrar los números decimales y tener más precisión en lo que respecta a la obtención de datos.
    • Se observó que al modificar los valores de la intensidad de los leds utilizando la función map() el cambio de brillo se mostraba equitativo para todos y no cumplía con lo requerido en el presente ejercicio. 
    • Se observó que se tuvo que reemplazar la función map() por otra alternativa de aplicación ya que particularmente se presentaron varias dificultades para obtener estados que luego serían evaluados en la instrucción Switch Case.
    • Se observó que para lograr el establecer la intensidad de brillo en el porcentaje indicado también fue necesario proponer los datos que muestren la posición del potenciómetro.
            CONCLUSIONES
    • Se concluye que para un mejor desarrollo de trabajo es recomendable intentar nuevas alternativas para llegar a lo requerido.
    • Se concluye que en el monitor serie se pudo mostrar tanto el valor que incrementaba y disminuía como los mensajes destinados a mostrarse en ciertos valores que se indicaron en la programación realizada, para ello se utilizó las funciones Serial.print y Serial.println las cuales nos permiten escribir caracteres ASCII en el puerto Serial.
    • Se concluye que lfunción de Arduino pinMode permite configurar a cada pin, de forma individual, como entrada o como salida; en la programación realizada se le configuró como entrada para recepcionar el cambio de señal ocasionada al presionar el pulsador.
          8. BIBLIOGRAFÍA

    • 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)

           9. INTEGRANTE 

               Condori Ortíz, Daniel Agustín C5 - A














    LABORATORIO N°10

    MICROCONTROLADORES

    LABORATORIO 10

    Programación de Arduino 

    1. Capacidad Terminal
    • Utilizar al microcontrolador en aplicaciones de control electrónico.
    • Desarrollar y ejecutar programas en un microcontrolador PIC
    • Programar y configurar interfaces básicas del microcontrolador.
      2. Competencia Específica de la Sesión
      • Programar la tarjeta Arduino UNO utilizando el lenguaje gráfico y comparar con lenguaje de texto. 
      • Recibir datos de la tarjeta arduino en el monitor serie.
      • Realizar programación básica utilizando el software mencionado.
      3. Materiales y Equipos

      IDE Arduino




      Tarjeta ARDUINO UNO



      Componentes y accesorios


                                                 
      4. Fundamento teórico:


      ARDUINO UNO

      Es una placa electrónica basada en el microcontrolador ATmega328. Cuenta con 14 entradas/salidas digitales, de las cuales 6 se pueden utilizar como salidas PWM (Modulación por ancho de pulsos) y otras 6 son entradas analógicas. Además, incluye un resonador cerámico de 16 MHz, un conector USB, un conector de alimentación, una cabecera ICSP y un botón de reseteado. La placa incluye todo lo necesario para que el microcontrolador haga su trabajo, basta conectarla a un ordenador con un cable USB o a la corriente eléctrica a través de un transformador.

      CARACTERÍSTICAS TÉCNICAS DE ARDUINO UNO R3

      • Microcontrolador: ATmega328
      • Voltaje: 5V
      • Voltaje de entrada (recomendado): 7-12V
      • Voltaje de entrada (limites): 6-20V
      • Digital I/O Pin’s: 14 (de los cuales 6 son salida PWM)
      • Entradas Analógicas: 6
      • DC Current per I/O Pin: 40 mA
      • DC Current parar 3.3V Pin: 50 mA
      • Flash Memory: 32 KB (ATmega328) de los cuales 0.5 KB son utilizados para el arranque
      • SRAM: 2 KB (ATmega328)
      • EEPROM: 1 KB (ATmega328)
      • Clock Speed: 16 MHz
      INTRODUCCIÓN GENERAL A UNA PLACA ARDUINO

      Mirando a la placa desde la parte de arriba, este es el esquema de lo que puedes ver (los componentes de la placa con los que puedes interactuar en su uso normal están resaltados):


      Empezando según las agujas del reloj:
      • Terminal de referencia analógica (naranja)
      • Tierra digital (verde claro)
      • Terminales digitales 2-13 (verde)
      • Terminales digitales 0-1/ E/S serie – TX/RX (verde oscuro) – Estos pines no se pueden utilizar como e/s digitales (digitalRead() y digitalWrite()) si estás utilizando comunicación serie (por ejemplo Serial.begin).
      • Botón de reinicio – S1 (azul oscuro).
      • Programador serie en circuito «In-circuit Serial Programmer» o «ICSP» (azul celeste).
      • Terminales de entrada analógica 0-5 (azul claro).
      • Terminales de alimentación y tierra (alimentación: naranja, tierras: naranja claro).
      • Entrada de alimentación externa (9-12VDC) – X1 (rosa).
      • Selector de alimentación externa o por USB (coloca un jumper en los dos pines más cercanos de la alimentación que quieras) – SV1 (púrpura). En las versiones nuevas de Arduino la selección de alimentación es automática por lo que puede que no tengas este selector.
      • USB (utilizado para subir programas a la placa y para comunicaciones serie entre la placa y el ordenador; puede utilizarse como alimentación de la placa) (amarillo).
      Entradas y salidas digitales/analógicas
      Un sistema electrónico es cualquier disposición de componentes electrónicos con un conjunto definido de entradas y salidas. Una placa Arduino, por tanto, puede pensarse de forma simplificada como un sistema que acepta información en forma de señal de entrada, desarrolla ciertas operaciones sobre ésta y luego produce señales de salida.
      Justamente, una de las opciones que hacen más potente a Arduino son sus entradas/salidas digitales. ¿Entonces por qué hablamos de analógicas?
      En los sistemas electrónicos, una magnitud física variable se representa generalmente mediante una señal eléctrica que varía de manera tal que describe esa magnitud. Por lo general, se hace referencia a las señales continuas como señales analógicas, mientras que asociamos las señales discretas a señales digitales: el ejemplo más claro es el de las señales binarias, donde las señales sólo pueden tomar dos niveles, 0 o 1.
      Arduino incorpora terminales digitales (señales discretas) pero de tal forma que tenemos un gran abanico de valores con los que trabajar (por ejemplo, 255 valores de luz en un fotosensor, siendo 0 ausencia de luz y 254 el máximo valor lumínico).
      • Terminales Digitales: Las terminales digitales de una placa Arduino pueden ser utilizadas para entradas o salidas de propósito general a través de los comandos de programación pinMode(), digitalRead(), y digitalWrite(). Cada terminal tiene una resistencia pull-up que puede activarse o desactivarse utilizando digitalWrite() (con un valor de HIGH o LOW, respectivamente) cuando el pin esta configurado como entrada. La corriente máxima por salida es 40 mA.
        • Serial: 0 (RX) y 1 (TX). Utilizado para recibir (RX) y transmitir (TX) datos serie TTL. En el Arduino Diacemila, estas terminales están conectadas a las correspondientes patas del circuito integrado conversor FTDI USB a TTL serie. En el Arduino BT, están conectados a las terminales correspondientes del módulo Bluetooth WT11. En el Arduino Mini y el Arduino LilyPad, están destinados para el uso de un módulo serie TTL externo (por ejemplo, el adaptador Mini-USB).
        • Interruptores externos: 2 y 3. Estas terminales pueden ser configuradas para disparar una interrupción con un valor bajo, un pulso de subida o bajada, o un cambio de valor. Mira la función attachInterrupt() para más detalles.
        • PWM: 3, 5, 6, 9, 10, y 11. Proporcionan salidas PWM de 8 bit con la función analogWrite(). En placas con ATmega8, las salidas PWM solo están disponibles en los pines 9, 10, y 11.
        • Reset BT: 7. (solo en Arduino BT) Conectado a la línea de reset del módulo bluetooth.
        • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estas terminales soportan comunicación SPI. Aunque esta funcionalidad esta proporcionada por el hardware, no está incluida actualmente el el lenguaje Arduino.
        • LED: 13. En el Diacemila y el LilyPad hay un led en placa conectado al pin digital 13. cuando el pin tiene valor HIGH, el LED está encendido, cuando el pin está en LOW, está apagado.
      • Pines Analógicos: Los pines de entrada analógicos soportan conversiones analógico-digital (ADC) de 10 bit utilizando la función analogRead(). Las entradas analógicas pueden ser también usadas como pines digitales: entrada analógica 0 como pin digital 14 hasta la entrada analógica 5 como pin digital 19. Las entradas analógicas 6 y 7 (presentes en el Mini y el BT) no pueden ser utilizadas como pines digitales. I2C: 4 (SDA) y 5 (SCL). Soportan comunicaciones I2C (TWI) utilizando la librería Wire (documentación en la página web de Wiring).
      • Pines de alimentación:
        • VIN (a veces marcada como «9V»). Es el voltaje de entrada a la placa Arduino cuando se está utilizando una fuente de alimentación externa (En comparación con los 5 voltios de la conexión USB o de otra fuente de alimentación regulada). Puedes proporcionar voltaje a través de este pin. Date cuenta que diferentes placas aceptan distintos rangos de voltaje de entrada, por favor, mira la documentación de tu placa. También date cuenta que el LilyPad no tiene pin VIN y acepta solo una entrada regulada.
        • 5V. La alimentación regulada utilizada para alimentar el microcontrolador y otros componentes de la placa. Esta puede venir de VIN a través de un regulador en placa o ser proporcionada por USB u otra fuente regulada de 5V.
        • 3V3. Una fuente de 3.3 voltios generada por el chip FTDI de la placa.
        • GND. Pines de tierra.
      • Otros Pines
        • AREF. Referencia de voltaje para las entradas analógicas. Utilizada con la función analogReference().
        • Reset. Pon esta línea a LOW para resetear el microcontrolador. Utilizada típicamente para añadir un botón de reset a shields que bloquean el de la placa principal.
      5. Desarrollo de actividades indicadas en el laboratorio:
      • Elaborar un programa que INCREMENTE un número en 150 unidades cada vez que se presione un pulsador y DECREMENTE dicho número en 100 unidades cada vez que se presione otro pulsador. Si el valor del número supera 1000 unidades, mostrar en el monitor serie la primera línea: “VALOR MÁXIMO”. Si el valor llega a ser menor o igual a 10, mostrar “VALOR MÍNIMO”. En ambos casos el valor del número no debe incrementarse ni decrementarse.
      • Se muestra la programación realizada la cual inicia con la declaración de las variables value y cuenta con un valor inicial de cero; en void setup configuramos los pines donde se conectarán los pulsadores con la tarjeta arduino mediante la función pinMode como entradas ya que esperaremos acción de cada pulso que se ejecute, además de establecer la comunicación con el monitor serie. En void loop se indica la condición de que si se recibe señal en el pin 2 del primer pulsador la variable value incrementa su valor en 150 y esto se mostrará en el monitor serie mediante la escritura de Serial.println (value). Aprovechando que en este apartado se realiza el incremento entonces determinamos que si el valor de la variable es exactamente 1050 se debe enviar el mensaje de valor máximo, además de encenderse un led destinado desde el pin 13.
      • Para dar a entender que los datos están en el rango del valor máximo y el valor mínimo se propuso encender un led destinado desde el pin 12. Continuando, pasamos a mostrar que para empezar a descender la cuenta se espera la señal de el pin 3 en el cual se encuentra el segundo pulsador y partiendo del valor donde quedó la variable value se empezará a restar 100 unidades al mismo, mostrándose así también en nuestro monitor serie con la función Serial.println en un determinado tiempo de muestreo para ello se utilizó delay. Se destaca que aquí ya usamos la variable cuenta con la finalidad de que cuando el pin 3 reciba señal su valor se incremente en uno.

      • Finalmente, para que en el monitor serie se muestre el mensaje valor mínimo se propone que la condición si la variable value es cero y cuenta sea mayor a uno. además de mantener apagados los led's usados en la programación, a esto agregamos que con esta acción la variable cuenta vuelve a ser cero para que así el mensaje solo se repita al llegar por segunda vez el valor de value a cero y no cuando se parte desde este valor para ser incrementado.

      • Se muestra a continuación la implementación en un protoboard con la tarjeta Arduino.


            6. EVIDENCIA DE TRABAJO


            7. OBSERVACIONES Y RECOMENDACIONES

                OBSERVACIONES

      • Se observó, que fue necesario declarar una variable asignándole como valor inicial cero con la finalidad de poder usarlo como parte de una condición en la que se busca que el mensaje para "valor mínimo" solo se muestre cuando se empiece a decrementar el valor una vez que llegó al máximo.
      • Se observó, que en el monitor serie se muestra el mensaje de valor máximo repetitivamente hasta que se presione el pulsador que desciende el valor, como posible solución se puede mencionar que fue necesario trabajar con los estados en que se encuentren los pines donde se conectó los pulsadores.
      • Se observó, que para usar la variable cuenta se debe entender que este incrementará su valor en uno cada vez que se pulse la botonera, por ello en la condición se propone que cuenta sea mayor a 1.
              CONCLUSIONES
      • Se concluye que en el presente desarrollo de la programación, para lograr lo requerido en el ejercicio propuesto fue necesario declarar una variable extra con la finalidad de aportar en la proposición de una condición.
      • Se concluye que en el monitor serie se pudo mostrar tanto el valor que incrementaba y disminuía como los mensajes destinados a mostrarse en ciertos valores que se indicaron en la programación realizada, para ello se utilizó las funciones Serial.print y Serial.println las cuales nos permiten escribir caracteres ASCII en el puerto Serial.
      • Se concluye que la función de Arduino pinMode permite configurar a cada pin, de forma individual, como entrada o como salida; en la programación realizada se le configuró como entrada para recepcionar el cambio de señal ocasionada al presionar el pulsador.
            8. BIBLIOGRAFÍA

      • 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)

             9. INTEGRANTE 

                 Condori Ortíz, Daniel Agustín C5 - A














      martes, 7 de mayo de 2019

      LABORATORIO N°09

      MICROCONTROLADORES

      LABORATORIO 09

      Programación de Arduino utilizando MBlock

      1. Capacidad Terminal
      • Utilizar al microcontrolador en aplicaciones de control electrónico.
      • Desarrollar y ejecutar programas en un microcontrolador PIC
      • Programar y configurar interfaces básicas del microcontrolador.
        2. Competencia Específica de la Sesión
        • Programar la tarjeta Arduino UNO utilizando el lenguaje gráfico y comparar con lenguaje de texto. 
        • Conocer el entorno de MBlock y conocer todas sus posibilidades.
        • Realizar programación básica utilizando el software mencionado.
        3. Materiales y Equipos

        IDE Arduino y MBlock instalado




        Tarjeta ARDUINO UNO



        Componentes y accesorios


                                                   
        4. Fundamento teórico:
        • ¿QUÉ ES ARDUINO?
          • Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.
          • Por otro lado, Arduino nos proporciona un software consistente en un entorno de desarrollo (IDE) que implementa el lenguaje de programación de Arduino y el bootloader ejecutado en la placa. La principal característica del software de programación y del lenguaje de programación es su sencillez y facilidad de uso.
        • ¿PARA QUÉ SIRVE ARDUINO?
          • Arduino se puede utilizar para desarrollar elementos autónomos, conectándose a dispositivos e interactuar tanto con el hardware como con el software. Nos sirve tanto para controlar un elemento, pongamos por ejemplo un motor que nos suba o baje una persiana basada en la luz existente es una habitación, gracias a un sensor de luz conectado al Arduino, o bien para leer la información de una fuente, como puede ser un teclado, y convertir la información en una acción como puede ser encender una luz y pasar por un display lo tecleado.

        5.Desarrollo de tareas indicadas en el laboratorio:
        • Primero, desarrollamos el disfraz del semáforo para lograrlo realizamos tres gráficas en las cuales solo varié el color, así podremos utilizarlo a partir del funcionamiento de la programación introducida.


        • Segundo, procedemos con la estructuración de la programación utilizando los bloques brindados en la pestaña de programación.

        • Finalmente, una vez que tenemos el disfraz y la programación realizada continuamos con las pruebas de simulación donde corroboramos que sea correcto lo propuesto.

        • Como una demostración de que también se puede presentar comunicación con la tarjeta arduino se procederá a mostrar la implementación y el funcionamiento de la programación realizada a partir del software MBlock.

              6. EVIDENCIA DE TRABAJO


              7. OBSERVACIONES Y CONCLUSIONES

                  OBSERVACIONES

        • Se observó que el software MBlock para ser instalado en nuestra PC fue recomendable buscar la versión 3.
        • Se observó que el proceso de configuración del MBlock para tener comunicación con la tarjeta arduino es parecida  a la realizada con el software propio de Arduino en lo que respecta al reconocimiento.
        • Se observó  que en el software MBlock se puede realizar la programación mediante  el uso de los distintos bloques que nos proporciona ordenadamente.
        • Se observó que en el software mencionado al crear los disfraces se requiere de varias escenas para que así proceda a recopilarse las acciones que se demostrarán al ejecutar la programación destinada. 

                  CONCLUSIONES
        • Se concluye que en el software mencionado se nos permite la propia creación de plantillas las cuales una vez que se introduce la programación realizada interactuará tal como se espera, como ejemplo se menciona lo desarrollado en el presente laboratorio.
        • Se concluye que en la programación realizada para el funcionamiento de un semáforo se utilizó el bucle WHILE con el cual se pudo hacer repetitivo la función que cumple el semáforo en determinados tiempos que se proponen.   
        • Se concluye que la interacción con MBlock es beneficiante en el aspecto de que la programación se hace más atractiva mediante el uso de bloques y también con la permisividad de realizar cambios directos en la programación digitada a partir del orden que se introduce al usar los bloques.


              8. BIBLIOGRAFÍA

        • 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)

               9. INTEGRANTE 

                   Condori Ortíz, Daniel Agustín C5 - A