robot1
Elect. Analogica
Elect. Digital
Pro. Mecatronicos
Info. de Interes
Regresar
Regresar
Regresar
Ingeniero Fernando Ruiz
Proyectos Mecatronicos
Contacto
© www.ingenierofernandoruiz.com 2011. Website Design by Fernando Ruiz Version 2.0

Banda seleccionadora de objetos por peso.

Ingeniero Fernando Ruiz

comentarios y sugerencias blog

fecha de publicacion 18 de Dicienmbre del 2010.

Introduccion

En este escrito vamos a exponer nuestro proyecto  Banda transportadora seleccionadora de objetos por peso, que un proceso de automatización de separación de objetos por su peso. Este proyecto lo hicimos para las materias de Programación Lógica y Circuitos Hidráulicos y Neumáticos. Este proyecto lo realizamos en el transcurso nuestro séptimo semestre de la carrera de Ingeniería Mecatronica en la  Universidad La Salle Chihuahua.
Nuestro proyecto responde a las necesidades de algunas empresas para separar o clasificar artículos u objetos por rango de pesos.

Desarrollo

Funcionamiento de la banda transportadora seleccionadora de objetos por peso.
Mediante una interfaz de PC-Pic se controla y visualiza el proceso de la banda transportadora seleccionadora por pesos. Al iniciar el programa  se enciende la banda transportadora que lleva el objeto a la zona de pesado, cuando se posiciona un objeto en la zona de pesado se desactiva automáticamente la banda y comienza el proceso de pesado; esa información se envía al programa en la PC mediante una interfaz Bascula-Pic-PC .
El  microcontrolador o Pic  después de mandar el peso a la PC se encarga de accionar un pistón dependiendo un rango de peso pre programado en el micro, desplazando los objetos a unas resbaladeras que lo llevan a la zona de embarque o a la zona de inspección  dependiendo si el objeto es aceptado o rechazado respectivamente. Cuando un objeto llega a la zona de embarque el Pic acciona un tercer pistón que desplaza al objeto a la caja o al paquete  y finaliza el proceso, la banda se vuelve a encender y el proceso se repite hasta que desde la PC se hace clic en el botón de paro.

Materiales de proyecto
 Programas

  • Pic C compiler
  • ISIS 7 profesional (proteus)
  • PICkit 2 v2.5 u otra versión (programa)
  • Visual studio C#
  • PCB Wizard (en caso de querer crear una tablilla impresa)

Elementos electrónicos

  • PC
  • Cable USB-Serial
  • Protoboard
  • PICkit 2 ( cable )
  • PIC18f2620
  • AD620
  • Max232
  • 4 capacitores de 1uf
  • 1 capacitor de 0.1uf
  • 4- transistores tip 41
  • 1-led
  • 1-resistencia de 100 ohm
  • 4- resistencias de 220 ohm
  • cable para conexiones
  • motor eléctrico de 12v
  • Fuente de 12 V
  • Fuente de 5 V
  • Caimanes
  • Bascula ( esta debe poseer una celda de carga)

Elementos Neumáticos

  • 3- pistones de acción simple con retracción por resorte accionados por solenoide a 12v

Elementos Mecánicos

  • Banda transportadora
  • Resbaladeras
  • Base de madera y carriles de aceptado y rechazado.

Infomacion Tecnica General de proyecto

El proyecto consiste en varios elementos que trabajan en conjunto estos son:

  • circuito de amplificacion AD620 de la señal emitida por la bascula (celdad de carga)
  • circuito de comunicacion serial (Max232)
  • circuito de control , microprocesador PIC18f2620
  • Interfaz PC-PIC ,Programa en C#
  • Dispositivos controlados (banda,pistones, mesa del proceso)

 

Codigo del Programa en C# para interfaz PIC-PC

dis

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace Proyecto_a
{
    public partial class Form1 : Form
    {
        string voltaje;
        int peso;
        public Form1()
        {
            InitializeComponent();
            if (!serialPort1.IsOpen)
            {
                try
                {
                    serialPort1.Open();
                }
                catch (SystemException ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
            serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(Recibir);
        }

        private void Recibir(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            voltaje = serialPort1.ReadLine();
            this.Invoke(new EventHandler(Actualizar));
        }
        private void Actualizar(object s, EventArgs e)
        {
            listBox1.Items.Add(voltaje);
        }
        private void cmbbanda_Click(object sender, EventArgs e)
        {
            byte[] Buffer_out = new byte[1];
            Buffer_out[0] = 0x41;
            int offset = 0;
            serialPort1.Write(Buffer_out, offset, 1);
        }
        private void cmbpistonder_Click(object sender, EventArgs e)
        {
            byte[] Buffer_out = new byte[1];
            Buffer_out[0] = 0x42;
            int offset = 0;
            serialPort1.Write(Buffer_out, offset, 1);
        }

        private void cmbpistonizr_Click(object sender, EventArgs e)
        {
            byte[] Buffer_out = new byte[1];
            Buffer_out[0] = 0x43;
            int offset = 0;
            serialPort1.Write(Buffer_out, offset, 1);
        }

        private void cmbpiston_ad_Click(object sender, EventArgs e)
        {
            byte[] Buffer_out = new byte[1];
            Buffer_out[0] = 0x44;
            int offset = 0;
            serialPort1.Write(Buffer_out, offset, 1);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            byte[] Buffer_out = new byte[1];
            Buffer_out[0] = 0x4E;
            int offset = 0;
            serialPort1.Write(Buffer_out, offset, 1);
        }

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void listBox1_SelectedIndexChanged_1(object sender, EventArgs e)
        {

        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            serialPort1.Close();
            // voltaje max
        }
    }
}

pic18f

Codigo del Programa del microcontrolador (PIC)


#include <18f2620.h>
#device ADC=10
#fuses INTRC, NOMCLR
#use delay(internal = 8M)
#use rs232 (baud=9600,xmit=pin_c6,rcv=pin_c7)
#define AN0

void main()
{
 int16 bascula,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,pro,b1,b2,b3;
 int menu=0,contador1,contador2,contador3;
 float peso=0,voltaje=0;
 set_tris_a(255);                     // SET TRIS CONFIGURA PINES DEL PUERTO DETERMINADO, 1 PARA ENTRADA Y 0 PARA SALIDAS
 
 setup_adc(ADC_CLOCK_INTERNAL);// configura convertidor ADC con reloj interno del pic
 set_adc_channel(0);
 output_high(pin_c4); //led de encendido del pic
 //setup_adc_ports(AN0);                // selecciona pin AN0 como entrada del ADC
  
 //setup_ccp1(CCP_PWM);                 // cONFIGURAS PIN CCP #13 EN PIC 18F2520 O 18F2620
 //setup_timer_2(T2_DIV_BY_1, 255, 1);  // CONFIGURA PWM CON TIMER 2 (INTERNO PREDEFINIDO DEL PIC), PERIODO DE TRABAJO LO VALORAS EN 8 BITS, 0 A 255, CON INCREMENTOS DE 1
 
 while(1)
 {
  while(kbhit()==0);
  menu= getc();
 
  if(menu=='A')
  {
   while(kbhit()==0)
   {
    set_adc_channel(0);
    b1=read_adc();
    delay_ms(10);
    b2=read_adc();
    delay_ms(10);
    b3=read_adc();
    delay_ms(10);
    bascula=(b1+b2+b3)/3;
     if(bascula<=205)                    // no hay nada en bascula
    {
     output_high(pin_c5);                // prendemos banda trasnportadora
     printf(" No hay objeto en pesa \n\r");
     printf(" Banda transportadora encendida \n\r");
     delay_ms(2000);
    }
    if(bascula>206)                      // sensamos objeto en la bascula, cuando voltaje sea mayor a 1 volt
    {
     output_low(pin_c5);// apagamos banda transportadora
     printf(" objeto pesandose \n\r ");
     p1=read_adc();
     delay_ms(250);
     p2=read_adc();
     delay_ms(250);
     p3=read_adc();
     delay_ms(250);
     p4=read_adc();
     delay_ms(250);
     p5=read_adc();
     delay_ms(250);
     p6=read_adc();
     delay_ms(250);
     p7=read_adc();
     delay_ms(250);
     p8=read_adc();
     delay_ms(250);
     p9=read_adc();
     delay_ms(250);
     p10=read_adc();
     delay_ms(250);
     pro=(p1+p2+p3+p4+p5+p6+p7+p8+p9+p10)/10;
     voltaje=pro/205.00;
     peso=((voltaje-1)*2);
     printf(" bits %Lu \n\r ",pro);
     printf(" El Peso es: %f \n\r ",peso);
     printf(" voltaje %f \n\r",voltaje);
     //printf()// mando variable de peso
     if(peso>=0.070 && peso<=0.150)
     {
     printf(" producto dentro del rango ACEPTADO \n\r");
     delay_ms(1000);
     output_high(pin_b1);// se activa piston derecho
     delay_ms(1000);
     output_low(pin_b1);
     delay_ms(2000);
     printf(" objeto en zona de embarque \n\r");
     output_high(pin_b3);
     delay_ms(1000);
     output_low(pin_b3);
     printf(" objeto embarcado \n\r");
     contador1++;
     contador3++;
     printf(" cantidad de objetos aceptados %u \n\r",contador1);
     printf(" fin de ciclo %u \n\r",contador3);
    
     }
     else
     {
      printf(" producto fuera de rango RECHAZADO \n\r");
     delay_ms(1000);
     output_high(pin_b2);// se activa piston derecho
     delay_ms(1000);
     output_low(pin_b2);
     delay_ms(2000);
     printf(" objeto de en zona de inspeccion \n\r");
     contador2++;
     contador3++;
     printf(" cantidad de objetos rechazados %u \n\r",contador2);
     printf(" fin de ciclo %u \n\r",contador3);
     }
    }
   }
  }
   output_low(pin_c5);                 // apagamos banda transportadora
 }
}

Diagramas de los dispositivos electronicos usados

AD620 (Amplificador diferencial usado para interpretar la señal que genera la bascula)

Es necesario estudiar el datasheet de este circuito y el funcionamiento de puente Wheatstone para enteder el funcionamiento de la bascula.

ad620 http://www.stanford.edu/class/ee122/Parts_Info/datasheets/ad620.pdf

Max232  (circuito utilizado para la interfaz Pic-Pc)

max232

 

Diagrama del montaje electronico.

dia1

 

Video

 

 

Conclusion


Este proyecto fue muy enriquecedor porque incluimos distintas ramas de la ciencia como son la electrónica, la neumática, la programación y la mecánica. Este es un claro ejemplo de proyecto Mecatronica.
El diseño (modelo) que hicimos es funcional para objetos redondo o semi redondos como lo son  manzanas , mandarinas, naranjas, guayabas etc.. Pero la idea de separar o clasificar objetos por peso puede se aplicada en otros sectores haciendo las debidas modificaciones.
En este proyecto trabajamos con el torno, la fresa, el taladro y otras herramientas ya que fabricamos todos los elementos de la banda transportadora como fue la estructura y los rodillos además de las resbaladeras.
También trabajamos con Pic C compiler que fue una gran herramienta de programación de nuestro micro controlador y aprendimos a controlar el dispositivo adc que poseen los pic para interpretar voltajes de entrada que genera la bascula además de generar los pulsos necesarios para realizar las tareas de los pistones y el motor.
Este proyecto fue bastante laborioso y requirió de muchas horas de esfuerzo por parte de los integrantes de equipo y de trabajo en equipo aprovechando las diferentes habilidades de los que lo integramos.

 
a2
aa3
aa4
aa5
aaa6
aa7
aa7
Regresar
   
 
A I