sábado, 25 de mayo de 2019

MICROCONTROLADORES

LABORATORIO N°11

Programación de Arduino




I.  COMPETENCIAS ESPECIFICAS 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.
II. MATERIALES Y EQUIPO:
  •  Arduino instalado. 
  • Tarjeta ARDUINO UNO
  • Componentes accesorios.
  • Guía de Laboratorio.
  • PC con Software
III. MARCO 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
  • Voltage: 5V
  • Voltage entrada (recomendado): 7-12V
  • Voltage entrada (limites): 6-20V
  • Digital I/O Pins: 14 (de los cuales 6 son salida PWM)
  • Entradas Analogicas: 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):
arduino_board


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 mas cercanos de la alimentación que quieras) – SV1 (púrpura). En las versiones nuevas de Arduino la selección de alimentacion 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

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 la señal 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).

Imagen relacionada

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.
  • Interruptores externos.
  • 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.
  • LED: 13. En el Diacemila y el LilyPad hay un led en placa conectado al pin digital 13.

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: Es el voltaje de entrada a la placa Arduino cuando se está utilizando una fuente de alimentación externa.
  • 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.
IV DESARROLLO EN CLASE:



const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
const int analogOutPin1 = 5;
const int analogOutPin2 = 6;
const int analogOutPin3 = 9;
const int analogOutPin4 = 10;// Analog output pin that the LED is attached to

float sensorValue = 0;        // value read from the pot
float outputValue = 0; 
float Voltaje = 0;
int estado;

float posicion1 = 0.25*1023;
float posicion2 = 0.50*1023;
float posicion3 = 0.75*1023;
float posicion4 = 1023;

float intensidad1 = 0.10*1023;
float intensidad2 = 0.30*1023;
float intensidad3 = 0.70*1023;
float intensidad4 = 1023;

void setup() {
  Serial.begin(9600);
}

void loop() {
  
  sensorValue = analogRead(analogInPin);
  Voltaje = sensorValue*25/1023;

  if (sensorValue >=0 && sensorValue <= posicion1) {
    estado = 1;
  }
  if (sensorValue > posicion1 && sensorValue <= posicion2) {
    estado = 2;
  }
  if (sensorValue > posicion2 && sensorValue <= posicion3) {
    estado = 3;
  }
  if (sensorValue > posicion3 && sensorValue <= posicion4) {
    estado = 4;
  }
switch (estado) {
 case 1 :
Serial.println("10%")
analogWrite(analogOutPin1,intensidad1);
analogWrite(analogOutPin2,0);
analogWrite(analogOutPin3,0);
analogWrite(analogOutPin4,0);
 break; 

 case 2 :
Serial.println("30%")
analogWrite(analogOutPin2,intensidad2);
analogWrite(analogOutPin1,0);
analogWrite(analogOutPin3,0);
analogWrite(analogOutPin4,0);
 break; 

 case 3 :
Serial.println("70%")
analogWrite(analogOutPin3,intensidad3);
analogWrite(analogOutPin1,0);
analogWrite(analogOutPin2,0);
analogWrite(analogOutPin4,0);
 break; 

 case 4 :
Serial.println("100%")
analogWrite(analogOutPin4,intensidad4);
analogWrite(analogOutPin3,0);
analogWrite(analogOutPin2,0);
analogWrite(analogOutPin1,0);
 break; 
}
  delay (100);
  Serial.println("Voltaje: ");
  Serial.println(Voltaje);
  delay (1000);
  

  }

VÍDEO


CONCLUSIONES 
  • 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
OBSERVACIONES

  • Se observo que para variar el rango de 1023 a 255 se utilizo el comando map para variar o cambiar de rango de brillo de la Luz .
  • 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.
  • Se observo que tenemos que ir por otros recurso si o hay diferentes formas de programar para llegar ala solución 
BIBLIOGRÁFIA

http://www.iescamp.es/miarduino/2016/01/21/placa-arduino-uno/
https://www.google.com/search?q=entradas+de+arduino+digitales+y+analogicos&rlz=1C1CHBF_esPE837PE837&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjz6-3rv7niAhVEw1kKHY0EAjwQ_AUIDygB&biw=1366&bih=625#imgrc=ANqvGHREcRWrkM:
https://www.xataka.com/basics/que-arduino-como-funciona-que-puedes-hacer-uno

1 comentario: