Autor Tema: maquina de envasado  (Leído 2900 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado cifuen

  • PIC10
  • *
  • Mensajes: 3
maquina de envasado
« en: 15 de Marzo de 2006, 11:02:00 »
Saludos, tengo que hacer una practica y tengo el siguiente código, pero me gustaria ver mas programas o diferentes formas de hacerlo ya que me gusta comparar, la practca es la siguiente:
Se pretende diseñar una máquina de envasado con las siguientes caracteristicas:
existen dos reles "M1" (RB0) y "M2" (RB1) que gobiernan dos motores, estos motores arrastran dos cintas trasportadoras:
      M1 transporta piezas
      M2 transporta embalajes
el sensor "DP" (RA1) detecta el paso de piezas
el sensor "DE" (RA2) detecta el correcto posicionamiento del envase.
al detectarse 10 piezas, el envase se considera lleno y se activa una señal acustica "A" (RB2) y, cuando sucede esto
     La cinta que transporta embalajes se desplaza hasta situar un nuevo envase vacio.
     Cuando esta colocado el nuevo envase vacío se desactiva la señal acustica "A" (RB2) y nuevamente avanza la cinta de piezas repitiendose el ciclo.
     Un interruptor "I" (RA0) activa y desactiva todo el sistema.

El codigo que tengo echo es el siguiente:

#include<pic.h>
#include"decod.h"
#include"Delay.c"
#define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit))

static bit I @ PORTBIT(PORTA, 0);
static bit DP @ PORTBIT(PORTA, 1);
static bit DE @ PORTBIT(PORTA, 2);
void main()
{
unsigned char conta=10;
TRISB =0; //puerto b al completo configurado como salida

PORTB = 0X00;
       
//ponemos en marcha la cinta

while (I){
      PORTB = 0X01;
     
// ponemos el envase en su sitio    
   
     while (DP && I){
            conta=10;
      PORTB = 0X06;
             
//llenamos envase

            do{    
           
                     while (!DE && I){}
                     DelayMs(200);
                     
                     while (DE && I){}
                     DelayMs(200);
                     conta--;
                     PORTB = Decod(conta);
                     

            }while (conta>0 && I && DP);
           
            PORTB= 0X02;
           
            //colocamos un envase nuevo
            while (!DP && I){}
            DelayMs(200);
            while (DP && I){}
            DelayMs(200);

     }
}
}//fin main

es para 16f84

Saludos y gracias.


Desconectado cifuen

  • PIC10
  • *
  • Mensajes: 3
RE: maquina de envasado
« Respuesta #1 en: 16 de Marzo de 2006, 08:30:00 »
weno, y alguien me puede sacar el pseudocodigo?

un saludo.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: maquina de envasado
« Respuesta #2 en: 16 de Marzo de 2006, 09:34:00 »
ein?loco


Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado nordestenica

  • PIC16
  • ***
  • Mensajes: 215
RE: maquina de envasado
« Respuesta #3 en: 17 de Marzo de 2006, 03:27:00 »
hehe amigo esse codigo es uno de los exemplos de www.microcontroladores.com e que lo puedes bajar gratis e dentro del mismo tienes  varios exemplos como esse

pero dime que es el pseudocodigo ??? te refieres a otras formas de acer el mismo

Desconectado cifuen

  • PIC10
  • *
  • Mensajes: 3
RE: maquina de envasado
« Respuesta #4 en: 17 de Marzo de 2006, 09:31:00 »
Escrito originalmente por nordestenica
hehe amigo esse codigo es uno de los exemplos de www.microcontroladores.com e que lo puedes bajar gratis e dentro del mismo tienes  varios exemplos como esse

pero dime que es el pseudocodigo ??? te refieres a otras formas de acer el mismo


pues no veo de donde descargarme los ejemplos de los que me hablas...

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: maquina de envasado
« Respuesta #5 en: 17 de Marzo de 2006, 10:47:00 »
Supongo que desde este enlace: http://www.msebilbao.com/tienda/software.php


Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado pelusac

  • PIC16
  • ***
  • Mensajes: 118
RE: maquina de envasado
« Respuesta #6 en: 20 de Marzo de 2006, 06:43:00 »
Como bien te ha comentado el maestro vszener el problema de que hablas viene resuelto en la pagina que te han reseñado en el otro post.
Vienen dos ejemplos uno con el desarrollo normal y el otro con eliminación de rebotes con temporización.Por si te vale de algo ahí va el codigo:

Máquina de envasado. eliminación de rebotes mediante una temporización.
//
//Dos relés "M1" (RB0) y "M2" (RB1) gobiernan dos motores que arrastran dos cintas
//transportadoras. "M1" (RB0) transporta piezas y "M2" (RB1) embalajes. Un sensor "DP" (RA1)
//detecta el paso de piezas y, otro "DE" (RA2), detecta el correcto posicionamiento de un
//envase. Al detectarse el paso de 10 piezas, el envase se considera lleno, se activa una
//señal acústica "A" (RB2) y, la cinta que transporta embalajes, se desplaza hasta situar un
//nuevo envase vacío. En este momento se desactiva la señal acústica "A"(RB2) y nuevamente
//avanza la cinta de piezas repitiéndose así el ciclo. Un interruptor "I" (RA0) activa o
//no a todo el sistema.

#include <16f876A.h>

//Ajusta los valores de la palabra de configuración durante el ensamblaje:
//Protección de código y datos=OFF, LVP=OFF, WDT=OFF y OSC=XT

#fuses NOPROTECT,NOCPD,NOLVP,NOWDT,XT

// Con estas directivas las funciones "input" y "output_bit" no reprograman
// el pin de la puerta cada vez que son utilizadas. Si no se indica el
// modo fast_io se asume por defecto standard_io el cual reprograma el pin
// siempre antes de ser utilizadas estas funciones.

#use delay(clock=4000000) //Activa las temporizaciones en base al clock de trabajo
#use fast_io (A)
#use fast_io (B)

int   x;            //Variable para el contador de piezas

main()
{
     output_b(0x0);               //Borra las salidas
   setup_adc_ports(NO_ANALOGS);   //Puerta A digital
     set_tris_a(0x3F);            //Puerta A entrada
     set_tris_b(0x00);            //Puerta B salida

     while(1)
    {   while(!input(PIN_A0));   //Esperar a que se active I
         output_low(PIN_B2);      //Desactiva acústico A
      output_high(PIN_B1);    // Activar cinta de envases M2
      
      while(!input(PIN_A2));   // Espera se posicione el nuevo envase
      delay_ms(10);         //Temporiza 10 ms para eliminar rebotes
      output_low(PIN_B1);      // Desactiva cinta de envases M2
      output_high(PIN_B0);   // Activa cinta de piezas M1
   
      for (x=1; x<=10; ++x)   //Bucle para contar 10 piezas
            {
            while(input(PIN_A1));
            delay_ms(10);         //Temporiza 10 ms para eliminar rebotes
            while(!input(PIN_A1)); //Esperar que pase pieza por DP (1-0-1
            delay_ms(10);         //Temporiza 10 ms para eliminar rebotes
            }
      
      output_low(PIN_B0);      //Desactiva cinta de piezas M1
      output_high(PIN_B2);   //Activa señal acústica A
      output_high(PIN_B1);   //Activa cinta de envases M2
      
      while(input(PIN_A2));   //Espera salida de envase lleno
      delay_ms(10);         //Temporiza 10 ms para eliminar rebotes
   }   
}




 

anything