Projeto Interativo de Motor Servo com Arduino e Sensores HC-SR04
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino UNO | 1 |
| Controlador PWM de Servo de 16 Canais (Adafruit) | 3 |
| Motor Micro-servo SG90 | 36 |
| Fonte Chaveada 5V 30W | 1 |
| Cabos de Extensão para Servo | 1 |
| Placa de Perfuração (Pegboard) 24x48 polegadas | 1 |
| Palitos de Picolé (cortados a 3 1/4 polegadas) | 36 |
| Sensor Ultrassônico HC-SR04 (Genérico) | 5 |
Nota: Os sensores ultrassônicos são opcionais, necessários apenas para a funcionalidade interativa.
Ferramentas Necessárias
- Ferro de Solda
- Pistola de Cola Quente
Aplicativos e Serviços Online
- Arduino IDE
Sobre o Projeto
O vídeo abaixo demonstra a ação de 36 motores servo criando uma obra de arte eletrônica. Um Arduino Uno e três controladores PWM de 16 canais operam nos bastidores. A inspiração original veio de uma versão muito maior com 450 servos vista em um museu de arte moderna. Mesmo esta versão reduzida com 36 servos produz efeitos interessantes.
Existe uma funcionalidade interativa opcional (não mostrada no vídeo) que pode ser adicionada. Cinco sensores de distância ultrassônicos são montados na borda superior traseira do painel. Ao colocar a mão sobre o sensor central, o Uno entra em modo interativo e todos os servos tentam seguir o movimento da mão sobre os sensores. Ao remover a mão por alguns segundos, o programa retorna ao modo de exibição automático. Esta opção é totalmente opcional; o software funciona perfeitamente sem ela.
Hardware
O projeto foi construído sobre uma placa de perfuração de 24" x 48", com a largura reduzida para 32 polegadas. Os servos são montados com espaçamento de 4 polegadas, fixados na parte traseira da placa com cola quente. Palitos de picolé, cortados a 3 1/4 polegadas, são colados aos eixos dos servos, também com cola quente.
Os motores servo SG90 são o item mais caro. É possível adquirir um conjunto de 8 por cerca de $20 na Amazon, totalizando cerca de $100 para 36 unidades. Embora sejam especificados como servos de 180°, muitos não atingem esse curso completo. Alguns ficam bem aquém e devem ser descartados. Comprando 5 conjuntos de 8, você deve conseguir 36 unidades boas com curso de pelo menos 160°.
Os servos devem ser posicionados no seu mínimo (PWM 150), com os palitos apontando horizontalmente para a direita nessa posição, vistos da frente. Um pequeno programa auxiliar (SetServosToMinimum) é fornecido para garantir esse posicionamento.

A foto acima mostra o layout traseiro. Os três controladores PWM estão montados à esquerda dos servos. A fonte de 30W 5V fica à direita. O Arduino é alimentado separadamente via adaptador USB, o que permite desconectar o cabo USB e, através de uma extensão, conectá-lo ao computador para alterações no programa.
Também é possível ver os sensores ultrassônicos opcionais montados na parte superior do painel, fixados com cola quente e palitos extras. A pequena placa de prototipagem abaixo do Uno serve apenas para distribuir alimentação e terra aos sensores ultrassônicos.
Software
Utilizo a biblioteca Adafruit PWM Servo Driver para controlar os controladores de 16 canais; ela deve ser instalada via Gerenciador de Bibliotecas do Arduino. O software funciona com ou sem os sensores ultrassônicos opcionais. Ele apresenta uma variedade de efeitos em um show que dura pouco mais de três minutos antes de repetir. Se os sensores opcionais estiverem instalados, o modo interativo é ativado sempre que uma mão é detectada sobre o sensor central.
O código possui duas tabelas principais: curPos armazena a posição atual de cada servo dividida por 3, e tarPos armazena a posição desejada, também dividida por 3. Essa divisão permite armazenar os valores em um byte e move os servos em incrementos de 3 passos.
Na inicialização, o Uno não conhece as posições dos servos. A rotina setup posiciona todos os servos na vertical e define curPos e tarPos correspondentes. A partir daí, movemos os servos alterando os valores em tarPos.
A sub-rotina goToTargets() é o principal mecanismo de movimento. Controlamos a velocidade de duas formas: a rotina move os servos em incrementos de 15 passos (o parâmetro reps multiplica esses 15 passos), e o parâmetro mydelay adiciona um atraso em milissegundos a cada chamada.
O modo interativo opcional é gerenciado pela sub-rotina trackRoutine, chamada quando goToTargets detecta um objeto (sua mão) sobre o sensor central ultrassônico. Ela tenta fazer todos os servos seguirem o movimento da mão. Se nenhum objeto for detectado por alguns segundos, a rotina retorna e o programa principal retoma.
Código
Software ServosArt para Arduino Uno
// O código completo está disponível para download. // Inclui a biblioteca Adafruit PWM Servo Driver. // Implementa efeitos visuais e modo interativo opcional com sensores HC-SR04.
Esquemáticos
Conexão do Uno e servos através de três controladores de 16 canais:
Conexão de 5 sensores ultrassônicos ao Uno para rastreamento de mão:
Processo de manufatura
- Raspoulette: Protótipo de Sistema Autônomo de Porta de Galinheiro Alimentado por Energia Solar
- Simple Pi Robot – Construa Rover Autônomo 2-WD com Raspberry Pi
- Serviços Profissionais de Reparo de Servomotores Fanuc
- Reparo Profissional de Servo Motores Siemens — Serviço Rápido e Confiável
- Guia Especializado: Reparo e Troubleshooting de Servo Motores
- Kit MOSMusic: MOSFET, Arduino e Mais - Iluminação Sincronizada com Música
- Entendendo Motores Lineares: Da Energia Elétrica ao Movimento Linear Preciso
- Por Que Redutores Planetários Aprimoram Desempenho de Motores Servo
- Fundamentos da Prensa Servo: Potência, Precisão e Eficiência Explicadas
- Motores Servo Explicados: Como Funcionam e Por Que Importam