Neste artigo vamos desenvolver um comando de válvulas variável eletronicamente, a partir do sinal de rotação do motor. Qualquer tipo de variação, mesmo que somente em alguma faixa de rotação, proporciona uma melhoria significativa na eficiência do motor.
Para o desenvolvimento desse comando eletrônico de válvulas será utilizado um solenoide em cada válvula de admissão e escape, recebendo o sinal de um microcontrolador para o seu acionamento. Para o acionamento do solenóide de acordo com a rotação do motor, foi acoplada uma roda dentada, semelhante às usadas na maioria dos automóveis, na árvore de manivelas do motor. Para a movimentação da roda dentada, foi acoplado um motor elétrico no eixo do motor acionado por um inversor de frequência. Nesta roda dentada foi posicionado um sensor óptico, que gera um sinal quadrado com o período igual ao período dos dentes. Com esse sinal o microcontrolador efetua o correto acionamento das válvulas de admissão e escape.
A estrutura do projeto foi montada sobre um motor OHV (Over Head Valves). O motor do tipo OHV tem em sua característica principal a localização do comando de válvulas no bloco do motor onde o acionamento das válvulas é feito por meio de varetas. Na Figura 1 está representada a estrutura de um comando de válvulas OHV.
Para a implementação mecânica, foi realizado um corte no cilindro do motor para que possa ser observado o funcionamento das válvulas de forma didática. Esse corte é visualizado na Figura 2.
Um dos benefícios desse comando de válvulas é a gama de peças retiradas do motor, para a adaptação do sistema eletrônico, com isso diminui o peso e o custo do motor.
Na Figura 3 podem ser observadas as peças que foram retiradas do motor, para a adaptação do solenoide.
Os solenoides foram fixados nas válvulas por meio de um tubo de plástico com duas braçadeiras. Foram fixados em um suporte de alumínio na melhor posição para o acionamento das válvulas. Na Figura 4 podem ser observados os dois solenoides fixados no motor.
A roda dentada foi fixada no eixo da árvore de manivelas de uma maneira que o posicionamento da placa de circuito impresso ficasse de fácil acesso e que o motor elétrico pudesse movimentá-la através de uma correia.
Na Figura 5 pode ser observada a roda dentada fixada no motor, com o sensor óptico já posicionado e o motor elétrico para movimentar a roda dentada.
Na Figura 6 pode ser observado o resultado final da adaptação do comando de válvula variável deste projeto, bem como o motor elétrico e o inversor de frequência utilizados.
Conforme mencionado anteriormente, foi utilizado um sensor óptico para gerar o sinal eletrônico referente à roda fônica. A forma de onda observada no sinal do sensor óptico é visualizada na Figura 7, onde o período menor é proporcional ao dente da roda fônica e o período maior é proporcional à falha da roda fônica.
O sinal proveniente do sensor óptico não está condicionado corretamente para a aquisição do microcontrolador. Este precisa de um sinal “quadrado” de 0 a 5 V para o processamento do sinal, para isso foi utilizado o CI (Circuito Integrado) 555 representado por U1 na Figura 8.
O microcontrolador fornece uma corrente de 25 mA, e uma tensão de +5 V. Para o acionamento do solenoide precisa-se de uma corrente maior do que a fornecida pelo microcontrolador. Para isso é utilizado um transistor MOSFET (Metal-Oxide-Semiconductor-Field-Effect-Transistor) IRLZ44N.
O esquema elétrico completo do projeto, utilizando o microcontrolador PIC18F452 para a aquisição do sinal do sensor e acionamento dos solenoides por meio de um sinal PWM, é apresentado na Figura 8.
A detecção da falha da roda dentada é necessária neste projeto para o sincronismo em relação à árvore de manivelas do motor com as válvulas de admissão e escape controladas pelos solenoides. Ou seja, a válvula de admissão terá que ser aberta no PMS (Ponto Morto Superior) do tempo de admissão e a válvula de escape terá que ser aberta no PMI (Ponto Morto Inferior) do tempo de exaustão. Portanto, no momento em que se reconhece a falha no software, será diretamente relacionado com o ciclo de operação atual do motor, podendo acionar as válvulas no momento exato a partir deste reconhecimento.
O acionamento do solenoide é realizado por uma rampa de corrente, ou seja, a corrente diminui aos poucos até chegar a 0. Esse acionamento é feito com a modulação de pulsos PWM, ou seja, no começo do acionamento, o duty cycle do PWM é 100% e o mesmo diminui aos poucos até que no momento do desligamento o duty cycle é 0%.
Isso é realizado pois se o solenoide for acionado com 100% de corrente em todo período de tempo, e no momento do desligamento a corrente for 0%, o solenoide não desmagnetizará por completo, fazendo com que os próximos acionamentos sejam menos eficientes e com que o solenoide aqueça rapidamente. Portanto, a estratégia definida foi a utilização da rampa de corrente.
Com o esquema elétrico pronto, desenvolveu-se o circuito impresso do condicionador do sensor óptico, na Figura 9 encontra-se a placa finalizada.
A partir do esquema elétrico foi desenvolvido o circuito impresso do circuito regulador de tensão, do microcontrolador e do drive de potência. Na Figura 10 encontra-se a placa finalizada.

O código fonte do projeto pode ser acessado em meu github e é exibido abaixo:
/*
Copyright Cynthia Thamires
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
*/
#include "18F452.h"
#include <stdio.h>
#include <stdlib.h>
#use delay(clock = 20000000)
#fuses HS, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NODEBUG
#define falha pin_c5
#define pwm1 pin_c2
#define pwm2 pin_c1
unsigned long int dente = 0;
int flag = 0;
int sincronismo = 0;
long int t;
long int tref;
long int soma = 15;
long int conta = 0;
long int dentefalha = 0;
// Matriz para a realização da rampa de corrente.
unsigned int byCurrentTable [16] =
{0x3f,0x3f,0x3f,0x3f,0x3f,0x1f,0x1f,0x1f,0x1f,0x0f,0x0f,0x07,0x07,0x07,0x07,0x07};
#int_timer1
void trata_timer1 (void)
{
conta ++;
set_timer1 (60535 + get_timer1());
}
#int_ext
void trataRB0 (void)
{
dente ++; //Incrementa a variável dente a cada interrupção externa
// O algoritmo abaixo realiza a identificação da falha, comparando o período dos dentes
// e no momento em que existe um período maior do que o anterior, é detectada a falha.
dentefalha ++;
if (sincronismo == 5 && dente == 50)
{
flag = 0;
sincronismo = 0;
}
switch (flag)
{
case 3:
output_low(falha);
if (dente >= 70)
{
output_high (falha);
dente = 0;
dentefalha = 0;
sincronismo ++;
}
break;
case 2:
t = conta;
if (t <= tref)
{
tref = (t * soma)/10;
conta = 0;
flag = 2;
}
if (t > tref)
{
output_high(falha);
flag = 3;
dente = 0;
dentefalha = 0;
}
break;
case 1:
t = conta;
tref = (t * soma)/10;
conta = 0;
flag = 2;
break;
case 0:
conta = 0;
flag = 1;
output_low(falha);
break;
}
//o algoritmo abaixo executa o acionamento do solenoide emulando uma
//rampa decorrente decrescente de 3 degraus de modo a reduzir o aquecimento
//exemplo: I(t)^
// 75% | --\
// 50% | --\
// 25% | --\____
// ---------------------> t(s)
if((dente <= 25)&&(dente > 9)) //escape
{
set_pwm2_duty(byCurrentTable[dente-10]);
}
if (dente > 25)
{
set_pwm2_duty (0x00);
}
if((dente <= 42)&&(dente > 26)) //admissão
{
set_pwm1_duty(byCurrentTable[dente-27]);
}
if (dente > 42)
{
set_pwm1_duty (0x00);
}
}
void main()
{
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);
set_pwm1_duty(0x00);
set_pwm2_duty(0x00);
setup_timer_2(T2_DIV_BY_1,50,1);//modulo PWM operando 100KHz com 6bits
disable_interrupts(GLOBAL);
delay_ms(1);
set_tris_a(0xFF);
set_tris_b(0xFF);
set_tris_c(0x00);
set_tris_d(0x00);
enable_interrupts(GLOBAL);
delay_us(200);
enable_interrupts(INT_TIMER1);
enable_interrupts(INT_EXT);
ext_int_edge(H_TO_L);
while (true);
}
Como citado anteriormente, foi definida a utilização de uma rampa de corrente para o acionamento do solenoide. A rampa de corrente é constituída de pulsos PWM modulados, ou seja, por um determinado tempo, o duty cycle é 100%, e aos poucos ele diminui, onde em cada dente aciona-se o PWM com duty cycle diferente. Na Figura 11 podem ser observados os pulsos PWM.
Percebe-se que, por um maior período de tempo, o pulso é 100% e logo em seguida são aplicados vários pulsos com duty cycle menores, até chegar a 0. A tensão máxima é necessária somente para vencer a inércia do solenoide, e o acionamento pode ser mantido com uma tensão mais baixa, até o desligamento do solenoide, evitando assim o aquecimento e uma diminuição na eficiência do solenoide nos próximos acionamentos.
Atualmente o comando de válvulas variável está sendo amplamente utilizado. Cada montadora possui sua estratégia, na qual pode-se chegar a diferentes resultados. Muitos são os benefícios de um comando de válvulas variável e na indústria automotiva, na qual uma pequena mudança para a melhoria do motor é muito significativa, esses benefícios são de extrema importância.
Poucos comandos de válvulas variáveis existentes no mercado possuem um controle de abertura e fechamento das válvulas em todas as faixas de rotações, e esse é um fator importante quando se deseja uma melhoria no motor em todos os regimes de rotação.
Os resultados obtidos nesse projeto foram positivos em relação ao esperado, o comando de válvulas variável proposto atendeu a demanda do motor nos testes realizados, com a possível variação de abertura e fechamento das válvulas em todos os regimes de rotação.
Referências
SILVA, C. T; HUENUMAN, R. O., Controle eletrônico de válvulas em um motor ciclo otto. 2012. 68p. Monografia – Faculdade de Tecnologia de Santo André. Santo André, 2012.















Mecânica nunca foi o meu forte, mas a parte computacional, eletricidade e eletrônica são uma verdadeira paixão. Eu não tenho nenhuma formação especifica na área, mas é um hobby prazeroso para mim.
Sensacional Cynthia, eu tive uma ideia muito parecida com a sua, mais que iria usar um Arduino uno e em vez de Pic e em vez de sensor ótico, iria usar um sensor de efeito hall para determinar o posicionamento do pistão, pensei em fazer testes não só com o posicionamento das válvulas de admissão durante a compressão, mais também com o número de tempos do motor. Exemplo: em vez de ( admissão, compressão, explosão e exaustão ) seria ( admissão compressão, explosão, exaustão, admissão e exaustão ) ficando o motor em determinada velocidade com 6 tempos em vez de… Leia mais »
Parabéns pelo Artigo Cynnthia.. aqui é o Virtu. =D
Obrigada Virtu. Que bom que gostou. =)
Boa noite! Meu nome é Marcelo, sou estudante de Engenharia Mecânica e estou preparando meu TCC para o próximo semestre. Gostaria de entrar em contato contigo.
Obrigado.
Wattsapp (51) 8525-4007
Facebook Marcelo Bartzen.
Boa noite Marcelo. Pode entrar em contato comigo por email cynthiathamires@hotmail.com
Terei prazer em te ajudar com o que for possível.