Arduino - equivalência do PIC

97 views
Skip to first unread message

Baracat

unread,
May 23, 2012, 4:40:37 PM5/23/12
to ardu...@googlegroups.com
Povo,

Estou querendo fazer um frequencímetro para corrente alternada. Como não domino eletrônica como gostaria (ainda), dependo de projetos já prontos. Encontrei um que é exatamente o que eu quero, porém utiliza PIC. Usa o módulo CCP do PIC.  E é aí que vem a pergunta. Existe no arduino alguma coisa equivalente a esse módulo do PIC?

Pra quem quiser ver o projeto:

Abraços,

Felipe Navarro

unread,
May 23, 2012, 9:59:41 PM5/23/12
to ardu...@googlegroups.com
Eu também estou precisando fazer um frequêncimetro, só que para portar um projeto com PIC para uma shield de Arduino, um LC Meter.

Mas ACHO que o Arduino não tem opção de manusear os timers do ATMega (estou certo Féo?)

Atenciosamente,
Felipe Navarro
Radioamador - PY1CX
www.felipenavarro.net

Rogerio Lucas

unread,
May 23, 2012, 10:05:26 PM5/23/12
to ardu...@googlegroups.com
Opa, tem como manipular sim, dê uma olhada aqui => http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM

Abs!

Carlos Eduardo "Mascote" Garcia de Carvalho

unread,
May 23, 2012, 10:06:14 PM5/23/12
to ardu...@googlegroups.com
Felipe,

ter como tem sim. Não sei ao certo como e essa mexida pode alterar em outras funções do arduino que usem timer como base.

Tudo o que pode ser feito em um atmega "puro" pode ser feito no arduino mas tem que saber se irá influenciar nas funções presentes na "arduino lib"



---
Carlos Eduardo "Mascote" Garcia de Carvalho
"Reconhece-o em todos os teus caminhos, e ele endireitará as tuas veredas." Provérbios 3.6
(21) 8125-1737
Skype: carloseduardo.gc


2012/5/23 Felipe Navarro <felna...@gmail.com>

Carlos Eduardo "Mascote" Garcia de Carvalho

unread,
May 23, 2012, 10:07:03 PM5/23/12
to ardu...@googlegroups.com
Também dê uma olhada aqui  http://arduino.cc/playground/Main/TimerPWMCheatsheet 


---
Carlos Eduardo "Mascote" Garcia de Carvalho
"Reconhece-o em todos os teus caminhos, e ele endireitará as tuas veredas." Provérbios 3.6
(21) 8125-1737
Skype: carloseduardo.gc


2012/5/23 Rogerio Lucas <rlu...@rlrobotics.ind.br>

Leonardo Baracat

unread,
May 23, 2012, 10:10:34 PM5/23/12
to ardu...@googlegroups.com
Cara,

Eu to fuçando o datasheet do ATMEGA e na página 96 em diante, me parece que é isso que a gente precisa:

15. 8-bit Timer/Counter0 with PWM

• Two Independent Output Compare Units• Double Buffered Output Compare Registers
• Clear Timer on Compare Match (Auto Reload)
• Glitch Free, Phase Correct Pulse Width Modulator (PWM)
• Variable PWM Period
• Frequency Generator
• Three Independent Interrupt Sources (TOV0, OCF0A, and OCF0B)

Apesar de não entender ainda muito do que está alí, me parece é essa a funcionalidade. Ele (o atmega) tem dois contadores de 8 bits e um de 16 bits.

Achei também esse site de uma library, mas esse ainda não ví.


Espero ter ajudado.

Abraços,

2012/5/23 Felipe Navarro <felna...@gmail.com>



--
A cadeia é forte até o elo mais fraco.
__________________________
I get less spam
thanks to Mailnull.com.
http://www.mailnull.com

Maurício Féo

unread,
May 23, 2012, 10:26:15 PM5/23/12
to ardu...@googlegroups.com
Como o pessoal já respondeu, vou deixar minha sugestão caso queira usar :)

Retificar o sinal AC e clampar p/ 5 volts. Ou seja, sempre que o sinal for positivo, dá ~5V num ponto, quando negativo dá 0V. Não importa se é exatamente quando o sinal cruza de - pra +. O que importa é que em cada período sempre aconteça no mesmo momento.
Ligue esse ponto em uma das entradas com interrupção do Atmega e programe pra sempre que ir pra 5V executar o seguinte código:

void Interrupção() {
T = valor do timer;
Reseta o valor do timer;
Freq = 16.000.000 / T;  // trocar o 16 se usar um cristal diferente de 16Mhz.
qq coisa mais...
}

Usar interrupção é crucial pra seja preciso, já que o código é executado no exato momento do evento.
Também é importante que o valor seja resetado sempre no mesmo momento, nesse caso 2 instruções após a interrupção. Então não pode adicionar uma instrução com tempo variável antes de resetar o timer, por exemplo fazer um analogRead() que o tempo é variável.
O ideal é resetar o timer logo que o sinal chegar, como é feito no exemplo.

Abraços,

Maurício Féo Rivello
engenheirando.com

Leonardo Baracat

unread,
May 24, 2012, 4:29:32 PM5/24/12
to ardu...@googlegroups.com
Maurício,

Clampar para 5V  vai transformar a senóide em uma onda quadrada 50% 5v e 50% 0v?

               ____                __..
              /    \              /
             /      \            /
Senóide:  __/________\__________/_______ 0v
           /          \        /
                       \      /
                        \____/
             _________           ___..
            |         |         |
            |         |         | 
Quadrada: __|_________|_________|______ 0v


Se for isso, não seria melhor montar um detector de zero na fase? Toda vez que a tensão ficasse em 0v, gerasse um pulso. O que você acha? Pra mim, faz mais sentido assim.

Abraços,
Leonardo

 2012/5/23 Maurício Féo <mauri...@gmail.com>
Reply all
Reply to author
Forward
0 new messages