LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: bmventura em 09 de Setembro de 2013, 21:17

Título: Relógio com Arduino UNO.
Enviado por: bmventura em 09 de Setembro de 2013, 21:17
Boas noites,

Queria fazer um programador horário com o arduino UNO.

Qual a melhor solução? É possivel fazer com software ou
tenho de comprar algum shield?

Cumprimentos.
Título: Re: Relógio com Arduino UNO.
Enviado por: senso em 09 de Setembro de 2013, 21:22
Podes usar um timer para te gerar uma base de tempo, mas o ideal será usar um RTC com bateria de backup, o mais simples é mais que batido DS1703, que fala i2c.

Dependendo do que queres controlador é muito provavel que precises de relés ou triacs.
Título: Re: Relógio com Arduino UNO.
Enviado por: Samy74 em 09 de Setembro de 2013, 21:56
Existem uns módulos com o DS1307 e todos os componentes necessários, incluindo a pilha. Compras um desses e fazes o relógio em muito pouco tempo.
Título: Re: Relógio com Arduino UNO.
Enviado por: bmventura em 09 de Setembro de 2013, 22:54
Não é para fazer nada especifico, apenas para aprender...

vou pesquisar os módulos.

Obrigado!
Título: Re: Relógio com Arduino UNO.
Enviado por: tarquinio em 10 de Setembro de 2013, 04:27
Tens este, com um tutorial fixe para o arduino:
http://bildr.org/2011/03/ds1307-arduino/ (http://bildr.org/2011/03/ds1307-arduino/)
Título: Re: Relógio com Arduino UNO.
Enviado por: Hugu em 11 de Setembro de 2013, 17:00
smp podes arranjar um shield destes...pelo menos a parte do hardware estava já lá toda
http://www.g7electronica.net/pt/stock-off-30set/604-7-segment-shield.html (http://www.g7electronica.net/pt/stock-off-30set/604-7-segment-shield.html)
Título: Re: Relógio com Arduino UNO.
Enviado por: tarquinio em 11 de Setembro de 2013, 17:19
Lol oh Hugu, o que ele quer é uma maneira do Arduino saber as horas, não de as mostrar. Não bebes mai nada hoje! :P
Título: Re: Relógio com Arduino UNO.
Enviado por: bmventura em 11 de Setembro de 2013, 23:31
ehhehhehhe

Exactamente ;)

Além do lcd ser bastante mais barato!

Obg


Lol oh Hugu, o que ele quer é uma maneira do Arduino saber as horas, não de as mostrar. Não bebes mai nada hoje! :P
Título: Re: Relógio com Arduino UNO.
Enviado por: Joanito em 22 de Fevereiro de 2018, 13:11
Olá,

Aqui à tempos decidi fazer um relógio com o Arduino Uno. Mas ele é todo descodificado a nível de hardware , ou seja , o arduino só gera o clock. Em anexo encontra-se o projeto do relógio ( ele abre com o Proteus ), e os ficheiros com o código do arduino.

Na simulação do relógio no Proteus o relógio vai parecer avançar com pouca velocideade ( muito lento ) . Isto acontece porque o software de demora a simular . Se se usar este código de arduino com este hardware ao experimentar sem ser em simulação ele vai funcionar à velocidade correcta. Ou se se quiser modificar esta velocidade basta aumentar ou diminuir os "delays" no código do arduino.

No Proteus, o ficheiro .hex com o código do arduino deve ser injetado no atmega 328... Para isso: segundo botão do rato no atmega328 e selecionar : edit properties. Dentro da janela Edit Properties, em "Program File" seleccionar o ficheiro .hex

É tudo.
Espero ter ajudado.
Título: Re: Relógio com Arduino UNO.
Enviado por: jm_araujo em 22 de Fevereiro de 2018, 13:16
 ::)
Qual é a lógica de meter um Arduino nesse projeto?!?!?!?

Edit:
E qual é a lógica de ressuscitar um tópico com 5 anos?!?!?!?
Título: Re: Relógio com Arduino UNO.
Enviado por: Joanito em 22 de Fevereiro 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.
Título: Re: Relógio com Arduino UNO.
Enviado por: senso em 22 de Fevereiro de 2018, 13:52
595's ou multiplexing dá para ligar segmentos mais que suficientes para um relógio.

Acho que devias re-pensar o projecto.
Título: Re: Relógio com Arduino UNO.
Enviado por: Joanito em 22 de Fevereiro de 2018, 14:04
Olá,

Pois, mas na altura eu só tinha os contadores e os descodificadores binários aqui em casa para testar e acabou por ficar assim . Não precisei de apresentar a ninguém este projeto. Fi-lo só para me entreter um bocado e ao fazer , tinha que fazer com os componentes que tinha :-)
Título: Re: Relógio com Arduino UNO.
Enviado por: senso em 22 de Fevereiro de 2018, 14:05
E estou a dizer isto numa vertente didática, facilmente fazes multiplexing com meia duzia de transistores banais.
Título: Re: Relógio com Arduino UNO.
Enviado por: Joanito em 22 de Fevereiro de 2018, 14:13
Sim, mas eu agora já não estou muito interessado em desenvolver melhor este relógio. Mas obrigado pela dica.
Título: Re: Relógio com Arduino UNO.
Enviado por: Njay em 22 de Fevereiro de 2018, 14:19
Vivas Joanito,

Então e tens feito coisas mais recentemente, ou entretanto perdeste o interesse nesta área?
Título: Re: Relógio com Arduino UNO.
Enviado por: vasco em 22 de Fevereiro de 2018, 14:57
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

Código: [Seleccione]
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.
Título: Re: Relógio com Arduino UNO.
Enviado por: LVirtual em 22 de Fevereiro de 2018, 15:03
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/ (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/ (http://transistorclock.com/)
Título: Re: Relógio com Arduino UNO.
Enviado por: Joanito em 22 de Fevereiro 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 ;-)
Título: Re: Relógio com Arduino UNO.
Enviado por: Joanito em 22 de Fevereiro de 2018, 15:56
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 ?
Título: Re: Relógio com Arduino UNO.
Enviado por: LVirtual em 22 de Fevereiro de 2018, 16:01
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... ;)
Título: Re: Relógio com Arduino UNO.
Enviado por: jm_araujo em 22 de Fevereiro de 2018, 16:04
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.

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.
Título: Re: Relógio com Arduino UNO.
Enviado por: Joanito em 22 de Fevereiro de 2018, 16:07
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 !
Título: Re: Relógio com Arduino UNO.
Enviado por: Joanito em 22 de Fevereiro de 2018, 16:13
...Mas se for por exemplo: loop { pino 3=High ; delay (1000) ; pino 3=Low ; delay (1000) ; } Isto gera um clock normal, certo ?
Título: Re: Relógio com Arduino UNO.
Enviado por: jm_araujo em 22 de Fevereiro de 2018, 16:20
É 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.
Título: Re: Relógio com Arduino UNO.
Enviado por: Joanito em 22 de Fevereiro de 2018, 16:29
ah ok , não sabia , obrigado
Título: Re: Relógio com Arduino UNO.
Enviado por: vasco em 23 de Fevereiro de 2018, 17:07

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.
Título: Re: Relógio com Arduino UNO.
Enviado por: vasco em 23 de Fevereiro de 2018, 17:17
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.
Título: Re: Relógio com Arduino UNO.
Enviado por: Njay em 23 de Fevereiro de 2018, 17:59
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).
Título: Re: Relógio com Arduino UNO.
Enviado por: LVirtual em 23 de Fevereiro de 2018, 18:49

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...