Ir ao conteúdo

Projeto Bombeador para Painel Solar


Cleilsono Costa

Posts recomendados

Postado

Boa Noite, não tenho muito conhecimento a respeito do PIC 16f877 só estudei o PIC 16f84, logo não vi a respeito de conversões A/D para microcontroladores. Gostaria que alguém me passasse como desenvolver o seguinte projeto com as linhas de comando em Assembly. Desde já agradesço a atenção de todos. Estou tento muitas dificuldades para desenvolver o projeto. Peço uma grande ajuda se possível.Não tenho tido aulas presenciais dai o problema em enteder o funcionamento.

Projeto:Um sistema de aquecimento solar típico consiste em uma ou mais serpentinas em forma de painéis expostas à luz solar instaladas em um nível inferior ao do reservatório térmico de água quente.Infelizmente, em residências onde não foi previsto a instalação de um sistema de aquecimento solar de água, muitas vezes o painel acaba sendo instalado em um nível acima do reservatório térmico por falta de opção. Logo, a água não circula por convecção, necessitando da inserção de uma bomba d'água no circuito hidráulico para fazer a circulação forçada.

Use dois canais analógicos do conversor A/D do microcontrolador PIC16F877 para ler a tensão de dois sensores de temperatura. Um instalado no painel (serpentina) e outro no reservatório. Sempre que a temperatura do painel for maior que a do reservatório, uma bomba deve ser acionada para realizar a circulação forçada. Toda vez que a temperatura no reservatório ultrapassar 60oC um outro LED (instalado no banheiro) deve ser ligado sinalizando risco de queimadura caso a água não seja misturada. Considere os sensores fornecendo valores de tensão entre 0 e 5V para temperaturas entre 0 a 100oC. A conversão A/D deve ser feita em 8 bits e a saída lógica que aciona a bomba pode ser simulada com outro LED.

CBC

Postado

Com LM324, é fichinha fazer isso, mas bom, como você quer usar um PIC, não posso lhe ajudar pois não tenho conhecimento no ramo de microprocessadores.

  • 2 semanas depois...
Postado

Boa noite, consegue me mandar em C?

Abraço

Bom dia a todos fiz um projeto em assembly no entanto está dando um pequeno erro ao montar no proteus o led que indica a temperatura do painel está aceso o tempo todo, não está apagand, ou variando. Alguém poderia me ajudar, segue o código fonte. O professo me disse que pode ser na hora de buscar sinal no canal 1 converter para digital e guardar e assim fazer o mesmo com o canal 2 e comparar as informações. Alguém poderia me ajudar?

	LIST P=16F877  		; INDICA O TIPO DE PIC USADO
#INCLUDE <p16F877.inc> ;INCLUI A BIBLIOTECA DO PIC USADO

CBLOCK 20H ;DIRETIVA PARA CRIAÇÃO DE VARIAVEIS, COM 1ª POSIÇÃO INDICADA

W_RESERVATORIO
W_PAINEL
AUXILIO

ENDC ;FIM DA CRIAÇÃO DAS VARIAVEIS


#DEFINE LED PORTB,1
#DEFINE SENSORPAINEL PORTA,1
#DEFINE SENSORRESERVATORIO PORTA,0
#DEFINE BOMBA PORTB,2


;#################################################################
;VETOR DE RESET
ORG H'00'
GOTO INICIO ; Vai para o inicio do programa
INICIO
BSF STATUS,RP0 ;SELECIONA BANK 1
MOVLW B'00000101'
MOVWF ADCON1

MOVLW B'00001011'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
MOVLW 0X00
MOVWF TRISD
MOVLW 0X00
MOVWF TRISC
MOVLW 0X00
MOVWF TRISE
BCF STATUS,RP0 ;VOLTA AO BANK 0

CLRF INTCON ;DESABLITA AS INTERRUPÇÕES

CLRF PORTD
CLRF PORTB

;#################################################################
MAIN
MOVLW B'01000001' ;SELECIONA CANAL 1
MOVWF ADCON0
BSF ADCON0,2
TESTE_BIT2 BTFSC ADCON0,2
GOTO TESTE_BIT2
CALL DELAY
MOVF ADRESH,W
MOVWF W_RESERVATORIO
MOVLW B'01001001' ;SELECIONA CANAL 1
MOVWF ADCON0 ; fosc/8
BSF ADCON0,2
TESTE_BIT1 BTFSC ADCON0,2
GOTO TESTE_BIT1
MOVF ADRESH,W
MOVWF W_PAINEL
GOTO OPERACAO



OPERACAO MOVF W_RESERVATORIO,W
SUBWF W_PAINEL,W
BTFSC STATUS,0
BCF BOMBA
BSF BOMBA
GOTO TESTE60

TESTE60 MOVLW D'154'
SUBWF W_RESERVATORIO,W
BTFSC STATUS,0
GOTO ACENDELED
BCF LED
GOTO MAIN

ACENDELED BSF LED
GOTO MAIN

DELAY MOVLW D'1000'
MOVWF AUXILIO
CONTAGEM DECFSZ AUXILIO,F
GOTO CONTAGEM
RETURN
END

Postado

Você vai ter que especificar algumas coisas sobre essa conversão:

Qual o nível de tensão externa? Precisa utilizar uma referência diferente da alimentação?

Qual a taxa de leituras por segundo?

Precisa utilizar interrupções?

Qual sensor vai ser utilizado?

Aqui eu explico os registradores:

Para ativar o conversor AD, primeiro precisamos escolher quais portas serão analógicas e quais digitais. Para isso escrevemos nos bits PCFG3, PCFG2, PCFG1, PCFG0 do registrador ADCON1 (Banco 1).

Segue a tabela para escolha da configuração:

PCFG3_PCFG0_Port_Configuration_Control_bits.jpg

Se você não for utilizar referência externa, escolha a configuração '0100'.

Ainda no registrador ADCON1 (Banco 1), escolhemos o alinhamento dos bits com o ADFM. Como você quer ler somente 8 bits, fica fácil com o alinhamento na esquerda, então coloque o ADFM em 0, assim os 8 bits mais significativos da conversão estão no registrador ADRESH (Banco 0).

Escolhemos o canal em que realizaremos a medida:

(ADCON0 Banco 0)

adcchannel.png

Por último escolhemos o clock para o conversor e ligamos ele:

O período mínimo para o clock do conversor ad é de 1,6uS, podemos usar alguns pre-scalers para dividir a frequência do micro ou utilizar um oscilador RC interno para isso (quando o tempo não é crítico ou quando o micro está em sleep). Essa configuração é feita com os bits ADCS0, ADCS1 (ADCON0 Banco 0) e ADCS2 (ADCON1 Banco 1).

Segue a tabela para configurar o clock:

adcclock.png

Por fim ligamos o conversor AD pelo bit ADON (ADCON0).

A conversão é iniciada pelo bit GO/DONE (bit 1 do reg ADCON0), quando ela terminar esse bit volta para 0.

A cada troca de canal é recomendado um delay de 30uS no mínimo para descarregar o capacitor interno.

Aqui a tabela dos registradores do conversor AD:

adcregs.png

Tudo isso está bem explicado no datasheet na página 127.

  • Coordenador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...