Sobre mi.

Mi foto
Santander, CANTABRIA, Spain
Bienvenido a mi Blog, soy César Zazo Serrano y os mostraré las actividades realizadas durante el curso 2012/2013 en la asignatura de desarrollo y construcción de prototipos electrónicos que imparte nuestro profesor Don José Luis Del Val en el Centro Integrado De Formación Profesional Nº1 situado en Peñacastillo.

sábado, 1 de diciembre de 2012

Maquina de taladrado

En la siguiente entrada vamos a realizar un ejercicio de PIC con el siguiente enunciado:


Máquina de taladrado.

Al accionar el pulsador "I" (RA0) el cabezal realiza un descenso rápido de aproximación, activando el motor de bajada rápida "BR"(RB3). Al llegar al sensor "b" (RA2), se activa el relé "M" (RB1) que hace girar el motor de la broca y se realiza un descenso lento para el taladrado de la pieza "BL" (RB4). Cuando se activa el sensor "c" (RA3) se considera que la pieza está taladrada. Se inicia una subida rápida del cabezal "SR" (RB0) al tiempo que el relé "M" (RB1) de giro sigue activado. Cuando se alcanza el final de carrera "a" (RA1), se detiene la subida rápida "SR"(RB0), el relé de giro "M" (RB1) y se activa una señal acústica "A" (RA2) de aviso. El ciclo comienza con una nueva pulsación de "I" (RA0).

Adjunto código, *.hex y diseño en proteus:



Para la realización del código hemos utilizado principalmente los comandos If y else:

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// AUTOR:CESAR ZAZO SERRANO.                                                   19/11/2012
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PROGRAMA: MAQUINA DE TALADRADO         
// DISPOSITIVO: PIC 16F877                                                              COMPILADOR: CCS VS 4.104
// ENTORNO IDE: MPLAB 8.40                                                           SIMULADOR: PROTEUS 7.8
// TARJETA DE APLICACION: PICDEM2                                                            DEBUGGER: ICD3
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Al accionar el pulsador "I" (RA0) el cabezal realiza un descenso rápido de aproximación,
//activando el motor de bajada rápida "BR"(RB3). Al llegar al sensor "b" (RA2), se activa
//el relé "M" (RB1) que hace girar el motor de la broca y se realiza un descenso lento para
//el taladrado de la pieza "BL" (RB4). Cuando se activa el sensor "c" (RA3) se considera
//que la pieza está taladrada. Se inicia una subida rápida del cabezal "SR" (RB0) al tiempo
//que el relé "M" (RB1) de giro sigue activado. Cuando se alcanza el final de carrera "a"
//(RA1), se detiene la subida rápida "SR"(RB0), el relé de giro "M" (RB1) y se activa una
//señal acústica "A" (RA2) de aviso. El ciclo comienza con una nueva pulsación de "I" (RA0).                                                                ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CABECERA //////////////////////////////////////////////////////////////////////////////////////////////////////////                                                                                                          
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <16f877.h>  // libreria del pic 16f877
#fuses xt,nowdt 
#byte port_a=0x05 //vamos a utilizar el puerto a y b.
#byte port_b=0x06
#use delay(clock=4000000)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// VARIABLES GLOBALES ////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

No tenemos variables globales en este caso.

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PRINCIPAL /////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


void main(void)

{
port_b_pullups(true); //con esto se coloca las pullups y activa el puerto b como salida
  
  switch(PORT_A)
  
  {
            case 1: //marcha dada 0001
          {
          if (input (pin_a0)==0)
          {
            output_b(0b01010);
            //output_bit(pin_B3, 1);//velocidad rapida de bajada
            //output_bit(pin_B1, 1);//motor ON
          }}
            break;
            
            case 4: //Final bajada rapida 0100
            {
            if (input_a(0b0100))
            {
            output_b(0b10010);
            //output_bit(pin_B4, 1);//velocidad lenta de bajada       
            //output_bit(pin_B1, 1);//giro de broca
            //output_bit(pin_B2, 0);//cambio de velocidad
            }}
            break;
                  
           
            
            case 8:// Final taladrada 1000
            {
            if (input_a(0b1000))
            {
          output_b(0b00011);
          //output_bit(pin_B4, 0);//velocidad lenta se para       
          //output_bit(pin_B1, 1);//motor on
          //output_bit(pin_B0, 1); //Se activa la subida hacia arriba
            }}
            
            break;
                      
            
            case 2: // FCS final de carrera de subida 0010
         {
         if (input_a(0b0010))
         {
          output_b(0b00100);
          //output_bit(pin_B0, 0);// para de subir
          //output_bit(pin_B1, 0);// para el motor      
          //output_bit(pin_B2, 1);// se activa señal acustica
         }}
            
            break;
            }
}

No hay comentarios:

Publicar un comentario