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?
Tags:
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
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
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...
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 ?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por