**{Duvida} com Programa controlador de Valvula**

Bom dia,

Galera poderiam me ajudar ? estou com duvida no código do programa que estou fazendo, o programa e para controlar uma válvula a partir de 02 sensores, basicamente meu código está gerando conflito entre 2 condições.

onde digo;;

sensor1 - HIGH
sensor2 - HIGH
Valvula - LOW

só que preciso que em um determinado momento;

sensor1 - HIGH
sensor2 - HIGH
Valvula - HIGH

e não consigo imaginar a logica para esse problema…

Então preciso que duas entradas, emitam 2 saidas diferentes… ou alguma ideia para mudar a logica

Obrigado pela resposta, deixa eu te explicar melhor.
tenho uma esteira, onde tenho 2 sensores um no inicio outro no final.
e no meio da esteira tenho uma válvula.

o produto irá vir até o final da esteira. onde acionará o primeiro sensor. que acionará a válvula.
quando o produto for retirado da frente do sensor a válvula será desarmada liberando o fluxo. porem logo após a válvula tem outro sensor que quando passar um produto por ele ele também aciona a válvula. (para dar ritimo a linha de produção e também só passar um produto por vez.

estou me batendo para programar, sou novo e gostaria de dicas. não a resposta… kkk por gentileza…

desculpa se for muito idiota essa questão mas desejo evoluir.

att

pablo joenck

O texto tá meio estranho mesmo, mas eu acredito que tenha entendido, toda vez que um produto na posição final (que segura a esteira parada e a válvula desligada) é retirado e o sensor desarmado a esteira+válvula liga, fazendo a fila andar ao mesmo tempo que o produto na posição anteriora é lavado/pintado/qualquercoisado.

Se for isso mesmo, a lógica é simples:

Sensor1 Sensor2 Resultado
0 0 Ignorar/manter o estado vigente.
1 0 Parar a esteira
0 1 Ligar a esteira
1 1 Situação anômala, decidir o que fazer.

Em outras palavras (em C):
while(1) {
if(sensor1) esteira=0;
if(sensor2) esteira=1;
valvula=esteira;
}

Nesse código caso ambos os sensores sejam 1 a esteira ficará ligada, se invertermos os ifs ela ficará desligada, eu deixei toda a abstração de hardware de lado, acredito que isso não seja problemas pra vocês.

vamos lá vou ser mais pratico.

oque eu quero?
Criar um Gap de espaço entre dois produtos, em uma esteira por gravidade. (não elétrica).

oque eu tenho hoje é.

Entrada da esteira --------------------[ ][ ][ ][ ][ ]- saída da esteira. [ ] = Caixas.

oque preciso fazer com os sensores mais válvula.

entrada da esteira----------[ ][ ][ ]/-----------------[ ]- saída da esteira [ ] Caixas / Válvula impedindo fluxo.

só que preciso fazer isso um sistema automatizado.

Fala ai pabloJoenck blz?

Posso sugerir um cenário de exemplo? digamos por exemplo um sistema de envase
tendo como base o descritivo de seu problema acima. Criei o desenho abaixo para melhor entendermos:

Coloquei os dois sensores no inicio e fim da esteira e a valvula(cruz vermelha no desenho).
teria como confirmar essa montagem se possível fazer a correção

Att
Max

opa desculpe a demora, sim é exatamente isso…

É basicamente o código que eu postei haha

Mas como a esteira não é elétrica, você pode trocar todas as ocorrências de “esteira” por “valvula”, e pra sua melhor compreensão talvez trocar “sensor1” por “sensor2” e vice-versa.

Se o primeiro sensor deflagrar ele liga a válvula, quando o segundo sensor deflagar ele delisga, se os dois estiverem deflagrados ao mesmo tempo eu recomendaria deixar a válvula aberta, provavelmente é interessante deixar o sensor que desliga mais próximo da válvula do que o sensor que desliga, mesmo que seja uma diferença bem pequena, esse detalhe é bem importante.

conversando com um amigo aqui chegamos a solução do problema junto com as dicas de vocês…

segue cód.

//---------------------------CONSTANTES E VARIAVEIS -------------------------------

const int Val = 11; // Valvula de stop
const int BotaoSE = 9; // SEEEnsor do final da esteira
const int BotaoSV = 8; // SEEEnsor da valvula
int SEV = 0; // Estado do SEEEnsor da Valvula
int SEE = 0; // Estado do SEEEnsor da esteira
const int led = 10;
const int led1 = 12;
int M1 = 0;
int M2 = 0;
int M3 = 0;
//-----------------------------------ERADAS E SAIDA---------------------------------

void setup() {

pinMode(BotaoSE,INPUT);
pinMode(BotaoSV,INPUT);
pinMode(Val,OUTPUT);
pinMode(led,OUTPUT);
pinMode(led1,OUTPUT);
}
void loop()
{
//---------------------------------- LENDO OS SENSORES ----------------------------
SEV = digitalRead(BotaoSV);
SEE= digitalRead(BotaoSE);

//------------------------------------- LÓGICA ------------------------------------

if(SEE == LOW && SEV == LOW && M1 == 0){
digitalWrite(Val,LOW);
}
if(SEE == LOW && SEV == LOW && M1 == 1){
digitalWrite(Val,HIGH);
}

//----------------------- SE TIVER CAIXA SOBRE O SENSOR DA VALVULA ----------------
delay(100);

if(SEE == LOW && SEV == HIGH){
M1=1;
}

//----------------------- SE TIVER CAIXA NO SENSOR FINAL DA ESTEIRA ---------------
delay(100);

if(SEE == HIGH && SEV == LOW && M1 == 1){
digitalWrite(Val,HIGH);
M1=0;
}
delay(500);

Fala ai PabloJoenck, blz
então vamos definir as funcoes de cada item no desenho que enviei
1 - Circulo a esquerda(Sensor1) é o sensor de entrada na esteira
2 - Cruz vermelha é a valvula de envase
3 - Circulo a direita(Sensor2) é o sensor de saída da esteira

Um detalhe que não foi abordado nesse problema: a válvula teria um sensor também, para poder determinar quando o envase teria terminado

Então o descritivo desse problema seria algo do tipo:

"Obs: O Sensor1 deveria estar colado na válvula ou bem mais próximo"
Na minha visão esse seria o algoritmo para múltiplos envases

LOOP{
- A lata entra na esteira que estará ligada ao passar pelo Sensor1 que detecta a presença da mesma ele desligará a esteira e ativará a válvula de envase.
- A válvula devera detectar o momento em que a lata estiver cheia
- Após esse momento, a válvula deverá ser desligada e religada a esteira
}

  • o Sensor2 acredito eu que só tenha utilidade para saber quando a lata chega ao final da esteira.

Abraços
Max