Boa Noite pessoal,

Estou fazendo um programa para variar a tensão de saída no PWM conforme eu aumento o peso em uma célula de carga, porem só estou conseguindo variar com duas escolhas:

if (peso >=30){
val=254;//=24volts tensao da folha esta fraca portanto ira frear mais
analogWrite(solenoide,val);


} else {

if (peso <=31){
val=60;
analogWrite(solenoide,val);//6volts ; tensao está alta portanto ira frear menos

Dessa forma funciona mas quando eu tento por mais uma escolha não funciona:

if (peso >=30){
val=254;//=24volts tensao da folha esta fraca portanto ira frear mais
analogWrite(solenoide,val);
} else {
if (peso <=31>=51){
val=120;
analogWrite(solenoide,val);//12volts ; tensao está ideal
}else {
if (peso <=51){
val=60;
analogWrite(solenoide,val);//6volts ; tensao está alta portanto ira frear menos

Se alguem souber de alguma forma para funcionar isso ai da uma ajuda!

Ou se existir uma forma de variar esse sinal da saida conforme vou aumentando o peso proporcionalmente  de 0 a 255 ia ser melhor ainda!

Valeuu

Exibições: 583

Responder esta

Respostas a este tópico

Qual erro aparece?

Tente assim (pelo menos foi o que deu pra perceber no código que você postou aqui):

if (peso >=30){
val=254;//=24volts tensao da folha esta fraca portanto ira frear mais
analogWrite(solenoide,val);
}

else {
      if (peso <=31>=51){
         val=120;
         analogWrite(solenoide,val);//12volts ; tensao está ideal
      }

      else {
             if (peso <=51){
              val=60;
              analogWrite(solenoide,val); //6volts ; tensao está alta portanto ira frear menos

              } // <- estava faltando esse para fechar o if acima

       } // <- estava faltando esse para fechar o else acima

} // <- estava faltando esse para fechar o primeiro else

Qualquer coisa depois posta pra ver o que podemos fazer se ocorrer outro erro.

Então Raphael,

Não é um erro de compilação..esse ultimo else simplesmente ele nao le ele funciona até a segunda escolha ,

 e apartir dessa terceira escolha o peso fica menos 50 e ele nao passa o val=60..

escrevendo assim funciona legal:

if (peso >=30){
val=254;//=24volts tensao da folha esta fraca portanto ira frear mais
analogWrite(solenoide,val);


} else {

if (peso <=31){
val=60;
analogWrite(solenoide,val);//6volts ; tensao está alta portanto ira frear menos

Mas eu precisava das 3 escolhas

Nao sei oque é..acabei de testar esse que vc postou..mesma coisa

Então tente:

if (peso <=30) // inverti os sinais, estavam redundantes

{
    val=254;//=24volts tensao da folha esta fraca portanto ira frear mais
    analogWrite(solenoide,val);
}
else if (peso >=51) // inverti os sinais, estavam redundantes

{
    val=60;
    analogWrite(solenoide,val); //6volts ; tensao está alta portanto ira frear menos

}
else

{
    val=120;
    analogWrite(solenoide,val);//12volts ; tensao está ideal      

}

Os sinais estavam redundantes >=30 incorrerá em valores semelhantes a <=51.

Tente agora e me diga o que acontece.

Pelo que entendi do seu código vc quer o seguinte:

* Se peso for igual ou menor que 30 a variável val terá o valor de 254 e "escreverá" isso;

* Se peso estiver entre 31 e 51 a variável val terá o valor de 120 e "escreverá" isso;

* Se peso for igual ou maior que 51 a variável val terá o valor de 60 e "escreverá" isso.

É isso mesmo?

isso

Anexos

o hardware

Anexos

Bom dia,

Andei quebrando a cabeça um pouco com esse código e as informações de hardware que você mandou....

Bem....Me responda uma coisa: Você está "lendo" ou "escrevendo" algo no solenóide?

Porque, de acordo com seu código, eu leio o seguinte:

"* Se peso for igual ou menor que 30 a variável val terá o valor de 254 e "escreverá" (ou enviará) esse valor PARA O solenóide;

e peso estiver entre 31 e 51 a variável val terá o valor de 120 e "escreverá" (ou enviará) esse valor PARA O solenóide;

* Se peso for igual ou maior que 51 a variável val terá o valor de 60 e "escreverá" (ou enviará) esse valor PARA O solenóide."

 É isso mesmo o que você quer?

Enviar algo para o solenóide ou "ler" algo de lá?

Isso..eu quero enviar o sinal para ela..na saída eu irei fazer um circuito com transistors e alimentar com uma fonte externa o sinal vai passar pelo circuido que ira chaviar o sinal proporcionalmente possibilitando o controle da solenoide..ontem quebrei mais um pouco a cabeça e consegui fazer o sinal crescer proporcionalmente na saída..como o valor do pwm pode ser modulado de 0 a 255 escrevi "se (peso <=255) val =peso...se (peso>255) val =255...assim funcionou..mas ainda assim estou tentando fazer funcionar aquele jeito das 3 escolhas..

if (peso <=255){
val=peso;//=24volts tensao da folha esta fraca portanto ira frear mais
delay(100);
analogWrite(solenoide,val);
} else {
if (peso <=0){
val=0;
delay(100);
analogWrite(solenoide,val);//12volts ; tensao está alta portanto ira frear menos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço