Boa noite a todos, sou novo aqui no fórum, e também comecei a mexer com o arduino há poucos meses. Estou tentando fazer um aplicativo no blynk no qual eu possa controlar um servo motor por meio de 3 botões que possam controlar o posicionamento dele, mas o servo trepida muito e constantemente, e eu gostaria de reduzir essa tremedeira o máximo possível. Tentei usar um capacitor de 3300uF 25v ligado no vcc e gnd da fonte de 5v, mas parece não ter adiantado.
Aqui está o sketch, caso ajude na solução do problema:
#define BLYNK_PRINT Serial
#include "ESP8266_Lib.h"
#include "BlynkSimpleShieldEsp8266.h"
#include <VarSpeedServo.h>
char auth[] = "w8UHGZakmmG_7VPOKQEiBbAay7u_b7_8";
char ssid[] = "Jesus";
char pass[] = "Deusfiel";
#include "SoftwareSerial.h"
SoftwareSerial EspSerial(6, 7); // RX, TX
#define ESP8266_BAUD 9600
ESP8266 wifi(&EspSerial);
VarSpeedServo servo;
void setup()
{
Serial.begin(9600);
EspSerial.begin(ESP8266_BAUD);
delay(10);
Blynk.begin(auth, wifi, ssid, pass, "blynk.iot-cm.com", 8080);
servo.attach(9);
}
void loop()
{
Blynk.run();
}
BLYNK_WRITE(V2)
{
servo.slowmove(180, 40);
delay(300);
}
BLYNK_WRITE(V0)
{
servo.slowmove(0, 40);
delay(300);
}
BLYNK_WRITE(V1)
{
servo.slowmove(90, 40);
delay(300);
}
Estou usando a biblioteca varspeed porque ouvi dizer que a servo.h poderia contribuir com a trepidação.
Quem puder me ajudar com esse problema de trepidação, serei muito grato.
desenho do circuito:
Tags:
Olá.
O servo trepida quando parado ?
Já tive problemas assim, algumas vezes associado a baixa qualidade do sinal de comando (interrupções faziam ele ficar variando), outras vezes problema de alimentação (fonte inadequada), outras por erro no código (que mandava ir pra um lugar e depois mandava ir pra outro) e tb baixa qualidade do servo.
Pela seu texto não é possível saber.
Vc consegue medir a tensão da fonte ? Por ser um motor é preciso que ela esteja 100%, tanto em tensão quanto corrente. Fontes do tipo celular com conector USB não servem. Tem que ser uma fonte mesmo. Essas de celular podem ficar cortando a alimentação se certo valor de corrente for atingido. Começaria por tentar alimentar o servo com outra fonte (uma para o circuito, outra para o servo, com os GNDs interligados). Não é necessário que seja feito isso para sempre, apenas para diagnóstico.
Essa do capacitor foi uma boa. Ele está ligado exatamente assim ? Perto do servo ? Antes do circuito de controle (ESP) ?
Outra possibilidade é fazer um codigo que deixe parado. Por ex em 90graus. Parado ele tb vibra ? Vibra em determinados angulos, vibra parado, vibra sempre ?
É um servo de que qualidade ? qual modelo ? Daqueles de plastico ? Ou já um metálico melhor ?
olá. Sim o servo trepida principalmente quando para, treme muito pouco quando está em movimento. Estou usando uma fonte ajustável para protoboard 3.3-5v exclusivamente para o servo, e da última vez que medi a tensão, constava 4.97v. O capacitor eu coloquei o mais próximo possível do servo. E sim, parado ele também vibra, exceto quando se encontra em 180º e 0º, mas em qualquer outro angulo entre esses dois ele começa a tremer mesmo que eu o pare, mas eu aceito dicas de sketches que ajudem com relação a isso. Com relação ao servo, é um SG90 com as engrenagens de plástico.
Esse servo é bem simples, para "brinquedos".
Acredito que possa ser isso. As engrenagens plásticas tem muita folga. Conforme ele tem ou não carga (em geral com uma pequena carga as engrenagens ficam apoiadas umas nas outras e melhora) pode vibrar bastante.
Se seu projeto não permite isso tentaria usar um servo melhor, com engrenagens metálicas.
Mas............... Posso estar enganado...
Pouca coisa pode ser feita no sketch, uma vez que a geração de pulsos é toda dentro da biblioteca, já é otimizado. Poderia vibrar por falha no código por ex se vc estivesse usando 2 bibliotecas e uma delas ficasse parando as interrupções, coisa assim.
O unico teste a fazer seria um programa sem wifi. Para ver se a comunicação wifi está interferindo de alguma forma.
Mestre, fiz alguns testes hoje, e usando botões e potenciômetros físicos, e usei as funções servo.attach e servo.dettach, e o servo não apresentou qualquer tipo de trepidação. Poderia ser então um problema na própria sketch?
Aqui está o sketch que usei para testar com botões físicos ao invés do aplicativo:
#include <VarSpeedServo.h> // inclusão da bibliotecaa
VarSpeedServo servo;// criando objeto apartir da biblioteca
int val;
int ChaveEsquerda=5;
int ChaveCentral=6;
int ChaveDireita=7;
void setup() {
// servo.attach(9); // pino PWM onde está conectaado o servo
pinMode(ChaveEsquerda, INPUT);
//Aciona o resistor pull-up interno
digitalWrite(ChaveEsquerda, HIGH);
pinMode(ChaveCentral, INPUT);
digitalWrite(ChaveCentral, HIGH);
pinMode(ChaveDireita, INPUT);
digitalWrite(ChaveDireita, HIGH);
}
void loop() {
//A velocidade varia de 0 a 255 onde 0 é parado e 255 maximo
val = digitalRead(ChaveEsquerda);
if (val!=1){
servo.attach(9);
delay(15);
servo.write(0, 50, true);//posição, velocidade, espera
delay (300); // tempo de espera
servo.detach();
}
val = digitalRead(ChaveCentral);
if (val!=1){
servo.attach(9);
delay(15);
servo.write(90, 50, true);//posição, velocidade, espera
delay (300); // tempo de espera
servo.detach();
}
val = digitalRead(ChaveDireita);
if (val!=1){
servo.attach(9);
delay(15);
servo.write(180, 50, true);//posição, velocidade, espera
delay (300); // tempo de espera
servo.detach();
}
}
Boa tarde,
Veja o tutorial e o vídeo.
https://randomnerdtutorials.com/esp32-servo-motor-web-server-arduin...
Teste o seu servo com esse tutorial. Não use o 5V do Esp8266 para alimentar o servo!!!
Use uma fonte 5V separada.
Boa tarde TDS, (se não gosta que te chame pelas iniciais, avise),
Recomendações:
1. Remova seu sketch da área de texto do seu tópico;
2. Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
3. Comente as linhas do seu sketch. Fica mais fácil entender o que vc quer fazer com cada
linha e facilita a ajuda.
4. Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo" e anexe o arquivo
com o seu sketch.
RV mineirin
certo
Bom, depois de dar uma pesquisada mais a fundo, acho que consegui contornar o problema inicializando o servo apenas quando um botão for acionado e desativando o servo motor logo em seguida até o botão ser pressionado novamente. Aqui está o sketch
Bom dia Cláudio,
O Arduino pode ser usado para testar o Servo. Não há necessidade do Servo Tester.
https://create.arduino.cc/projecthub/bbil40/automatic-servo-tester-...
Certo, agradeço o esclarecimento
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues.
Ativado por