Leitura de um sinal pulsante ou PWM

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Leitura de um sinal pulsante ou PWM

Mensagempor erik.flores » 17 Mai 2014 10:37

Amigos estou com uma certa dúvida que não estou conseguindo encontrar uma solução.

Existe no PIC um jeito de detectar um sinal PWM ou melhor falando um sinal pulsante na entrada do microcontrolador?

Tenho que identificar 3 tipos de sinal na mesma entrada, o pulsante, o de 5 V e o TERRA.

O 5 V e o sinal de TERRA são fáceis.

Código: Selecionar todos
If (SINAL == 5)
{
      //comando
}
If (SINAL == 0)
{
      //comando
}


E o sinal pulsante alguém tem uma solução pra me dizer.

Obrigado
Abraços
erik.flores
Bit
 
Mensagens: 14
Registrado em: 15 Mai 2014 10:32

Re: Leitura de um sinal pulsante ou PWM

Mensagempor cfreund » 17 Mai 2014 12:30

Veja se existe timer com incremento por pino no seu uC. Ou então, interrupção externa incrementando variável do tipo volatile. Necessário configurar interrupção a cada 1 segundo ou fração, para calcular a frequência e resetar variável/registrador.
Cláudio F
Avatar do usuário
cfreund
Word
 
Mensagens: 672
Registrado em: 14 Out 2006 14:02
Localização: São Paulo

Re: Leitura de um sinal pulsante ou PWM

Mensagempor erik.flores » 17 Mai 2014 13:38

cfreund escreveu:Veja se existe timer com incremento por pino no seu uC. Ou então, interrupção externa incrementando variável do tipo volatile. Necessário configurar interrupção a cada 1 segundo ou fração, para calcular a frequência e resetar variável/registrador.


cfreund

Me ajude em forma de exemplos que eu vou entender melhor.
Eu uso o PIC 16F887 e o compilador CCS.

Eu já tenho um timer ativo, o timer1 para contar 1 segundo..
Preciso ativar outro timer?
erik.flores
Bit
 
Mensagens: 14
Registrado em: 15 Mai 2014 10:32

Re: Leitura de um sinal pulsante ou PWM

Mensagempor Djalma Toledo Rodrigues » 17 Mai 2014 13:50

Sugestão:
Você imagina como uma pessoa faria isso.
De posse desse procedimento (procedimento lógico) faça um fluxograma.
Dai o Programa.

Mas, observe bem se existe 3 possibilidades +5 , 0, Pulsos
o +5 ou o zero não podem ser reconhecidos assim de imediato
há que dar um tempo, tempo maior que o estimado para o Periodo do PWM .

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

Re: Leitura de um sinal pulsante ou PWM

Mensagempor erik.flores » 17 Mai 2014 13:57

Já está feio o fluxograma.
Meu programa já está feito, só está faltando isso pra concluir o programa, pq é o que meu hardware fornece.
Sim são esses 3 tipos de possibilidades mesmo.
Tudo bem se demorar pra reconhecer 2 ou 3 períodos, mas eu não sei como proceder na comparação.
Você tem alguma sugestão pra calcular o período?
erik.flores
Bit
 
Mensagens: 14
Registrado em: 15 Mai 2014 10:32

Re: Leitura de um sinal pulsante ou PWM

Mensagempor andre_luis » 17 Mai 2014 14:20

Erik,


Não sei qual é a versão do seu copmpilador CCS, mas deve ter uma pasta tipo "C:\Examples" com um arquivo EX_CCPMP.C, que estou anexando mais abaixo. No caso, eles utilizaram a função Delay() para a temporização, mas eu pessoalmente não recomendo.

ex_ccpmp.c


Basicamente, a função do CCP quando configurado como Comparador, é a de fazer a contagem de uma entrada num intervalo de tempo pre-determinado. Aplicado no seu caso, significa que se a contagem fosse maior que Zero [ if ( pulse_width ) > 0 ], pode interpretar isso como sua entrada estando pulsando.



+++
Você não está autorizado a ver ou baixar esse anexo.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Leitura de um sinal pulsante ou PWM

Mensagempor Red Neck Guy » 17 Mai 2014 15:31

Se a frequência for constante e o ciclo fixo, você pode implementar um simples filtro de segunda ordem e ler o nivel resultante pelo ADC.
Um filtro bem fuleiro mesmo, tipo 2 resistores e 2 capacitores.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: Leitura de um sinal pulsante ou PWM

Mensagempor andre_luis » 17 Mai 2014 15:51

Aquino escreveu:Se a frequência for constante e o ciclo fixo, você pode implementar um simples filtro de segunda ordem e ler o nivel resultante pelo ADC. Um filtro bem fuleiro mesmo, tipo 2 resistores e 2 capacitores.


É mesmo, esse circuito costumam chamar também de integrador.

Se não me engando o microcontrolador que está usando - PIC16F877 - acho que tem módulo comparador analogico, o que permitiria um ajuste externo por trimpot do nivel de compraração. Tem um site interessante esplicando a teoria disso:

http://www.mikroe.com/chapters/view/8/c ... g-modules/


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Leitura de um sinal pulsante ou PWM

Mensagempor cfreund » 17 Mai 2014 16:12

Terra chamando Aquino e André....rs

Bacana a dica do CCP. A coisa ficaria bem enxuta.
Cláudio F
Avatar do usuário
cfreund
Word
 
Mensagens: 672
Registrado em: 14 Out 2006 14:02
Localização: São Paulo

Re: Leitura de um sinal pulsante ou PWM

Mensagempor andre_luis » 17 Mai 2014 16:22

Na verdade, a dica do Aquino poderia ser até mais aconselhável se quizer portar depois para um PIC mais simples ( sem comparador analógico ), pois com uma simples entrada A/D adicional poderia resolver.



+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Leitura de um sinal pulsante ou PWM

Mensagempor Red Neck Guy » 17 Mai 2014 16:24

Olha, eu faria com o capture, mas aqui é um fórum e eu gosto de propor soluções alternativas.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: Leitura de um sinal pulsante ou PWM

Mensagempor cfreund » 17 Mai 2014 16:35

andre_teprom escreveu:Na verdade, a dica do Aquino poderia ser até mais aconselhável se quizer portar depois para um PIC mais simples ( sem comparador analógico ), pois com uma simples entrada A/D adicional poderia resolver.


No caso, eu votaria por utilizar interrupção. Além de economizar hardware, pouparia o colega das Idiossincrasias de um ADC.


Aquino escreveu:Olha, eu faria com o capture, mas aqui é um fórum e eu gosto de propor soluções alternativas.


É válido Aquino. Só que, aumentaria o trabalho e diminuiria a confiabilidade. Por isso meu comentário.
Cláudio F
Avatar do usuário
cfreund
Word
 
Mensagens: 672
Registrado em: 14 Out 2006 14:02
Localização: São Paulo

Re: Leitura de um sinal pulsante ou PWM

Mensagempor cfreund » 17 Mai 2014 16:46

erik.flores escreveu:cfreund

Me ajude em forma de exemplos que eu vou entender melhor.
Eu uso o PIC 16F887 e o compilador CCS.

Eu já tenho um timer ativo, o timer1 para contar 1 segundo..
Preciso ativar outro timer?


Qual a frequência e ciclo desse sinal?
Cláudio F
Avatar do usuário
cfreund
Word
 
Mensagens: 672
Registrado em: 14 Out 2006 14:02
Localização: São Paulo

Re: Leitura de um sinal pulsante ou PWM

Mensagempor erik.flores » 17 Mai 2014 17:45

cfreund escreveu:
erik.flores escreveu:cfreund

Me ajude em forma de exemplos que eu vou entender melhor.
Eu uso o PIC 16F887 e o compilador CCS.

Eu já tenho um timer ativo, o timer1 para contar 1 segundo..
Preciso ativar outro timer?


Qual a frequência e ciclo desse sinal?


Cara to tentando como o amigo Andre disse mas com a função compare com CCP1 e CCP2.
Mas não to conseguindo ver uma solução ainda com isso.

Parece uma coisa tão simples, mas ta quebrando minha cabeça. rs :|

Bom cfreund

Eu coloquei pro microcontrolador gerar uma onda através do timer1.
Quando o timer contasse 4 vezes ele estourasse, então daria 1 segundo.
Então estabeleci pra cada contagem dessa do timer através de comparação de números par e ímpar, que gerasse um sinal High ou Low.
Então a cada 1 segundo ele liga 2 vezes e desliga 2 vezes.
erik.flores
Bit
 
Mensagens: 14
Registrado em: 15 Mai 2014 10:32

Re: Leitura de um sinal pulsante ou PWM

Mensagempor cfreund » 17 Mai 2014 17:52

Veja se entendi bem:

Você precisa identificar três situações de um pino.

1. Nivel Alto
2. Nivel Baixo.
3. Pulsando a 2 Hz com duty cycle de 50%.

É isso?
Cláudio F
Avatar do usuário
cfreund
Word
 
Mensagens: 672
Registrado em: 14 Out 2006 14:02
Localização: São Paulo

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

cron

x