Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

ayuda banda transportadora con sensor de peso y altura

perez0504

Becerro
Desde
12 Dic 2008
Mensajes
27
Hola esoty realizando un proyecto de fin de cuatrimestre, el cual consiste en una banda trasnportadora con sensor de pesoy altura, para de esta forma saber que parte pintar, el sistema tiene tres sensores de presencia, que para efectos practicos ahorita estoy manejando como pulsadores, el primer sensor seria el area de pesado, el segundo el area de altura, y el tercero el area de salida, estoy usando pcwhd 4.120, no logro hacer que funcione, es mi segundo proyecto grande, y la verdad no encuentro el error. De antemano agradesco su ayuda.

Código:
#include <16F887.h>
#device ADC=10
#fuses HS,NOWDT,NOPUT,MCLR,NOBROWNOUT,NOLVP,NOCPD,NOWRT,NOPROTECT,NOFCMEN,NOIESO
#use delay (clock=20000000)
#include <math.h>
#use fast_io(A)
#use fast_io(B)
#define LED pin_c5


void main()
{
  int16 q, total;                                      
  float peso, altura;                              // Variables altura y peso
  setup_comparator(NC_NC_NC_NC);
  setup_vref(0);
  set_tris_a(0b11111111);                         // A0-7 entradas
  set_tris_b(0b00000000);                         // B0-7 salidas
  setup_adc_ports(sAN0 | sAN1 | VSS_VDD);         // setup A/D inputs
  setup_adc( ADC_CLOCK_INTERNAL );                // setup A/D clock
  set_adc_channel(0);                             // init A/D channel
  delay_us (20);                                  //Retraso TAD
  set_adc_channel(1);
  delay_us (20);                                  //Retraso TAD
  output_high(pin_c4);                            // Led de encendido del pic
        
  output_low(PIN_B0);        // motor side B low
  output_low(PIN_B1);        // motor side B low       
  output_low(PIN_B2);        // motor side B low     
  output_low(PIN_B3);        // motor side B low
  output_low(PIN_B4);        // motor side B low
  output_low(PIN_B5);        // motor side B low
  output_low(PIN_B6);        // motor side B low
  output_low(PIN_B7);        // motor side B low
        
  delay_ms(50);
  
  while(true)
  {
    if(input(pin_a5)==0)
  {
              
      set_adc_channel(0);    //Lectura peso y altura
      delay_us(20);
      q = read_adc();
      peso =  q / 256;
      
      set_adc_channel(1);
      delay_us(20);
      q = read_adc();
      altura = q / 256;
      total = peso + altura;
      
      if(total<=0.01)       // no hay nada
       {
        output_low(PIN_B0);        // motor side B low
        output_low(PIN_B1);        // motor side B low       
        output_low(PIN_B2);        // motor side B low     
        output_low(PIN_B3);        // motor side B low
   
       }
      if(total>=0.02 && total<=1.25)
       {
        output_high(PIN_B0);        // motor side B high
        delay_ms(1000);
        output_low(PIN_B1);        // motor side B low       
        delay_ms(1000);
        output_low(PIN_B2);        // motor side B low     
        delay_ms(1000);
        output_low(PIN_B3);        // motor side B low
        delay_ms(1000);
       }
      if(total>=1.26 && total<=2.5)
       {
        output_low(PIN_B0);        // motor side B low
        delay_ms(1000);
        output_high(PIN_B1);        // motor side B high
        delay_ms(1000);
        output_low(PIN_B2);        // motor side B low     
        delay_ms(1000);
        output_low(PIN_B3);        // motor side B low
        delay_ms(1000);
       }
      if(total>=2.5 && total<=3.75)
       {
        output_low(PIN_B0);        // motor side B low
        delay_ms(1000);
        output_low(PIN_B1);        // motor side B low       
        delay_ms(1000);
        output_high(PIN_B2);        // motor side B high     
        delay_ms(1000);
        output_low(PIN_B3);        // motor side B low
        delay_ms(1000);
       }
       
      if(total>=3.75 && total<=5)
       {
        output_low(PIN_B0);        // motor side B low
        delay_ms(1000);
        output_low(PIN_B1);        // motor side B low       
        delay_ms(1000);
        output_low(PIN_B2);        // motor side B low     
        delay_ms(1000);
        output_high(PIN_B3);        // motor side B high
        delay_ms(1000);
       }
  
  }
         break;
  {
   while (input(pin_a6)==0)   //si RA6 es 0 inicia la secuencia
    {
      
       
        
          
      set_adc_channel(0);    //Lectura peso y altura
      delay_us(20);
      q = read_adc();
      peso =  q / 256;
      
      set_adc_channel(1);
      delay_us(20);
      q = read_adc();
      altura = q / 256;
      total = peso + altura;
      
      if(total<=0.01)       // no hay nada
       {
        output_low(PIN_B4);        // motor side B low
        output_low(PIN_B5);        // motor side B low       
        output_low(PIN_B6);        // motor side B low     
        output_low(PIN_B7);        // motor side B low
   
       }
      if(total>=0.02 && total<=1.25)
       {
        output_high(PIN_B4);        // motor side B high
        delay_ms(1000);
        output_low(PIN_B5);        // motor side B low       
        delay_ms(1000);
        output_low(PIN_B6);        // motor side B low     
        delay_ms(1000);
        output_low(PIN_B7);        // motor side B low
        delay_ms(1000);
       }
      if(total>=1.26 && total<=2.5)
       {
        output_low(PIN_B4);        // motor side B low
        delay_ms(1000);
        output_high(PIN_B5);        // motor side B high
        delay_ms(1000);
        output_low(PIN_B6);        // motor side B low     
        delay_ms(1000);
        output_low(PIN_B7);        // motor side B low
        delay_ms(1000);
       }
      if(total>=2.5 && total<=3.75)
       {
        output_low(PIN_B4);        // motor side B low
        delay_ms(1000);
        output_low(PIN_B5);        // motor side B low       
        delay_ms(1000);
        output_high(PIN_B6);        // motor side B high     
        delay_ms(1000);
        output_low(PIN_B7);        // motor side B low
        delay_ms(1000);
       }
       
      if(total>=3.75 && total<=5)
       {
        output_low(PIN_B4);        // motor side B low
        delay_ms(1000);
        output_low(PIN_B5);        // motor side B low       
        delay_ms(1000);
        output_low(PIN_B6);        // motor side B low     
        delay_ms(1000);
        output_high(PIN_B7);        // motor side B high
        delay_ms(1000);
       }
    
       else
          
        if(input(pin_a7)==0) 
         output_high(LED);  
    }
  }
  }
}
 
Volver
Arriba