Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''eletronica arduino pid controle de nivel''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • Café
    • Leitura Obrigatória
    • Café Torrado
    • Torra Doméstica
    • Cafeterias
    • Quando o Assunto é Café!
  • Equipamento
    • Técnicas e Dicas
    • Moedores
    • Máquinas de Expresso
    • Coado e afins
  • Outros Assuntos
    • Classificados
    • Buscafé
    • Lojas
    • Dúvidas de Iniciantes
    • Fotos, Fotos, Fotos...
    • Fora de Foco
  • Informações
    • Novidades e Sugestões
    • Tutorial

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Localização


Interests


Equipamento

Encontrado 1 registro

  1. #define sensor A1 #define controle 6 // pino do mosfet #define altTanque 14.5 #include "Ultrasonic.h" #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); Ultrasonic ultrasonic(10,9); //pinos trigger e echo long microsec = 0; float distanciaCM = 0; void setup() { Serial.begin(9600); pinMode(sensor,INPUT); pinMode(controle,OUTPUT); lcd.begin(20,4); } double P = 0, I = 0, D = 0, PID = 0; double KP = 285.5, KI = 160.5, KD = 10.0; int setpoint = 10; float controlePWM = 0; float nivel; double erro = 0; double lastNivel; long lastProcess = 0; void loop() { microsec = ultrasonic.timing(); //Lendo o sensor distanciaCM = ultrasonic.convert(microsec, Ultrasonic::CM);//Convertendo a distância em CM double distanciaCm = map(distanciaCM, 0, 14.5, 0, 255); nivel = altTanque - distanciaCM; if(nivel > 14.5){ nivel = 14.5; } if(nivel < 00.00){ nivel = 00.00; } erro=setpoint-nivel; float deltaTime = (millis () - lastProcess)/ 1000.0; lastProcess = millis(); P = erro * KP; I = (I + erro *KI) * deltaTime; //ou I += erro * KI; D = (lastNivel - nivel) * KD / deltaTime; //D = (lastNivel - nivel) * KD ; lastNivel = nivel; //lastNivel =nivel; PID = P + I + D; controlePWM = PID; // saida do controle if(controlePWM > 255){ controlePWM = 255; } if( nivel >= setpoint){ controlePWM = 0; } analogWrite(controle,controlePWM); lcd.setCursor(2,0); lcd.print("IFMA-COELHO NETO"); lcd.setCursor(2,1); lcd.print(nivel); lcd.print(" CM DE AGUA "); lcd.setCursor(5,2); lcd.print(controlePWM); lcd.print(" PWM "); lcd.setCursor(0,3); lcd.print("ALAN,JACINTO E BRITO"); //delay(100); analogWrite(controle,controlePWM); Serial.print(setpoint); Serial.print(" "); Serial.print(nivel); Serial.println(" "); //delay(100); /* analogWrite(controle,controlePWM); Serial.print("pwm: "); Serial.println(controlePWM); Serial.print("cm de agua: "); Serial.println( nivel); Serial.print("erro: "); Serial.println(erro); delay(1000); */
×
×
  • Criar Novo...