-
Posts
834 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que GustavoH93 postou
-
Vai conseguir sim! E eu fui ver o preço de um 3step e é bem caro, então resolvi pesquisar e não achei nenhum circuito que tivesse um resultado legal assim estou aqui, dá bastante trabalho mas vale a pena, assim aprendemos bastante e abre oportunidades para desenvolver bem mais coisas, além de ficar mais barato kkkkk vou testar amanhã o limitador. Hoje a noite tive um tempinho e quis alterar o código para ver se conseguia alterar a frequência de 120 para um valor que pode ser alterado na hora com um potenciometro, compilei montei e testei, meio que funciona meio que não... Dessa forma meio que funciona, mas a leitura de frequência ficou toda zuada, está variando uns 300Hz curiosamente se eu tirar as linhas: aí a medição de frequência funciona normalmente sem problema nenhum e o potênciometro também, será que o código está errado @Thiago Miotto ? Ou será que esse problema está sendo causado pelo que o @.if e o @aphawk disseram anteriormente, pode ser limitação ou alguma coisa causada pelo uso de bibliotecas do arduino?
-
E aí @Ricardo Bariquelo Beleza? 3step com Arduino era exatamente o que eu queria fazer desde o início, mas como não achei nenhum projeto resolvi botar a mão na massa e fazer, lógico que com muita ajuda do pessoal aqui Clube do Hardware, Já está programado aqui, vou testar até o fim de semana, estou bem corrido com serviço aqui, se quiser algo meio preciso pode usar um esqueminha com NE555, mas aconcelhou você aguardar eu postar os resultados. E sua moto é com carburador ou injeção?
-
@mlegnari tentando alterar o código que me passou está dando erro na hora de compilar: stray '\342' in program O erro acontece nessa linha: lcd.print(“RPM=”); o que será isso?
-
@Thiago Miotto ahn agora simm, mesmo com o fio solto no ar o led permanece apagado, isso não elimina o esqueminha com resistor, mas deixa o cicuito melhor, este esquema que fizemos falta testar na prática mas já deve funcionar bem, para aprender mais a programação vou tentar colocar um potênciometro para selecionar a frequência que faz o led piscar, atualmente está configurado para 120Hz mas quero ver se consigo alterar isso pelo potenciometro vamos ver como fica. vou tentar adaptar também o código que o @mlegnari citou para aprender mais e também porque parece que terá um resultado melhor, na verdade cada vez mais estou tendo mais ideias para aplicar o arduino nos projetos aqui. Amanhã vou ter que ir a loja de eletronica comprar terminais porque estou dando uma geral na parte elétrica do carro, tinha fio desencapado fios que não vão pra lugar nenhum então estou melhorando isso, já vou aproveitar e comprar alguns componentes. @.if Ainda não sei a velocidade que precisa acionar isso vou ver na prática, mas tenho um 2N3055 dando sopa aqui será que vale usar ele no lugar do rele? tu sabe que eu entendi só até o sinal de II né? kkkkkk
-
Testei as duas e as duas funcionaram, mas dessa vez se o fio do pino 4 não estiver conectado ao GND o led continua piscando, se ele estiver em 5v ou se estiver "solto" o led pisca da mesma forma, é o mesmo erro que acontecia antes mas invertido, mas funciona funciona, só que realmente terei que usar resistor de pull-up ou pull-down por causa das flutuações. Boa observação @.if mas imagino que a largura do pulso fica menor quanto mais elevada for a RPM porque o distribuidor vai girar mais rápido, mas posso estar enganado... taí mais coisas pra eu pesquisar e aprender rsrs esse código trabalha com led IR e fototransistor, teria que alterar o código pra pegar o sinal do hall né? a função da interrupção seria para o arduino contar os pulsos parar para saber o que fazer com ela e depois executar a ação, mas se não trabalhar com interrupção como isso pode afetar o funcionamento? Seria no caso ao invés de limitar a rotação o arduino iria dar erro e congelar?
-
dei uma vacilada mandei o código antigo, aqui está o atual que não está funcionando: dessa forma o led fica sempre piscando não importa se está em nivel alto ou baixo @Thiago Miotto é estranho porque se deixar assim não funciona: da forma antiga funciona quando está em nível alto:
-
@aphawk eu tinha imaginado isso a bobina ligando ou desligando gera muita interferencia e transientes né? Meus optos são PC 817 e para ligar rele neles achei estes esquemas: Pelo que entendi o esquema um é para usar a mesma fonte que está no opto e no segundo usa uma fonte separada do opto, no meu caso como vou usar 12v para ligar o rele usarei o segundo esquema, e nos dois casos o transistor 2N3904 está ai para acionar a bobina do rele no lugar do fototransistor do opto como proteção, é isso mesmo?
-
Mas a variação na lenta não vai importar muito a ideia é limitar o RPM máximo a uns 4 ou 5000 RPM nessa faixa de rotação a variação diminui bastante né? Vou montar o filtro que você comentou @mlegnari mas também vou testar o circuito da forma que está pra ver o resultado, mas estou olhando bastante e não consegui descobrir porque não está lendo o pino 4 em LOW, vou aguardar o @Thiago Miotto responder pra gente ver se ele consegue encontrar o erro porque não estou conseguindo, o código é esse: @.if tenho mais optos das sucatas de fonte, pensei em colocar um para o arduino receber a frequência do hall do distribuidor e outro para o arduino acionar o opto ao invés de ligar o rele diretamente, porque o rele vai ser ligado e desligado rapidamente e como o rele é uma carga indutiva desligar e ligar a bobina dessa forma rápida pode prejudicar a porta do arduino, ou estou enganado?
-
Ahn sim agora entendi, fiz aqui e deu certo, se ligar o pino 4 em 5v o led pisca e se mudar para GND ele apaga. ficou assim: isso é pra evitar interferências né? estava pesquisando a respeito de resistor para pull-up e pull-down e vi que a finalidade deles é essa, notei também que se o jumper do pino 4 estiver solto sem nada conectado ele ainda sim faz o led piscar, agora se ele estiver ligado ao gnd esse efeito para, isso com certeza deve ser alguma interferência que faz o arduino "pensar" que o pino 4 está em nível alto quando na verdade não está. Então tentei programar para o led piscar apenas se a frequencia for maior que 120 ou se o pino 4 estiver em LOW assim: só que assim não sei porque o led fica piscando sem parar, mesmo com o pino 4 ligado ao GND ou 5V dá no mesmo fica piscando sempre, porque será?
-
a ideia é ao pressionar o botão acender e apagar o led da mesma forma como se estivesse a 120Hz, como não posso usar a função delay tentei readaptar o seu código e funciona mas o brilho está estranho, só fica mais brilhante mesmo quando a frquencia passa de 120Hz aí ele fica acendendo e apagando com brilho normal. o catodo do led está no gnd do arduino e o anodo está em série com um resistor de 1k2 ligado ao pino 7. ainda não coloquei o botão só usei um jumper para simular, o jumper está no pino 4 que é onde vou colocar o botão, ligando este jumper do pino 4 ao GND nada acontece o led só começa a piscar quando a frequencia passa de 120Hz como programado, agora se eu ligar o jumper em 5v o led começa a piscar da mesma forma mas com menos intensidade no brilho não sei porque...
-
@Thiago Miotto então ao invés de usar a função delay voce usa funão MOD se o resultado for igual a 1 ele liga o led e se não for igual a 1 ele desliga o led é isso? estava lendo aqui o código e tentando apreender. Para aprender também quis colocar um botão para piscar o mesmo led na mesma velocidade caso ele seja pressionado e ficou assim: e funcionou bem mas tem um detalhe, acima de 120 pisca o led com brilho normal, mas se eu pressiono o botão para alimentar o pino 4 com 5v o led pisca na mesma frequência, mas pisca com um brilho menor uns 60% do brilho normal, o que será que é isso?
-
@Thiago Miotto não sabia que quando usa a função delay não pode usar função de contagem de tempo... Então o arduino executa uma função ou outra não tem como ter as mesmas funções no mesmo código, ou tem?
-
até aqui eu entendi depois disso fiquei perdido rsrs vou estudar para compreender melhor. Decidi usar aquele código velho para teste e parecia promissor, ao invés de contar por 1 segundo mandei contar meio segundo e multiplicar por 2 sabia que o erro iria aumentar, mas não sabia quanto, e o erro aumentou para 3-4Hz até que está aceitável porque pelo menos assim o sistema funciona mais rapídamente, então coloquei um led com resistor de 1k2 no pino 7 e programei para quando tiver uma frequencia maior do que 120Hz ligar o led e desligar abaixo dessa frequencia, funcionou normalmente. Então mudei o código para piscar o led enquanto estiver acima de 120Hz e desligar abaixo disso, e para minha surpresa quando atinge 120Hz o led começa a piscar, mas ele pisca eternamente e o arduino congela do nada... a minha duvida agora é: isso acontece porque o contador de tempo do arduino está focado em contar os pulsos do pino 2 e não consegue contar o tempo pro led piscar ou errei alguma coisa na hora de programar e está faltando alguma coisa? Segue o código:
-
@.if Seria algo assim? https://www.google.com/amp/s/luizbitencourt.wordpress.com/2015/05/04/lendo-frequencias-e-duty-cycle-com-arduino/amp/
-
@aphawk Muito interessante Paulo é um otimo tutorial sim, vou conferir, ainda preciso apreender muita coisa sobre essas funções estava pensando @mlegnari a ideia do seu circuito é eliminar qualquer tensão negativa que possa interferir na medição, mas um opto acoplador já não faz isso também? Porque teoricamente com tensão negativa o led dentro do opto não acende então isso não deve interferir, ou estou enganado? Mais uma vez @.if tinha razão, apenas por curiosidade peguei o código antigo alterei de 200 milisec para 1000 e tirei a multiplicação, dessa forma o arduino conta 1 segundo e mostra a freq no visor, programei no outro arduino para executar a função tone para servir de sinal base, a frequência dele começa em 40Hz que é a frequência minima que a função tone consegue gerar e depois foram as mesmas frequencias que espero encontrar no hall do motor em determinada RPM, montei essa nova tabela: RPM freq base (Hz) freq medida (Hz) 1212 40 40 2000 66 66-67 3000 99 99-100 4000 132 131-132 5000 165 164-165 6000 198 197 Bem curioso só de aumentar o tempo e tirar a conta de multiplicação por 5 a margem de erro diminuiu bastante, infelizmente o ponto negativo é que vai levar 1 segundo ao invés de 200 milisec para o arduino perceber que a RPM mudou, não sei bem se vai dar certo, mas por curiosidade vou ver se consigo programar para quando chegar em 66Hz por acender um led, pode ser que 1 sec seja um tempo muito grande pra função de limitar a RPM mas creio que pode funcionar, só testando mesmo pra saber.
-
@aphawk ainda estou aprendendo sobre a função interrupt , agora flag e stack de memória nunca ouvi falar, ainda estou tentando fazer o código que @.if passou aqui em cima e tá dando erro atrás de erro, o negócio é estudar bem tudo isso e pelo jeito vai levar bastante tempo mas uma hora eu chego lá. @mlegnari Meu arduino é daquele CI de soquete, imaginei progamar acertar tudo e tendo certeza do funcionamento tirar o ATMEGA e fazer uma plaquinha pra usar ele standalone, e os filtros que você diz é para evitar interferências no funcionamento principalmente por causa da bobina de ignição, certo? preciso aprender a fazer isso rsrs Perfeito! no caso do seu esquema onde vou ligar o pino do arduino para receber o sinal é ali no circulo com onda quadrada escrito 30ms, e ali onde está a alimentação de 5v é o negativo e o positivo do hall?
-
aguento esperar sim rsrs dessa eu não sabia, então só tirar essa multiplicação por 5 e deixar o time de 1000milisec já aumenta a precisão? 1 sec a mais ou a menos não vai atrapalhar, bem interessante vou alterar o código pra esperar 1sec e já mostrar a freq no display pra ver como fica. achei que usando interrupt algumas coisas ficariam desabilitadas, pelo jeito me enganei. vou tentar também fazer usando como base seu código e ver como fica, parece bem mais promissor, e vou prosseguir depois como planejado, usar LCD para conferir e ver se funciona certinho sem erros, se estiver tudo ok aí vou colocar em um arduino Nano para ficar compacto sem display para funcionar bem.
-
Ahn agora entendi, basicamente a biblioteca são arquivos prontos para facilitar a programação, mas se a pessoa nao conhecer bem a biblioteca que está usando ela pode usar uma biblioteca que além da função desejada executa em segundo plano algumas outras funções que podem não ser uteis para aquilo que a pessoa está programando, essas funções podem atrapalhar na execução do código que a pessoa criou, e isso pode dar erro nas contas certo? @aphawk @.if acabei não comentando na outra mensagem, mas veja se está correto o raciocínio, existe o contador de pulsos e o temporizador, no caso do meu código é 200 milisec então o contador verifica quantos pulsos ocorreram dentro de 200 milisec, após isso ele zera novamente o contador para recomessar a contagem, e paralelamente a isso existe outra parte do código que vai multiplicar por 5 o numero de pulsos contados para aparecer no LCD qual a frequência por segundo, e pelo que li quanto mais minimalista, mais "puro" o frequêncímetro for, melhor vai ser a precisão, certo?
-
está sobrando sim vou usar só mais dois pinos para o projeto na verdade... na verdade esse código funcionou depois de dar vários erros, as vezes faltava ponto e virgula, na outra era parenteses e como dava erro algumas vezes aparecia também o problema na telinha do programa do arduino, em alguns casos tinha que perguntar pro tio google, mas é uma boa ideia, vou continuar com este programa e usar o LCD, depois de programar tudo e ter certeza que funciona bem aí vou comprar um arduino Nano deixar só a parte do programa em si sem o LCD pra ficar mais compacto e preciso, e este arduino UNO com LCD vou usar para outros projetos (tem bastante coisa que quero fazer usando arduino)
-
sim baixei de outro lugar mas estava funcionando bem, agora que é para mostrar a RPM em cima e frequencia em baixo que estava dando este problema, mas fiz uma "gambiarra" aqui e aparentemente deu certo, alterei o código para receber o sinal no pino 3 também, então ficou assim pino 2 recebe o sinal e é multiplicado por 5 para mostrar a frequência e o pino 3 recebe o sinal e é multiplicado por 30 para mostrar RPM só que está bem impreciso o RPM... o código agora é este: Eu tinha imaginado isso a um tempo atrás @Thiago Miotto quanto mais coisas estão programadas no arduino maior a possibilidade de erro ou de imprecisão certo? Como não planejo ter o LCD no carro porque já tem conta giros no painel estou pensando em trabalhar apenas com a frequência, por exemplo 99Hz é igual a 3000 RPM então não preciso converter a freq em RPM basta apenas programar para quando atingir uma determinada frequência limitar a rotação do motor, isso vai diminuir o código e pode melhorar a precisão, certo?
-
eu entendo bem pouco também, quem eu sei que entende é o @.if e o @Thiago Miotto porque eles me ajudaram no tópico anterior, quem sabe eles podem me ajudar nessa parte outra vez, estou alterando o código várias vezes e nada do RPM aparecer no LCD, só aparece escrito RPM mas o numero mesmo não... O código até agora é esse: @aphawk vou continuar pesquisando outros códigos mais simples e precisos para medir a freq do hall, este que estou agora parece que vai funcionar, só que a variação dele é de mais ou menos 5Hz e convertendo em RPM isso dá mais ou menos 150 RPM para mais ou para menos...
-
@aphawk me enrolei aqui, estava instalando as bibliotecas no arduino e olhando como é a programação, estava meio confuso porque tem vários arquivos, mas acabei chegando em um dilema, pelo que eu li o autor do código vende a plaquinha que faz esse código funcionar, olha ela aqui: quer dizer que para funcionar eu teria que comprar ela? Estou em duvida agora, mas vou pesquisar outros códigos de frequêncimetros para arduino também por via das duvidas... Fuçando um pouco apenas para teste alterei o código que usei no começo para motrar RPM em cima da fre no LCD, mesmo sendo um código impreciso é só para treinar mesmo, a ideia é multiplicar a freq por 30 para estimar a RPM atual, mas não sei porque ele não está mostrando o numero, está mostrando apenas RPM escrito... o código é esse aqui: o que está errado para ele não mostrar a RPM no display?
-
baixei aqui e tem vários arquivos estou meio perdido, vou tentar entender aqui qual usar, e também se preciso de outras coisas além do arduino para medir a Frequência, se não precisar vou montar e fazer testes aqui, logo mais postarei os resultados
-
@aphawk Realmente pesquisando achei este frequencimetro de Arduino, o site informa que mede com precisão até 6.5 MHz O_O https://hackaday.io/project/176074-diy-65mhz-arduino-frequency-meter-7segment-displ Vou analisar e se der vou trocar o o programa do meu frequencimetro por este outro desse site. Não estou querendo 100% de precisão se o motor variar 100rpm a mais ou a menos ok não tem problema, o duro é variar 300 ou 400 rpm aí fica um negócio muito estranho, uma hora limita o rpm em 4800 depois limita em 5200 tem coisa errada...
-
Tem toda razão @aphawk , medindo hoje diretamente no pino hall consegui montar uma tabelinha bem coerente, lógico que não é 100% precisa mas a variação é baixa então creio que podemos continuar com ela: marcha lenta 800 RPM 25-30Hz 1000RPM 30-35Hz 2000RPM 75-80Hz 3000RPM 100-105Hz Na página anterior respondendo ao @.if eu chutei que para 1000 RPM seria uma freq de 33Hz e está dentro, então acho que está certo, o dobro seria 66Hz essa deveria ser a freq em 2000RPM e o triplo seria 99Hz aproximadamente, então creio que esteja tudo em ordem, nesse caso o próximo passo é mudar o programa para ao invés de aparecer escrito frequência no LCD aparecer já em rpm, pela minha lógica é só multiplicar a freq por 30 e mandar aparecer essa informação no display é isso? aí fica RPM em cima freq em baixo aqui em anexo o motor em marcha lenta e no LCD 25Hz
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