Problema com 4N25 - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T06:00:07Zhttps://labdegaragem.com/forum/topics/problema-com-4n25?commentId=6223006%3AComment%3A670928&xg_source=activity&feed=yes&xn_auth=noboa noite Geraldo.
Como…tag:labdegaragem.com,2018-05-18:6223006:Comment:6714222018-05-18T01:12:26.311ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">boa noite Geraldo.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Como prometido, estou anexando os arquivos referentes aos ajustes no seu código original. Você notará, que o funcionamento é exatamente o mesmo, porém corrigi pequenos problemas que causavam falhas.</span></p>
<p><span style="font-size: 12pt;"> Anexados, está também o arquivo de projeto do <strong>Proteus</strong>, juntamente com o arquivo "<strong>HEX</strong>" (necessário para a…</span></p>
<p><span style="font-size: 12pt;">boa noite Geraldo.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Como prometido, estou anexando os arquivos referentes aos ajustes no seu código original. Você notará, que o funcionamento é exatamente o mesmo, porém corrigi pequenos problemas que causavam falhas.</span></p>
<p><span style="font-size: 12pt;"> Anexados, está também o arquivo de projeto do <strong>Proteus</strong>, juntamente com o arquivo "<strong>HEX</strong>" (necessário para a simulação) e a biblioteca do Arduino que usei no Proteus. Na pasta da biblioteca, há um arquivo TXT que instrui como usá-la).</span></p>
<p><span style="font-size: 12pt;"> Também há um arquivo impresso em PDF do circuito. Vc notará que para gerar os pulsos, eu usei um Gerador de Sinais do Proteus. O funcionamento do código no Arduino, não depende da origem do sinal, desde que seja uma onda quadrada claramente definida. Mas caso vc deseje que eu acrescente um segundo Arduino para gerar os Pulsos a serem medidos, é só me avisar que providenciarei.</span></p>
<p><span style="font-size: 12pt;"> Testei o simulador com pulsos de baixa frequência (<strong>1</strong> a <strong>10 Hz</strong>), e com pulsos de até <strong>1kHz</strong>. Observe que se vc for medir frequencias <span style="text-decoration: underline;"><em>mais baixas que 1Hz</em></span>, necessitará de um intervalo de amostragem maior que 1 segundo, já que o período de um sinal assim, tem duração maior que 1 segundo (do contrário, não há como o programa detectar os edges da onda quadrada em apenas 1 segundo, já que a distância entre eles é maior que este período de tempo). Neste caso, se vc usar por exemplo um período de amostragem de 2 segundos, não se esqueça que para obter-se a taxa de pusos/segundo, precisará dividir o <strong>Contador de Pulsos</strong> por 2. Em suma: para um período de amostragem igual a "X" segundos, basta dividir o Contador de Pulsos por "X" para se obter a taxa por segundo. Mas se vc não for medir taxas menores que um Pulso por segundo, então nada precisa ser feito. Note que para o total de pulsos acumulados, nada muda, já que basta ir acumulando as novas medições do Contador de Pulsos, e o programa já está fazendo isso.</span></p>
<p><span style="font-size: 12pt;"> Observe que "desliguei" a <em><strong>desabilitação</strong></em> e <em><strong>habilitação</strong></em> das Interrupções. Isto porque, devido à baixa taxa de pulsos e simplicidade do programa, o efeito disso na contagem de pulsos é desprezível, sendo portanto imperceptível.</span></p>
<p><span style="font-size: 12pt;"> Também simplifiquei o "<em><strong>debouncing</strong></em>" do botão "<strong>RESET</strong>", pois pela forma como seu programa funciona, não é necessário nenhum tratamento especial para evitar falhas devido ao "bouncing" mecânico do botão. Apenas um simples e adequado "delay" consegue tratar isso, sem prejudicar a temporização do programa (que usa o "<strong>Millis</strong>" como referência). Você poderá atestar isso quando for verificar o funcionamento.</span></p>
<p><span style="font-size: 12pt;"> Sobre o circuito, note que não usei o <strong>Pullup interno</strong> no pino de entrada dos Pulsos, pois a colocação de um resistor externo dá maior flexibilidade na escolha do valor do mesmo, de forma a garantir uma melhor qualidade nos pulsos digitais que vem do <strong>Opto-acoplador</strong> (veja o meu primeiro post). Apesar de eu ter colocado um resistor de 330 ohms para o LED emissor, o que permite valores mais baixos do resistor de coletor do Opto, preferi usar um valor de 33 kohms no coletor, pois isso garante pulsos de boa definição caso alguém deseje aumentar o resistor do LED do Opto, para por exemplo algo em torno de 1 kohm (e consequentemente reduzir a corrente de acionamento do LED).</span></p>
<p><span style="font-size: 12pt;"> Para o botão "<strong>RESET</strong>", mantive o pullup interno do <strong>Atmega328</strong> que vc já tinha usado. Isto porque para a função do botão não é necessário que o resistor tenha um valor muito definido, e o pullup interno do Atmega dá conta disso.</span></p>
<p><span style="font-size: 12pt;"> <span style="text-decoration: underline;"><em>Um comentário final</em></span>: apesar do seu código original inicializar a "<strong>SERIAL</strong>" padrão do <strong>Arduino</strong>, não havia nenhum uso dela dentro do programa. Mesmo assim eu mantive a mesma. Caso vc venha a usá-la, atente para não prejudicar a temporização do programa, ou seja, é preciso analisar com um certo cuidado em que ponto vc enviaria mensagens (ou tratará comandos recebidos), para não comprometer a <strong>taxa de amostragem</strong> usada para o <strong>Contador de Pulsos</strong>. Caso vc venha a usar este recurso (a Serial), eu posso te instruir como fazer isso sem prejuízo para o funcionamento do programa.</span></p>
<p><span style="font-size: 12pt;"> Como a formatação do editor do Arduino não é muito "amada", usei um editor externo (o NotePad++) para escrever as alterações no código. Claro que isso causa algumas chatices na "identação" quando abrimos o código no editor do Arduino (mas nem é tanto). Assim para aqueles que pertencem ao clube dos que não amam muito o editor do Arduino (isto me inclui), estou deixando junto anexado a impressão em PDF a partir do NotePad++, onde a sintaxe do C/C++ é bem evidenciada.</span></p>
<p><span style="font-size: 12pt;"> Finalizando, um print do circuito simulado no Proteus, é mostrado a seguir:</span></p>
<p><span style="font-size: 12pt;"><a href="http://storage.ning.com/topology/rest/1.0/file/get/1939725071?profile=original" target="_self"><img width="721" src="http://storage.ning.com/topology/rest/1.0/file/get/1939725071?profile=RESIZE_1024x1024" width="721" class="align-full"/></a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Caso necessite de algum esclarecimento sobre qualquer ponto, estou à disposição.</span></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p>
<p></p> Blz, Elcids. Fico no aguardo.…tag:labdegaragem.com,2018-05-18:6223006:Comment:6713422018-05-18T00:53:37.458ZGeraldo Reishttps://labdegaragem.com/profile/GeraldoMateusReis
<p>Blz, Elcids. Fico no aguardo. Abraço</p>
<p>Blz, Elcids. Fico no aguardo. Abraço</p> José, ontem a noite eu conseg…tag:labdegaragem.com,2018-05-18:6223006:Comment:6712582018-05-18T00:53:13.000ZGeraldo Reishttps://labdegaragem.com/profile/GeraldoMateusReis
<p>José, ontem a noite eu consegui resolver colocando um Filtro Passa-baixa ou Debounce. Não sei exato o porque ocorria esses ruídos, mas consegui resolver.</p>
<p>José, ontem a noite eu consegui resolver colocando um Filtro Passa-baixa ou Debounce. Não sei exato o porque ocorria esses ruídos, mas consegui resolver.</p> ok Geraldo, boa noite.
…tag:labdegaragem.com,2018-05-17:6223006:Comment:6713392018-05-17T22:55:22.830ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">ok Geraldo, boa noite.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Eu analisei seu código e encontrei alguns problemas nele. Assim que eu tiver algum tempo, te explico o que ocorria ali, e porque acontecia este comportamento.</span></p>
<p><span style="font-size: 12pt;"> Mas como vc me autorizou, refiz o código e implementei o Hardware no <strong>Proteus</strong>, e fiz a respectiva simulação com o "novo" código. Funcionou direitinho e é…</span></p>
<p><span style="font-size: 12pt;">ok Geraldo, boa noite.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Eu analisei seu código e encontrei alguns problemas nele. Assim que eu tiver algum tempo, te explico o que ocorria ali, e porque acontecia este comportamento.</span></p>
<p><span style="font-size: 12pt;"> Mas como vc me autorizou, refiz o código e implementei o Hardware no <strong>Proteus</strong>, e fiz a respectiva simulação com o "novo" código. Funcionou direitinho e é sempre estável.</span></p>
<p><span style="font-size: 12pt;"> Usei técnicas "consagradas", as quais garantem este funcionamento correto e estável.</span></p>
<p><span style="font-size: 12pt;"> Daqui a pouco estarei publicando aqui o código, assim como o Hardware respectivo (arquivo do Proteus).</span></p>
<p><span style="font-size: 12pt;"> Vc notará que o código está documentado (com comentários) de forma a elucidar e justificar as ações aplicadas.</span></p>
<p><span style="font-size: 12pt;"> Assim, daqui a alguns minutos terei publicado o resultado aqui.</span></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p>
<p></p> Já resolveu ?
Esse projeto é…tag:labdegaragem.com,2018-05-17:6223006:Comment:6712392018-05-17T11:36:01.111ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Já resolveu ?</p>
<p>Esse projeto é simples e não tem como dar errado. </p>
<p>Já resolveu ?</p>
<p>Esse projeto é simples e não tem como dar errado. </p> Certamente, sempre tem alguns…tag:labdegaragem.com,2018-05-17:6223006:Comment:6713022018-05-17T01:23:09.356ZCICERO ELETRÔNICAhttps://labdegaragem.com/profile/CICEROJOSENETO781
<p>Certamente, sempre tem alguns erros em desenhos na Net</p>
<p>Certamente, sempre tem alguns erros em desenhos na Net</p> Elcids,
Fiz o teste com o ci…tag:labdegaragem.com,2018-05-16:6223006:Comment:6711552018-05-16T22:38:59.834ZGeraldo Reishttps://labdegaragem.com/profile/GeraldoMateusReis
<p><span>Elcids,</span></p>
<p></p>
<p><span>Fiz o teste com o circuito passado. Removi o pull up da porta que estou lendo o sinal.</span></p>
<p></p>
<p>Continuou o problema. Quando eu gero o sinal com um Arduino Mega, o Arduino Uno faz a contagem correta durante uns 10 segundos. Ai ele começa aumentar a quantidade de pulsos até um momento em que volta a contagem correta. Esse processo fica se repetindo. :'(</p>
<p></p>
<p>Sobre o código, pode testar sem problema algum.</p>
<p></p>
<p>Será…</p>
<p><span>Elcids,</span></p>
<p></p>
<p><span>Fiz o teste com o circuito passado. Removi o pull up da porta que estou lendo o sinal.</span></p>
<p></p>
<p>Continuou o problema. Quando eu gero o sinal com um Arduino Mega, o Arduino Uno faz a contagem correta durante uns 10 segundos. Ai ele começa aumentar a quantidade de pulsos até um momento em que volta a contagem correta. Esse processo fica se repetindo. :'(</p>
<p></p>
<p>Sobre o código, pode testar sem problema algum.</p>
<p></p>
<p>Será que pelo fato de eu estar utilizando uma protoboard pode estar afetando esse sinal?</p> José, eu não tenho essa infor…tag:labdegaragem.com,2018-05-16:6223006:Comment:6711542018-05-16T22:31:50.860ZGeraldo Reishttps://labdegaragem.com/profile/GeraldoMateusReis
<p>José, eu não tenho essa informação.</p>
<p>O teste que estou fazendo é fazendo a geração de Pulso com um Arduino Mega (Pulso em 5v) e testando o meu código contador com o Arduino Uno.</p>
<p>José, eu não tenho essa informação.</p>
<p>O teste que estou fazendo é fazendo a geração de Pulso com um Arduino Mega (Pulso em 5v) e testando o meu código contador com o Arduino Uno.</p> Bom dia Geraldo,
O seu probl…tag:labdegaragem.com,2018-05-15:6223006:Comment:6709282018-05-15T13:02:28.942ZJosé Gustavo Abreu Murtahttps://labdegaragem.com/profile/GustavoMurta
<p>Bom dia Geraldo, </p>
<p>O seu problema pode ser no sensor de rotação da roda dágua.</p>
<p>Creio que a rotação deve ser baixa. Muito simples de detectar com o Arduino. </p>
<p>O sensor da roda deve estar gerando ruídos que podem ser interpretados como pulsos.</p>
<p>Qual é o sensor usado na roda dàgua ?</p>
<p>Bom dia Geraldo, </p>
<p>O seu problema pode ser no sensor de rotação da roda dágua.</p>
<p>Creio que a rotação deve ser baixa. Muito simples de detectar com o Arduino. </p>
<p>O sensor da roda deve estar gerando ruídos que podem ser interpretados como pulsos.</p>
<p>Qual é o sensor usado na roda dàgua ?</p> olá Cícero, bom dia.
N…tag:labdegaragem.com,2018-05-15:6223006:Comment:6708512018-05-15T05:04:49.056ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Cícero, bom dia.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Note vc que no link mencionado no seu primeiro post ( <em><a href="https://sites.google.com/site/myscratchbooks/home/projects/project-11-infrared-speed-sensing-module" rel="nofollow noopener" target="_blank">Sensor de Velocidade...</a></em> ), o circuito está realmente com as ligações trocadas (entre coletor e emissor). Lá há diversos circuitos semelhantes, e apenas este está com a…</span></p>
<p><span style="font-size: 12pt;">olá Cícero, bom dia.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Note vc que no link mencionado no seu primeiro post ( <em><a rel="nofollow noopener" href="https://sites.google.com/site/myscratchbooks/home/projects/project-11-infrared-speed-sensing-module" target="_blank">Sensor de Velocidade...</a></em> ), o circuito está realmente com as ligações trocadas (entre coletor e emissor). Lá há diversos circuitos semelhantes, e apenas este está com a ligação trocada. Certamente foi um acidente que ocorreu durante o desenho do circuito (e eventualmente pode até ter sido culpa do famigerado "<em><strong>snap</strong></em>", existente em muitos programas para desenho de circuitos).</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Independente do pequeno erro no circuito, é gigante e honrosa a sua ação de divulgar o link e estimular a pesquisa e conhecimentos sobre a vasta eletrônica.</span></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p>
<p></p>