Conforme discutido anteriormente, o Arduino Due é uma placa baseada em controlador ARM projetada para engenheiros eletrônicos e amadores. Esta placa DUE pode ser usada para fazer máquinas CNC, impressoras 3D, braços robóticos, etc. Todos esses projetos têm uma característica comum que é o Controle de Posição. Qualquer um desses projetos precisa de precisão em relação a sua posição. Posições precisas nessas máquinas podem ser alcançadas por Servo Motores. Nesta sessão, vamos controlar a posição de um servo motor com o Arduino Due. Já cobrimos a interface do servo motor com Arduino Uno e a interface do servo motor com o microcontrolador 8051.
Servo Motors:
Os servo motores são conhecidos por seu movimento ou posição precisa do eixo. Eles não são propostos para aplicações de alta velocidade. Estes são propostos para aplicações de baixa velocidade, torque médio e posição precisa. Esses motores são usados em máquinas de braço robótico, controles de vôo e sistemas de controle. Servo motores também são usados em algumas impressoras e aparelhos de fax.
Os servomotores estão disponíveis em diferentes formas e tamanhos. Estaremos usando o servo motor SG90 neste tutorial. SG90 é um servo motor de 180 graus. Portanto, com este servo podemos posicionar o eixo de 0 a 180 graus.
Um servo motor tem principalmente três fios, um é para tensão positiva, outro é para aterramento e o último é para ajuste de posição. O fio VERMELHO está conectado à alimentação, o fio marrom está conectado ao aterramento e o fio AMARELO (ou BRANCO) está conectado ao sinal.
Um servo motor é uma combinação de motor DC, sistema de controle de posição e engrenagens. No servo, temos um sistema de controle que leva o sinal PWM do pino de sinal. Ele decodifica o sinal e obtém a relação de trabalho dele. Depois disso, ele compara a proporção com os valores de posições predefinidos. Se houver uma diferença nos valores, ele ajusta a posição do servo de acordo. Portanto, a posição do eixo do servo motor é baseada na relação de trabalho do sinal PWM para o pino SIGNAL.
A frequência do sinal PWM (modulado por largura de pulso) pode variar com base no tipo de servo motor. O importante aqui é a DUTY RATIO do sinal PWM. Verifique isso para PWM com Arduino Due. No entanto, neste caso, não precisamos nem mesmo nos preocupar com a seleção do Duty Ratio. No Arduino, temos uma função especial; ao chamá-lo, podemos ajustar a posição do servo, apenas informando o ângulo. Falaremos sobre isso na seção de trabalho abaixo.
Antes de fazer a interface do servo motor com o Arduino Due, você pode testar seu servo com a ajuda deste circuito testador de servo motor. Verifique também esses projetos para Controlar Servo por Flex Sensor ou por Sensor de Força.
Componentes:
Hardware: Arduino Due, fonte de alimentação (5v), servo motor.
Software: Arduino noturno, baixe-o no link abaixo (https://www.arduino.cc/en/Main/Software)
Para obter detalhes sobre como fazer download e instalar este software, visite o primeiro tutorial Introdução ao Arduino Due.
Diagrama de circuito e explicação de trabalho:
Como dito anteriormente no ARDUINO, temos bibliotecas predefinidas, que definirão as frequências e as taxas de serviço de acordo, assim que o arquivo de cabeçalho for chamado ou incluído. No ARDUINO, simplesmente temos que indicar a posição do servo necessária e o DUE gera o sinal PWM apropriado para o servo. As coisas que precisamos fazer para obter a posição precisa do servo são,
#incluir
Servo myservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (ângulo_posição_necessária);
O arquivo de cabeçalho “#include
Em segundo lugar, um nome deve ser escolhido para o servo usando "Servo meu servo" , aqui meu servo é o nome escolhido, então, ao escrever para a posição vamos usar esse nome, esse recurso é útil quando temos muitos servos para controlar, podemos controlar até 12 servos com isso.
Com o Arduino Due tendo 12 canais PWM, precisamos informar ao DUE onde o pino de sinal do servo está conectado ou onde ele precisa gerar o sinal PWM. Para fazer isso, temos “myservo.attach (2);” , aqui estamos dizendo ao DUE que conectamos o pino de sinal do servo no PIN2.
Tudo o que resta é definir a posição, vamos definir a posição do servo usando “ myservo.write (45);” , por este comando o ponteiro do servo se move 45 graus. Se mudarmos de '45' para '175', o servo eixo faz um ângulo de 175 graus e permanece lá. Depois disso, sempre que precisarmos alterar a posição do servo, basta chamar o comando “ myservo.write (needed_position_angle);” .
No programa, vamos aumentar e diminuir os ângulos usando loops. Portanto, o servo varia de 0 a 180, depois de 180 a 0 e assim por diante. O controle servo motor do Arduino Due é melhor explicado passo a passo do código C abaixo.