quarta-feira, 30 de maio de 2018

Motor de vidro elétrico como servo motor - arduino - autothrottle 737

Teste de ponte H usando PWM para controlar a velocidade de um motor de vidro  elétrico de janela de automóvel.

12/09/2018

Código Arduino


int IN1 = 2; //H bridge IN1 pin
int IN2 = 4; //H bridge IN2 pin
int motor=3; // PWM H Bridge
int leitura_sensor=0; //
const byte SENSOR=A0;// Posiçao do postenciometro(Manete) - potenciometro 50K porta A0
const byte COMANDO=A1;//dados que virao do simulador, indicando a posicao da manete
int val;
String v1; // recebe os dados da posição da manete
int v1i; // variavel inteira que receberá o valor de V1
int CodeIn;// used on all serial reads

void setup() 
{
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(3, OUTPUT);
 Serial.begin(115200);   
}

void loop() {  
    if (Serial.available()) {
    CodeIn = getChar();
      if (CodeIn == '<') {LESSTHAN();} //verifica se o caracter vindo vindo da serial é <
  }

leitura_sensor=analogRead(SENSOR); //le a posicao do servo
val=leitura_sensor;
  val = map(val, 0, 1024, 0, 100); // cria uma escala compativel com o potenciometro e a posicao da manete
  Serial.println(val); // somente para testes
  Serial.flush(); // limpa a serial
  delay(10);

if(val < v1i -2) { // -2 para criar uma zona de tolerancia
  digitalWrite(IN1,HIGH); // 
  digitalWrite(IN2,LOW);
  analogWrite(3,80); // pulso PWM na porta digial 3, com velocidade de 80. e a minima possivel para o motor
  }
if( val > v1i +2){
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
  analogWrite(3,80);
  } 

if (val +2 == v1i || val -2 ==v1i ){
digitalWrite(IN1,LOW); //motor parado
digitalWrite(IN2,LOW);
}}
void LESSTHAN(){    // The first identifier was "<"
CodeIn = getChar(); // Get another character
  switch(CodeIn) {// Now lets find what to do with it
    case 'V'://Found the second identifier "v1"
      v1 = "";
      v1 += getChar();
      v1 += getChar();
      v1 += getChar();
      v1 += getChar();
      v1i = v1.toInt();      
      Serial.flush();
      break;          
     }
}

char getChar()// Get a character from the serial buffer
{
  while(Serial.available() == 0);// wait for data
  return((char)Serial.read());// Thanks Doug
}



Ligando a Ponte H

Nenhum comentário:

Postar um comentário