collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: [Projecto] Mike RC Car  (Lida 22523 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline MacgyverPT

  • Mini Robot
  • *
  • Mensagens: 29
[Projecto] Mike RC Car
« em: 12 de Dezembro de 2015, 19:01 »

Boas.

Venho apresentar o meu projecto pessoal, construção de um RC Car. Este projecto começou por carolice (este ano na faculdade nas aulas de física estamos a usar Arduinos) e, como não sei nada desta área, porque não fazer algo interessante e assim aprender um pouco mais? Dessa ideia nasce este RC Car. Projecto simples mas que dá para perceber o funcionamento da física, electrónica e derivados inerentes ao mesmo.

Para este projecto irei usar o seguinte material:
  • 1x Arduino Uno
  • 4x Motor DC + Rodas
  • 2x Ponte H L298N
  • Vários LEDs
  • 1x Sensor Temperatura LM35
  • 1x Buzzer
  • 1x Sensor ultrasons HC-SR04
  • 1x Sensor LDR
  • 1x Módulo Bluetooth HC-06

Com o material acima pretendo implementar as seguintes funções:
  • Medir a temperatura em "tempo real"
  • Buzinar
  • Acender as luzes caso a luminosidade ambiente for inferior a X
  • Medir a distancia a objectos. Se a distancia for inferior a X cm, impede o movimento para a frente.
  • Controlar o carro via dispositivo móvel.


Como podem ver, o que pretendo implementar para alguns pode ser trivial, mas para mim será um desafio.

Qualquer comentário é bem vindo, sugestão ou dicas, melhor ainda.


Cump.
MacgyverPT

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: [Projecto] Mike RC Car
« Responder #1 em: 12 de Dezembro de 2015, 21:16 »
Gosto muito de ver pessoal a tentar fazer algo mais a partir de algo que aprendem nas aula, por própria iniciativa, não só falar mas ver que já tens um plano inicial com material.

Pensas mesmo fazer o controlo através do telemóvel? Senão podes talvez considerar RF mais simples. Digo isto porque não sei se já há uma app para fazer isso (e bluetooth consegue ser chato, tb sou tudo menos especialista na matéria)

Parar logo quando detecta que está muito perto de um objecto? O desafio depois é abrandar ou diminuir a velocidade máxima conforme a distância porque paragens bruscas é perigoso :p

Para alguns é trivial, mas diria quem não sabe nada da área e só começou agora em Arduino, é um desafio muito interessante!
Depois pensa em meter aqui para outro pessoal no futuro ver e talvez tentar fazer ou se inspirarem (eu gosto desta plataforma, fica mais organizado do que num forum, IMO) https://www.hackster.io/
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.189
Re: [Projecto] Mike RC Car
« Responder #2 em: 12 de Dezembro de 2015, 23:13 »
Está porreiro, parabéns ;)

Não se vêm as pontes, suponho estarem por baixo juntamente com a bateria.
Por falar em bateria, de que forma está o arduino a ser alimentado?!
Breadboard é sempre aquela coisa que não gosta de trepidações, sempre podes ir para veroboards para simplificar ou alterar alguma coisa.
Para quem está a começar gosto da aparência, boa continuação.

Offline MacgyverPT

  • Mini Robot
  • *
  • Mensagens: 29
Re: [Projecto] Mike RC Car
« Responder #3 em: 13 de Dezembro de 2015, 10:34 »
Obrigado.

Sim vou "tentar" desenvolver uma app para dispositivo móvel, mas para já fico-me por uma app de PC (mais tarde "converto" para android) feito ou em python ou Java (mas devo ir para esta última porque estou mais familiarizado, no entanto não descarto a hipotese de aprender python só para fazer a app).

A ideia era"cortar" a corrente e ele ir desacelerando até parar. Será que dá para fazer isso?

Offline MacgyverPT

  • Mini Robot
  • *
  • Mensagens: 29
Re: [Projecto] Mike RC Car
« Responder #4 em: 13 de Dezembro de 2015, 10:39 »
Dropes, as pontes estão por baixo e cabem lá ao milímetro (devo ter no máximo 5mm entre o topo da ponte e a plataforma de cima). E sim, também não gosto de ver ali a breadboard, mas tem mesmo que ficar, no entanto acho que vou ter problemas com o uno. Digam-me uma coisa, quantas ligações faz a ponte H com o arduino? Falando ainda em boards, vou ver essas que falaste, as veroboard.

Nesta foto não se vê a alimentação do carro porque não a tinha ainda colocado, mas vai ser uma pilha 9v localizado na traseira do carro (na plataforma de baixo, mesmo por baixo do arduino.

Offline MacgyverPT

  • Mini Robot
  • *
  • Mensagens: 29
Re: [Projecto] Mike RC Car
« Responder #5 em: 13 de Dezembro de 2015, 15:56 »
Dropes, as "veroboards" são a mesma coisa que PCB? Se sim, já tinha andado a ver e o aspecto ficava mais "clean", mais "arrumadinho", no entanto isso requer, se calhar, outros conhecimentos que de momento não tenho.

Neste momento tenho um "problema" com as pontes H. Pode ser azelhice minha mas tenho as seguintes ligações:

Ponte H > Arduino
  • 5v > 5v
  • GND > GND
  • In 1 > Pino 2
  • In 2 > Pino 3
  • In 3 > Pino 4
  • In 4 > Pino 5

Ponte H > Motores
  • OUT 1 > Motor 1 +
  • OUT 2 > Motor 1 GND
  • OUT 3 > Motor 2 +
  • OUT 4 > Motor 2 GND

Tendo por fim, o seguinte código:
Código: [Seleccione]
int IN1 = 2;
int IN2 = 3;
int IN3 = 4;
int IN4 = 5;

void setup()
{
  //Define os pinos como saida
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void loop()
{
  //Gira o Motor A no sentido horario
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  delay(2000);
  //Para o motor A
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, HIGH);
  delay(500);
  //Gira o Motor B no sentido horario
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  delay(2000);
  //Para o motor B
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, HIGH);
  delay(500);

  //Gira o Motor A no sentido anti-horario
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  delay(2000);
  //Para o motor A
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, HIGH);
  delay(500);
  //Gira o Motor B no sentido anti-horario
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  delay(2000);
  //Para o motor B
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, HIGH);
  delay(500);
}

No entanto os motores não se mexem... Nem à fava me mandam... O que estou a fazer de mal para que eles não se mexam? Vi algures na net para usar as ponts com 5v era necessário retirar um jumper, já o fiz e... nada! Ahh e o jumper do ENA e ENB está metido

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.189
Re: [Projecto] Mike RC Car
« Responder #6 em: 13 de Dezembro de 2015, 18:02 »
Sim, as veroboards são as placas pré-furadas.

Pelo código não vejo nenhum erro (se bem que C não é bem comigo).
Podes testar as saídas do arduino para ver se os estados lógicos estão correctos,
e verificar as pontes colocando 5V em cada entrada segundo a ficha dele.

A tensão mínima para os alimentar são 7V, na RSense pode levar uma resistência ou ser ligado directamente à massa para ter a corrente máxima, não sei qual a placa que tens mas sempre podes confirmar as suas especificações.

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: [Projecto] Mike RC Car
« Responder #7 em: 13 de Dezembro de 2015, 18:08 »
Obrigado.

Sim vou "tentar" desenvolver uma app para dispositivo móvel, mas para já fico-me por uma app de PC (mais tarde "converto" para android) feito ou em python ou Java (mas devo ir para esta última porque estou mais familiarizado, no entanto não descarto a hipotese de aprender python só para fazer a app).

A ideia era"cortar" a corrente e ele ir desacelerando até parar. Será que dá para fazer isso?

Tu mal cortas a corrente ele vai abrandando neh? Da para fazer o que tás a dizer para parar. Mas provavelmente vais ver que a paragem vai ser quase instantânea (talvez seja bom o suficiente para ti. Não é como num carro engatado que ainda vai bem embalado e demora uns segundo (num plano).

Mas eu estava a falar de para proteger o carro, limitar a velocidade máxima que o usuário pode fazer o carrito andar, que depende da distância à parede. Mas deixa lá isso :p
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.189
Re: [Projecto] Mike RC Car
« Responder #8 em: 13 de Dezembro de 2015, 18:16 »
Tu mal cortas a corrente ele vai abrandando neh?
LOL   Se não se mexe, abrandar mais fica difícil :P

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: [Projecto] Mike RC Car
« Responder #9 em: 13 de Dezembro de 2015, 20:39 »
é assim, pode ser que chegue a 0 kelvin (ahahah... I will let myself out)
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline MacgyverPT

  • Mini Robot
  • *
  • Mensagens: 29
Re: [Projecto] Mike RC Car
« Responder #10 em: 13 de Dezembro de 2015, 22:07 »
Boas.

As rodas já mexem, mas a potencia é tanta que o carro não se mexe do sítio! eheheh Se tiver o carro suspenso, as ditas rodam tranquilo, quando vai para uma superficie (mesa, chão, etc) elas bem que tentam se mexer, mas não passam do mesmo... Ou seja, fica parado. Bem ao menos já as meti a funcionar, o que já não é mau.

Offline Nunito

  • Mini Robot
  • *
  • Mensagens: 923
Re: [Projecto] Mike RC Car
« Responder #11 em: 13 de Dezembro de 2015, 22:16 »
Com que estás a alimentar os L298?

Offline samc

  • Mini Robot
  • *
  • Mensagens: 442
Re: [Projecto] Mike RC Car
« Responder #12 em: 13 de Dezembro de 2015, 22:51 »
É um bom projeto de aprendizagem e os meus parabéns pela vontade de aprender.
Sendo assim deixo algumas sugestões:
Se fores ver outros projetos vais perceber que muitos usam PWM para controlar a velocidade do motor, ou seja, quando ligas os motores não os colocas logo a "todo o gás" mas tens as possibilidade de acelerar progressivamente.

Outra sugestão simples no código, tem a ver com a definição dos pinos. Tipicamente os pinos são definidos uma vez no início e nunca mais são alterados. O que se costuma utilizar é um

Código: [Seleccione]
#define IN1 3

O pre processador do compilador substituiu depois todas ocorrências do IN1 pelo valor definido.
Outra opção igualmente correta é utilizar

Código: [Seleccione]
const int IN1=3;
Neste caso defines a variável como uma constante. A vantagem deste método sobre o define tem a ver com o DEBUG do código.

Ao fazeres essa pequena alteração poupas 2 bytes de memória em cada definição de um pino (tamanho da variável int na memória do ATMEGA328P). Quem se quer inicializar na programação dos microcontroladores deve começar com a base de que a memória RAM é muito preciosa neste tipo de ambientes (ao contrário de uma aplicação para Windows ou Android) e começares a ter boas práticas na utilização das variáveis pode fazer a diferença e poupar-te umas dores de cabeça no futuro.
« Última modificação: 13 de Dezembro de 2015, 23:17 por samc »

Offline samc

  • Mini Robot
  • *
  • Mensagens: 442
Re: [Projecto] Mike RC Car
« Responder #13 em: 13 de Dezembro de 2015, 23:28 »
Outra dica importante com respeito à definição de variáveis:
Imagina que precisavas de definir uma variável para o PIN que irias utilizar. Exemplo: número entre 1 e 4. Como este número se encontra entre 0 e 255, o mais correto seria utilizares uma variável do tipo byte ou uint8_t.
São variáveis de 8 bits/1 byte ao seja, ocupam metade da memória de uma variável do tipo int (2 bytes neste caso).

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: [Projecto] Mike RC Car
« Responder #14 em: 13 de Dezembro de 2015, 23:56 »
Se não me engano o int no arduino uno não é de 8bits?

Outra pergunta, e o long? Lembro-me de ter alguns problemas com isso em algumas adaptações de codigo
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/