Controlo Suspensão Pneumática

Caros, bom dia!

Sou um NEWBIE nestas eletronicas, apesar de ter lidado já - há muitos anos - com PLCs Siemens em projetos na faculdade.

Estive a conhecer melhor o que é o ARDUINO e parece-me o sistema ideal para um projeto que já ando a magicar há algum tempo - o controlo do nivelamento de uma suspensão parcialmente pneumática. A ideia é complementar a suspensão normal de um veículo com os chamados "foles pneumáticos", muito comuns nos camiões.

O sistema seria composto por:

  • 4 foles pneumáticos
  • 3 válvulas 12V (2 para a frente / tras e 1 para descarga)
  • 2 sensores de nível (0-5V)
  • 1 keypad / teclado para indicar ao arduino qual a altura desejada (baixo, médio ou alto)

O código - conceptualmente - não será complicado:

Ao pressionar o "botão1", accionar
"valvula1" até que "sensorfrente" indique X volts
"valvula2" até que "sensortras" indique Y volts

Ao pressionar "botão2", accionar
"valvula3" durante tempo suficiente para os foles se esvaziarem.

A questão aqui é que não tenho os conhecimentos todos quanto à utilização de instruções com "FOR" ou "WHILE"... e para que este sistema funciona a 100%, é importante ter um código bem elaborado. Isto foi o que já escrevi...

Pins:

int Sensorfrtpin (analog)
int Sensortrapin (Analog)
int Valvfrtpin (digital)
int Valvtrapin (digital)
int Valvdescpin (digital)
int botao1pin (digital)
int botao2pin (digital)



Variables:

int sensfrtmax = 1023	
int sensfrtmin = 0
int sensfrtval = 0

int senstramax = 1023
int senstramin = 0
int senstraval = 0

Setup:

sensorfrtval = AnalogRead (Sensorfrtpin)
sensortraval = AnalogRead (Sensortrapin)
PinMode (valvfrt, OUTPUT)
PinMode (valvtra, OUTPUT)
PinMode (valvdesc, OUTPUT)
PinMode (botao1, INPUT)
PinMode (botao2, INPUT)



Logical:

IF botao1 = HIGH && sensorfrt < *predefined upper limit* && sensortra < *predefined upper limit*
THEN
	WHILE (sensorfrtval < *predefined upper limit*) {
	digitalWrite (valvfrt, HIGH)
	DELAY (100)
	}
	
	WHILE (sensortraval < *predefined upper limit*) {
	DigitalWrite (valvtra, HIGH)
	DELAY (100)
	}

Agradeço desde já qualquer input / ajuda!

Abraços,
MR

Bem-vindo ao fórum Miguel.

Que tipo de sensores de nível vai usar? Interessa saber isto para perceber a forma como o programa deverá funcionar.
Para além da programação terá que ter alguns conhecimentos de electrónica (como diz que o contacto mais próximo disto foram os PLC's, imagino que não tenha esses conhecimentos).

Outra chamada de atenção tem a ver com o "código". As placas Arduino são normalmente programadas numa linguagem de programação com características próprias e bem definidas (linguagem C/C++). Podem ser programadas noutro tipo de linguagens, mas para isso, terá que ter outro tipo de ferramentas diferentes das que são distribuídas gratuitamente. O que tornará o desenvolvimento mais difícil. O seu "código" é uma mistura entre C/C++ e BASIC (pelo menos pela utilização da keyword THEN, que em C/C++ não existe). Sendo assim, em primeiro lugar deve ter algum contacto com a linguagem. Tem bastantes recursos on-line e no IDE também tem alguns exemplo que deve tentar perceber.

Boas!

Obrigado pela rapida resposta. Os sensores deverao ser os mesmos ou semelhantes aos usados nos camioes: com a suspensao na altura maxima, devolvem 5v. No limite minimo, 0v.

As valvulas pneumaticas sao 12v, serao necessarios reles (solid state?) que ja vi sao bastante acessiveis na net.

Sim o meu problema principal estará na linguagem, com a qual nao estou à vontade. A instalaçao fisica nao será problema, poderei inclusivamente comprar ja o hardware e fazer testes em casa antes de montar seja o que for...

Conto com a vossa ajuda nas minhas duvidas do codigo