Ir ao conteúdo

Posts recomendados

Postado

float Ts = 0.02;  // Time Sample => Tempo de amostragem
float kp = 0.000787669;
float ki = 0.0787669;
float kd = 0.0;

float termoP, termoI=0, termoD, termoI_ant=0;
float controle;
int aux;
float sp=1000,erro,vel,erro_ant;
int cont = 0;
boolean b2;

void setup()
{
  Serial.begin(9600);
  analogWrite(3,0);  // Pino 3 => PWM
  pinMode(2,INPUT);  // Funciona como um botão
  digitalWrite(2,1); // Encostamos o fio do pino 2 em algum lugar que tenha tensão
}                    // Por exemplo: a porta USB do Arduino (no nosso caso, foi o que fizemos)

void loop() 
{
  b2 = digitalRead(2);
  while(b2!=0)  b2 = digitalRead(2);

  while(cont<50) // Regime transitório 
  {
    Serial.println(analogRead(A2));
    cont++;
    delay(20);
  }

  while(cont<=500) // Regime permanente
  {
    vel = analogRead(A2);  // Valor analógico(correspondente à velocidade) antes da conversão => ("Valor analógico" é uma tensão)
    vel = vel*5/1023; // Conversão do valor analógico
    vel = (466.34*vel) - 5.25;  // Ajusta valor da velocidade de acordo com w(v)
    erro = sp - vel;
    erro_ant = erro;
    termoP = kp*erro;
    termoI = (ki*erro*Ts) + termoI_ant;
    termoI_ant = termoI;
    termoD = (erro - erro_ant)*kd*Ts;
    controle = termoP+termoI+termoD;
    if(controle>255)  controle=255;
    if(controle<0)    controle=0;
    aux = controle;
    analogWrite(3,aux);
    Serial.println(analogRead(A2));
    delay(20);
    cont++;  
  }

  while(1);
}

  • Curtir 1
Postado

@Victor Teodoro     as linguagens c /c++ são praticamente iguais apenas que c++ tem alguns comandos a mais que a c, mas os comando desse seu código são todos da linguagem c mesmo, o que tem de diferente aí é esses comandos do arduíno tipo esse :

Serial.begin(9600);
analogWrite(3,0);  // Pino 3 => PWM
pinMode(2,INPUT);  // Funciona como um botão
digitalWrite(2,1); // Encostamos o fio do pino 2 em algum lugar que tenha tensão
Serial.println(analogRead(A2));
 vel = analogRead(A2);  // Valor analógico(correspondente à velocidade) antes da conversão => ("Valor analógico")

já de arduíno não sei  converter .

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!