You are on page 1of 12

UNIVERSIDAD INTERNACIONAL SEK

FACULTAD DE INGENIERIA MECANICA


MICROCONTROLADORES

Título:
EXAMEN TERCER PARCIAL

Realizado por:

Ricardo Barriga
Dennis Martinez
Esteban Yerovi

Profesor:
Ing. Gustavo Moreno

Periodo académico:

OCTUBRE – FEBRERO 2019


INTRODUCCION

Para lograr este tipo de control se han inventado diversos sistemas, si bien la
idea de control no ha cambiado, las implementaciones para este fin si lo han
hecho. Así, los primeros sistemas de control consistían en elementos digitales
discretos, pero la necesidad de ahorro de espacio y dinero llevaron al desarrollo
de dispositivos cada vez más pequeños, llegando a crearse sistemas integrados
de control, los llamados microcontroladores. Dichos microcontroladores, cada
vez más capaces y más pequeños, son los responsables del control de la
mayoría de los procesos que ocurren dentro de los aparatos modernos, estando
presentes en cosas tan inimaginables como en el sistema de frenos de un
automóvil o el control de temperatura de un horno. Así, poco a poco los estos
pequeños dispositivos toman más fuerza y ganan más terreno dentro de la
tecnología actual, llegando a que en un mundo moderno la idea de un
mecanismo complejo que no utilice microcontroladores se hace impensable.

MARCO TEORICO

MICROCONTROLADOR
Un microcontrolador es un circuito integrado que incluye en su interior las tres
unidades funcionales de una computadora: unidad central de procesamiento,
memoria y periféricos de entrada y salida. La memoria del programa en forma de
flash ROM a menudo se incluyen en el chip, así como una pequeña cantidad de
RAM . Estos son diseñados para aplicaciones embebidas, en contraste con los
microprocesadores utilizados en computadoras personales u otras aplicaciones
de propósito general.

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. Está
pensado para artistas, diseñadores, como hobby y para cualquiera interesado
en crear objetos o entornos interactivos.
Arduino puede “sentir” el 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 de la placa se programa
usando el “Arduino Programming Language” (basado en Wiring) y el “Arduino
Development Environment” (basado en Processing). Los proyectos de Arduino
pueden ser autonomos o se pueden comunicar con software en ejecución en
un ordenador (por ejemplo con Flash, Processing, MaxMSP, etc.).
Las placas se pueden ensamblar a mano o encargarlas preensambladas; el
software se puede descargar gratuitamente. Los diseños de referencia del
hardware (archivos CAD) están disponibles bajo licencia open-source, por lo
que eres libre de adaptarlas a tus necesidades.
Arduino recibió una mención honorífica en la sección Digital
Communities del Ars Electronica Prix en 2006.

PROBLEMA

Construir un sistema que permita medir dos variables de funcionamiento del


vehiculo, mediante los potenciometros haremos cambiar de señales simulando
a cualquier sensor del vehiculo. El microcontrolador deberá capturar una muestra
de cada señal cada 30 segundos (EEPROM).
Adicionalmente se deberá guardar el máximo y mínimo histórico de cada señal
Una vez terminado el recorrido deberá desconectarse, llevarse al laboratorio y
presentar las gráficas de todas las muestras en una pantalla de Processing
Deben tener en cuenta un sistema (botón, software, etc) que permite resetear
todos los datos de la EEPROM.

MÉTODO
Como Primero se realiza las conexiones eléctricas en el protoboard, luego
continuamos con la programación en arduino y la creación de la grafica de
datos mediante processing.
CODIGO ARDUINO
#include <EEPROM.h>
int a = 0;
int b = 30;

int valor1;
int valor2;
int save;
int pr;
int cl;
int maximo1 = 0;
int maximo2 = 0;
int minimo1 = 0;
int minimo2 = 0;

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

}
void loop()
{

save = digitalRead(11);
pr = digitalRead(10);
cl = digitalRead(9);
if (save == 1) {
valor1 = analogRead(A0);
if (valor1 > maximo1) {
maximo1 = valor1;
Serial.println("grabando");
}

if (valor2 > maximo2) {


maximo2 = valor2;
}
if (valor1 < minimo1) {
minimo1 = valor1;
}
if (valor2 < minimo2) {
minimo2 = valor2;
}

byte lovalor1 = lowByte(valor1);


byte hivalor1 = highByte(valor1);
valor2 = analogRead(A1);
EEPROM.write(a, lovalor1);
EEPROM.write(a + 1, hivalor1);

byte lovalor2 = lowByte(valor2);


byte hivalor2 = highByte(valor2);
EEPROM.write(b, lovalor2);
EEPROM.write(b + 1, hivalor2);
a = a + 2;
b = b + 2;
if (a == 60) {
a = 0;
}
if (b == 120) {
b = 60;
}
delay (800);

}
if (pr == 1) {
valor1 = EEPROM.read(a + 1) * 256 + EEPROM.read(a) + 10000;
valor2 = EEPROM.read(b + 1) * 256 + EEPROM.read(b) + 20000;
//Serial.print(a);
//Serial.print("\t");
Serial.println(valor1);

//Serial.print(b);
//Serial.print("\t");
Serial.println(valor2);

a = a + 2;
b = b + 2;

if (a == 60) {
a = 0;
Serial.println("valor maximo sensor1: ");
Serial.println(maximo1);
Serial.println("valor maximo sensor2: ");
Serial.println(maximo2);
Serial.println("valor minimo sensor1: ");
Serial.println(minimo1);
Serial.println("valor minimo sensor2: ");
Serial.println(minimo2);
}
delay(800);
if (b == 120) {
b = 60;

}
delay(800);
}
if (cl == 1){
for (int a = 0; a < 60; a++){
EEPROM.update(a, 0);
}
for (int b = 60; b < 120; b++){
EEPROM.update(b, 0);
}
}
}
CODIGO PROCESSING

import processing.serial.*;

Serial myPort;
float xPos = 0;
int pfp = 1000;

float y1;
float y2 = height / 2;
float y3;
float y4 = height / 2;

float inByte1 = 0;
float inByte2 = 0;

void setup () {
// set the window size:

size(800,600);
println(Serial.list());
String arduinoPort = Serial.list()[0];
print("Arduino Port is",arduinoPort);
myPort = new Serial(this, arduinoPort, 9600);
print("port available");
print(myPort.available());

myPort.bufferUntil('\n');

// set initial background:


background(255,255, 255);
}

void draw () {
stroke(14, 4, 116);
strokeWeight(2);
line(0, 0, 800,0);
line(0, height / 2, 800, height / 2);
line(0, height - 60, 800, height - 60);
line(0, height - 120, 800, height - 120);
line(0, height - 180, 800, height - 180);
line(0, height - 240, 800, height - 240);
line(0, height - 300, 800, height - 300);
line(0, height - 360, 800, height - 360);
line(0, height - 420, 800, height - 420);
line(0, height - 480, 800, height - 480);
line(0, height - 540, 800, height - 540);
line(0, height - 600, 800, height - 600);

textSize(10);
text("1000ºC", 3, 10);
fill(0);

textSize(10);
text("900ºC", 3, 70);
fill(0);

textSize(10);
text("800ºC", 3, 130);
fill(0);

textSize(10);
text("700ºC", 3, 190);
fill(0);

textSize(10);
text("600ºC", 3, 250);
fill(0);

textSize(10);
text("500ºC", 3, 310);
fill(0);

textSize(10);
text("400ºC", 3, 370);
fill(0);

textSize(10);
text("300ºC", 3, 430);
fill(0);

textSize(10);
text("200ºC", 3, 490);
fill(0);

textSize(10);
text("100ºC", 3, 550);
fill(0);

textSize(10);
text("0ºC", 3, 590);
fill(0);

// draw the line:

stroke(82,191,240);
strokeWeight(2);
line(xPos, y1, xPos, y2);
y1 = y2;
y2 = height - inByte1;
stroke(76,247,20);
strokeWeight(4);
line(xPos, y3, xPos, y4);
y3 = y4;
y4 = height - inByte2;

if (xPos >= width) {


xPos = 0;
background(255, 101, 23);
} else {
// increment the horizontal position:
xPos+= 1;
}
stroke(55,55,55);
}

void serialEvent (Serial myPort) {


String inString = myPort.readStringUntil('\n');

if (inString != null) {
inString = trim(inString);
float inByt = float(inString);
println(inByt);
if (inByt < 20000){
inByte1 = inByt - 10000;
println("sensor 1",inByte1);
inByte1 = map(inByte1, 0, 1023, 0, height);
}

else {
inByte2 = inByt - 20000;
println("sensor 2",inByte2);
inByte2 = map(inByte2, 0, 1023, 0, height);
}
}
}
RESULTADOS
DISCUSIÓN

CONCLUSIÓN

 El software de Arduino envía la función diseñada y Processing la grafica


según la condición para receptar la información necesaria.
 Se desarrolló un sistema de bajo costo y fácil implementación que permite
el monitoreo y registro de los sensores (potenciometros)
 Del proyecto realizado se puede concluir que es una herramienta
funcional y versátil para saber de forma rápida y precisa el
comportamiento de las variables en los sensores.
 Debido al modo en que se desarrolló el proyecto se puede agregar de
manera fácil diferentes sensores y actuadores.

RECOMENDACIONES

 Tener en cuenta la secuencia de las llaves en el código de arduino, y no


confundirse en el rango que abarca las condiciones creadas.
 Agregar más variables de medición (Ph, emisiones de CO2, entre otros).

BIBLIOGRAFIA

Diapositivas de clases de microcontroladores. Uisek 2018

You might also like