Ir ao conteúdo
  • Cadastre-se

Arduino - programação para cadeira de rodas


Posts recomendados

Olá, meu nome é Igor Tenório e preciso de uma possível ajuda de vocês.

Faço curso técnico e tenho um projeto de uma adaptação para cadeiras de rodas. No projeto tenho que fazer o controle de 2 motores através de PWM, comprei uma ponte H que vem com um microcontrolador do Arduíno uno já embutido, em seu manual veio com uma programação para teste porém não estou conseguindo fazer o controle dos motores com Joystick, o máximo que eu consegui implantar na programação foi fazer a leitura de apenas uma parte do Eixo X e Y do Joystick, porém, eu preciso de todos os lados.

Segue abaixo a programação usada até agora.

/*
AFSmartBTN Motor Control Board 
AFSmartBTN (R_EN), 4 (L_EN), 7 (VCC) to Arduino 5V pin
AFSmartBTN (GND) to Arduino GND
IBT-2 pins 5 (R_IS) and 6 (L_IS) not connected
*/
#include <LiquidCrystal.h> //Carrega a biblioteca LCD

int RPWM_Output = 5; // Arduino PWM output pin 5; connect to IBT-2 pin 1 (RPWM)
int LPWM_Output = 6; // Arduino PWM output pin 6; connect to IBT-2 pin 2 (LPWM)

int RPWM_Output_MOT2 = 10; // Arduino PWM output pin 5; connect to IBT-2 pin 1 (RPWM)
int LPWM_Output_MOT2 = 11; // Arduino PWM output pin 6; connect to IBT-2 pin 2 (LPWM)

int buttonPin = 12;
int LedStatus = 13;
int eixoX = 3;
int eixoY = 4;
int eixoZ = 1;
int val_x;   //Armazena o valor do eixo X
int val_y;   //Armazena o valor do eixo Y

// variables will change:
int buttonState =0 ;         // ESQUERDA
int buttonStateDir = 0;     // DIREITA
int valJoy;

void setup()
{
  
pinMode(RPWM_Output, OUTPUT);
pinMode(LPWM_Output, OUTPUT);
pinMode(RPWM_Output_MOT2, OUTPUT);
pinMode(LPWM_Output_MOT2, OUTPUT);

pinMode(LedStatus, OUTPUT);
pinMode(buttonPin, INPUT);
}


void loop()
{
//int sensorValue = analogRead(SENSOR_PIN);
int reversePWM = 2300;
int forwardPWM = 2300;

// sensor value is in the range 0 to 1023
// the lower half of it we use for reverse rotation; the upper half for forward rotation
//ESQUERDA (FRENTE)
buttonState = digitalRead(eixoY);

if(buttonState == HIGH)
{
  
  digitalWrite (LedStatus, LOW);
  analogWrite(LPWM_Output_MOT2, 0);
  analogWrite(RPWM_Output_MOT2, 0);
  analogWrite(LPWM_Output, 0);
  analogWrite(RPWM_Output, 0);

}
else if(buttonState == LOW)
{
  digitalWrite (LedStatus, HIGH); 
analogWrite(LPWM_Output, reversePWM);
analogWrite(RPWM_Output, 0);
analogWrite(LPWM_Output_MOT2, 0);
analogWrite(RPWM_Output_MOT2, reversePWM);
  
}


// sensor value is in the range 0 to 1023
// the lower half of it we use for reverse rotation; the upper half for forward rotation
//DIREITA (RÉ)
buttonStateDir = digitalRead(eixoX);

if(buttonStateDir == HIGH)
{

  digitalWrite (LedStatus, LOW);
  analogWrite(LPWM_Output_MOT2, 0);
  analogWrite(RPWM_Output_MOT2, 0);
  analogWrite(LPWM_Output, 0);
  analogWrite(RPWM_Output, 0);

}
else if(buttonStateDir == LOW)
{
  digitalWrite (LedStatus, HIGH);

  analogWrite(LPWM_Output, 0);
  analogWrite(RPWM_Output, forwardPWM);
  analogWrite(LPWM_Output_MOT2, forwardPWM);
  analogWrite(RPWM_Output_MOT2, 0);
  
}



}

 

 

Se tiver como me ajudar eu agradeceria e muito.

Link para o comentário
Compartilhar em outros sites

@Igor Tenório ,

 

Bom, o mínimo para que alguém possa te ajudar é você informar corretamente, pois o estoque de bolas de cristal está zerado no momento.... poste o esquema com ligações e quais são os componentes, e aí sim alguém que entenda de Arduíno pode te ajudar, ok ?

 

Paulo

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

minha velha e cansada bola de cristal quase zerada meio que entendeu isso...

seu joystick tem 4 saídas e você quer ler cada uma para fazer frente-ré-esquerda-direita

-frente: aciona 2 motores no sentido horário

-ré: os 2 no anti

-esquerda: o da direta no horário

-direita: o da esquerda no horário

Tipo isso?

Ou seu joystick tem saída analógica? Se sim, como é o comportamento dela (com relação ás 4 condições acima)? Joystick com eixo x,y,z nunca vi. Aliás vi nenhum

Considero que vá dominas o lance de pwm, aceleração, velocidade do motor, torque, sobre carga-corrente e afins.

 

Em tempo: arduíno não vai com minha cara por isso nunca me atraiu. Mas 'no fundo no fundo' ele tem algo bom 'por dentro'.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Primeiro não faça PWM em relé... diminui vida útil, faz um barulho ***** ^^

Fora isso faça um ponte H com outra coisa como algum mosfet de potencia ou darlington com bons dissipadores (tem exemplos na net). Mas se está liso de dinheiro e não sabe montar esses circuitos faça o PWM no relé mesmo...

 

Segundo exiba no serial monitor os valores que você consegue pegar. Não sei com funciona essa tua ponte H já com arduino se tem essa forma de se comunicar com a IDE do arduino ou usa outro software... mas você precisa pegar os dados da leitura analógica e saber a faixa de onde para onde vai a leitura do teu analógico para saber que faixa aplicar e a relacionar ao teu programa.

 

 

 

Em 31/10/2016 às 10:59, Isadora Ferraz disse:

arduíno não vai com minha cara por isso nunca me atraiu. Mas 'no fundo no fundo' ele tem algo bom 'por dentro'.

Sacrilégio!

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...