
Como fazer um Alimentador para Pets com o Arduino
O alimentador automático para pets com Arduino é uma ótima ideia para quem quer alimentar pequenos pets com Arduino. Através desta ferramenta seus peixes estarão sempre alimentados.
Durante determinados intervalos de tempo, o sistema liberará comida para seu pet. Quer entender como funciona esse sistema e fazer o seu?
Se sim, então venha aprender todo o passo a passo para a construção deste projeto.
Como funciona o mecanismo alimentador de pets?
O design do alimentador de pets DIY com Arduino é mostrado na seção nas figuras abaixo.

Figura 1 – Visualização em corte do Alimentador de Pets
A seguir, apresentaremos as peças que compõem sua estrutura.
A base do alimentador de pets DIY com Arduino
A base é uma peça criada para facilitar a fixação do quadro do comedouro em qualquer local. A parte da base é mostrada na figura abaixo.

Figura 2 – Base do Alimentador de Pets com Arduino
Na estrutura desta peça iremos fixar o tubo de transmissão dos grãos de grãos e farelos para o seu pet.
Tubo para transporte da ração
O tubo é mostrado na figura abaixo. Sua estrutura é montada na peça base com auxílio de furos na base de apoio de tubulação. Os furos têm diâmetro de 3 mm.

Figura 3 – Estrutura do Tubo transportador do Alimentador para Pets com Arduino.
No corpo do tubo existe um orifício. Este orifício é usado para fixar o tanque de ração para animais de estimação.
Reservatório de alimentação DIY do Alimentador para Pets com Arduino
O tanque de alimentação tem uma dimensão aproximada de 95 x 95 x 126 mm. Sua estrutura será conectada diretamente no tubo de transporte.

Figura 4 – Reservatório do Alimentador para Pets com Arduino.
A alimentação descerá pelo orifício e será transportada até a saída por meio de um parafuso de Arquimedes. Você sabe como funciona um parafuso de Arquimedes?
Como funciona o Parafuso de Arquímedes?
O parafuso de Arquimedes é uma invenção muito antiga e utilizada por diversas civilizações para transportar água em sistemas de irrigação.
Sua estrutura é apresentada a seguir.

Figura 5 – Parafuso de Arquimedes.
O vídeo abaixo apresenta o uso do mecanismo por civilizações antigas.
O parafuso foi movido manualmente para transportar a água de um nível para outro.
Ao longo dos anos, o mecanismo foi aprimorado e agora são usados motores para movê-lo. Além de transportar líquidos, o sistema permite o transporte de sólidos.
Assista ao vídeo abaixo e observe o transporte de sólidos.
A figura abaixo mostra o sistema de tubos com o parafuso instalado internamente em sua estrutura.
Na vista de corte é possível observar a região de entrada do alimento e sua movimentação pelo tubo até o local de saída.

Figura 6 – Visualização em Corte do Parafuso de Arquímedes para Transporte do Alimento.
Para transmitir o movimento utilizamos um servomotor com rotação contínua acoplado ao parafuso de Arquímedes.
A seguir, você verá o funcionamento do circuito eletrônico.
Servo motor com rotação contínua
Neste projeto você pode usar um motor de corrente contínua ou um servo motor.
Para facilitar a construção do projeto, diminuir a complexidade do circuito e facilitar a programação, foi utilizado um servomotor com rotação contínua.
Na figura abaixo temos o servomotor MG996.

Figura 7 – Servomotor MG996.
A peça de acoplamento do servomotor será colada na estrutura do parafuso. Veja a figura abaixo.

Figura 8 – Servomotor MG996 acoplado no parafuso de Arquimedes.
O servomotor será instalado em uma peça de apoio para o motor com auxílio de parafusos. A peça é mostrada na figura abaixo.

Figura 9 – Servomotor MG996 acoplado na base de apoio.
Na estrutura da peça existem 4 furos para fixação do servomotor e 2 furos para fixação da peça na base de apoio da estrutura do projeto.
Você entendeu como funciona esse projeto? Quer ter acesso a arquivos para imprimir em uma impressora 3D e montá-lo?
Inscreva-se em nosso treinamento completo. Além de ter acesso aos arquivos, você aprenderá como criar estruturas como essas com impressão 3D, tecnologia de corte a laser e Arduino. Aprenda agora a criar qualquer protótipo como esse usando Arduino e modelagem 3D com eletrônica.
Agora, vamos aprender como criar uma simples lógica de programação para controlar o alimentador de pets com Arduino.
Lógica de Programação e Circuito Eletrônico do Projeto
A lógica foi desenvolvida para liberar ração para o pet a cada 4 horas. Esse valor foi selecionado no código, mas você pode alterá-lo. Você pode inserir outras funcionalidades a partir desse código. Insira um LCD com um grupo de botões. Isso te ajudará, por exemplo, a configurar as horas que a ração deve ser liberada, assim como, inserir outros parâmetros do seu interesse.
Primeiramente, veja o circuito eletrônico do projeto. A figura abaixo não mostra o desenho da fonte de alimentação, mas a tensão utilizada para alimentação é de 5V.

Figura 10 – Circuito eletrônico do projeto.
A seguir, veja o código para controlar o alimentador com Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include "Servo.h" #include <DS1307.h> #include <Wire.h> //Biblioteca de Comunicacao I2C int DataTime[7]; int actual_hour = 0, last_hour = 0; int cont = 0; Servo myservo; void setup() { Wire.begin(); //Inicializacao da Comunicacao I2C DS1307.begin(); DS1307.getDate(DataTime); actual_hour = DataTime[4]; last_hour = DataTime[4]; myservo.attach(9); } void loop() { DS13 |
Primeiramente, faça a declaração das bibliotecas de elementos utilizadas no projeto. Neste projeto foi utilizado um servomotor para girar o parafuso e um chip relógio de tempo real DS1307 para contar as horas.
Para realizar a comunicação serial do RTC, foi utilizada a biblioteca wire.h.
1 2 3 |
#include "Servo.h" #include <DS1307.h> #include <Wire.h> //Biblioteca de Comunicacao I2C do RTC |
Declare todas as variáveis e vetores utilizados no projeto. A matriz DateTime é usada para armazenar os 7 parâmetros de data e hora que o RTC retorna.
1 2 3 4 5 6 |
int DataTime[7]; int actual_hour = 0, last_hour = 0; int cont = 0; Servo myservo; |
As variáveis hora_atual e hora_última são variáveis utilizadas para que possamos contar as horas de liberação do comedouro.
Finalmente, crie o objeto myservo para manipular o servo motor na programação.
A função void setup()
A função void setup é usada para inicialização do dispositivo e outras configurações. Veja a porção do código abaixo.
1 2 3 4 5 6 7 8 9 |
void setup() { Wire.begin(); //Inicialização da Comunicação I2C DS1307.begin(); DS1307.getDate(DataHora); hora_atual = DataHora[4]; última hora = DateTime[4]; meuservo.attach(9); } |
Inicialize a comunicação serial e o módulo de relógio em tempo real DS1307.
Em seguida, receba os dados do RTC e armazene-os no vetor DataTime.
1 |
DS1307.getDate(DataTime); |
Armazene a hora nas variáveis current_hour e last_hour.
1 2 |
actual_hour = DataTime[4]; last_hour = DataTime[4]; |
Por fim, defina o pino 9 para controle do servomotor.
Agora vamos ver a lógica de controle da função void loop.
Função void loop
A função void loop apresenta a lógica completa para controlar o alimentador DIY Fish com Arduino. Veja a parte do código abaixo.
Em cada ciclo de código, você deve capturar os dados RTC.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
void loop() { DS1307.getDate(DataTime); actual_hour = DataTime[4]; if(actual_hour != last_hour) { cont++; last_hour = actual_hour; } if(cont == 4) { myservo.write(180); delay(30000); cont = 0; last_hour = actual_hour; } |
A informação da hora é armazenada na variável actual_hour.
1 |
actual_hour = DataTime[4]; |
Em seguida, devemos verificar se houve alteração de horário. Este processo é feito comparando o valor das horas lidas com o valor das horas usado como referência (last_hour).
1 2 3 4 5 |
if(actual_hour != last_hour) { cont++; last_hour = actual_hour; } |
Caso a hora atual seja diferente da última hora (last_hour) armazenada como referência, a variável cont será incrementada, e o valor da hora atual será atribuído à variável last_hour.
Este valor será utilizado como referência em uma nova mudança de hora.
A próxima condição é usada para verificar se o valor da variável cont é igual a 4.
Se este valor for verdadeiro, significa que já se passaram 4 horas e o alimentador de peixes DIY precisa liberar ração para o pet.
1 2 3 4 5 6 7 8 9 10 |
if(cont == 4) { myservo.write(180); delay(30000); myservo.write(90); cont = 0; last_hour = actual_hour; } |
O servo girará no sentido horário por um tempo de 30 segundos e parará. Nesse intervalo o alimento será movimentado pelo parafuso e liberado para o peixe.
Após isso, a variável count receberá o valor 0.
1 |
cont = 0; |
Esta ação é necessária para permitir que a variável reinicie a contagem de horas para a próxima liberação de feed.
Por fim, temos a atribuição de hora atual como referência à variável last_hour.
Após isso, o fluxo de código retorna ao início da função loop e repete todo o processo apresentado nesta seção.
Quer ter acesso aos arquivos do projeto 3D para montar esse projeto?
Acesse nossa plataforma de aulas e baixe agora mesmo todos os materiais e desenvolva esse projeto.
Ainda não é nosso aluno e quer aprender a desenvolver projetos assim com o Arduino? Acesse www.roboludico.com e faça sua matrícula agora mesmo.