lunes, 9 de diciembre de 2019

LABORATORIO N°14-15-16

MICROCONTROLADORES


Laboratorio N°14-15-16:


PROYECTO MICROCONTROLADORES.

SELECTOR E IDENTIFICADOR DE MATERIAL POR COLOR.

Semana N° 14

1. TÍTULO DEL PROYECTO:

Nuestro proyecto a realizar tiene el nombre de un SELECTOR E IDENTIFICADOR DE MATERIAL POR COLOR mediante un arduino uno, que nos permite discriminar los colores y plantearlos en la siguiente descripción.

2. GRUPO DE TRABAJO:

Los integrantes de este proyecto son:

- Cáceres Vilca, Nadia
- Livisi Cosi, Geanmarco
-Pezo Mendoza, Anthony


3.OBJETIVOS

Este proyecto tendrá solo un objetivo general y tres objetivos específicos.

3.1 OBJETIVO GENERAL

Implementar un sistema prototipo de un clasificador de color para el sector de la industria alimentaria, mediante el uso de un arduino UNO.

3.2 OBJETIVOS ESPECÍFICOS

Proponer una arquitectura adecuada para el diseño e implementación de un clasificador de color para el sector de industria alimentaria.
Evaluar las opciones del uso de motores, que permita realizar el clasificador de color, de acuerdo a un prototipo.
Desarrollar la programación que permita la clasificación de colores mediante el sensor de color y el arduino UNO.

4.JUSTIFICACIÓN DEL PROYECTO

4.1 Teórica

En este trabajo se brindara consideraciones para el diseño e implementación de los clasificadores de colores, que permitan la acción de discriminar los componentes mediante sensores, esto tiene un fundamental uso en la optimización de la productividad de acuerdo a un mejor funcionamiento para discriminar elementos de distintas características, específicamente por el color.

4.2 Tecnológica

Es necesario validar un uso adecuado de los clasificadores de colores que presenten un mejor uso en el sector productivo, específicamente en la industria alimentaria, dado que se necesitar mejorar la productividad de este sector económico, ya que presenta importancia en nuestro país.

4.3 Social

El desarrollo e implementación del clasificador de colores brinda una solución para poder aumentar la productividad de las empresas del sector alimentario, dado que esto generará un impacto social favorable en el aumento productivo de la empresa y por lo tanto aporta a mayores ingresos al país además que también genera mas puestos de trabajos en una industria consolidada en su mayor productividad.

4.4 Práctica

El desarrollo de la solución permitirá utilizar un clasificador de colores en el sector de industrias alimentarias, ya que estas pueden ampliar y mejorar las características de proceso que estas tengan, mejorando asi el servicio y un aumento de la productividad, por lo tanto, el proyecto puede cambiar para otros tipos de objetivos aumentando sensores o actuadores, volviendo el proceso mas especializado.

5. MATERIALES

Los materiales que usaremos para realizar este proyecto clasificador se utilizaron los siguientes materiales:

- Modulo sensor color TCS3200
Fuente: Mercado libre
- 1 servomotores
Fuente: Mercado libre

-1 arduino UNO

Fuente: Mercado libre
- Cables
Fuente: Mercado libre
-1 arduino Nano

Fuente: Mercado libre
- 1 Motor Gorilla

Fuente: Mercado libre
Mecanica impreso en 3D “PLA”


Fuente: Mercado libre
6. RESUMEN

El presente proyecto ha sido realizado mediante los conocimientos obtenidos en los laboratorios del curso, lo que nos ha permitido tener una idea mas consolidada del proyecto, en este proyecto se han utilizado servomotores, sensor de luz, arduino nano y algunos elementos de apoyo para poder realizar el prototipo, es necesario entender, que la programación fue crucial para que el proyecto se realiza por lo que también para su realización se utilizo varias fuentes que nos han permitido a tener una mayor lucidez del proyectos realizar, para el proceso se divido en varias etapas de construcción, la primera fue realizada en la recolección de información a través de fuentes, la segunda fue programar, la tercera fue probar la programación mediante el uso de los servomotores, el sensor de colores, seguidamente se armo la estructura para tener una mejor idea del prototipo que se plantea, esto también fue pensado con la finalidad de aumentar la productividad en el proceso de la industria alimentaria.

6.1 Vídeo demostrativo








Semana N° 15

7. DEMOSTRACIÓN

7.1 Programación


El programa siguiente evidencia el proceso y significado de cada paso que se aplico en el programa para que el proyecto final funcionara.

#include <Servo.h>

#define S0 2
#define S1 3
#define S2 4
#define S3 5
#define sensorOut 6

Servo topServo;
Servo bottomServo;
int frequency = 0;
int color=0;
void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  // Setting frequency-scaling to 20%
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
  topServo.attach(7);
  bottomServo.attach(8);
  Serial.begin(9600);
}
void loop() {
  topServo.write(115);
  delay(500);

  for(int i = 115; i > 65; i--) {
    topServo.write(i);
    delay(2);
  }
  delay(500);

  color = readColor();
  delay(10);
  switch (color) {
    case 1:
    bottomServo.write(50);
    break;
    case 2:
    bottomServo.write(75);
    break;
    case 3:
    bottomServo.write(100);
    break;
    case 4:
    bottomServo.write(125);
    break;
    case 5:
    bottomServo.write(150);
    break;
    case 6:
    bottomServo.write(175);
    break;
 
    case 0:
    break;
  }
  delay(300);

  for(int i = 65; i > 29; i--) {
    topServo.write(i);
    delay(2);
  }
  delay(200);

  for(int i = 29; i < 115; i++) {
    topServo.write(i);
    delay(2);
  }
  color=0;
}
// Custom Function - readColor()
int readColor() {
  // Setting red filtered photodiodes to be read
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int R = frequency;
  // Printing the value on the serial monitor
  Serial.print("R= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(50);
  // Setting Green filtered photodiodes to be read
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int G = frequency;
  // Printing the value on the serial m2onitor
  Serial.print("G= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(50);
  // Setting Blue filtered photodiodes to be read
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  int B = frequency;
  // Printing the value on the serial monitor
  Serial.print("B= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.println("  ");
  delay(50);
  if(R<45 & R>32 & G<65 & G>55){
    color = 1; // Red
  }
  if(G<55 & G>43 & B<47 &B>35){
    color = 2; // Orange
  }
  if(R<53 & R>40 & G<53 & G>40){
    color = 3; // Green
  }
  if(R<38 & R>24 & G<44 & G>30){
    color = 4; // Yellow
  }
  if(R<56 & R>46 & G<65 & G>55){
    color = 5; // Brown 
  }
  if (G<58 & G>45 & B<40 &B>26){
    color = 6; // Blue
  }
  return color;  
}

La parte color morado, es la parte de prubas que se realizo para hallar la frecuencia y rango máximo y minimo del color el sensor lo detectaba.

8. Fabricación de la placa:

La placa cumple la funcion de poder utilizar el arduino NANO directo al sensor y a los servomotores;



9. Evidencias de avance:

Proceso de armado del circuito:
 Proceso de armado de la parte mecanica:

9.1 Vídeo demostrativo



Semana N° 16

10. Simulación en Tinkercat:
Programa utilizado ya que se utilizo pulsadores como rangos de color que detectaba el sensor:
#include <Servo.h>
int pu9 = 0;
int pul0 = 0;
int pul1 = 0;
int pul2 = 0;
int pul3 = 0;
Servo servo1; //declaramos la variable que controlara el servomotor
void setup() {

  Serial.begin(9600);
  servo1.attach(5); // asignamos el pin 5(analogo PMW) a la variable servo1
  pinMode(pu9, INPUT );
  pinMode(pul0, INPUT );
  pinMode(pul1, INPUT );
  pinMode(pul2, INPUT );
  pinMode(pul3, INPUT );
  servo1.write(0); //PARA INICIAR EL SERVO EN 0 GRADOS
}
void loop() {
  pu9 = digitalRead(9);
  pul0 = digitalRead(10);
  pul1 = digitalRead(11);
  pul2 = digitalRead(12);
  pul3 = digitalRead(13);

  if (pu9 == HIGH) {
    servo1.write(0);
  }
  if (pul0 == 1) {
    servo1.write(45);
  }
  if (pul1 == 1) {
    servo1.write(90);
  }
  if (pul2 == 1) {
    servo1.write(120);
  }
  if (pul3 == 1) {
    servo1.write(180);
  }

}

11. Simulación en Flow Code:


Flujograma:






12. Evidencia de proyecto completo:
Se introduce primero la pieza de color por la parte arriba, este cayendo hacia la rueda que girara con la ayuda de un motor, y luego lo detectara el sensor y moverá el servo para que la pieza caiga donde se estableció.


12.1 Vídeo demostrativo


12.2 Aplicaciones en la industria


Para lograr la más alta calidad del producto final que sea posible, se utilizan máquinas seleccionadoras por color. Estas se pueden equipar de una variedad de cámaras dependiendo de la aplicación. Se utilizan las cámaras para detectar diferencias de color, diferentes superficies y daños ocultos, por ejemplo, por debajo de una cáscara.

Se transporta el producto a través de los canales vibratorios en la entrada de la máquina a una placa deslizante. En esta placa deslizante, el producto pasa por las cámaras. Toda la superficie se ve a través del sistema óptico. Esto asegura que todos los productos que no cumplen con los criterios de calidad, se identifican por el sistema y se seleccionan por medio de toberas de aire comprimido. Separadamente del resto, el producto seleccionado sale de la máquina por salidas separadas.

Se pueden almacenar una variedad de diferentes programas en la máquina. Al mismo tiempo es posible ajustar la exactitud de separación durante el proceso, de manera que se pueden seleccionar una variedad de diferentes productos, aunque no sean muy homogéneos, con la máxima precisión.



MÁQUINA PARA LA CLASIFICACIÓN DE ALIMENTOS POR COLORES NFM

La clasificadoras de alimentos por color NFM son máquinas con un elevado rendimiento, fáciles de manejar y con unos costes de funcionamiento reducidos. La NFM proporciona una excelente clasificación de frutas y verduras por colores, incluso en los entornos más difíciles con suciedad, polvo y vibraciones.

Estas clasificadoras pueden aguantar calor, frío, humedad... y in perder nunca la calidad de la cosecha.



MÁQUINA DE CLASIFICACIÓN DE ALIMENTOS POR COLORES NFM:
Son clasificadoras de alimentos de alta capacidad y bajo mantenimiento.
Gracias a un diseño robusto, es capaz de soportar el calor extremo, la humedad elevada y las vibraciones de la cosechadora.
Clasificadora de alimentos flexible con un manejo suave asegurado.
Controles sencillos, fáciles de ajustar y usar.
Control total por parte del operador.
APLICACIONES EN EL ÁMBITO DE LA CLASIFICACIÓN DE FRUTAS Y VERDURAS
Clasificación en la cosechadora y en la planta:

  • Tomates
  • Cebollas
  • Ajo


13. OBSERVACIONES Y CONCLUSIONES
13.1 OBSERVACIONES:

  • Para realizar la impresión de las piezas utilizadas se debe tener conocimientos del programa cura y además AutoCAD 
  • Se deben verificar que la placa impresa no esté llena de estaño sobrante ya que esto causó que las pistas hicieran contacto pero ningún componente fue dañado.
  • Se deben verificar las etapas de programación ya que alguna falta de comando puede dañar gravemente a toda la programación.
  • Se tuvo que realizar las modificaciones de la programación original para realizar el programa final.

13.2 COMCLUSIONES:

  • Se logró programar un clasificador de colores de acuerdo a los colores que se han propuesto.
  • Se logró realizar implementar un prototipo de un clasificador de color para el sector de la industria alimentaria, mediante el uso de un arduino UNO.
  • Se propuso el uso de los servomotores precisamente por que son los que se adecuaban al ´proyecto.
  • Se logró una arquitectura adecuada para el diseño e implementación de un clasificador de color para el sector de industria alimentaria.
  • Se realizó la impresión de piezas en una impresora 3D y las impresión de una placa para evitar largos contratiempos de realizado del proyecto.
  • Se logró modificar la programación original para que el proceso realice las condiciones que se desean.
  • Se reconoció la tarjeta del sensor de color y sus pines respectivos para diferenciar colores enviando señales analógicas y digitales al arduino nano.
  • Se identificaron componentes utilizados para la parte mecánica- movible y así controlar el proceso de selectora.

viernes, 6 de diciembre de 2019

LABORATORIO N°13


MICROCONTROLADORES


Laboratorio N°13:

LECTURA DE ENTRADAS ANALÓGICAS DE TEMPERATURA.



I. CAPACIDAD TERMINAL

  1. Utilizar al microcontrolador en aplicacion de control electrónico
  2. Desarrollar y ejecutar programas en un microcontrolador PIC
  3. Programar y configurar interfaces básicas del microcontrolador

II. COMPETENCIA ESPECÍFICA DE LA SESIÓN
  1. Lecturas analogicas de un canal del PIC
  2. Configuración de un Sensor de Temperatura
  3. Lectura analógica en una pantalla LCD

III. FUNDAMENTOS TEÓRICOS

Existen dos tipos de entradas analógicas y digitales, de igual manera en las salidas que son analógicas y digitales, estas entradas mediante el interfaz, adapta y codifica de forma comprensible para la CPU las señales procedentes de los dispositivos de entrada.

a. Entradas analógicas

Los módulos de entradas analógicas convierten una magnitud analógica en un numero que se deposita en una variable interna del autómata. Lo que realiza es una conversión A/D, puesto que el autómata solo trabaja con las señales digitales. Esta conversión se realiza con una precisión o resolución determinada (número de bits) y cada cierto intervalo de tiempo (periodo de muestreo).

Las señales analógicas son las que varían en función del tiempo adquiriendo valores dentro de un intervalo continuo. La información analógica puede tomar infinitos valores. Las entradas analógicas permiten que se pude leer y trabajar con señales de tipo analógico, como pueden ser por ejemplo la temperatura, la presión o el caudal. Esta información se obtiene de los sensores, que son unos dispositivos de entrada que captan la señal analógica del exterior y devuelven un valor de tensión.

Despues se tiene que adaptar de forma comprensible para la CPU esta información, a este procesos se le denomina digitalización, que es el proceso de conversión de una señal analogica en digital. Lo que se realiza es una conversión A/D, puesto que en el caso de trabajar con microcontroladores solo pueden trabajar con señales digitales. Esta conversión se realiza con una precisión o resolución determinada.

ETAPAS:

-> Captación de la señal analógica de entrada mediante un sensor
->Lectura del valor de tensión.
->Conversión Analógico/digital

.En el caso del PIC 16F877a presenta un conversor análogo a digital con una resolución de 10 bits que puede leer los voltajes presentes en los pines de AN0 hasta AN7.


La conversión analogo-digital, se configura y controla con los registros ADCON0 y ADCON1, donde es posible configurar aspectos como el canal( pin del PIC) en que se hara la lectura, velocidad de muestreo, estado de la conversión, pines analogos o digitales, entre otros. Por otro lado la conversión resultante se alberga en los registros ADRESH y ADRESL como se muestra a continuación.




Canales usados como entrada analógica
En el binario formado por los bits PGF3 - PGF2-PGF1-PGF0, se debe ingresar la combinación correspondiente a los canales digitales o analogicos que se quieren usar como la siguiente gráfica nos muestra:

IV. DESARROLLO DE LAS TAREAS

Para el desarrollo de este laboratorio se colocaron las siguientes condiciones:

a. Donde dice '#devide adc=8' cambie por '#device adc=10', convierta la variable "lectura" en entero de 16 bits y la línea de printf cambie '%4u' por '%4lu'

¿Cuál es el cambio mostrado en la pantalla LCD? ¿Por qué?

b. Convierta el valor leído en valor de voltaje de 0 a 5 voltios. Para esto cambie la variable "lectura" a variable tipo float y configure su forma de mostrarse en el LCD. Luego en la función While (true), añada la instrucción "lectura =lectura/204.6". Cambie las instrucciones para que en la pantalla del LCD aparezca : " Tensión: 3.456V"

c. Agregar una condición IF para que cuando el voltaje supera 4.5 voltios, se mostrara un mensaje de advertencia en la primera linea del LCD.

En esta parte se logro cumplir el objetivo de crear la condición cuando el voltaje superaba los 4.5 voltios tendira que mostrar en la pantalla LCD un mensaje de advertencia, en este caso el mensaje fue "CORREporTUvida" de acuerdo a lo establecido.

d. La ultima condición que el docente indico que se debía cumplir es que aparezca valores de temperatura y de tensión pero que al 100°C la tensión este en un máximo de 2.5 V comos se muestra a continuación.

Y que al ser menor a 15 tendria que prender el LED_C3, al ser un valor mayor a 15 pero menor a 90 tendria que prender el LED_C2 y al ser mayor que 90 tendria que prender el LED_C1 como se muestra:

Toda la programación que se realizo fue la siguiente:



V. VIDEO DEMOSTRATIVO


link del video: https://youtu.be/mrQL-Hq1otg


VI. OBSERVACIONES Y CONCLUSIONES

a. Observaciones
  • Se observo que es necesario establecer bien los valores con los que se van a trabajar, ya que al inicio del laboratorio se tuvo una dificultad para trabajar con las dos variables de tensión y temperatura las cuales fueron solucionadas al introducir las variables en la programación en el caso del "float temperatura;".
  • Con respecto a las limitaciones de valores para cumplir los condiciones que se establecieron fue necesario utilizar limitaciones, cuando un numero es mayor a 15, cuando el valor esta de 15 a 90 y cuando el valor sea mayo que 90 delimitandolo.
  • Al inicio se coloco la definición a la variable con int lo que no permitía hacer el uso de las mediciones que se debían aplicar a este laboratorio la solución fue aplicar el float el cual nos permite hacer las mediciones respectivas.
  • Cuando se delimito el valor de la temperatura existía un conflicto en los LEDS que se programaban ya que al ser mayor de 90 prendían dos LEDS, cuando debía prender solo uno, en este caso se analizo la programación y se observo que solo esta mal establecido el valor de ">" el cual se corrigió y se cumplió con las condiciones establecidas.

b. Conclusiones
  • Se logro utilizar el PIC 16F877a logrando realizar las aplicaciones desarrollando y ejecutando la programación necesaria para cumplir con las mediciones de temperatura con las entradas analógicas del PIC.
  • Se comprobó la programación en el entrenador y en el Proteus para verificar el cumplimiento de la misma, en ambos casos funciono correctamente de acuerdo a los valores que se solicitaron.
  • Se concluye que es necesario saber las limitaciones con las que se va a trabajar plasmando las condiciones que se propongan, como es el caso de la temperatura tendría que marcar 100°C como máximo cuando la tensión sea 2.5V para lograr esto se dividió el valor de temperatura entre 10.3 cumpliendo asi el rango de medición propuesto.
  • Se logro comprender las entradas analógicas ya que convierten una magnitud analógica en un numero que se deposita en una variable interna del autómata, por lo tanto, lo que realiza es una conversión A/D, puesto que el autómata solo trabaja con las señales digitales