A motor vezérlő áramkör az Arduino Nano-val már össze van kötve, a 14 V tápfeszültség rajta van, nincs más hátra, mint leteszteljük működik-e.

Egy egyszerű teszt program kell ehhez. A program elején megadjuk, hogy a motorvezérlő bemeneteit az Arduino Nano melyik kimeneteivel kötöttük össze. Esetünkben ez a 9-es és 10-es PWM PIN. A vezérlő úgy működik, hogy ha az A1-es bemenetére adunk logikai magas szintet, a motor balra forog, ha az A2-es bemenetére akkor a motor jobbra forog. A motordirection a forgásirányt, a motorspeed a motor sebességet tároló változó.

A setup részben beállítjuk a serial portot, mert ezen keresztül fogunk kommunikálni és a 9-es és 10-es lábat kimenetre állítjuk. A motor sebességet és irányt alaphelyzetbe rakjuk.

A főprogram első fele a motorvezérlő, ha a motor balra kell forogjon, akkor a motorvezérlő A1-es lábát 0-ba húzzuk, az A2-es adjuk a PWM jelet, ha jobbra, akkor az A2-est húzzuk 0-ba és az A1-esre adjuk a PWM jelet.
A főprogram második felében a soros porti bemenetről fogadjuk az utasításokat:

“L” – motor balra forogjon
“R” – motor jobbra forogjon
“U” – a motor sebessége növekedjen
“D” – a motor sebessége csökkenjen


/*
 * Motor sebesség szabályozás teszt program
 * Arduino 1.6.7
 * Arduino.hu
*/


//Motor
int motor1 = 9;        // the PWM pin the Motor1 is attached to 9
int motor2 = 10;       // the PWM pin the Motor2
byte motordirection;   //0-1
byte motorspeed;       //0-255

void setup() {
  // Serial
  Serial.begin(115200);
  Serial.println(F("pwm test start"));
  // Motor
  pinMode(motor1, OUTPUT);
  pinMode(motor2, OUTPUT);
  motordirection = 0;
  motorspeed = 0;
}

void loop() {
  //Motor
  
  if(motordirection == 1)
  {
    digitalWrite(motor1, 0);
    analogWrite(motor2, motorspeed);
  }
  else
  {
    digitalWrite(motor2, 0);
    analogWrite(motor1, motorspeed);
  }
  

  //Serial control
  if ( Serial.available() )
  {
    char c = toupper(Serial.read());
    if ( c == 'L' ){      
      Serial.println(F("Motor direcction LEFT"));
      motordirection = 0;                  
    }
    if ( c == 'R' ){
      Serial.println(F("Motor direction RIGHT"));      
      motordirection = 1;
       
    }
    if ( c == 'U' ){
      Serial.println(F("Motor speed UP"));
      motorspeed++;
    }
    if ( c == 'D' ){
      Serial.println(F("Motor speed DOWN"));
      motorspeed--;
    }
    Serial.print(F("Motor speed: "));
    Serial.println(motorspeed);
    Serial.print(F("Motor direction: "));
    Serial.println(motordirection);
  }
}

A program csak egyszerű tesztelésre szolgál, nincs benne védelem a “user error” ellen (Például a byte változó túlcsordulása.)

A teszt eredménye kielégítő volt számomra, a forgásirány váltás és a sebesség szabályozás is tökéletesen működött. A motor áramfelvétele 800mA a maximális fordulatszámon. Ekkor a motoron 10V kapocsfeszültséget mértem. A maradék 4V a meghajtó IC melegítésére ment el, ami 3.2 Watt hődisszipációt jelentett, de ezt bőven kibírta.

Motor fordulatszám szabályozás Arduinoval és L298N-el 2.

2 thoughts on “Motor fordulatszám szabályozás Arduinoval és L298N-el 2.

  • 2016-06-19 at 23:43
    Permalink

    Kedves “Mekkelek”!
    Tetszik az oldalad és szeretnék hozzájárulni a további “fejlődéshez”!
    Szeretnék küldeni “néhány” hasznos magyar arduino leírást! Ha szükséged van rá kérlek írj vissza és elküldöm neked.

    Válasz
    • 2016-06-20 at 00:26
      Permalink

      Kedves István!
      Minden segítséget köszönök!
      Igen, kérlek küldd el a leírásokat.
      Te készítetted őket?

      Válasz

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.