Autor Tema: control de Nivel de agua controlado un Hidroneumatico + protección termico  (Leído 1775 veces)

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

Desconectado coronado88

  • PIC10
  • *
  • Mensajes: 12
este es un simple control para controlar un tanque de agua
el diagrama esta explicado, si en el programa quieren hacer una mejora lo acepto, no soy experto en programación pero estoy aprendiendo ademas lo hice en Arduino y me funciono
Código: [Seleccionar]
#include <16F877A.h>
#device ADC=16
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES PUT                      //Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(crystal=20000000)


#use fast_io(b)
#use fast_io(c)
#use fast_io(d)

// Se define las entradas de los indicadores de niveles del taque de agua
#define ful_4 pin_c1
#define lleno_3 pin_c2
#define medio_2 pin_c3
#define bajo_1 pin_c4

// Se define las salida de los indicadores luminoso de los niveles de agua
#define ful pin_d3
#define lleno pin_d4
#define medio pin_d5
#define bajo pin_d6
#define sinagua pin_d7

// SALIDA DE CONTROL DE BOMBA DE AGUA,PRESOTASTO Y TERMICO
#define bomba pin_c0
#define presotasto pin_b7
#define termico pin_b6
#define On_Termico pin_b5

void Control_de_llenado(void);
void Control_Presion(void);
void Oil_NC(void);

void main()
{

set_tris_c(0b00011110);     // configuro los puerto c como salida y entradas
output_c(0b00000000);           // apaga todo los pines del puerto c
set_tris_d(0b00000000);        // configuro los puerto d como salida
output_d(0b00000000);         // apaga todo los pines del puerto d
set_tris_b(0b11000000);  // configuro los puerto b como salida y entradas
output_b(0b00000000);       // apaga todo los pines del puerto c

    do{
    Control_de_llenado();        // funcion de llenado
    Control_Presion();          //  funcion que controla Presotasto
    Oil_NC();                  //   funcion del Termico
    } while(TRUE);
   }
   
 //---------------Control de Llenado de Tanque de Agua-------------------------
   
 void Control_de_llenado(void)
 {   
  // ------------------------Indica el Nivel Ful-------------------------------
    if(input(ful_4)==1){
    output_high(ful);
      }
    else {
    output_low(ful);
    }
     
  //------------------------ Indica el Nivel Lleno-----------------------------
  if(input(lleno_3)==1){
   output_high(lleno);
  }
   else{
   output_low(lleno);
   }
   
   //------------------------Indica el Nivel Medio-----------------------------
   if(input(medio_2)==1){
   output_high(medio);
   }
   else{
   output_low(medio);
   }
   
   //-----------------------Indica el Nivel Bajo-------------------------------
   if(input(bajo_1)==1) {
   output_high(bajo);
   output_low(sinagua);
      }
   else{
   output_low(bajo);
   output_high(sinagua);
   delay_ms(100);
   output_low(sinagua);
   delay_ms(100);
   }
  }
     
 void Control_Presion(void)
 {
 if(input(bajo_1)==1 && (input(presotasto)==1 && (input(termico)==1))) {
 output_high(bomba);
 }
 
 else{
 output_low(bomba);
  }
 }
 
void Oil_NC(void)
 {
 if(input(termico)==1) {
 output_low(On_termico);
 }
 
 else{
 output_high(On_termico);
 delay_ms(200);
 output_low(On_termico);
 delay_ms(200);
 }
 }