Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Wilson C.

PIC Definição do TRIS, PORT e leitura de dados(sensor)

Recommended Posts

#include <16F873A.h>                                //carregas as definições do microcontrolador usado
#device ADC=16                                      //conversor AD de 16
#fuses HS, NOPUT, NOWDT, NOBROWNOUT, NOLVP          //bits de configuração da MCU para gravação    

//configurações do projeto
#use delay(crystal=20MHz)                           //frequencia de clock para - Cristal Externo
#use pwm(CCP1,TIMER=2,FREQUENCY=5300000,DUTY=90)    //configuração do PWM
#priority TIMER1                                    //prioridade no tratamento de interrupções
//#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_A0)      //permite comunicação serial


//modo rápido de inicialização das portas
#use   fast_io(a)
#use   fast_io(b)
#use   fast_io(c)

#byte  porta = 0x00
#byte  portb = 0x00
#byte  portc = 0x00

// Entradas
#define sensor PIN_A3    //recebe dados do sensor | OBS: OS DADOS JÁ CHEGAM NO FORMATO DIGITAL( O CICUITO TEM UM CONVERSOR AD IMPLEMENTADO FISICAMENTE)
//#define temp   PIN_B4  //nao userei mais um sensor de temperatura

// Saídas
#define pwm    PIN_C2    //saida que gera um sinal pwm conforme configuração
#define rele   PIN_C4    //saida que aciona/desliga rele | OBS: RELE DE ESTADO SOLIDO USADO PARA ACIONAR/DESLIGAR UMA VALVULA

//variaveis globais
float  leitura, umidadeideal;     //so preciso controlar uma gradeza(umidadeideal)
void main()
{

   // configura os tris
     set_tris_a(0b00001000);  //entra do sensor
     set_tris_b(0b00000000);  //
     set_tris_c(0b11110101);  //saida do pwm e do rele
      
   // inicializa os ports
     porta=0x00;            // limpa porta
     portb=0x00;            // limpa portb
     portc=0x00;            // limpa portc
     
//////////////////////////////////CONFIGURAÇÃO DO TIMER1//////////////////////////////////

   setup_timer_1(T1_EXTERNAL|T1_DIV_BY_8);      //104ms overflow
   enable_interrupts(GLOBAL);//chave principal das interrupções
   enable_interrupts(int_timer1); // interrupção do TIMER 0
     
//////////////////////////////////////////////////////////////////////////////////////////
      
   while(TRUE)
   {
      leitura = input(sensor);     // a variável leitura recebe o valor lido do PIN_A3
      if(leitura >= umidadeideal){ //se a entrada for maior ou igual  a umidadeideal
      
         output_low(rele);
      
      }if(leitura < umidadeideal){ //se a entrada for menor que a umidadeideal
      
         output_high(rele);
      
      }
   }

}

Olá amigos(as),

sou inciante nessa área de microcontroladores PIC. No entanto, estou num projeto de iniciação científica na minha faculdade, projeto esse que estou desenvolvendo um sistema automático de irrigação. Vou fazer uma breve descrição do projeto: (PIC16f873A)

--no pino PIN_A3 recebe os dados do sensor, esses dados já chegam no formato digital (os dados passam por um circuito "físico" de conversor AD e um retificador e depois chega ao PIC)

--no pino PIN_C2 está uma saída pwm de 5,3MHz  (tenho duvida sobre como achar o valor do duty cycle)

--no pino PIN_C4 está uma saída para acionar/desligar um relé de estado sólido ligado à uma válvula do sistema de irrigação

O objetivo é conseguir ler os dados do sensor de umidade em um intervalo específico de tempo(usando timer e interrupção), e a partir dos dados lidos eu os comparo com a umidadeideal e aciono/desligo o relé. Peço a ajuda de vocês para verificar o meu código, pois minhas maiores dúvidas são: configurar o timer e interrupção para fazer a leitura dos dados de tempo em tempo( por exemplo 500ms ou 1s); configurar as portas corretamente para ler os dados. O código ta  bem comentado, mas com certeza vai ter muitos erros principalmente em relação ao TRIS, PORT e timer. Desde já agradeço pelo seu tempo e muita paciência rsrs

 

Editado por DiF
Retificar post

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste a solução encontrada para que outros usuários com dúvidas semelhantes possam ser ajudados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Wilson C. ,

 

Olha... não entendo nada dessa linguagem, mas tenho certeza que esse comando INPUT(sensor) não vai funcionar.

Poste o esquema eletrônico completo, para começar.

Depois, descreva o formato de comunicacão desse conversor A/D externo que lê os dados do sensor e entrega para o seu PIC .

 

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×