Boa noite, estou com um projeto simples de alimentador para aquário utilizando ração peletizada onde acionarei um motor de vibra call de celular para dosar a ração ao peixes, conforme vídeo em anexo.
Inicialmente gostaria de aciona-lo a cada 12 horas, mas sem o módulo RTC, pois ainda não o possuo.
Contudo a minha primeira duvida é como acionarei o vibracall no Arduíno, visto que o mesmo precisa de 3,2 volt para funcionar.
Outra duvida é como temporizar sem o módulo RTC, vi que é possível, mas não encontrei nenhum material sobre o assunto. Andei comprando alguns livros sobre o assunto, mas justamente o que me interessava não achei.
Estou entrando agora nesse mundo incrível do Arduíno e agradeceria a ajuda
Tags:
Se é só um motorzinho vc pode pensar em um driver comum, com transistor, pode ser um BD139 por ex, ou TIP 122, que gere 5V na saída. Aih para derrubar 5V para 3.3V vc coloca dois diodos. cada vai reduzir em 0,7V. 5-1,4=3,6.
Mas tb nessas alturas o seu 5V já não é mais 5 pela queda no transistor vai dar seus 3,2 certinho.
Eduardo obrigado, terei que comprar estes componentes então e montar um driver
Tinha esperança em utilizar a porta PWM, mas não sei se e possível.
Mas de toda forma, agora só Falta descobrir como temporizar sem o RTC. rsrs
José Gustavo, obrigado uma excelente contribuição, não havia encontrado estas dicas ainda, vou estudar estes Timers e ver qual melhor se encaixa a minha necessidade.no projeto.
Através da sua dica encontrei esse aqui
http://www.pjrc.com/teensy/td_libs_TimeAlarms.html
Aparentemente é um alarme que utiliza uma biblioteca para retirar data e hora sem depender de da shild RTC, pelo menos foi isso que entendi, se for é interessante também, pois pretendo utilizar o Arduíno com uma bateria de 9 volts assim não corro riso de perder a configuração de data e hora.
Estou vendo que final de semana promete
Ok , bateria de 9V não vai durar muito.
Se pretende ficar muito tempo, sugiro uma fonte ou então uma bateria chumbo/acido de 12V ou uma LIPO...
Como o sistema que estou elaborando é muito simples, imagino que uma bateria de 9 volts tenha uma autonomia de 1 semana no minimo, se não for o caso vou apelar para uma fonte.
Seria necessário deixar uma bateria apenas de backup então
Uma semana??? Uma bateria de 9V deve durar horas somente.
José Gustavo, obrigado pela contribuição, esperava mais das baterias de 9V visto que normalmente elas duram meses, de toda forma sigo então para o plano B que é a fonte.
Eu encontrei um projeto de Timer e dei uma adaptada, não sei se é o melhor, mas é o que eu entendi mais fácil, o meu cogido por assim dizer acabou ficando assim:
//controle tempo de ativação motor
// temporizador de ativação
int seg=0,min=0,hor=0;
int motor = 10;
void setup() {
Serial.begin(9600); //comunicação serial 9600 caracteres por seg
pinMode (motor,OUTPUT);// ativação do motor
}
void loop(){
// relógio arduino em forma de software esse relógio pode ser feito apenas via software, com programação, ou pode ser implementado utilizando-se hardware específico
static unsigned long ult_tempo = 0;
int tempo = millis();
if(tempo - ult_tempo >= 1000){
ult_tempo = tempo;
seg++;
}
if(seg>=60){
seg = 0;
min++;
}
if(min>=60){
min = 0;
hor++;
}
if(hor>=24){
hor=0;
min=0;
}
if (hor = 6){ // ativar motor quando for 6 horas
digitalWrite(motor, HIGH);
delay (5000); // tempo que o motor ficará ativo 5 segundos
}
if (hor = 18){//ativar motor quando for 18 horas
digitalWrite(motor, HIGH);
delay (5000); //tempo que o motor ficará ativo 5 segundos
}
}// fim da função
tentei fazer de forma mais simples possível, inicialmente este timer não precisa ter muita precisão, bastando apenas que seja executado duas vezes ao dia.
eu estou em duvida, em que momento o arduino inicia a contagem do tempo, através deste código.
http://playground.arduino.cc/Referencia/Millis
Millis ()
Descrição
Retorna o número de milissegundos desde a placa Arduino começou a funcionar o programa atual. Este número irá transbordar (voltar para zero), após aproximadamente 50 dias.
Veja toda referência em portugues:
Fiz algumas alterações no código do temporizador, para efeito de teste substitui o motor por led.
// temporizador para acionamento do led com horario programado
int seg=0, min=0,hor=0;
int ledPin = 12;
int ledState = LOW; // ledState usado para amazena o estado atual do led aceso o apagado
long intervalo = 1000; // intervalo de um segundo
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
static unsigned long ult_tempo = 0;
int tempo = millis();
if(tempo - ult_tempo >= 1000) {
ult_tempo = tempo;
seg++;
}
if(seg>=60)
{
seg = 0;
min++;
}
if(min>=60) {
min = 0;
hor++;
}
if(hor>=24)
{
hor=0;
min=0;
}
Serial.print(hor);
Serial.print(":");
Serial.print(min);
Serial.print(":");
Serial.println(seg);
delay(1000);
}
void led (){ // este bloco liga o led de acordo com o tempo programado
long previousMillis = millis();
int cnt=0;
if (min = 2, ledState == LOW) // quanto tempo for igual a 2 min se o led estava apagado, acende o led
ledState = HIGH;
else // se o led estava aceso desliga o led
ledState = LOW;
digitalWrite(ledPin, ledState);
}// fim do código
Fiz os testes e o código do timer funciona bem, é possível calibrar a hora substituindo os valores do inteiro pelo horário atual para inciar a contagem. O código não substitui inteiramente o RTC mas pode quebrar um galho
Contudo estou com problema no ultimo bloco" Void led", pois quero evitar o comando Delay, e utilizar o millis, para que o led fique aceso por 3 segundos e depois aguarde completar as 24 horas ou um segundo horário para que o mesmo acenda.
Eu verifiquei o sketch não há erro no código, mas o led não está acendendo quando cumpre o prazo, não faço ideia onde posso ter errado, mas devo ter esquecido de amarrar alguma variavel.
Eduardo eu comprei os TIP 122, na duvida também comprei o BD139, alem dos diodos IN4007 e resistências de 10 k, para montar o driver para os motores de vibração.
Como eu monto o circuito com o TIP 122?
Vc pode usar o primeiro esquema de:
http://labdegaragem.com/forum/topics/arduino-acionar-portas-ou-equi...
onde está o Relay vc coloca seu motor (não precisa do relay nesse caso, ligue direto o motor no lugar).
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por