olá galera do LdG.

Instalei um kit de suspensão a ar no meu carro e como tinha uma arduino uno em casa, resolvi pensar em utiliza-lo para controlar a suspensão.

pretendo utilizar um potenciômetro em cada caixa de roda ligado a bandeja da suspensão. Os potenciômetros irão informar a altura do veiculo em tempo real em um display lcd 24X4 (4 fios)

minha ideia é colocar no display números de 1 a 4, sendo 4 alturas pré-programadas

considerando a posição mais baixa como 0% e a mais alta 100%

Exemplo: como será mostrado no display

DE     DD      SUSPENSÃO     1     2

20      21             CIVC            *

21      20          RODRIGO       3     4

TE     TD        SCHNEIDER

DE=bolsa dianteira esquerda (abaixo, o valor lido pelo respectivo potenciômetro, em porcentagem)

DD=bolsa dianteira direita (valor abaixo)

TE=bolsa traseira esquerda (valor mostrado acima)

TD=bolsa traseira direita (valor acima)

no centro do display apenas um texto qualquer

na direita a posição utilizada no momento(o "*" mostra a altura configurada, pretendo usar um símbolo que preencha toda a célula abaixo da configuração selecionada)

uma outra função que pretendo utilizar é quando desligar o carro, vá para a posição 0% (as bolsas secam completamente) e quando ligar o carro vá para a posição 1 (20%)

para alterar da posição 1 pra 2, da 2 pra 3 e da 3 pra 4, pretendo utilizar o mesmo botão (botão de pulso, onde cada pulso avança para a próxima configuração e no display mude a posição do símbolo)

para retornar da posição 4 pra 3, da 3 pra 2 e da 2 pra 1, utilize outro botão, semelhante ao que avança as configurações

as mudanças devem ser feitas baseadas nas leituras dos potenciômetros.

exemplo.

posição 1 se refere a 20% de leitura. quando o botão que avança as posições for acionado, a arduino leia os potenciômetros e trabalhe com as válvulas solenoides que fazem encher as bolsas, até que a leitura no potenciômetro fique dentro da programada na posição 2 (tipo 30%), assim que atingir a posição programada, feche as válvulas.

esse ajuste não pode ficar em loop, pois com o carro em movimento, os potenciômetros vão ficar variando as leituras, fazendo com que as válvulas fiquem abrindo e fechando.

enfim, conheço pouco de linguagem de programação, mas já consegui fazer a leitura dos potenciômetros convertidos pra porcentagem, falta configurar os botoes e programar essas posições. o display posso deixar pra programar depois, ainda nem tenho um.

acredito que se eu conseguir um comando, onde tenha uma fila de leds e dois botoes, onde um botão faça com que um led apague e acenda o próximo, mais um pulso e o processo se repita. o outro botão faça o movimento contrario. nesse caso mudaria apenas a ação para leitura dos potenciômetros e completaria com a função "if" comandando as válvulas pelas saídas digitais.

aceito outras ideias, sem gastar muito, é claro :)

se alguém puder ajudar ficarei muito grato.

contato pessoal. rso-123@hotmail.com

wattsapp: (91) 98229-4194

 

Exibições: 2205

Responder esta

Respostas a este tópico

Rodrigo, esse carro é um carro normal ou só para exposição? 

Pense em segurança - imagine uma troca indevida de configuração da suspensão enquanto faz uma curva à 80 km/h. 

Será que o seu projeto é seguro e aceitável ? 

olá José.

é um carro de passeio.

os botões que farão as trocas de altura não ficaram com fácil acesso, alem disso acredito que poderia colocar alguma proteção.

já existe um sistema parecido no mercado, porem custa uns 2000 reais, algo bem fora do meu alcance.

obrigado pela atenção

acredito que dê pra começar utilizando o exemplo do "debounce", porém em vez de alterar a condição do led, criaria uma variavel "posição", onde iniciaria imprimindo o valor 1 e a cada pulso no botao de avançar somaria 1 nessa variavel, quando apertar o botao de recuar, subtraia 1 dessa variavel.

obs. teria que incluir este segundo botao.

como ficaria esse codigo pra aparecer o valor dessa variavel no serial monitor mesmo?

Boa sorte ! 

E não se esqueça de pregar um santinho no painel do carro ( Guiado por Deus) .

Para seu conhecimento - Resoluções do CONTRAN 

http://www.denatran.gov.br/download/Resolucoes/Resolucao4792014.pdf

IV – É vedada a alteração na suspensão dianteira, exceto para instalação do sistema de tração e para incluir ou excluir eixo auxiliar, direcional ou auto direcional.

§ 3º Os veículos que tiverem sua suspensão modificada, em qualquer condição de uso, deverão inserir no campo das observações do Certificado de Registro de Veiculo – CRV e do Certificado de Registro e Licenciamento de Veiculo – CRLV a altura livre do solo.

http://www.denatran.gov.br/download/resolucoes/resolucao_contran_29...

Art. 8º Ficam proibidas:

IV – A alteração das características originais das molas do veículo, inclusão, exclusão ou modificação de dispositivos da suspensão.

essa suspensão foi legalizada no meu veículo. consta no documento a alteração.

Oi RS,
Entendo a preocupaçã do JGAM, com a segurança, pois foi formado na mesma escola que ele. "IBM".
Mas por outro lado fico indignado com a intromissão das nossas autoridades no desenvolvimento
criativo.
Assisto muito documentário sobre carros e motos DIY, em programas gravados em paises desenvolvidos.
Aí pergunto.
Porque o estado brasileiro tão incompetente se mete nesta area.criando tanta regra só pra multar.
Vejo aqueles caros e motos modificados e sem nenhuma interferencia de orgãos pseudo regulatorios.
Mas enfim.
Talvez algum dia deem liberdade à criatividade por aqui.
Quem está melhor? Onde tem menos acidentes? Nós com tanta preocupação do estado ou eles sem quase nenhuma?
Rui

Rui , você já assistiu o seriado OVERHALLING ? 

Os caras modificam os motores, suspensões, etc. dos carros. 

Mas seguem as orientações dos fabricantes. 

São dispositivos criados com engenharia. 

Seu projeto parece interessante, mas um pouco arriscado. Não é um projeto de fim de semana

Primeiramente pense na sua segurança e na vida das outras  pessoas, caso ocorra uma falha no seu sistema.

Um sistema assim deve ser muito bem pensado, é necessário definir todos os possíveis casos para a sua programação de controle. 

Não é qualquer sensor que você pode usar, existem sensores específicos para automóveis, apresentam grande tolerância a falhas, são pouco sensíveis a variação temperatura, apresentam resistência a corrosão, entre outros fatores não menos importantes.

Depois, o seu circuito deve suportar os ruídos elétricos (EMI) que o próprio carro produz, por exemplo no alternador, também dever suportar as variações de temperatura do sistema de ar condicionado.

Identificar uma falha no circuito/firmware apenas pelo monitor serial não é uma boa idéia.

criei este código com a intensão de imprimir a variavel "a", que no inicio é igual a 0, e a cada pulso no pino 2 acrescenta 1 e imprime o novo valor, quando o pulso for no pino 3 diminui 1 no valor da variavel "a" e imprime o novo valor.

porem nao ta rodando

int a = 0;

void setup()
{
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}
void loop()
{
Serial.println(a);

if(digitalRead(2)== LOW)
{
a++;
Serial.println(a);
}
if(digitalRead(3)== LOW)
{
a--;
Serial.println(a);
}
}

Está faltando

Serial.begin(speed)

 e 

digitalWrite(2, HIGH);
digitalWrite(3, HIGH); são desnecessários 

crie um debounce

if(digitalRead(2)== LOW)

  while(digitalRead(2)== LOW)

  {}

a++;

}

ok. consegui

usei o exemplo debounce.

agora vou inserir as leituras dos potenciômetros e programar as saídas para as válvulas

obrigado

ficou assim

const int botao1 = 2;
const int botao2 = 3;
int a=1;
int buttonState;
int lastButtonState = LOW;
int buttonState2;
int lastButtonState2 = LOW;

long lastDebounceTime = 0;
long debounceDelay = 50;

void setup()
{
pinMode(botao1, INPUT_PULLUP);
pinMode(botao2, INPUT_PULLUP);
Serial.begin(9600);
}

void loop()
{
int reading = digitalRead(botao1);
if (reading != lastButtonState)
{
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay)
{
if (reading != buttonState)
{
buttonState = reading;
if (buttonState == HIGH)
{
a++;
Serial.println(a = constrain(a, 1, 5));
}
}
}
lastButtonState = reading;

int reading2 = digitalRead(botao2);
if (reading2 != lastButtonState2)
{
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay)
{
if (reading2 != buttonState2)
{
buttonState2 = reading2;
if (buttonState2 == HIGH)
{
a--;
Serial.println(a = constrain(a, 1, 5));
}
}
}
lastButtonState2 = reading2;
}

Olha muito bom seu projeto. Eu que tenho um carro rebaixado sei que dificilmente se anda a 80km/h ainda mais em uma curva rsrs mas uma dica para segurança no seu projeto seria habilitar as funções de configurações com o freio de não puxado. Assim não tem como as bolsas esvaziar ou se encher com o carro em movimento. Me diga uma coisa... como vc vai fazer para converter a altura do carro em um sinal através do potenciometro, afinal o movimento do carro é linear e um potenciometro comum é rotativo?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço