Resolvido - Acionar motor motor 3,2 volt Arduíno uno alimentador automático

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 

Exibições: 6889

Anexos

Responder esta

Respostas a este tópico

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:

http://playground.arduino.cc/Referencia/Extendida

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

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço