Boa tarde, o projeto é o seguinte:

Utilizar o Arduíno, Sensor de vazão e uma Display 16x2 para monitorar um sistema de Osmose Reversa.

Utilizando 6 Entradas Digitais: 2 dos sensores boia do Tanque, 1 do Sensor de Vazão e os outros são sinais (5vcc) que chega ao Arduíno pelo contato seco do disjuntor motor de respectivas bombas.

Minha dúvida é se a programação está correta, pois, não tenho o mínimo conhecimento de programação. Por gentileza se encontrarem algum erro na programação me avisem. 

E caso vocês souberem de algum programa ou site que possa simular o projeto me avisem.

Obrigado pela atenção.

https://pastebin.com/7fPYKTSU

Exibições: 88

Anexos

Responder esta

Respostas a este tópico

Boa tarde Gjr,

para que possamos dizer se o programa está correto, precisamos saber o que ele deve fazer.

Da mesma forma que você não tem o mínimo conhecimento de programação, eu não tem o mínimo

conhecimento de osmose reversa.

Escreva uma "receita de bolo" do que o programa deve fazer.

Assim poderemos tentar entender se ele está fazendo corretamente.

RV

Bom dia.

A Osmose reversa tem a função de tratar a água que vem do poço por meio de uma membrana semipermeável para ser utilizada para uso hospitalar.

Antes da água do poço entrar no sistema da osmose há um disjuntor que controla a bomba(Bomba OR) que é a entrada d'água. No sistema da osmose há o disjuntor que controla a bomba de pressurização OR que forçará a água a passar através da membrana, após a água ser tratada ela deverá encher o tanque de água que há dois sensores boia (inferior e superior) a vazão da água é mostrada nessa parte. E por fim tem o disjuntor da bomba de pressurização CME que é utilizado para a saída da água do tanque para alimentar as máquinas de hemodiálise.

Basicamente o programa deverá mostrar no display e alarmar caso não chegue o sinal dos disjuntores das bombas ou algum problema nos sensores do tanque.

 

Fiz algumas alterações, não tinha colocado o código do sensor de vazão no loop.

https://pastebin.com/SuqhB88W

Olá.  

  Diria que a questão da lógica é com vc mesmo, é dificil conseguirmos analisar sem conhecer a fundo o processo.

  Quando a programação, achei ótima para um iniciante, é bem por aih. Teria apenas algumas sugestões de melhoria:

1) Identar. Que é o costume de avançar o cursor quando vc abre um loop e voltar quando fecha. A IDE do arduino faz automaticamente isso. Tecle Control+T

2) Ficaria mais facil de entender a logica se vc usasse sempre variáveis que indicam sua função. Vc começou bem usando o:

#define SinalBombaOR 9 

Mas depois a informação se perde em:

int leitura1 = digitalRead(SinalBombaOR);

Podia ser 

int LeituraSinalBombaOR= digitalRead(SinalBombaOR);

No trecho, também não precisa, mas eu usaria:

if ((leitura1 == LOW) && (leitura2 == HIGH) && (....

Para ficar bem claro a ordem que as coisas precisam ser feitas (precedencia).

3) Repensaria o delay(). O padrão usual é atualização a cada meio segundo em displays. Como vc colocou um delay no loop grande e mais um no case, se entendi vai atualizar a cada 2s. Muita coisa... 

Mas é tudo bobagem, no geral o programa está aparentemente ok. Não condiz com sua afirmação de "mínimo conhecimento de programação". 

Muito obrigado pela sugestão, irei aplicar em meus projetos. 

Estou fazendo um curso online para leigos e aprendendo bastante. 

Já esse projeto, está aparecendo uns probleminhas quando simulo mas na tentativa e erro vou adquirindo mais conhecimento.

Boa tarde GJ,

estou revisando e modificando seu code.

Como  estou um pouco atarefado, ainda não terminei.

Assim que terminar postarei meus comentários.

RV

Boa tarde Gjr,

segue abaixo seu sketch modificado e testado.

Tive que trocar alguns ports, o Port13 do Arduíno não pode ser usado como INPUT_PULLUP,

veja note abaixo.

Então usei o 13 como o ultimo para o LCD e usei o 8 como " SinalBoiaSuperior  "

Modifique também na sua montagem

RV

" NOTE: Digital pin 13 is harder to use as a digital input than the other digital pins because
it has an LED and resistor attached to it that's soldered to the board on most boards.
If you enable its internal 20k pull-up resistor, it will hang at around 1.7V instead of
the expected 5V because the onboard LED and series resistor pull the voltage level down,
meaning it always returns LOW. If you must use pin 13 as a digital input, set its pinMode()
to INPUT and use an external pull down resistor." 

Anexos

Bom dia RV, muito obrigado pela ajuda.

Já tinha conseguido resolver o problema no display, mas foi de uma maneira diferente. Não sabia dessa função bool, vou interpretar esse code que você fez para usar em projetos futuros caso apareça.

Quanto esse negocio do pino 13 não ser usado com pull_up eu não sabia, vou ter que modificar no sketch.

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2018   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço