– Caixa de Velocidades

Boas Pessoal…

Cá estou eu para vos mostrar mais um pequeno projecto elaborado por mim…

Não é nada de muito elaborado mas da um pouco de trabalho e pode ser bastante util em projectos que envolvam carros/Aviões/Helicópteros, etc , e como vos quero poupar algum trabalho decidi aqui colocar uma especie de tutorial.

O projecto consiste numa caixa de 3/4 velocidades (3/4 porque nao sei se consideram o ponto morto como uma velocidade), decidi criar este projecto porque um colega está a trabalhar num projecto que necessita de uma coisa destas e eu propus-me a ajuda-lo, entao juntei o util ao agradavel e desenvolvi esta “coisa” nao so para o ajudar como para me entreter e quem sabe utilizar isto em projectos futuros.

Material Necessário (Hardware):

– BreadBoard

– Arduino

– Potenciometro

– Motor Dc

– Três Mini Switch’s

– Três Resistencias de 220Ω

– E Alguns Fios De Ligação

Material Necessário (Software):

– Arduino 0017

1º Passo:

O Primeiro passo será arranjar um local limpo e arrumado para se puder trabalhar á vontade, e trazer todo o material necessario para junto de nos.

2º Passo:

Neste passo vamos proceder á montagem do circuito.

Podem ver uma imagem do circuito elaborado no programa Fritzing em baixo:

esquema no fritz_bb

Depois de montarmos o nosso circuito como o da figura acima, te-lo-emos desta forma:

Untitled-1

Funcionamento:

Depois de ligarmos o Arduino ele estará em ponto morto, para o motor começar a andar teremos que colocar uma mudança.

Em relação á velocidade de cada mudança está pode ser regulada com o potenciometro dentro da escala programada por mim:

– 1ª Mudança – 26 ate 68

– 2ª Mudança – 26 ate 168

– 3ª Mudança – 26 ate 255

– Ponto Morto – 0

Para colocar o ponto morto teremos que carragar no botao da primeira e suganda mudança em simultaneo, depois de carregarmos o motor pára ficando assim em ponto morto.

3º Passo:

Depois de termos o circuito montado estamos prontos para começar a programação…

O Codigo em baixo foi elaborado por mim espero que esteja percetivel a todos, caso não esteja ou tenham qualquer duvida nao hesitem em perguntar, que eu estarei cá deste lado para responder o mais depressa possivel.


int motor = 11; // Variavel do pino para a velocidade do motor
int S1 = 8; // Variavel do pino de entrada do Switch (S1)
int S2 = 9 ; // Variavel do pino de entrada do Switch (S2)
int S3 = 10;
int vS1 = 0; // Variavel onde é guardado o valor de (S1)
int vS2 = 0; // Variavel onde é guardado o valor de (S2)
int vS3 = 0;
int pin_pot = 5;
int val = 0;
int timer = 100;

void setup() {
Serial.begin(9600);
pinMode(pin_pot, INPUT);
pinMode(motor, OUTPUT);
pinMode(S1, INPUT);
pinMode(S2, INPUT);
pinMode(S3, INPUT);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);

}

void loop() {

estadobotoes();

while (vS1 == LOW && vS2 == HIGH && vS3 == HIGH ) {
vS2 = digitalRead(S2);
vS3 = digitalRead(S3);
val = analogRead(pin_pot);
val = map(val, 0, 1023, 26, 84);
printval();
analogWrite(motor, val);
delay(timer);
}

while (vS2 == LOW && vS1 == HIGH && vS3 == HIGH ) {
vS1 = digitalRead(S1);
vS3 = digitalRead(S3);
val = analogRead(pin_pot);
val = map(val, 0, 1023, 26, 168);
printval();
analogWrite(motor, val);
delay(timer);
}

while (vS3 == LOW && vS2 == HIGH && vS1 == HIGH ) {
vS1 = digitalRead(S1);
vS2 = digitalRead(S2);
val = analogRead(pin_pot);
val = map(val, 0, 1023, 26, 255);
printval();
analogWrite(motor, val);
delay(timer);
}

while (vS1 == LOW && vS2 == LOW && vS3 == HIGH ) {
vS1 = digitalRead(S1);
vS2 = digitalRead(S2);
vS3 = digitalRead(S3);
analogWrite(motor, 0);
delay(timer);
}

}

void printval(){

Serial.print(“Val:”);
Serial.println(val);
delay(timer);

}

void estadobotoes(){

vS1 = digitalRead(S1);
Serial.print(“S1:”);
Serial.println(vS1);
delay(timer);

vS2 = digitalRead(S2);
Serial.print(“S2:”);
Serial.println(vS2);
delay(timer);

vS3 = digitalRead(S3);
Serial.print(“S3:”);
Serial.println(vS3);
delay(timer);

}

Aqui está o programa que utilizo para controlar o motor com as tres velocidades…

Agora vocês perguntam, como é que raio foste arranjar aqueles valores (26,68,168,255), e eu respondo, esses valores fazem parte de uma escala de 0 a 255 que e a escala onde podemos trabalhar com PWM.

4º Passo:

Testar e ver se está tudo a funcionar como pretendido…

Untitled-2

Video – Brevemente Disponivel

Agradecimentos:

– TigPT (Que me explicou como se “brinca” com a escala do potenciometro)

Cumps

AndréD.

Anúncios
Comentários
  1. Jorge diz:

    Muito interessante, bem explicado. Porém, o problema é que se for colocar isso num carrinho RC, por exemplo, nao tem como girar o potenciometro. Entretanto, bom trabalho.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s