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

Controlador automático para o aquário.

Started by GnobarEl, 18 de May de 2010, 11:04

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

GnobarEl

Bom dia,
estou a pensar em montar um alimentador automático para o aquário.
Por agora a minha única experiência com o arduino é meramente teórica. Mas pelo que li serve perfeitamente para o que eu pretendo. Já encomendei aqui da loja os componentes necessários para desenvolver o projecto.

Este tópico serve também para dar a conhecer a evolução do trabalho e para tirar algumas duvidas que iram surgir. Tendo em conta que algumas das duvidas serão duvidas de iniciantes será também um bom tópico para outros iniciantes que por aqui apareçam.

O projecto consiste,
numa primeira fase:
ter o arduino como controlador e ter ligado a si 3 servos que iram permitir a movimentação do "braço" para despejar a comida.

Numa segunda fase:
após a conclusão da primeira, pretendo ligar as luzes do aquário ao arduinio para o arduino ligar e desligar a luz automaticamente.

Possivelmente, se aqui chegarmos, numa terceira fase:
as várias luzes vão-se ligando e desligando sequencialmente simulando assim o amanhecer e o anoitecer.

Antes de iniciar a montagem do projecto surgiu já uma duvida que ainda não consegui encontrar resposta.
Este projecto é para estar ligado 24h/dia e preciso de uma função timer()
Já estive a ler no site oficial do arduino mas ainda não entendi bem como funciona. É possível, só com o arduino criar uma função que seja executada todos os dias às 8h e às 20h?

Obrigado,
toda a ajuda é bem vinda =)




senso

Penso que a função millis() serve para o que queres, se todos os dias usares a propria função para fazer um reset ao miliis() a cada 24 horas não deves acumular muitos erros de tempo, mas não tenho bem a certeza sobre isso.
Avr fanboy

GnobarEl

Já li algures sobre os erros que acontemcem com o tempo, mas não me faz muita diferença se for acumulando uma margem de erro. se não fizer a alimentação às 8h faz às 8:02 não faz grande diferença, a não ser que a diferença de tempo seja maior do que eu penso.
por agora o que preciso é que todos os dias aquela hora (mais minuto menos minuto) chame a função.

Tenho estado a ler isto:
http://www.arduino.cc/playground/Code/DateTime

microbyte

Penso que já outro dia houve um utilizador que perguntou algo do género...
Não te podes reger pelo relógio do Arduino, pois passado pouco tempo, já vai desfasado do tempo real.

Como queres executar certos comandos em horas bem distintas, vais ter de usar um RTC (Real Time Clock).
Se pesquisares no fórum vais encontrar um tutorial do tr3s, se não me engano, que mostra como podes ligar um RTC ao Arduino.

GnobarEl

Sim, já vi esse tutorial, mas é preciso hardware adicional, estava a tentar usar apenas o arduino sem recurrer a mais hardware. Se tiver que ser... mas até lá vou tentar usar apenas código... vamos lá ver...

Entre hoje e amanha já devo receber o arduino =)

microbyte

Não conhecia a biblioteca DateTime.

Depois conta a tua experiência. ;)

senso

O arduino tambem não pode acumular assim tanto erro, o cristal é calibrado, são 16Mhz certos, e se o timer tiver um pre-scaler que dê um overflow com um numero inteiro de ciclos de clock o erro vai ser muito reduzido mesmo
Avr fanboy


GnobarEl

Onde é que se arranja facilmente o DS1307?


GnobarEl

Serve, o problema é os portes, fica bem mais de portes do que o chip em si.
Vou continuar a procurar por cá.
Entretanto assim que tiver o arduino já começo a fazer algumas experiências para usar o clock apenas por software.

GnobarEl

Já comecei a fazer os primeiros testes com o arduino.

E como tal também já apareceram os primeiros problemas :p
Os servos são mais pequenos e mais frágeis do que eu estava a pensar.
Não consigo que tenham um movimento constantemente suave, por vezes parece que ficam meios baralhados ou então andam aos "soluços".
outro problema, eles não fazem a rotação de 180º completa, fazem uns 150º +/-.
Estou a usar um tutorial que vi no site do arduino.

Algum ideia? Código... alguma coisa?

TigPT


GnobarEl

Estou a utilizar a biblioteca servo.

fiz estes tuts.
se bem que o que me realmente interesse é controlar o servo apenas por código e não com o potenciómetro. Ambos os tuts funcionaram, mas com o problema acima descrito.

Servo Library

    * Knob: control the shaft of a servo motor by turning a potentiometer.
    * Sweep: sweeps the shaft of a servo motor back and forth.