Professional Documents
Culture Documents
HERRAMIENTAS DE SOFTWARE
TÍTULO EXPERIENCIA
TALLER 4
PTRRZA
FECHA REALIZACIÓN
28/ 11 / 2017
PROFESOR:
NOTA:
1
ÍNDICE
1.-INTRODUCCION A MATLAB
2.-SIMULINK.
3.2-Terminales digitales.
3.3.-Pines de alimentación.
3.4.-Otros Pines.
6.3 Conclusión.
2
DESARROLLO DEL TALLER 4
1.-INTRODUCCION A MATLAB
2.-SIMULINK.
3
3.- ARDUINO UNO.
Fig.3.-Arduino pines.
- Microcontrolador: ATmega328
- Voltage: 5V
- Entradas Analogicas: 6
- Flash Memory: 32 KB (ATmega328) de los cuales 0.5 KB son utilizados para el arranque
- SRAM: 2 KB (ATmega328)
- EEPROM: 1 KB (ATmega328)
4
3.1.-Entradas y salidas digitales/analógicas.
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).
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.
3.3.-Pines de alimentación.
3.3.3.-Fuente de 3V. Una fuente de 3.3 voltios generada por el chip FTDI de la
placa.
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.
Marco teórico.
Frecuencia= F=1/T
Período= T=Ton+Toff
Tiempo (Arduino)=1000ms=1s
Tarduino=1000ms
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
T=1/10=0,1s Tarduino=100ms
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
T=1/20=0,05 Tarduino=50ms
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
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.
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.
Fig.4.3.-Implemetación Arduino.
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.
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.
11
5.2.-Entrada análoga y salida digital.
Fig.5.2.-Arduino y potenciómetro.
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
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
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.
15