Fala Pessoal! Tudo Beleza? 😀
Bom pessoal, espero que todos estejam muito bem, e vamos em frente porque o assunto de hoje é bem interessante – Servomotores!
Vamos falar pela primeira vez aqui no nosso Blog, sobre os “famosos conhecidos” Servomotores! 🙂
Pois é, muitos já conhecem esses “motorzinhos“, mas outros muitos ainda não conhecem este tipo de motor muito bem, então, pelo menos já sabendo que estes pequenos mas robustos motorzinhos (mais conhecidos e chamados como “SERVOS“) são muito utilizados (quase que completamente) para controlar o movimento de braços robóticos, bases para radares, sensores com precisão de localização justamente promovida pela “precisão” oferecida por estes tipos de motores, até mesmo quando se trabalhando com angulação (girando seu eixo com a precisão de um ângulo geralmente entre 0˚ e 180˚ previamente determinado).
Mini-servo Tower Pro – SG90 (varia de 0 a 180 graus seu eixo) – Baixar Datasheet
– Tensão de Operação: 3,0 – 7,2v
– Velocidade: 0,12 seg/60Graus (4,8v) sem carga
– Torque: 1,2 kg.cm (4,8v) e 1,6 kg.cm (6,0v)
– Temperatura de Operação: -30˚C ~ +60˚C
– Dimensões: 32x30x12 mm
– Tipo de Engrenagem: Nylon
– Tamanho cabo: 245 mm
– Peso: 9g
-
DICA: Conecte a alimentação do Micro Servo 9g à placa Arduino (ou qualquer outra baseada na Arduino UNO) da seguinte maneira: Fio Marrom com GND, Fio Vermelho com 5v e Fio Laranja na Porta Digital 9.
💡 E como vocês percebem pessoal, de acordo com a imagem do esquemático acima, “dentro” de um servomotor (sim, dentro do “case” do servo), já estão “embutidos“: motor DC, o Circuito de Controle, o Sensor de Posição além de uma série de mecanismos.
Detalhe importante sobre a maioria dos servomotores:
Pessoal, uma característica própria dos servomotores, é que como vocês podem observar nesta imagem acima em seu respectivo pino de controle (que chega até o circuito de controle interno ao servo), para estes motores funcionarem de maneira apropriada e precisa, se faz necessário aplicarmos pulsos PWM com faixas de tempo de acordo com as mostradas acima para que tenhamos total controle do motor, ou seja, conseguirmos fazer seu eixo girar de acordo a nossa vontade, indo de tal posição a tal posição de acordo ao que nosso código (Sketch) “diz pra fazer“! (risos, mas é bem por aí mesmo) 😉
Observação: maiores detalhes e informações no video que segue no final deste post! 🙂
O CÓDIGO (Sketch) PARA CONTROLE DO SERVOMOTOR VIA MONITOR SERIAL DA IDE 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 |
/* PROGRAMA: "CONTROLE DE SERVOMOTOR VIA MONITOR SERIAL IDE ARDUINO" * AUTOR: RODRIGO COSTA * DATA: 08/08/2017 * CREDITOS: Simon Monk */ #include <Servo.h> const int servoPin = 9; // Pino do Arduino para controle do Servomotor Servo servo; // declaramos a variável "servo" para receber "Servo" void setup() { servo.attach(servoPin); // damos um "start" nos pulsos do servomotor, associando o pino de controle com a geração de pulsos promovida pela função e método - "servo.attach()" servo.write(90); // Definimos o ângulo inicial do servo em 90 graus (posição central do servomotor) Serial.begin(9600); // Iniciamos a cominicação SERIAL para poder enviar comandos do "ângulo" pelo MONITOR SERIAL da IDE Arduino Serial.println("Entre com angulo entre 0 e 180 Graus"); // Solicitamos ao usuário que insira o valor de um ângulo qualquer em graus } void loop() { if(Serial.available()) { int angulo = Serial.parseInt(); servo.write(angulo); Serial.println(angulo); } } |
O CÓDIGO (Sketch) PARA CONTROLE DO SERVOMOTOR INDO DE 0˚ à 180˚ INDEFINIDAMENTE:
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 31 32 33 34 35 36 37 |
/* PROGRAMA: "CONTROLE DE SERVOMOTOR COM PLACA RODUINO - ARDUINO`s BASED" * AUTOR: RODRIGO COSTA * DATA: 08/08/2017 * CREDITOS: Simon Monk */ #include <Servo.h> const int servoPin = 9; // Pino do Arduino para controle do Servomotor Servo servo; // declaramos a variável "servo" para receber "Servo" int servoPos; // guarda a posicao do servomotor void setup() { servo.attach(servoPin); // damos um "start" nos pulsos do servomotor, associando o pino de controle com a geração de pulsos promovida pela função e método - "servo.attach()" servoPos = servo.read(); // retorna a posicao do servomotor //servo.write(0); // Definimos o ângulo inicial do servo em 0 graus (posição central do servomotor) //servo.writeMicroseconds(1500); // set servo to mid-point Serial.begin(9600); // Iniciamos a cominicação SERIAL para poder enviar comandos do "ângulo" pelo MONITOR SERIAL da IDE Arduino } void loop() { for(int m = 0; m < 180; m += 16) // a expressao "m += 16" é igual a "m = m+16" { servo.write(m); delay(15); Serial.println(m); } delay(1000); for(int m = 180; m >= 1; m -= 7) // a expressao "m -= 7" é igual a "m = m-7 { servo.write(m); delay(15); Serial.println(m); } delay(1000); } |
Pessoal, então aí acima vocês poderão “brincar” a vontade com os dois tipos de códigos/programas disponibilizados, MAS eu recomendo “fortemente” que ao invés de vocês apenas “copiarem e colarem” os códigos acima nos editores de texto de vocês, quero dizer, no editor da IDE Arduino de vocês, DIGITEM MESMO, SIM, isso mesmo que você entendeu 😎 !
Digita linha por linha para poder ir fixando na cabeça a sintaxe da linguagem de programação que vocês estão utilizando (linguagem C para plataforma Arduino), porque desta forma em breve espaço de tempo, de tanto ir praticando, “lendo” os programas, comentando, etc, o assunto em geral “vai fixando nos neurônios” e quando vocês menos esperarem, “Tá Lá!“, risos, isso mesmo, tá lá a sintaxe já devidamente guardada e sendo lembrada na “cachola“! 🙂
E PARA FINALIZAR MOSTRANDO “TUDO” PRA VOCÊS, VAMOS À VIDEO-AULA OU VIDEO-TUTORIAL, como prefiram chamar 🙂
- Medindo e Monitorando a Temperatura com Arduino (Sensor LM35) - 5 de setembro de 2021
- Controle de Cargas através de Entrada Analógica com Arduino - 30 de agosto de 2021
- REVIEW E DICAS – ALICATE AMPERÍMETRO (UNI-T UT210E PRO) - 28 de agosto de 2021