Galera bom dia!

Eu me chamo Johnny e estou com um projeto de uma cadeira de rodas.

Minha intenção é ajudar o filho de um amigo que tem paralisia infantil , mas manuseia uma cadeira muito bem!

 A cadeira trabalha com os seguintes componentes:

1 Joystick (PS2) , 1 Arduino uno , 2 Ponte H e 2 motores DC.

O projeto já está quase pronto ( inclusive já testei ) ,  mas noto um grande ruido nos motores quando cambo para os lados e ela não responte muito bem.

Estou usando essa programação:


const int PinoPotenciometroX = 0;
const int PinoPotenciometroY = 1;
const int motorDV = 5;
const int motorDR = 6;
const int motorEV = 10;
const int motorER = 11;
int ValorPotX = 0;
int pwmX = 0;
int ValorPotY = 0;
int pwmY = 0;

void setup() {
pinMode(motorDV, OUTPUT);
pinMode(motorDR, OUTPUT);
pinMode(motorEV, OUTPUT);
pinMode(motorER, OUTPUT);
}
void loop() {
ValorPotX = analogRead(PinoPotenciometroX);
pwmX = map(ValorPotX, 0, 1023, -255, 255);

ValorPotY = analogRead(PinoPotenciometroY);
pwmY = map(ValorPotY, 0, 1023, -255, 255);

if (490<ValorPotY<534 && 490<ValorPotX<534 ){
analogWrite(motorEV, LOW);
analogWrite(motorDV, LOW);
analogWrite(motorER, LOW);
analogWrite(motorDR, LOW);
}
if (ValorPotY>=534 && 490<ValorPotX<534 ){
analogWrite(motorEV, pwmY);
analogWrite(motorDV, pwmY);
analogWrite(motorER, LOW);
analogWrite(motorDR, LOW);
}
if (ValorPotY<=490 && 490<ValorPotX<534 ){
analogWrite(motorEV, LOW);
analogWrite(motorDV, LOW);
analogWrite(motorER, -pwmY);
analogWrite(motorDR, -pwmY);
}
if (490<ValorPotY<534 && ValorPotX>=524 ){
analogWrite(motorEV, pwmX);
analogWrite(motorDV, LOW);
analogWrite(motorER, LOW);
analogWrite(motorDR, pwmX);
}
if (490<ValorPotY<534 && ValorPotX<=490 ){
analogWrite(motorEV, LOW);
analogWrite(motorDV, -pwmX);
analogWrite(motorER, -pwmX);
analogWrite(motorDR, LOW);
}
if (ValorPotY>=534 && ValorPotX>=524 ){
analogWrite(motorEV, pwmY+pwmX);
analogWrite(motorDV, pwmY);
analogWrite(motorER, LOW);
analogWrite(motorDR, LOW);
}
if (ValorPotY<=490 && ValorPotX>=534 ){
analogWrite(motorEV, LOW);
analogWrite(motorDV, LOW);
analogWrite(motorER, -pwmY+pwmX);
analogWrite(motorDR, -pwmY);
}
if (ValorPotY<=490 && ValorPotX<=490 ){
analogWrite(motorEV, LOW);

Vcs podem me ajudar?

Exibições: 1401

Responder esta

Respostas a este tópico

O programa foi incompleto , segue:


const int PinoPotenciometroX = 0;
const int PinoPotenciometroY = 1;
const int motorDV = 5;
const int motorDR = 6;
const int motorEV = 10;
const int motorER = 11;
int ValorPotX = 0;
int pwmX = 0;
int ValorPotY = 0;
int pwmY = 0;

void setup() {
pinMode(motorDV, OUTPUT);
pinMode(motorDR, OUTPUT);
pinMode(motorEV, OUTPUT);
pinMode(motorER, OUTPUT);
}
void loop() {
ValorPotX = analogRead(PinoPotenciometroX);
pwmX = map(ValorPotX, 0, 1023, -255, 255);

ValorPotY = analogRead(PinoPotenciometroY);
pwmY = map(ValorPotY, 0, 1023, -255, 255);

if (490<ValorPotY<534 && 490<ValorPotX<534 ){
analogWrite(motorEV, LOW);
analogWrite(motorDV, LOW);
analogWrite(motorER, LOW);
analogWrite(motorDR, LOW);
}
if (ValorPotY>=534 && 490<ValorPotX<534 ){
analogWrite(motorEV, pwmY);
analogWrite(motorDV, pwmY);
analogWrite(motorER, LOW);
analogWrite(motorDR, LOW);
}
if (ValorPotY<=490 && 490<ValorPotX<534 ){
analogWrite(motorEV, LOW);
analogWrite(motorDV, LOW);
analogWrite(motorER, -pwmY);
analogWrite(motorDR, -pwmY);
}
if (490<ValorPotY<534 && ValorPotX>=524 ){
analogWrite(motorEV, pwmX);
analogWrite(motorDV, LOW);
analogWrite(motorER, LOW);
analogWrite(motorDR, pwmX);
}
if (490<ValorPotY<534 && ValorPotX<=490 ){
analogWrite(motorEV, LOW);
analogWrite(motorDV, -pwmX);
analogWrite(motorER, -pwmX);
analogWrite(motorDR, LOW);
}
if (ValorPotY>=534 && ValorPotX>=524 ){
analogWrite(motorEV, pwmY+pwmX);
analogWrite(motorDV, pwmY);
analogWrite(motorER, LOW);
analogWrite(motorDR, LOW);
}
if (ValorPotY<=490 && ValorPotX>=534 ){
analogWrite(motorEV, LOW);
analogWrite(motorDV, LOW);
analogWrite(motorER, -pwmY+pwmX);
analogWrite(motorDR, -pwmY);
}
if (ValorPotY<=490 && ValorPotX<=490 ){
analogWrite(motorEV, LOW);
analogWrite(motorDV, LOW);
analogWrite(motorER, -pwmY);
analogWrite(motorDR, -pwmY-pwmX);
}
if (ValorPotY>=534 && ValorPotX<=490 ){
analogWrite(motorEV, pwmY);
analogWrite(motorDV, pwmY-pwmX);
analogWrite(motorER, LOW);
analogWrite(motorDR, LOW);
}

}

Qual motor esta usando ? envie especificações e link.

Qual a bateria usada - tensão e carga?

Qual driver do motor ? 

Existe algum sistema de segurança - por exemplo , freio , sistema para evitar excesso de velocidade, etc ?

Botão de emergência para desligar a cadeira ?

Veja isso :

http://labdegaragem.com/forum/topics/gente-me-ensina-sobre-esse-motor

http://labdegaragem.com/forum/topics/ajuda-com-projeto

Caro José bom dia!

O projeto mecânico é parecido com o projeto da freedom.

O motor é:  MOTOR BOSCH GPC 9 130 451 127 24V 2655RPM  https://casaferreira.myciashop.com.br/pedidos/t/3/pedido_id/517

24v ( duas baterias de celta) 12v cada

Ainda não cheguei na segurança , mas não vejo dificuldade nesta parte.

O joystick é do PS2  2 potenciômetros.

 ponte H é uma 

Módulo Driver Ponte H - 43a - Bts7960

Será que estou fazendo algo errado?

Fiquei curioso com seu projeto e fiz algumas pesquisas.

Não sei se você já viu, mas seguem algumas leituras interessantes com Arduino:

https://drive.google.com/folderview?id=0B44hbd16QxHSX0JOMk5lNXhRaTg...

http://www.puc-rio.br/pibic/relatorio_resumo2011/Relatorios/CTC/MEC...

Obrigado pela ajuda José !

Esses Projetos são com sensores acoplados e bem avançados.

Será que tem algum erro em minha programação que está dificultando o funcionamento?

Sim, tem alguns erros nos IFs:

if (490<ValorPotY<534 && 490<ValorPotX<534 )

Teria que ser assim:

if((ValorPotY>490) &&(ValorPotY<534) && (ValorPotX > 490) && (ValorPotX <534))

Mas precisa ver se esses valores estão corretos. Vou verificar as regras para esse joystick e te falo.

Vou mudar essa configuração e testar e volto com o feedback.

Johnny, se preferir, pode usar também uma library que irá simplificar os seus IFs.

Veja neste link que tem também umas dicas quanto à montagem do circuito para o joystick:

http://www.instructables.com/id/Control-anything-with-ps2-controlle...

Seu motor tem 210 W de potência . 

http://www.casaferreira.com.br/p/i-90033-0/motor+bosch+gpc+9+130+45...

Vai usar dois motores ? uma para cada roda ? 

Nessa discussão, vimos que as cadeiras tem motores de até 450W . 

Mas como a sua cadeira é para criança, acho que pode dar certo. (se usar dois motores.) 

http://labdegaragem.com/forum/topics/gente-me-ensina-sobre-esse-mot...

Caro José, muito obrigado!
Funcionou perfeitamente em todos os pontos.
Agora vou partir para a finalização que é o input do sistema de segurança.
Abs

Johnny, fico feliz em ajudar. Quando puder, diga pra gente como ficou o projeto final...

Não sei se as cadeiras tem um botão de emergência para desligar a energia, mas seria interessante ter um. 

Imagine se uma dessas pontes entrar em curto e o motor disparar...

Mas cortando a energia, como frear a cadeira ? 

O sistema de redução de rotação pode travar as rodas ? 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço