E aí pessoal. Aí vai um código depois explico o problema:
const int pwm_a = 3; //controle PWM para motor A (saídas 1 e 2) no pino digital 3
const int pwm_b = 11; //controle PWM para motor B (saídas 3 e 4) no pino digital 11
const int dir_a = 12; //controle de direação para motor A (saídas 1 e 2) no pino digital 12
const int dir_b = 13; //controle de direação para motor B (saídas 3 e 4) no pino digital 13
void setup()
{
pinMode(pwm_a, OUTPUT);
pinMode(pwm_b, OUTPUT);
pinMode(dir_a, OUTPUT);
pinMode(dir_b, OUTPUT);
}
void loop()
{
//leitura sensores refletância (para enxergar preto e branco / linha)
int leitura_sensor2=analogRead(A2);
int leitura_sensor3=analogRead(A3);
int ganho = 6;
int proporcional = ((leitura_sensor2 - leitura_sensor3) / ganho);
int acertoB = (75 + proporcional); //75 PWM mínimo do motor
int acertoA = (75 - proporcional);
digitalWrite(dir_a, HIGH); //para motores irem para frente
digitalWrite(dir_b, HIGH);
analogWrite(pwm_a, acertoA);
analogWrite(pwm_b, acertoB);
}
Estou com um problema aqui. Tenho um robô com dois motores DC comandados pela Shield Ardumoto. Microcontrolador Arduino. Dois sensores refletância que eu mesmo fiz. Eles tem uma variação de 650 a 950 no sinal analógico. Onde 950 é quando sensor está no branco, e 650 no preto. Os sensores obrigatoriamente estão a aproximadamente 1 cm do chão. E estou tentando aplicar um controle PROPORCIONAL no meu segue linha. Já fiz uma vez esse controle com um robô feito com LEGO e programado no NXT, e dava muito certo, então fiz os mesmos cálculos só que com o Arduino e adaptando a minha entrada (sensores) e saída (PWM dos motores). Mas não está dando muito certo. O controle PROPORCIONAL já bastaria pra mim, se eu conseguisse o PID por completo eu ficaria MUITO feliz, mas só o PROPORCIONAL já está de bom tamanho. Alguém poderia me ajudar???