Controle de bomba de água - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T11:26:06Zhttps://labdegaragem.com/forum/topics/controle-de-bomba-de-gua?commentId=6223006%3AComment%3A717768&xg_source=activity&feed=yes&xn_auth=noolá Luciano.
Legal que…tag:labdegaragem.com,2019-09-18:6223006:Comment:7183522019-09-18T02:42:15.342ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Luciano.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Legal que vc gostou da implementação. </span></p>
<p><span style="font-size: 12pt;"> Sobre o <em><strong>snuber</strong></em>, eu acredito que vc não precisará, mas fique atento. Geralmente quando se aciona <em><strong>solenóides</strong></em>, é o pior caso (e normalmente o problema de transientes é sempre pior no momento que o solenóide é desligado). Mas acionando/desacionando o…</span></p>
<p><span style="font-size: 12pt;">olá Luciano.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Legal que vc gostou da implementação. </span></p>
<p><span style="font-size: 12pt;"> Sobre o <em><strong>snuber</strong></em>, eu acredito que vc não precisará, mas fique atento. Geralmente quando se aciona <em><strong>solenóides</strong></em>, é o pior caso (e normalmente o problema de transientes é sempre pior no momento que o solenóide é desligado). Mas acionando/desacionando o motor da bomba acredito que não haverá problemas, já que vc disse que sua bomba tem apenas <em><strong>1/2 CV</strong></em>.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Aproveito para atualizar um ponto. Recentemente em outro post, usei a mesma <em><strong>lógica do Botão</strong></em> que eu tinha usado no seu código, e embora tenha funcionado, percebi um efeito colateral muito pequeno (quase imperceptível, e está relacionado com o <em><strong>anti-bouncing</strong></em> que implementei). Então alterei o código relacionado à <em><strong>rotina</strong></em> do <em><strong>Botão</strong></em>, para que não ocorresse o efeito colateral, funcionando melhor em todas as situações.</span></p>
<p><span style="font-size: 12pt;"> O código alterado é apenas da <em><strong>rotina</strong></em> "<em><strong>verifica_Botao</strong></em>". Na figura a seguir vc pode ver a rotina já alterada:</span></p>
<p style="text-align: center;"><span style="font-size: 10pt;"><strong><em>(clique na figura para "zoom")</em></strong></span></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/3561825609?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/3561825609?profile=RESIZE_710x" class="align-center" width="921" height="695"/></a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Como eu disse, alterei penas a <em><strong>rotina</strong></em> "<strong><em>verifica_Botao</em></strong>", e mais nada. Mesmo assim aconselho vc a usar o código com a rotina alterada, pois assim terá um código melhor para todas as situações.</span></p>
<p><span style="font-size: 12pt;"> Aqui está a implementação com a "<em>correção</em>": <em><strong><a href="https://storage.ning.com/topology/rest/1.0/file/get/3561829185?profile=original" target="_blank" rel="noopener">bomba_dagua_01a.zip</a></strong></em></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Caso tenha alguma dúvida, não deixe de perguntar.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> Boa noite Elcids. Me descu…tag:labdegaragem.com,2019-09-17:6223006:Comment:7185192019-09-17T00:19:04.725ZLuciano Ferreira da Silvahttps://labdegaragem.com/profile/LucianoFerreiradaSilva
<p> Boa noite Elcids. Me desculpa aí a demora pelo feedback, é que tive de fazer uma viagem à trabalho e fiquei essa última semana sem mexer nesse projeto. O código ficou muito profissional, fiz uma simulação aqui no protoboard e funcionou direitinho. Vou estudar aqui o que você fez, porém está um pouco além do meu conhecimento, mas as partes básicas onde vou precisar alterar ficaram bem fáceis de mexer. Gostaria de agradecer de imediato sua dedicação pois ficou muito completo, e as figuras…</p>
<p> Boa noite Elcids. Me desculpa aí a demora pelo feedback, é que tive de fazer uma viagem à trabalho e fiquei essa última semana sem mexer nesse projeto. O código ficou muito profissional, fiz uma simulação aqui no protoboard e funcionou direitinho. Vou estudar aqui o que você fez, porém está um pouco além do meu conhecimento, mas as partes básicas onde vou precisar alterar ficaram bem fáceis de mexer. Gostaria de agradecer de imediato sua dedicação pois ficou muito completo, e as figuras ajudam muito no entendimento. Quando eu colocar para funcionar em campo te dou o retorno aqui. Só fiquei um pouco na dúvida sobre os <em><strong>snubers </strong></em>que você disse, mas vou pesquisar sobre o assunto. E também tenho que ver se vou ter esses transientes, pois a bomba que estou usando é de 1/2 cv. </p>
<p> Desde já agradeço.</p> olá novamente Luciano.
…tag:labdegaragem.com,2019-09-10:6223006:Comment:7181202019-09-10T22:19:47.980ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá novamente Luciano.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Estou publicando a implementação do seu Sistema, conforme as descrições de funcionamento, e conforme os pontos que elucidamos.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Na implementação, incluí o tal "<em><strong>sensor amarelo</strong></em>", que seria uma bóia (ou semelhante) que indica quando a "<em><strong>caixa baixa</strong></em>" está vazia. Como todos os…</span></p>
<p><span style="font-size: 12pt;">olá novamente Luciano.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Estou publicando a implementação do seu Sistema, conforme as descrições de funcionamento, e conforme os pontos que elucidamos.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Na implementação, incluí o tal "<em><strong>sensor amarelo</strong></em>", que seria uma bóia (ou semelhante) que indica quando a "<em><strong>caixa baixa</strong></em>" está vazia. Como todos os sensores descritos no seu código original indicavam estado "<em><strong>LOW</strong></em>" quando acionados, então assumi esta mesma característica para o "amarelo". Com isto, nenhuma ação é necessária caso vc não monte o respectivo Sensor, uma vez que os "<em><strong>pullups</strong></em>" do <em><strong>Arduino UNO</strong></em> irão prover o <em><strong>estado</strong></em> "<em><strong>HIGH</strong></em>" (indicando assim que não há acionamento se o sensor não estiver montado no circuito).</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Para a <em><strong>Máquina de Estados</strong></em>, somente dois estados foram necessários. Você pode ver o <em><strong>Diagrama de Estados</strong></em> na figura a seguir:</span></p>
<p style="text-align: center;"><span style="font-size: 10pt;"><strong><em>(clique na figura para "zoom")</em></strong></span></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/3550283358?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/3550283358?profile=RESIZE_710x" class="align-center" width="1104" height="1438"/></a></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Como vc pode ver na figura anterior, o funcionamento é bastante simples, e praticamente dispensa explicação. Mas caso tenha alguma dúvida, não deixe de perguntar.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Para a <em><strong>simulação</strong> </em>no <em><strong>Proteus</strong></em>, incluí um <em><strong>Relé</strong></em> para acionar a <em><strong>Bomba d'água</strong></em> (a qual estou representando através de um <em><strong>Motor</strong></em>), pois imagino que seja desta forma que vc está acionando a mesma.</span></p>
<p><span style="font-size: 12pt;"> Se vc estiver usando Relé, atente para transientes durante o chaveamento da Bomba, especialmente quando a mesma é desligada, pois podem interferir no <em><strong>UNO</strong></em> (podem até travar o mesmo). Caso tenha problemas com transientes, procure usar <em><strong>snubers</strong></em> e ligar os '<em><strong>GNDs</strong></em>" adequadamente (evitando <em>loops de terra</em>). Claro, a ocorrência desse tipo de problema vai depender da potência da Bomba que vc está usando, mas como está usando para bombear água (geralmente com inércia baixa), então acredito que no seu caso não ocorreriam transientes a ponto de provocar problemas.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> A simulação funcionou perfeitamente conforme previsto. O Sistema usado nesta simulação é mostrado na figura a seguir:</span></p>
<p style="text-align: center;"><span style="font-size: 10pt;"><strong><em>(clique na figura para "zoom")</em></strong></span></p>
<p><span style="font-size: 12pt;"><span><a href="https://storage.ning.com/topology/rest/1.0/file/get/3550284449?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/3550284449?profile=RESIZE_710x" class="align-full" width="1087" height="1138"/></a></span></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Observe que quando acionar as chaves que "emulam" os sensores na simulação, isto deve ser feito seguindo a lógica de funcionamento real, uma vez que é desta forma que foi pensado na implementação. Mas claro, vc pode eventualmente acionar algo simulando uma falha qualquer.</span></p>
<p><span style="font-size: 12pt;"> Deixei na simulação o "<em><strong>Terminal do Arduino</strong></em>", embora no código ele não esteja sendo usado.</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> O <em><strong>código</strong></em> e os <em><strong>arquivos para simulação</strong></em>, juntamente com o <em><strong>Diagrama de Estados</strong></em> (em PDF e Visio) estão aqui neste link:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <em><strong><a href="https://storage.ning.com/topology/rest/1.0/file/get/3550285787?profile=original" target="_blank" rel="noopener">bomba_dagua_01.zip</a></strong></em></span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> No código, eu deixei o "<em><strong>Tempo de Acionamento</strong></em>" em <em><strong>20 segundos</strong></em> (apenas para a simulação ser mais dinâmica). Este tempo está definido logo no início do código, ou seja, de fácil alteração (inclusive especificado em <em>segundos</em>).</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <span style="text-decoration: underline;"><em>Um detalhe importante</em></span>: implementei também um "<em><strong>debouncing</strong></em>" quando os sensores são acionados. Então isto resultou em rotinas um pouco maiores para tratamento dos sensores e do Botão. Aconselho que vc mantenha esta característica. Fique tranquilo, pois a forma como foi feita a implementação do "<em><strong>debouncing</strong></em>", não afeta os tempos de resposta dos acionamentos.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Também note que o <strong>Botão</strong> existente no Sistema, tem <em>dupla função</em>: acionar ou desacionar a Bomba. O funcionamento é no modo "<em><strong>toggle</strong></em>", ou seja: se a Bomba estiver desacionada, será acionada, e vice-versa.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Espero que atenda suas expectativas, e por se tratar de uma questão relativamente comum, também atenda a outros que venham a precisar de algo semelhante.</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Mais uma vez, se tiver alguma dúvida não deixe de perguntar.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Elcids</span></p>
<p></p> ok Luciano.
Vou então…tag:labdegaragem.com,2019-09-09:6223006:Comment:7178122019-09-09T00:43:45.922ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">ok Luciano.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Vou então assumir essa <em>funcionalidade</em> <span>(semelhante ao <em><strong>tempo de acionamento</strong></em> que vc especificou) </span>para este sensor "amarelo". Ou seja, será um elemento "adicional" para evitar que a Bomba fique acionada caso o "<em><strong>Reservatório 1</strong></em>" seja esvaziado.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Caso apareça alguma…</span></p>
<p><span style="font-size: 12pt;">ok Luciano.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Vou então assumir essa <em>funcionalidade</em> <span>(semelhante ao <em><strong>tempo de acionamento</strong></em> que vc especificou) </span>para este sensor "amarelo". Ou seja, será um elemento "adicional" para evitar que a Bomba fique acionada caso o "<em><strong>Reservatório 1</strong></em>" seja esvaziado.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Caso apareça alguma outra dúvida (acredito que não será o caso), então perguntarei aqui. E caso vc deseje acrescentar alguma outra funcionalidade, basta postar aqui.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> Este sensor "amarelo" ficará…tag:labdegaragem.com,2019-09-08:6223006:Comment:7178052019-09-08T22:12:50.627ZLuciano Ferreira da Silvahttps://labdegaragem.com/profile/LucianoFerreiradaSilva
<p>Este sensor "amarelo" ficará no fundo do reservatório onde fica a bomba d'agua, ele tem a função de impedir que a bomba fique ligada caso este reservatório esteja completamente vazio. já aconteceu da bóia 1 travar e a bomba ficou ligada até eu perceber e desligar manualmente.</p>
<p>Este sensor "amarelo" ficará no fundo do reservatório onde fica a bomba d'agua, ele tem a função de impedir que a bomba fique ligada caso este reservatório esteja completamente vazio. já aconteceu da bóia 1 travar e a bomba ficou ligada até eu perceber e desligar manualmente.</p> Ok Luciando, ficou claro.
…tag:labdegaragem.com,2019-09-08:6223006:Comment:7177782019-09-08T21:59:17.780ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">Ok Luciando, ficou claro.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> No entanto, que tal vc acrescentar a descrição de como irá usar o tal <em><strong>sensor</strong></em> (o "<em><strong>amarelo</strong></em>"), pois assim já implemento a <em><strong>Máquina de Estados</strong></em> considerando o mesmo, e incluo uma <em><strong>flag</strong></em> que permite vc "jumpeá-lo" no código caso deseje (até que vc o instale no Sistema…</span></p>
<p><span style="font-size: 12pt;">Ok Luciando, ficou claro.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> No entanto, que tal vc acrescentar a descrição de como irá usar o tal <em><strong>sensor</strong></em> (o "<em><strong>amarelo</strong></em>"), pois assim já implemento a <em><strong>Máquina de Estados</strong></em> considerando o mesmo, e incluo uma <em><strong>flag</strong></em> que permite vc "jumpeá-lo" no código caso deseje (até que vc o instale no Sistema "real").</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Ah sim: caso em uma análise mais cuidadosa eu encontre alguma forma de aumentar a segurança na lógica para evitar transbordo, irei te avisar antes e caso vc concorde, aplicarei isto à <em><strong>Máquina de Estados</strong></em>. Lembre-se: <em><strong>Máquinas de Estados</strong></em> tem <span style="text-decoration: underline;"><em>versatilidade extrema</em></span>, ou seja, você pode facilmente mudar o comportamento do controle do Sistema fazendo poucas alterações (desde que se saiba a forma correta de fazer isso), então isso ajuda muito a acrescentar ou eliminar elementos de controle no Sistema.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> Olá, vou esclarecer de acordo…tag:labdegaragem.com,2019-09-08:6223006:Comment:7178042019-09-08T21:49:47.104ZLuciano Ferreira da Silvahttps://labdegaragem.com/profile/LucianoFerreiradaSilva
<p>Olá, vou esclarecer de acordo com os tópicos:</p>
<p> 1) Esse tempo é apenas para testes, o tempo real é de aproximadamente de 70 segundos. </p>
<p></p>
<p> 2) Esse tempo é de segurança sim, mas é o tempo necessário para que o reservatório de baixo se esvazie, mas não completamente, para que a bomba não fique ligada sem água e caso o sensor falhe. Esse sensor sim é que tem relação com esse tempo.</p>
<p></p>
<p> 3) O sensor não está no programa porque ainda não fiz a instalação dele. (ele…</p>
<p>Olá, vou esclarecer de acordo com os tópicos:</p>
<p> 1) Esse tempo é apenas para testes, o tempo real é de aproximadamente de 70 segundos. </p>
<p></p>
<p> 2) Esse tempo é de segurança sim, mas é o tempo necessário para que o reservatório de baixo se esvazie, mas não completamente, para que a bomba não fique ligada sem água e caso o sensor falhe. Esse sensor sim é que tem relação com esse tempo.</p>
<p></p>
<p> 3) O sensor não está no programa porque ainda não fiz a instalação dele. (ele ficará no fundo do reservatório de baixo), vou jampear, mas depois farei a instalação dele no sistema.</p>
<p></p>
<p> 4) Se funcionar sem a interrupção não tem problema, mas eu preciso que, quando a boia 2 acione, tudo pare até que ela mude de estado, inclusive a contagem do tempo (reset), porque senão a caixa irá transbordar</p>
<p></p>
<p> DESDE JÁ AGRADEÇO</p> olá novamente Luciano.
…tag:labdegaragem.com,2019-09-08:6223006:Comment:7179012019-09-08T21:25:04.725ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá novamente Luciano.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Analisei seu código. Neste momento, três dúvidas ficaram sobre o funcionamento:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <em><strong>1)</strong></em> sobre o <em><strong>tempo de acionamento</strong></em> que vc conta após acionar a <em><strong>Bomba D'água</strong></em> (e que são <em><strong>5 segundos</strong></em> no seu código), qual será exatamente o tempo…</span></p>
<p><span style="font-size: 12pt;">olá novamente Luciano.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Analisei seu código. Neste momento, três dúvidas ficaram sobre o funcionamento:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <em><strong>1)</strong></em> sobre o <em><strong>tempo de acionamento</strong></em> que vc conta após acionar a <em><strong>Bomba D'água</strong></em> (e que são <em><strong>5 segundos</strong></em> no seu código), qual será exatamente o tempo real (imagino que seja mais de 5 segundos).</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <em><strong>2)</strong></em> este <em><strong>tempo de acionamento</strong></em> da <em><strong>Bomba D'água</strong></em> é utilizado como uma <em><strong>medida de segurança</strong></em>? Ou seja: este tempo é um recurso para evitar que caso a "<em><strong>boia 2</strong></em>" venha a <em>falhar</em> na indicação de que o <em><strong>Reservatório 2</strong></em> está cheio, isto evite o transbordo? Pergunto porque isto afeta a forma de funcionamento, e preciso saber as condições que determinam cada acionamento no Sistema (e assim poder implementar um <em><strong>Diagrama de Estados</strong></em> que atenda as necessidades do Sistema). Vc deixou no código um tempo de <em>apenas</em> <em><strong>5 segundos</strong></em>, e este valor de tempo não permite tirar conclusões sobre o funcionamento.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <em><strong>3)</strong></em> há no seu código, a definição de um "<em><strong>sensor</strong></em>" que indicaria <em><strong>nível mínimo</strong></em> (o tal "<em><strong>amarelo</strong></em>"). Você confirma que isto realmente não será utilizado e que está "sobrando" no código ?</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;"> Aproveito também para dizer, que a utilização de <em><strong>Interrupção</strong></em> (no caso vc usou para a "<em><strong>boia 2</strong></em>"), <span style="text-decoration: underline;"><em>não é necessária</em></span> no seu Sistema. Então a implementação será feita <em><span style="text-decoration: underline;">sem</span></em> o uso de Interrupção.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> ok Luciano.
Estarei an…tag:labdegaragem.com,2019-09-08:6223006:Comment:7177762019-09-08T19:40:06.139ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">ok Luciano.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Estarei analisando o seu código e principalmente as condições de funcionamento do Sistema com os dois Reservatórios e os elementos de controle (Bomba, Sensores do nível d'água, e um botão para controle "manual").</span></p>
<p><span style="font-size: 12pt;"> Então implementarei o <em><strong>Diagrama de Estados</strong></em> e em seguida a <em><strong>Máquina de Estados</strong></em>,…</span></p>
<p><span style="font-size: 12pt;">ok Luciano.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Estarei analisando o seu código e principalmente as condições de funcionamento do Sistema com os dois Reservatórios e os elementos de controle (Bomba, Sensores do nível d'água, e um botão para controle "manual").</span></p>
<p><span style="font-size: 12pt;"> Então implementarei o <em><strong>Diagrama de Estados</strong></em> e em seguida a <em><strong>Máquina de Estados</strong></em>, juntamente com a <em><strong>simulação no Proteus</strong></em> (para verificar o funcionamento).</span></p>
<p><span style="font-size: 12pt;"> Tentarei ser rápido no processo, uma vez que é um caso de necessidade mais "real".</span></p>
<p><span style="font-size: 12pt;"> Ah sim: não se preocupe pois o código resultante será simples e de fácil entendimento (mas confiável, sem bugs, e facilmente ajustável caso você deseje alterar as condições de funcionamento).</span></p>
<p><span style="font-size: 12pt;"> Caso eu tenha alguma dúvida em algum momento <span>sobre como o Sistema deve se comportar</span>, estarei perguntando aqui.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p> Olá! O arduíno que estou util…tag:labdegaragem.com,2019-09-08:6223006:Comment:7177732019-09-08T19:21:48.804ZLuciano Ferreira da Silvahttps://labdegaragem.com/profile/LucianoFerreiradaSilva
<p>Olá! O arduíno que estou utilizando é o "UNO R3" . Vou me atentar á sua recomendação de não postar o código junto ao texto. Obrigado pela atenção.</p>
<p>Olá! O arduíno que estou utilizando é o "UNO R3" . Vou me atentar á sua recomendação de não postar o código junto ao texto. Obrigado pela atenção.</p>