Comparador Analógico 16f628a

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Comparador Analógico 16f628a

Mensagempor Bruno Caputo » 23 Nov 2009 11:39

Pessoal, estou começando a mexer com PIC usando ASM e não encontrei,ainda, na internet uma explicação de como eu posso estar fazendo uma comparação em cima de uma entrada analógica.

Apenas descobri que no modelo 16f628a, que estou usando, não possui conversor de AD mas que posso fazer uma comparação da entrada analógica com voltagens base de comparação.

Descobri tbm que pra isso eu deveria usar as instruções CMCON e VRCON. Mas não faço a menor ideia de como usálos.

Alguem poderia me dizer como eu posso saber se uma entrada analógica é maior, menor ou igual a um V de referencia??
Bruno Caputo
Bit
 
Mensagens: 8
Registrado em: 22 Nov 2009 05:18

Mensagempor Alesandro F Zagui » 23 Nov 2009 11:59

O ribeiro220 postou uma apostila que fala sobre Pic 16F, bem completa, provavelmente tenha alguma coisa sobre o comparador.

http://asm51.eng.br/phpbb/viewtopic.php?t=8792
Alesandro Freire Zagui
Alesandro F Zagui
Byte
 
Mensagens: 154
Registrado em: 12 Mai 2009 11:03
Localização: Campo Mourao, Pr

Mensagempor renatokodaira » 23 Nov 2009 12:39

Bruno, primeiro arrume a datasheet do 16F628A no site da Microchip. Dê uma lida no capítulo sobre comparadores analógicos. Ali tem todas as informações técnicas que você precisa.

Em resumo: CMCON e VRCON não são instruções. Eles são nomes de registradores onde cada bit tem um significado, uns são o resultado da comparação das entradas (ou seja são a saída do comparador), outros servem para configurar os comparadores (modo, inversão de sinal, entradas usadas, tensões de referência usados, etc).

Para usá-lo como conversor analógico-digital você terá uma limitação muito grande, já que somente 16 níveis de tensão de comparação estarão disponíveis.
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Mensagempor Bruno Caputo » 23 Nov 2009 12:44

Obrigado pessoal, vou seguir a orientação de vc´s.
Bruno Caputo
Bit
 
Mensagens: 8
Registrado em: 22 Nov 2009 05:18

Mensagempor Djalma Toledo Rodrigues » 23 Nov 2009 13:58

E Veja também Amplificador Operacional (TL071)

Aliais no µC pode configurar para acesso aos pinos Entradas (+ - ) e Saída

Claro que a qualidade desse do µC não se compara com o CI TL071

.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor Bruno Caputo » 23 Nov 2009 18:59

Pessoal, valeu..consegui fazer a comparação entre dois valores analógicos da entrada.

Agora farei comparando com um referencial interno.

Alesandro F Zagui, seu link juntamente com o datasheet me fizeram entender todo a caoisa.
Valeu pessoal.
Bruno Caputo
Bit
 
Mensagens: 8
Registrado em: 22 Nov 2009 05:18

Mensagempor jorgeluiz » 24 Nov 2009 00:42

procure topicos com as palavras "conversao delta-sigma". Ou va direto na fonte : AN700, no site da Microchip.
Avatar do usuário
jorgeluiz
Byte
 
Mensagens: 448
Registrado em: 26 Mar 2007 02:26

Mensagempor Bruno Caputo » 26 Nov 2009 21:01

Pessoal, consegui fazer a comparação entre duas entradas. RN0 e RN3. Tentei fazer usando a Vref mas não está dando certo.

Usei a seguinte configuração dos registradores...

MOVLW B'10101100'
MOVWF VRCON


MOVLW B'00000010'
MOVWF CMCON


CALL delay
CALL delay

BTFSC CMCON,6
BSF PORTB,5

Ah...coloquei uma entrada em RA0 apenas e queria comparar com a Vref interna 2,5V.
Bruno Caputo
Bit
 
Mensagens: 8
Registrado em: 22 Nov 2009 05:18

Mensagempor Jozias del Rios » 26 Nov 2009 21:26

Não estou olhando o datasheet... mas vc está configurando os bancos de memória corretamente para acessar essas configurações, principalmente o VRCON?

isto é, será q não faltou algo do tipo
bsf STATUS, RP0

antes de mexer em VRCON?
Os vencedores são aqueles que sabem o que fazer se perderem.
Os perdedores são aqueles que não sabem o que fazer se ganharem.
Avatar do usuário
Jozias del Rios
Byte
 
Mensagens: 279
Registrado em: 31 Out 2009 03:36
Localização: SJCampos-SP

Mensagempor Bruno Caputo » 26 Nov 2009 21:34

Opa..não havia colocado a parte inicial do código...agora ele vai completo...


;xxxxxxxxxxxxxxxxxxxxx


LIST P=16F628, R=DEC ; Use the PIC16F628 and decimal system

#include "P16F628.INC" ; Include header file


__config _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON

CBLOCK 0x20 ; Declare variable addresses starting at 0x20
Loop1,Loop2
ENDC
;
; -----------
; INITIALIZE
; -----------
;
ORG 0x000 ; Program starts at 0x000

CLRF PORTA ; Initialize port A
CLRF PORTB ; Initialize port B

BSF STATUS,RP0 ; RAM bank 1

CLRF TRISA ; All pins port A output
CLRF TRISB ; All pins port B output

BCF STATUS,RP0 ; RAM bank 0
;
; ------------------------
; FUNCTION OF PORT A PINS
; ------------------------
;
MOVLW 7
MOVWF CMCON ; Comparators off, all pins digital I/O

;
; ----------
; MAIN LOOP
; ----------
;
Main

;Compara RA0 com RA3. Verifica se RA3 > RA0

MOVLW B'10101100'
MOVWF VRCON

MOVLW B'00000010'
MOVWF CMCON

CALL delay
CALL delay

BTFSC CMCON,6
BSF PORTB,5

GOTO Main

;
; ---------------
; DELAY 250 MSEC
; ---------------
;
delay MOVLW 150
MOVWF Loop1
Outer MOVLW 100
MOVWF Loop2
Inner NOP
NOP
DECFSZ Loop2,F
GOTO Inner ; Inner loop = 5 usec.
DECFSZ Loop1,F
GOTO Outer
RETURN

END
Bruno Caputo
Bit
 
Mensagens: 8
Registrado em: 22 Nov 2009 05:18

Mensagempor Jozias del Rios » 26 Nov 2009 21:51

Olhando o datasheet do 16F628, vejo que o register file VRCON está no Bank1

logo para acessá-lo, faça:

Código: Selecionar todos
; (...)
bsf STATUS, RP0
  MOVLW B'10101100'
  MOVWF VRCON
bcf STATUS, RP0
; (...)


tente!
Os vencedores são aqueles que sabem o que fazer se perderem.
Os perdedores são aqueles que não sabem o que fazer se ganharem.
Avatar do usuário
Jozias del Rios
Byte
 
Mensagens: 279
Registrado em: 31 Out 2009 03:36
Localização: SJCampos-SP

Mensagempor Jozias del Rios » 26 Nov 2009 22:24

É, além disso o cara configurou os pinos como output, então não faz sentido.

Tinha que botar pelo menos o RA0 como input, este pino que ele deseja comparar com o VREF.
Os vencedores são aqueles que sabem o que fazer se perderem.
Os perdedores são aqueles que não sabem o que fazer se ganharem.
Avatar do usuário
Jozias del Rios
Byte
 
Mensagens: 279
Registrado em: 31 Out 2009 03:36
Localização: SJCampos-SP

Mensagempor Andre_Cruz » 27 Nov 2009 07:16

Bruno Caputo,

Gostaria apenas de dar uma dica de organização do código fonte, após o vetor de reset endereço 0x000, o correto é dar um salto antes de iniciar a configuração dos registradores do PIC, e deixando o vetor de interupção endereço 0x004 livre, mesmo que você não esta fazendo o uso delas.

Abraço

André
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor Bruno Caputo » 27 Nov 2009 08:39

Galera, muito obrigado mesmo.

Ajudaram absurdamente.

Arrumei o bank segundo o datasheet e funcionou...vou apenas organizar o código , comentar e posta-lo aqui pra poder dar o tópico como fechado e ajudar a outros que tenham a mesma dificuldade.
Novamente obrigado..e desculpem a ignorancia...faz apenas 2 semnas que to mexendo nisso...

[]´s
Bruno Caputo
Bit
 
Mensagens: 8
Registrado em: 22 Nov 2009 05:18


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x