Ir ao conteúdo
  • Cadastre-se

Arduino controlando motor dc 12v e servo 13kg


Posts recomendados

Estou com um problema com um problema e não sei se é a programção, pois meu servo motor não esta completando a programação fazendo o movimento apenas uma vez e meia, enquanto todo o resto esta a funcionar normalmente.

 

adicionado 7 minutos depois

/*Pinagem do arduino*/
 #include <Servo.h>
 
#define SERVO 3 // Porta Digital 3
 
Servo s ; // Variável Servo
int pos; // Posição Servo
int rep = 0;
int rep2 = 0;
int curvaa = 0;
int curvaaa = 0;

//motor_A
int IN1 = 6 ;
int IN2 = 7 ;
int velocidadeA = 5;

 
//motor_B
int IN3 =  9 ;
int IN4 = 10;
int velocidadeB = 11;
 
//variavel auxiliar
int velocidade = 0;
//-------------------------------------------------
//Inicializa Pinos
void setup()
{
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(velocidadeA,OUTPUT);
pinMode(velocidadeB,OUTPUT);
  s.attach(SERVO);
  Serial.begin(9600);
  s.write(0);
}
void loop()
{
  while(rep < 3){

  for(pos = 0; pos < 180; pos++)
  {
    s.write(pos);
  delay(15);
  }
delay(10);
  for(pos = 180; pos >= 0; pos--)
  {
    s.write(pos);
    delay(15);
  }
delay(50);
retoo();
rep++;
  }
delay (150);
// curva 1 <---------------------------------------
while(curvaa < 4){
curvaaa1();
delay(50);
curvaa++;
}
while(rep2 < 3){

  for(pos = 0; pos < 180; pos++)
  {
    s.write(pos);
  delay(5);
  }
delay(5);
  for(pos = 180; pos >= 0; pos--)
  {
    s.write(pos);
    delay(5);
  }
delay(10);
retoo2();
rep2++;
  }
// curva 2 >---------------------------------------
while(curvaaa < 4){
curvaaa2();
delay(50);
curvaaa++;
}

for (int i=1; i>0; i++);{}
}

//---------------------------------------------------
//---------------------------------------------------
//---------------------------------------------------
void retoo(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(velocidadeA,140);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(velocidadeB,75);
delay(50);
            }
//---------------------------------------------------
void retoo2(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(velocidadeA,140);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(velocidadeB,75);
delay(50);
            }
//---------------------------------------------------
void servo()
  {
  for(pos = 0; pos < 180; pos++)
  {
    s.write(pos);
  delay(15);
  }
delay(10);
  for(pos = 180; pos >= 0; pos--)
  {
    s.write(pos);
    delay(15);
  }
}
//---------------------------------------------------
void curva2(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(velocidadeA,125);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(velocidadeB,250);
              }
//----------------------------------------------------              
  void curva1(){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(velocidadeA,200);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(velocidadeB,100);
                }
//----------------------------------------------------
    void curvaaa2(){
      curva2();
delay(1500);
      retoo2();
delay(1500);
                    }
//----------------------------------------------------                    
    void curvaaa1(){
      curva1();
delay(1500);
      retoo();
delay(1500);
                    }
//----------------------------------------------------           
void re(){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(velocidadeA,140);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(velocidadeB,75);
}
//----------------------------------------------------         

adicionado 30 minutos depois

mudei apenas para a programação do meu servo e continua 1 ciclo e meio com a alimnetação externa enquanto por usb esta normal ......

#include <Servo.h>
 
#define SERVO 3// 
 
Servo s; // Variável Servo
int pos; // Posição Servo
int rep = 0;
void setup ()
{
  s.attach(SERVO);
  Serial.begin(9600);
  s.write(0); // Inicia motor posição zero
}
 
void loop(){
while(rep<5)
{
  for(pos = 0; pos < 180; pos++)
  {
    s.write(pos);
  delay(15);
  }
delay(1000);
  for(pos = 180; pos >= 0; pos--)
  {
    s.write(pos);
    delay(15);
  }

rep++;
}
}

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

mudei apenas para a programação do meu servo e continua 1 ciclo e meio com a alimnetação exter
while(rep<5)
{
  for(pos = 0; pos < 180; pos++)
  {
    s.write(pos);
  delay(15);
  }
delay(1000);
  for(pos = 180; pos >= 0; pos--)
  {
    s.write(pos);
    delay(15);
  }

rep++;
}
}

 

 

de fato essa é a intenção, mas o problema acredito ser no meu servo ... que não responde pela alimentação externa (atraves de uma bateria lipo) no arduino, somente a quando usado USB no arduino.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...