You are on page 1of 15

UNIVERSIDAD DE TARAPACÁ

Escuela Universitaria de Ingeniería Eléctrica y Electrónica

HERRAMIENTAS DE SOFTWARE

TÍTULO EXPERIENCIA

TALLER 4

NOMBRE ALUMNO OBSERVACIONES

PTRRZA

FECHA REALIZACIÓN

28/ 11 / 2017

FECHA ENTREGA ASIGNATURA

08/ 12 / 2017 HERRAMIENTAS SOFTWARE

PROFESOR:

NOTA:

1
ÍNDICE

1.-INTRODUCCION A MATLAB

2.-SIMULINK.

3.- ARDUINO UNO.

3.1.-Entradas y salidas digitales/analógicas.

3.2-Terminales digitales.

3.3.-Pines de alimentación.

3.4.-Otros Pines.

4.-DESARROLLO DEL LABORATORIO

4.1.- Arduino y un LED

4.2.- Coche fantástico.

4.3.- Secuencia led.

5.- Comunicación ANALOGO-DIGITAL.

5.1.-Push button señal digital y salida señal digital.

5.2.-Entrada análoga y salida digital.

6.- APLICACIÓN DE MATLAB Y ARDUINO

6.1.-Comunicación Arduino-Matlab ANALOGO-DIGITAL

6.2.-Simulink y Arduino. Digital a digital.

6.3 Conclusión.

2
DESARROLLO DEL TALLER 4

El presente informe corresponde al taller número 4, de Herramientas de Software


para Ingeniería. Se hace una descripción de los problemas planteados y se da la solución
aplicando el desarrollo de Matlab.

1.-INTRODUCCION A MATLAB

Matlab es un entorno de programación para el desarrollo de algoritmos, el análisis


de datos, la visualización y el cálculo numérico. Puede solucionar problemas de cálculo
técnico aplicado a una variedad de procesamientos como señales comunicaciones,
control, medidas, y modelado computacional.

MATLAB constituye actualmente un estándar dentro de las herramientas del análisis


numérico, tanto por su gran capacidad y sencillez de manejo como por su enorme versatilidad y
difusión. En estos talleres se considera que se conoce el entorno y se aplicara el conocimiento con
ARDUINO.

2.-SIMULINK.

Simulink es un entorno de programación visual, que funciona sobre el entorno de


programación Matlab. Es un entorno de programación de más alto nivel de abstracción que
el lenguaje interpretado Matlab (archivos con extensión .m). Simulink genera archivos con
extensión .mdl (de "model"). Simulink viene a ser una herramienta de simulación de
modelos o sistemas, con cierto grado de abstracción de los fenómenos físicos involucrados
en los mismos. Se hace hincapié en el análisis de sucesos, a través de la concepción de
sistemas (cajas negras que realizan alguna operación).

Es ampliamente usado en Ingeniería Electrónica en temas relacionados con el


procesamiento digital de señales (DSP), involucrando temas específicos de ingeniería
biomédica, telecomunicaciones, entre otros. También es muy utilizado en Ingeniería de
Control y Robótica. En los laboratorios se usará para el manejo de y control con el
microcontrolador.

3
3.- ARDUINO UNO.

Fig.3.-Arduino pines.

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.

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

4
3.1.-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 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 ( Desde 255 valores de luz en un
fotosensor, siendo 0 ausencia de luz y 254 el máximo valor lumínico).

3.2-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.

3.2.1.- 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 al las terminales correspondientes del modulo 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).

3.2.2.-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 mas detalles.

3.2.3.- PWM: 3, 5, 6, 9, 10, y 11. Proporcionan salidas PWM de 8 bit con la


función analogWrite().

5
3.2.4.- 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 lenguaje Arduino.

3.2.5.- 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

3.2.6.-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.

3.2.7.- I2C: 4 (SDA) y 5 (SCL). Soportan comunicaciones I2C (TWI) utilizando la


librería Wire (documentación en la página web de Wiring).

3.3.-Pines de alimentación.

3.3.1.-Fuente 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.

3.3.2.-Fuente de 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.

3.3.3.-Fuente de 3V. Una fuente de 3.3 voltios generada por el chip FTDI de la
placa.

2.2.4.-GND. Pines de tierra.

3.4.-Otros Pines.

3.4.1.- AREF. Referencia de voltaje para las entradas analógicas. Utilizada con la
función analogReference().

6
3.4.2.- Reset. Resetea el microcontrolador. Utilizada típicamente para añadir un
botón de reset a shields que bloquean el de la placa principal.

Para implementar el proyecto lo primero que se analizó fueron las características del
ARDUINO UNO y los sensores que se ulizados, debido a que se requiere una correcta
lectura.

4.-DESARROLLO DEL LABORATORIO.

4.1.- Arduino y un LED.

Se pide variar la frecuencia de un led, por medio de la programación en Arduino a una


frecuencia de 1, 10, 20 Hz. Para ello se implementa como muestra la figura 4.1.

Figura 4.1.-Led conectado a la salida digital pin13.

Se hace uso de una resistencia de 220 Ohm, un led rojo y el microcotrolador.

Marco teórico.

Frecuencia= F=1/T

Período= T=Ton+Toff

Tiempo (Arduino)=1000ms=1s

4.1.1.-Programación arduino 1Hz.

Tarduino=1000ms

//Programación arduino 1Hz


const int ledPIN = 13;

void setup() {
Serial.begin(9600); //iniciar puerto serie
pinMode(ledPIN , OUTPUT); //definir pin como salida
}

7
void loop(){
digitalWrite(ledPIN , HIGH); // poner el Pin en HIGH
delay(500); // esperar medio segundo
digitalWrite(ledPIN , LOW); // poner el Pin en LOW
delay(500); // esperar medio segundo
} //Ton+Toff=1000ms=1s

4.1.2.-Programación arduino 10 Hz.

T=1/10=0,1s Tarduino=100ms

//Programación arduino 10Hz


const int ledPIN = 13;

void setup() {
Serial.begin(9600); //iniciar puerto serie
pinMode(ledPIN , OUTPUT); //definir pin como salida
}

void loop(){
digitalWrite(ledPIN , HIGH); // poner el Pin en HIGH
delay(50); // esperar medio segundo
digitalWrite(ledPIN , LOW); // poner el Pin en LOW
delay(50); // esperar medio segundo
} //Ton+Toff=100ms=0.1s

4.1.2.-Programación arduino 20 Hz.

T=1/20=0,05 Tarduino=50ms

//Programación arduino 10Hz


const int ledPIN = 13;

void setup() {
Serial.begin(9600); //iniciar puerto serie
pinMode(ledPIN , OUTPUT); //definir pin como salida
}

void loop(){
digitalWrite(ledPIN , HIGH); // poner el Pin en HIGH
delay(25); // esperar medio segundo
digitalWrite(ledPIN , LOW); // poner el Pin en LOW
delay(25); // esperar medio segundo
} //Ton+Toff=50ms=0.05s

4.2.- Coche fantástico.

Se tiene 5 leds rojos conectados a los pines de salida digital, para poder general señales
digitales secuanciadas según corresponda. Para este caso se realiza el juego de luces del Coche
Fantástico.

8
Fig.4.2.-Circuito de la experiencia.

//Programa Coche Fantastico


int timer = 100;
int matriz [5] = {8,9,10,11,13};
int cont = 5;
int pin;

void setup(){
for(pin=0;pin<cont;pin++)
pinMode(matriz[pin],OUTPUT);
}

void loop(){
for(int pin=0;pin<cont;pin++)
{
digitalWrite(matriz[pin],HIGH);
delay(timer);
digitalWrite(matriz[pin],LOW);
}

9
4.3.- Secuencia led.

Al igual que en el desarrollo anterior se cambia la secuencia realizando un recorrido sin


salto de secuencia.

Fig.4.3.-Implemetación Arduino.

/*Secuencia led completa*/


int timer = 50;
int matriz [5] = {8,9,10,11,13};
int cont = 5;

void setup(){
for(int pin=0;pin<cont;pin++)
pinMode(matriz[pin],OUTPUT);
}

void loop(){
for(int pin=0;pin<cont;pin++)
{
digitalWrite(matriz[pin],HIGH);
delay(timer);
digitalWrite(matriz[pin],LOW);
}
for(int pin=cont-1;pin>=0;pin--)
{
digitalWrite(matriz[pin],HIGH);
delay(timer);
digitalWrite(matriz[pin],LOW);
}
}

10
5.- Comunicación ANALOGO-DIGITAL.

Uno de los mayores problemas aplicados en ingeniería esta relacionado con la conversión
de señales análogas a digital. Para comprender esta materia se realizaron dos ejemplos usando el
microprocesador Arduino.

5.1.-Push button señal digital y salida señal digital.

Se construye el circuito con un push button, de manera de enviar una señal digital para que
Arduino encienda o apage el LED, según corresponda. Para ello se hace uso de la programación en
el microcontrolador.

const int LED =13;


const int BOTON = 7;
int val = 0; //val se emplea para almacenar el estado del boton
int state = 0; // 0 LED apagado, mientras que 1 encendido
int old_val = 0; // almacena el antiguo valor de val
void setup(){ // definir si la variable es de entrada // o salida.
pinMode(LED,OUTPUT); // establecer que el pin digital es una señal de salida
pinMode(BOTON,INPUT); // y BOTON como señal de entrada
}
void loop() { // loop = realice un lazo continuamente
val= digitalRead(BOTON); // lee el estado del Boton
if ((val == HIGH) && (old_val == LOW)){
state=1-state;
delay(60);
}
old_val = val; // valor del antiguo estado
if (state==1){
digitalWrite(LED, HIGH); // enciende el LED
}
else{
digitalWrite(LED,LOW); // apagar el LED
}
}

11
5.2.-Entrada análoga y salida digital.

Se procede a implementar como se muestra en la figura 5.2. usando un potenciómetro de


10Kohm, una resistencia de 220 Ohm.

Fig.5.2.-Arduino y potenciómetro.

Al girar el eje del potenciómetro, se cambia el valor de la resistencia. Este cambio


de resistencia entre el pin central del potenciómetro y uno de sus lados, proporciona una
diferencia de voltaje en la entrada analógica, es decir un divisor de tensión.

//Programa del taller con potenciómetro y led


int sensorPin = A0; // selecciona el pin de entrada para el potenciómetro
int ledPin = 13; // seleccion el pin de salida para el LED
int sensorValue = 0; // variable para almacenar el valor que viene del sensor
(potenciómetro)
float escala=10; //escala del potenciometro 10k
void setup() {
// declara el pin de salida
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}

void loop() {
float lectura= analogRead(sensorPin);
lectura=map(lectura,0, 1023, 0, 255);
float voltaje=lectura/escala;
Serial.println(voltaje);
delay(500);
// lee el valor del sensor
sensorValue = analogRead(sensorPin);
// prende el LED
digitalWrite(ledPin, HIGH);
// detiene el programa por <sensorValue> millisegundos:
delay(sensorValue);
// apaga el LDE
digitalWrite(ledPin, LOW);
// detiene el programa por <sensorValue> millisegundos:
delay(sensorValue);
}

12
6.- APLICACIÓN DE MATLAB Y ARDUINO

6.1.-Comunicación Arduino-Matlab ANALOGO-DIGITAL

Lo que realizaremos es leer con Arduino los datos de un potenciómetro que tenemos
conectado al pin analógico A0. Obtendremos valores entre 0 y 1023, los cuales enviaremos
a través del Puerto Serial hacia MATLAB, que los recogerá y los procesará pasándolos a
Voltios. Podemos decir, que vamos a realizar un muestreo de valores, los cuales vamos a
representar en una gráfica.

Fig.6.1.1.-Circuito de la experiencia.
/*Arduino Programa taller 4
int potenc1 = 0;
int potenc2= 1;
int entrada1=0; //potenciometro en entrada analogica A0
void setup() {

Serial.begin(9600);
}

void loop() {

potenc1= analogRead(entrada1);

Serial.print(potenc1);
delay(60);
}

CRIPT MATLAB

function arduinomatlab(n)

global v1

v1=zeros(1,n);

delete(instrfind({'Port'},{'COM5'}));
s = serial('COM5','BaudRate',9600,'Terminator','CR/LF');
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');

13
fopen(s);
muestras=1;

figure('Name','Captura');

xlabel('Muestras')
ylabel('Voltaje (V)')
title('Captura de voltaje en tiempo real con Arduino')
grid on
hold on

while muestras<=n
ylim([0 5.1]);
xlim([muestras-10 muestras+10]);
valor=fscanf(s, '%d,%d')';

v1(muestras)=(valor(1)*5/1024);

plot(muestras, v1(muestras),'*-b');
drawnow
muestras=muestras+1;

end

fclose(s);
delete(s);
clear s;

end

6.1.2.-Grafico obtenida por Matlab.

El gráfico muestra la señal entregada por Arduino la cual es interpretada por Matlab y
mostrado en tiempo real del voltaje generado en el potenciómetro y visualizada mediante el
comando plot.

14
6.2.-Simulink y Arduino. Digital a digital.

Se envía una señal por medio de simulink y es recibido por Arduino, realizando un cambio
de operación, según se maneje el Switch. Para realizar la experiencia se actualiza la librería de
SIMUINK.

6.3.- Conclusión.

La interaccion entre Matlab, Simulink y Arduino, muestra el camino para el desarrollo de


futuros proyectos. Si bien no se alcanzó a concluir esta materia a fondo, se obtuvieron herramientas
para poder desarrollar conocimiento tecnológico y dando pie para el desarrollo del proyecto final
del Internet de las cosas.

15

You might also like