• Welcome to LusoRobótica - Robótica em Português.
 

Relógio com Arduino UNO.

Started by bmventura, 09 de September de 2013, 21:17

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Njay

Vivas Joanito,

Então e tens feito coisas mais recentemente, ou entretanto perdeste o interesse nesta área?

vasco

Quote from: Joanito on 22 de February de 2018, 13:26
Olá, eu quando comecei o projeto estava com ideias em fazer por programação do arduino , só que o arduino uno não tem portas digitais suficientes para lidar com tantos catodos digitais então eu acabei por fazer quase um relógio todo com contadores e descodificadores e ficou o arduino só a gerar o clock . Claro que há maneiras mais fáceis de gerar o clock e mais baratas, mas para incluir o arduino neste projeto, ficou assim.

Just for the record, por um pino high e low com um delay pelo meio não produz um clock particularmente estavel.

Não compreendo o código abaixo, mas gera um clock de 4 MHz no pino 11 de um arduino nano, tenho a certeza que funciona também no uno e não necessita de ter absolutamente nada a correr dentro da função loop(). Não estou certo se o prescaler permite descer até 1 Hz


setup()
{
  pinMode(11,OUTPUT);

  TCCR2A = ((1 << WGM21) | (1 << COM2A0));
  TCCR2B = (1 << CS20);       // prescaler = 1
  TIMSK2 = 0;
  OCR2A = 1;
}


A minha maior duvida é onde é que é dito que o output é para o pino 11.
Stupid men are often capable of things the clever wouldn't dare to contemplate.

LVirtual

ja agora uma achega visto que realmente usar um arduino para nao comprar 2 ou 3 transistores para fazer um clock, tem que se lhe diga... ;)

http://cosinekitty.com/digitalclock/

se 3 resistencias e 1 transistor nao for suficientemente bom, deixo aqui uma soluçao mais "em conta"... ;)

http://transistorclock.com/
"O defeito mais grave dos humanos, aquele que coloca mais obstáculos à sua evolução, é a crença profundamente arreigada na infalibilidade dos seus raciocínios e dos seus pontos de vista."

Joanito

Olá, acho que falta qualquer funçãozita aí que faça saír o valor pelo pino 11, Vasco.

Gostei do relógio só com transistores, LVirtual. Deve haver tambem um relogio só com relés ;-) Já imaginas-te o som daqueles relés todos a baterem : tic tac, tic tac  nem era preciso nada para fazer o bip a cada segundo que passasse, os próprios relés já o faziam ;-)

Joanito

#19
Olá , sim continuo com interesse nesta área :-)

Porque é que um HIGH com latencia seguido de um LOW com latencia num loop não geram um bom clock ?

LVirtual

Quote from: Joanito on 22 de February de 2018, 15:54
Olá, acho que falta qualquer funçãozita aí que faça saír o valor pelo pino 11, Vasco.

Gostei do relógio só com transistores, LVirtual. Deve haver tambem um relogio só com relés ;-) Já imaginas-te o som daqueles relés todos a baterem : tic tac, tic tac  nem era preciso nada para fazer o bip a cada segundo que passasse, os próprios relés já o faziam ;-)

imagino sim. basta ires ás estaçoes de comboio que tenham relaogios daqueles feitos com segmentos amarelos e vais ouvir o barulho das bobines dos segmentos a bater a cada segundo. adoro é no virar da hora :) batem todos quasem em simultaneo.
as bobines destes segmentos sao iguais as dos relays...

tenta adormecer numa estaçao de comboio na zona do relogio que vais ver... ;)
"O defeito mais grave dos humanos, aquele que coloca mais obstáculos à sua evolução, é a crença profundamente arreigada na infalibilidade dos seus raciocínios e dos seus pontos de vista."

jm_araujo

#21
Quote from: Joanito on 22 de February de 2018, 15:54
Olá, acho que falta qualquer funçãozita aí que faça saír o valor pelo pino 11, Vasco.
Não falta nada, está completo o código (tirando a parte da frequencia gerada não ser 1Hz).
O proximo capitulo a ler é sobre timers.
O timer 2 pode contolar os pinos OC2A e/ou OC2B que correspondem aos pinos do atmega  PB3 e PD3, que correspondem no arduino aos pinos 11 e 3.

Quote from: Joanito on 22 de February de 2018, 15:56
Porque é que um HIGH com latencia seguido de um LOW com latencia num loop não geram um bom clock ?
Respondeste-te a ti próprio e nem reparaste. A latência não é determinística (pode variar e varia!), o sinal não vai ser estável nem preciso.

Joanito

E se fosse um processador de um computador dos dias de hoje feito só com relés ? Quantos campos de futebol eram precisos para fazer o processador ? ;-) E o barulho daqueles relés todos a baterem ? ;-) Estrondo !

Joanito

...Mas se for por exemplo: loop { pino 3=High ; delay (1000) ; pino 3=Low ; delay (1000) ; } Isto gera um clock normal, certo ?

jm_araujo

É disso que estamos a falar.
Gera um clock "normal" mas não é estável nem preciso. O delay não tem precisão nem demora sempre o mesmo (mesmo que o nº que lá está seja igual).
Um delay(1000) pode demorar 1000ms, como 1000,5ms, como 1000,4ms, como outro qualquer valor aproximado, e não tens como saber o que demora de cada vez que o chamas.
Para garantir a consistência precisas de usar timers.

Joanito


vasco

Quote from: LVirtual on 22 de February de 2018, 16:01

imagino sim. basta ires ás estaçoes de comboio que tenham relaogios daqueles feitos com segmentos amarelos e vais ouvir o barulho das bobines dos segmentos a bater a cada segundo. adoro é no virar da hora :) batem todos quasem em simultaneo.
as bobines destes segmentos sao iguais as dos relays...

tenta adormecer numa estaçao de comboio na zona do relogio que vais ver... ;)

Já não será do tempo da maior parte dos frequentadores do forum, mas quando eu era criança ainda fui umas quantas vezes "à Portela ver os aviões voar", já nessa altura ficava fascinado com os quadros informativos que tinham os nomes dos destinos em plaquinhas separadas... Só os barulhos estranhos que aquilo fazia eram metade da piada.

A definição mais básica de um transístor diz que ele é um interruptor, logo não é de espantar que toda a logica que se faz com transístor  também se possa fazer com relés.
Stupid men are often capable of things the clever wouldn't dare to contemplate.

vasco

Quote from: jm_araujo on 22 de February de 2018, 16:04
Quote from: Joanito on 22 de February de 2018, 15:54
Olá, acho que falta qualquer funçãozita aí que faça saír o valor pelo pino 11, Vasco.
Não falta nada, está completo o código (tirando a parte da frequencia gerada não ser 1Hz).
O proximo capitulo a ler é sobre timers.
O timer 2 pode contolar os pinos OC2A e/ou OC2B que correspondem aos pinos do atmega  PB3 e PD3, que correspondem no arduino aos pinos 11 e 3.


Não, não, esses valores são para 4 MHz. Não tenho a certeza se se consegue só com o prescalar descer até 1 Hz, mas o que não faltam são chips que podem servir como divisores.

Eu acho que já percebi a ideia dos timmers, carrega-se um dado valor (num registo) que é decrementado à frequência do clock dividido pelo prescalar, quando essa valor chega a zero acontece "qq coisa", é a definição da "qq coisa" que me baralha.
Stupid men are often capable of things the clever wouldn't dare to contemplate.

Njay

Está tudo na datasheet de qualquer AVR que tenha um timer.

Há vários modos de contagem, pode ser para cima, para baixo, para cima e para baixo...
E pode contar até ao limite dos bits, ou até ao valor constante de um outro registo.
E quando o contador "dá a volta", ou quando o valor fica igual ao contido num outro registo, pode por exemplo ocorrer uma interrupção, ou pode iniciar-se/fazer toggle/... o sinal de saída se o modo for PWM.
A "velocidade" de contagem é o clock do timer quem decide. Esse clock pode ser directamente o clock do chip (system clock), ou um valor reduzido (dividido) por um "pre-scaler", um sinal digital que vem do exterior do chip (se quiseres por exemplo contar transições de um sinal digital), ou ainda a saída de um multiplicador do system clock (por exemplo o attiny26(x) tem um multiplicador interno que pode gerar clocks até 64MHz).

LVirtual

Quote from: vasco on 23 de February de 2018, 17:07
Quote from: LVirtual on 22 de February de 2018, 16:01

imagino sim. basta ires ás estaçoes de comboio que tenham relaogios daqueles feitos com segmentos amarelos e vais ouvir o barulho das bobines dos segmentos a bater a cada segundo. adoro é no virar da hora :) batem todos quasem em simultaneo.
as bobines destes segmentos sao iguais as dos relays...

tenta adormecer numa estaçao de comboio na zona do relogio que vais ver... ;)

Já não será do tempo da maior parte dos frequentadores do forum, mas quando eu era criança ainda fui umas quantas vezes "à Portela ver os aviões voar", já nessa altura ficava fascinado com os quadros informativos que tinham os nomes dos destinos em plaquinhas separadas... Só os barulhos estranhos que aquilo fazia eram metade da piada.

A definição mais básica de um transístor diz que ele é um interruptor, logo não é de espantar que toda a logica que se faz com transístor  também se possa fazer com relés.

eu tive a sorte de trabalhar numa empresa que ha 15 anos atras quase que empestou tudo o que era serviços publicos de transportes com paineis de informaçao ao publico com com caracteres feitos com tecnologia eletromagnetica.
A maior parte foi parar as estaçoes de comboios mas tambem chegaram a existir em estaçoes de outros veiculos de transporte alguns.

sempre que tinha algum para reparar em bancada era uma maravilha ouvir os segmentos a bater todos cadenciados. quem nao gostava muito do ruido "tipo relogio de sala" era o resto do pessoal ;)

ja agora assim estilo àparte, os paineis que informam os preços dos combustiveis nas autoestradas sao todos com segmentos magneticos. esses é que eu gostava de reparar porque sao muito rapidos a mudar os digitos...
era sempre um cagaçal na sala, porque a placa de cpu assim que é alimentada faz um autoteste a todos os digitos da linha que sao 8, vezes 7 segmentos cada um... e dentro duma sala com 30 M2 faz mesmo cagaçal as chapas de aluminio dos segmentos a bater dentro da caixa metalica de cada digito...
"O defeito mais grave dos humanos, aquele que coloca mais obstáculos à sua evolução, é a crença profundamente arreigada na infalibilidade dos seus raciocínios e dos seus pontos de vista."