Ir ao conteúdo
  • Cadastre-se

Circuito Limitador de RPM (arduino)


Posts recomendados

Oi pessoal finalmente vou continuar o assunto do meu outro tópico:

 

 

A ideia principal é criar um circuito que vai limitar a RPM de um motor através de um relê controlado por um arduino, o tópico anterior foi abandonado porque simplesmente o carro não estava comigo, estava no eletricista depois foi pro tapeçeiro aí demorou demaiis pra ficar pronto, peguei ele de volta semana passada então vamos continuar! 😁

 

Quem estava ajudando bastante no tópico anterior era o @.if e o @Thiago Miotto conto com vocês novamente rsrs

 

Então haviamos parado no frequêncimetro de arduino com display lcd, e iriamos utilizar  o pino 7 do meu módulo de ignição que é saída para conta giros dessa forma através da frequência que sai do pino 7 o arduino iria saber a frequência e a rotação do motor, por via das duvidas vou deixar o esquema do meu sistema de ignição aqui também.

 

E eu fiz como planejado anteriormente o pino 7 passa por um resistor de 10k e vai pro pino 3 do arduino para medir a frequência, deu meio certo, usando o conta giros do carro pra conferir  a rotação medi  e anotei as frequências, mas em qualquer frequência o arduino não mostra um valor exato, mesmo a frequência sendo baixa a frequência no LCD fica variando 10Hz para mais ou para menos:

 

1000 RPM 90Hz   

2000 RPM 100HZ

3000 RPM 120HZ

 

Então acho que a precisão do arduino para este fim pode não ser muito boa, porque 10Hz a mais ou a menos pode dar uma grande diferença...

 

Pensei em voltar ao plano inicial e usar o sinal do sensor hall do distribuidor para o arduino saber qual RPM o motor está, dessa forma creio que seja mais preciso do que usar o sinal do pino 7 né?

 

Um projeto similar ao meu é este aqui:

 

https://create.arduino.cc/projecthub/adrianos_botis/automotive-engine-rev-limiter-9c05cc

 

Mas no caso desse cara ele instalou um sensor indutivo na polia do motor porque o sistema dele era platinado ainda.

 

Lembrando que no meu caso é um motor de 4 cilindros = a cada meia volta do eixo do motor tem um pulso do sensor hall, logo para uma volta completa é igual a 2 pulsos. e o pulso do meu sensor hall tem 8V, E para abaixar a tensão para 5v que é o que o arduino aceita vou usar um resistor de 10K.

 

 

aqui o código do projeto do cara:

Citação

// Rev-Limiter Code for Arduino Project Hub
//
//Written by Adrianos Botis: [email protected]
//
//Use at your own and change the parameters: rpm_val to set the rpm limit of your engine.
//You can also change the delay of milliseconds at the end of the code to set how fast your engine will be switched on-off.
//


int sensor_pin = 3;
// set number of hall trips for RPM reading (higher improves accuracy)
float sensor_thresh = 5.0;
int ignition = 2;

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // make the sensor pin an input:
  pinMode(sensor_pin, INPUT);
  pinMode(ignition, OUTPUT);
}

// this loop routine runs over and over again forever:
void loop() {
  // preallocate values for tach
  float hall_count = 1.0;
  float start = micros();
  bool on_state = false;
  // counting number of times the hall sensor is tripped
  // but without double counting during the same trip
  while(true){
    if (digitalRead(sensor_pin) == 1){
      if (on_state==false){
        on_state = true;
        hall_count+=1.0;
      }
    } else{
      on_state = false;
    }
    
    if (hall_count>=sensor_thresh){
      break;
    }
  }
  
  // print information about Time and RPM
  float end_time = micros();
  float time_passed = ((end_time-start)/1000000.0);
  Serial.print("Time Passed: ");
  Serial.print(time_passed);
  Serial.println("s");
  float rpm_val = (sensor_thresh/(2*time_passed))*60.0;
   if(rpm_val > 8000.0){
     digitalWrite(ignition, HIGH);
     } 
     else { 
     digitalWrite(ignition, LOW);
  } 
  
  Serial.print(rpm_val);
  delay(1);        // delay in between reads for stability
}

 

Como devo alterar o código dele?

 

modulo142gauss-350x275.jpg

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
2 horas atrás, ComandateGustavo disse:

1000 RPM 90Hz   

2000 RPM 100HZ

3000 RPM 120HZ

Dados aparentemente incompatíveis. Sugiro fazer medições com osciloscópio.

Um medidor de rpm e frequencímetro tem muuuito em comum. Sugiro pesquisar algo deles com arduino na net. A teoria (que acho que já mencionei) é simples: um contator e um timer: de tempos em tempos (timer) pega o valor do contador, armazena numa variável e zera o contador

Link para o comentário
Compartilhar em outros sites

1 hora atrás, .if disse:

Dados aparentemente incompatíveis. Sugiro fazer medições com osciloscópio.

 

Infelizmente o osciloscópio era aquele de PC mas a pontinha do conector P2 deu problema agora estou sem nenhum osciloscópio mesmo...

 

E creio que os dados estão estranhos porque o frequêncímetro é meio "impreciso" mantendo a RPM do motor constante, em 1000 rpm ele mostrava 90Hz depois 80HZ depois 100Hz... Parece que a precisão desta programação e do arduíno tem uma margem de erro meio grande, no meu outro post testando este arduino ele variava 5Hz para mais ou para menos agora aumentou a margem de erro...

 

Mas peraí @.if a precisão de um frequencimetro desse tipo seja pelo pulso do módulo de ignição ou pelo pulso de um sensor hall é o mesmo não é? Porque pensando bem o pulso deste sensor hall é 8V e a saída do pino 7 do módulo também é 8V então pode ser que dentro do módulo o pino 7 é apenas um jumper ligando o pino 7 ao pino 6 afinal é o pino do lado dele mesmo né?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
7 horas atrás, ComandateGustavo disse:

a precisão de um frequencimetro desse tipo seja pelo pulso do módulo de ignição ou pelo pulso de um sensor hall é o mesmo não é? Porque pensando bem o pulso deste sensor hall é 8V e a saída do pino 7 do módulo também é 8V então pode ser que dentro do módulo o pino 7 é apenas um jumper ligando o pino 7 ao pino 6 afinal é o pino do lado dele mesmo né?

Pra confirmar a precisão, o osc era preciso. Sem referências mais precisas você não vai evoluir muito neste projeto. O que ajudaria é (de novo) você entender direitin como opera o frequencímetro e fazer um p.ex. medindo a rede ac 60Hz como ref que é super precisa. Mas seu relato não está relacionado à imprecisão mas sim a instabilidades tanto do hw com do sw

Link para o comentário
Compartilhar em outros sites

Estava pensando aqui e usando a lógica pra estimar qual a frequência desse treco já que não tenho osc pensei assim:

 

Cada meia volta do eixo é um pulso no hall, então uma volta completa no eixo tem dois pulsos.

 

Logo 1000RPM = 2000 pulsos.

 

Mas isso é pulsos por minuto, nesse caso dividi 2000 por 60 para saber o número de pulsos por segundo e deu 33,3333 ou seja a frequência diretamente no  hall é aproximadamente 33Hz correto?

 

Então esses valores que medi mostram que o pino do módulo de ignição não é apenas um jumper ele tem um sistema que muda a frequência, vou medir a frequência diretamente no hall com esse mesmo frequencimetro que usei e ver o que ele mostra no LCD mas o raciocínio que eu estimei a frequência do hall está correto a lógica é essa  né? 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
2 horas atrás, ComandateGustavo disse:

dividi 2000 por 60 para saber o número de pulsos por segundo e deu 33,3333

rpmxhz.jpg

https://brasilescola.uol.com.br/o-que-e/fisica/o-que-e-frequencia-e-periodo.htm

😁

 

33Hz é mixaria. Seu osciloscópio com placa de som deve medir bem com precisão acima do aceitável pra este propósito. O pulo do gato é a interface isolada que pode ser um opto ou um trafo qualquer.

Link para o comentário
Compartilhar em outros sites

25 minutos atrás, .if disse:

33Hz é mixaria. Seu osciloscópio com placa de som deve medir bem com precisão acima do aceitável pra este propósito. O pulo do gato é a interface isolada que pode ser um opto ou um trafo qualquer

Sim 33Hz é uma frequência baixa mas o conector p2 da entrada de som quebrou, vou ter que comprar outro conector e soldar na placa-mãe dá até medo soldar ali mas não tem outro jeito...

 

E o que seria a interface isolada? É usar tipo um opto acoplador no pino de entrada do sinal do Arduino?

Não entendi bem essa interface isolada mas a ideia é isolar a fonte do sinal para evitar interferências?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
2 horas atrás, ComandateGustavo disse:

a ideia é isolar a fonte do sinal para evitar interferências

Não necessariamente pois os ruídos a princípio vão ser beeeem menores que o sinal a ser avaliado. Além do + nem te interessa a amplitude e sim apenas a freq de um sinal seja lá como ele for distorcido (e vai ser mesmo)..

 

O arduino ainda não está na parada. A ideia é não dar contato entre o terra do automóvel com o terra do seu pc/note.

2 horas atrás, ComandateGustavo disse:

um opto acoplador no pino de entrada do sinal

... da sua placa de som.

Link para o comentário
Compartilhar em outros sites

20 horas atrás, ComandateGustavo disse:

Então haviamos parado no frequêncimetro de arduino com display lcd, e iriamos utilizar  o pino 7 do meu módulo de ignição que é saída para conta giros dessa forma através da frequência que sai do pino 7 o arduino iria saber a frequência e a rotação do motor, por via das duvidas vou deixar o esquema do meu sistema de ignição aqui também.

 

E eu fiz como planejado anteriormente o pino 7 passa por um resistor de 10k e vai pro pino 3 do arduino para medir a frequência, deu meio certo, usando o conta giros do carro pra conferir  a rotação medi  e anotei as frequências, mas em qualquer frequência o arduino não mostra um valor exato, mesmo a frequência sendo baixa a frequência no LCD fica variando 10Hz para mais ou para menos:

 

1000 RPM 90Hz   

2000 RPM 100HZ

3000 RPM 120HZ

 

Então acho que a precisão do arduino para este fim pode não ser muito boa, porque 10Hz a mais ou a menos pode dar uma grande diferença...

 

Essa imprecisão se deve à saida de seu módulo de ignição ..... para ter mais precisão você precisa usar os sensores Hall... claro que o código pode ter alguma falha, não entendo nada nessa linguagem.... mas você precisa olhar com um osciloscópio essa sua saida para conta-giros ...

 

Paulo

 

 

Link para o comentário
Compartilhar em outros sites

@.if@aphawk  Então pessoal o ideal mesmo é com osciloscópio, mas lembram que o conector de som do meu PC deu pau?

 

Mas tive uma ideia aqui, analisando o esqueminha do cara que já fez o limitador de rpm usando Arduino ele fez usando sensor indutivo e colocou dois parafusos na polia do motor pra saber a rotação, e no código dele parece que o limite de rpm é 8000rpm

Então vou simplesmente conectar o pino 7 do meu módulo de ignição no Arduino com esse código e mudar o programa de 8000 para 2000 rpm apenas para saber se funciona, nem vou ligar na bobina de ignição vou colocar um led na saída do Arduino e ver se ele acender a 2000 rpm está certo, se acender mais cedo ou mais tarde é só mudar a rpm no programa, tem uma chance de funcionar, vou testar e ver no que dá, vou tentar também tirar o comando de serial e colocar pra mostrar o rpm no display e ver se funciona

 

 

Link para o comentário
Compartilhar em outros sites

@ComandateGustavo ,

 

Eu vou dar um chute : vai continuar com essa variação de frequência .... lembre-se de que um medidor tipo miliamperímetro funciona como se fosse um integrador : ele sempre vai mostrar a média, e se as variações existentes forem pequenas, a agulha nem irá tremer devido a inércia do sistema.

 

Mas um Arduino do jeito que você está usando está medindo a frequência, e não a integral do sinal fornecido !  A frequência pode variar, mas o resultado da integral pode ser sempre constante....

 

Enfim, é para isso que serve o Arduino : experimentar, inventar, e aprender com isso !

 

Boas tentativas !

 

Paulo

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Eu já acho que você está colocando a carroça na frente do cavalo. Você sequer sabe o "naipe" do sinal e já quer ir aplicando ele num programa arduíno que também nem sabe como funciona (pelo menos não demonstrou que sabe nas postagens). Conserte sua entrada de som (conector quebrado? aff) e tente ver a "cara" do sinal primeiro. Deve ser um pulso bobo de freq conhecida... nem precisa de saber a amplitude com precisão. Sem "ver" ele vai ficar 1/2 perdido sobre as precisões...

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@.if @aphawk Então tive uma ideia, vou pegar o desktop da oficina e trazer aqui pra perto do carro vai dar uma trabalheira porque tem que trazer teclado mouse extensão mas pelo menos dá pra saber qual é a frequência do sinal, e pra abaixar de 8v pra 1v mais ou menos que é o que a placa de som aceita vou usar um trimpot de 50k, o terra do conector da placa de som do PC posso conectar no negativo da bateria mesmo né?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
13 horas atrás, ComandateGustavo disse:

o terra do conector da placa de som do PC posso conectar no negativo da bateria mesmo né?

(edit)

Poderia mas é melhor usar um optoacoplador pra separar os terras...

circuito-optoacoplador.jpeg

Tanto pra ler na placa de som como depois no arduíno.

Link para o comentário
Compartilhar em outros sites

@.if Eu ia comprar o opto acoplador mas lembrei que tenho sucata de fonte de PC aqui e elas tem esse tipo de componente, no caso a fonte aqui tem o PC 817

 

Aí pra conectar ele na placa de som é só seguir o esquema E no lugar do led colocar um resistor de 10k pra diminuir a tensão, e o terra da placa de som é só conectar no terra da bateria, certo?

 

circuito_integrado_pc817_opto_acoplador_5_unidades_122_4_20201213232613.jpg

Link para o comentário
Compartilhar em outros sites

@ComandateGustavo ,

 

Se a saída de seu módulo de ignição é para ligar algo tipo um miliamperímetro, é melhor você procurar saber qual a corrente que ela fornece, para ajustar o valor do resistor na entrada do opto.

 

A ideia de você "ver" o sinal no seu desktop é para você fazer várias amostras e comparar tanto a frequência como o duty cicle ( relação entre o período que o sinal está em nível alto e o que está em nível baixo ). Se o duty cicle não for estável, pode esquecer a ideia de medir apenas a frequência do sinal, e começar a medir os tempos dos níveis altos e baixos. 

 

Agora, se você vai usar as saídas dos seus sensores Hall, pode jogar no lixo tudo o que eu escrevi acima ok ?

 

Paulo

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
2 horas atrás, ComandateGustavo disse:

E no lugar do led colocar um resistor de 10k pra diminuir a tensão

Melhor um R chute de 1K e 10...47K no lugar do 470R. É pra diminuir a amplitude na entrada da pci som e fazer ela pensar que é um microfone ou line in.

 

2 horas atrás, ComandateGustavo disse:

e o terra da placa de som é só conectar no terra da bateria, certo?

Errado. O opto foi concebido (junto com a ideia) exatamente pra NÃO fazer isso. O terra da pci som seria no caso acima o K do led. O do carro  separado deste seria o pino 2 do opto.

... acho que não expliquei direito no outro post sorry... editing

 

 

Paulão conectou a ideia de que seu sistema libera pulso com largura variável proporcional a rotação e não freq variável. Neste caso só mesmo com instrumentos de verdade pra saber ou talvez seu osc e/ou a leitura do manual do produto. Se for pwm é possível sim medir a largura quase a lesma lerda do que a freq sqn.

 

Link para o comentário
Compartilhar em outros sites

12 horas atrás, .if disse:

Melhor um R chute de 1K e 10...47K no lugar do 470R. É pra diminuir a amplitude na entrada da pci som e fazer ela pensar que é um microfone ou line in.

 

eu estava meio perdido então fiz um esqueminha pra seguir sem errar, está certo?

 

12 horas atrás, .if disse:

Paulão conectou a ideia de que seu sistema libera pulso com largura variável proporcional a rotação e não freq variável. Neste caso só mesmo com instrumentos de verdade pra saber ou talvez seu osc e/ou a leitura do manual do produto. Se for pwm é possível sim medir a largura quase a lesma lerda do que a freq sqn.

Pode ser, mas isso é só no pino 7 do módulo de ignição, o plano B é se no caso de não der certo usar o pino 7 do módulo vou tentar usar o sinal diretamente no hall do distribuidor, na verdade acho que usando diretamente o hall vou ter um sinal mais limpo creio eu...

esquema.jpg

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, .if disse:

Bateu na trave. Pegue o "positivo placa de som" do 4 e em cima coloque no +5. Algo como pullup

+5 seria 5v da fonte de alimentação do PC mesmo? E o potenciômetro em série é pra ajustar a amplitude do sinal pra deixar ele baixinho para a placa de som?

Link para o comentário
Compartilhar em outros sites

8 horas atrás, .if disse:

Sim e sim, o pot pode ser algo como um divisor resistivo ajustável (inventei isso agora)

art0511_07.jpg

https://www.newtoncbraga.com.br/index.php/como-funciona/projetos-educacionais/3692-art511.html

Certo, estava testando o foto acoplador na protoboard como ele é reaproveitado de fonte de PC é bom testar.

 

Usei uma bateria de 9v e um resistor de 10k na entrada do opto simulando o que vai acontecer no carro e na saída do opto  coloquei um led alto brilho e duas pilhas em série e funcionou, descobri que pra funcionar a saída do opto tem uma queda de tensão se nao me engano de 0,3v e isso fez o led acender mais fraco, isso acontece igual um diodo, quando a corrente passa por ele acontece uma queda de tensão de 0,7v mais ou menos, é pelo mesmo motivo né?

 

No caso do potenciômetro pra ligar a fonte vou usar um de 100k que tenho aqui, e vou ajustar para ter uma tensão baixa na entrada da placa de som. Mas qual tensão devo abaixar? Tem que ficar com uns 0,9v? 

 

Link para o comentário
Compartilhar em outros sites

@ComandateGustavo ,

 

Mude o resistor na entrada do opto para algo entre 1K e 2k2. 10k é alto demais....

 

Na saída do opto vai ter  tensão alta ( não sei qual a tensão da placa de som, talvez 5V )  ou algo entre 0,2 a 0,4 Volts quando você aplicar a tensão de 9V no resistor da entrada do Opto.

 

Paulo

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!