duvida ADC 12F675 "8 BITS".

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

duvida ADC 12F675 "8 BITS".

Mensagempor fabim » 09 Mar 2007 12:31

para eu trabalhar com 8 bits de resolução.
devo justificar
ADCON0 bit 7 (ADFM) como 1.
E pegar o valor de ADRESL.

ou o contrario ?

Abraços fabim.

Eu estou achando muito estranho..

Fiz um controlador AC por passagem de zero...
calculei uma rotininha basica cujo o potenciomentro a 100%=5V
igual a 255 daria um tempo de 4,2mS.

Mais aí esta um problema fod´s.

Percebi que a cada em 4 pontos diferentes do potenciometro ele zera e começa a aumentar novamente... como se fosse por exemplo.
de 0 a 1,25V = a 0 a 4,2mS
de 1,25V a 2,5V = a 0 a 4,2mS
de 2,5V a 3,75v = a 0 a 4,2mS
de 3,75V a 5V = a 0 a 4,2mS..

Alguem teria uma sujestão pra me passar ?

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor renatokodaira » 09 Mar 2007 14:07

Voce tem que justificar para a esquerda e pegar o valor de ADRESH. Assim ficam os 8 bits mais significativos (que voce vai usar) no ADRESH e os 2 menos significativos no ADRESL. Nunca vai poder usar os bits do ADRESL se quiser conversao em 8 bits (pois justificado pela esquerda voce só tem os dois bits menos significativos e justificado pela direita tem só os 8 bits menos significativos - perdendo os 2 mais significativos).

Pela esquerda:
ADRESH__ADRESL
11111111_11xxxxxx

Pela direita:
ADRESH__ADRESL
xxxxxx11_11111111
Editado pela última vez por renatokodaira em 12 Mar 2007 08:39, em um total de 1 vez.
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Mensagempor fabim » 09 Mar 2007 15:50

nossa que coisa estranha.. "programo pascal"..

I : word.

Begin.

I := ADC_READ(3); ( i = resultado de 10 bits do ADC)

While ( i >= 1) do
begin
DEC(i);
End;

Ta acontecendo a mesma coisa doida

de 0 a 1,25V = a 0 a 8,2mS
de 1,25V a 2,5V = a 0 a 8,2mS
de 2,5V a 3,75v = a 0 a 8,2mS
de 3,75V a 5V = a 0 a 8,2mS..
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Julio Cezar » 09 Mar 2007 16:04

bom n entendi o que esse loop faz e se I é uma word não é necessário converter para 8 bits certo?
Avatar do usuário
Julio Cezar
 
Mensagens: 4
Registrado em: 08 Mar 2007 13:18

Mensagempor fabim » 09 Mar 2007 16:27

ESSE LOOP
pega o valor passado em I que vai de 0 a 1023 e vai decrementando até 0, quando chega a zero ela sai do loop..

Mais o mais louco de tudo é isso..

A cada 1,25V ele retorna de zero novamente..
tipo, vou variando a tensão de 0 a 1,24V ta dando 7,66mS. Quando eu chego a 1,25V ele retorna zero, conforme vou aumentando 1,28 1,29 1,30 ele vai aumentando o tempo tambem até chegar em 2,5V.. passou de 2,5V ele zera novamente...

Pelo conhecimento de todos..

0V = 0.
5V = 1023.

So que esta acontecendo conforme indicado acima.

Abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Julio Cezar » 09 Mar 2007 16:38

vc tentou colocar o ADCON0 bit 7 (ADFM) como 0? para justificar pela esquerda?
Avatar do usuário
Julio Cezar
 
Mensagens: 4
Registrado em: 08 Mar 2007 13:18

Mensagempor eletroinf » 09 Mar 2007 18:24

fabim
segundo o que entendi -e o sintoma do problema parece estar deixando claro-, a função ADC_READ(3) está retornando somente os 8 bits LSBs da conversão AD.
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Mensagempor fabim » 12 Mar 2007 10:59

nossa ta uma caca isso viu..

Sai do 12F675 e peguei o 16F873, a função funcionou corretamente.

E a leitura do LSB 8 bits. Vc esta correto.
Pois o MSB vai de zero a 4.. pra cada estouro de LSB ele incrementa o MSB.

Putz que anarquia.. bom vou ter que brigar feio..

Abraços fabim.
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor fabim » 12 Mar 2007 14:25

pessoal dando uma espiculada na net eu fiquei meio confuso.

O dimmer que eu estou fazendo.

Passou de zero eu disparo entre 0 e 8mS..

Mais observando alguns esquemas.
Eu vi que os caras disparam o triac depois do máximo nível que seria o VP, com aproximadamente 4,150mS.

alguem sabe me dizer se isto confere.??

Abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor microeletronica » 12 Mar 2007 20:19

eh mesmo?
microeletronica
Byte
 
Mensagens: 158
Registrado em: 05 Dez 2006 18:22

Mensagempor fabim » 13 Mar 2007 08:21

pode ser que seja.. rss.
Resumindo.
Os projetos que eu vi.. os camaradas não disparam na borda de subida da senoide.
Eles disparam na borda de descida, no caso 4,150mS=220Vp.
Eles contam como 4,150mS=100% 6mS=50% .......

Queria saber se isso confere.

Abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Mersin » 24 Mar 2007 21:10

Fabim,

Uma vez aconteceu de minha "regra de 3" resultar em trechos como você descreveu acima, pu seja, parecia que recomeçava a contagem umas 4 vezes até o fim de curso do Potenciômetro.

Resolvi o problema colocando uma mudança de tipo forçada antes do cálculo, ou seja, (int32) antes do x/y. Veja o exemplo do conversor AD no fim do livro do Fábio. "Programação C - PIC".

Valeu!
Mersin
Mersin
Byte
 
Mensagens: 121
Registrado em: 22 Out 2006 13:07
Localização: Goiânia

Mensagempor fabim » 26 Mar 2007 09:21

tics tics tics.

procedure disp(var imput : byte);

eu estava entrando com word, a procedure so ira pegar o menos significativo..rsrs

agora

Procedure disp(var imput : word).

Prontim funcionou..rsrs

Brigado a todos

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?


Voltar para PIC

Quem está online

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

x