Mengatur Kecepatan Motor Stepper dengan Menggunakan Potensio

Tanggal :16/07/2012
Kategori : project
Oleh : mibnus

Mengatur kecepatan motor stepper dengan potensio meter (VR), yaitu potensio mengatur besar tegangan (0-5 volt) yang jadi inputan port ADC Arduino. Pada saat potensio diputar ke kanan maka tegangan keluaran potensio meningkat mendekati 5 volt dan bila diputar ke kiri tegangan keluaran potensio semakin kecil mendekati 0 volt. Sehingga kecepatan putar motor stepper berbanding lurus dengan tegangan input analog dari potensio. Motor stepper merupakan motor dengan sinyal DC yang diatur arah putaran dan kecepatannya dengan pengaturan sinyal yang diberikan. Berikut gambar skematik diagram motor stepper unipolar 4 phase dengan 8 dan 6 kabel output.

 


Komponen yang diperlukan :

  1. Lampu led merah 4x                                      
  2. Resistor 1KΩ 4x                                           
  3. Dioda in4001 (1A)                                       
  4. Potensio/trimpot (VR) 10K 1     
  5. IC ULN 2803                                               
  6. Breadboard                           
  7. Kabel Jumper                      
  8. Motor Stepper Unipolar 4 phase
  9. Power Supply 5V 1A
  10. Minimum sistem board Arduino

 

Koneksi Rangkaian

 

 

Penulisan Program

//Kendali Kecepatan Motor Stepper dengan Potensio

int tunda = 0;                                          //deklarasi variabel tunda

int sensorValue = 0;                                //deklarasi variabel sensor value

int outputValue = 0;

 

const int phase1 = 2;                               //deklarasi pin phase1 pada kaki port D2

const int phase2 = 4;

const int phase3 = 3;

const int phase4 = 5;

const int analogIn = 18;                          //deklarasi pin analogIn pada pin 18 / ADC 4

 

void setup()

{

  pinMode (phase1, OUTPUT);              //phase1 sebagai output

  pinMode (phase2, OUTPUT);

  pinMode (phase3, OUTPUT);

  pinMode (phase4, OUTPUT);

  pinMode (analogIn, INPUT);               //analogIn sebagai input analog

  Serial.begin (9600);                              //inisialisasi komunikasi serial pada 9600 bps

 }

 

void loop()                                              //loping / pengulangan terus menerus

{

  siklusADC();                                        //deklarasi void siklus ADC

  powerStepper();                                    //deklarasi void powerStepper

}

 

void siklusADC()                                   //kode program void siklusADC

{

  sensorValue = analogRead (analogIn);     //membaca sinyal analog pada pin analogIn

  outputValue = map (sensorValue, 0, 1023, 0, 255);    //maping dari nilai 1023 jadi 255

  Serial.print ("outputValue= ");             //mencetak pada serial monitor

  Serial.println (outputValue, DEC);      //menulis nilai dalam desimal

 

  if (outputValue < 20)                           //membuat tingkatan dengan metode if

  {tunda = 500;}                                     //memberikan nilai pada variabel tunda

  else

    if (outputValue < 30)

      {tunda = 300;}

      else

       if (outputValue < 70)

        {tunda = 200;}

        else

        if (outputValue < 100)

        {tunda = 100;}

        else

        if (outputValue < 140)

        {tunda = 50;}

        else

        if (outputValue < 170)

        {tunda = 20;}

        else

        if (outputValue < 200)

        {tunda = 10;}

        else

        if (outputValue < 240)

        {tunda = 5;}

        else

        {tunda = 2;}

   delayMicroseconds (tunda);                //jeda waktu delay sama dengan nilai tunda

}

 

void powerStepper()                               //susunan program void powerStepper

{

  digitalWrite (phase1, HIGH);              //tahap sinyal pertama phase1 diberi sinyal high

  digitalWrite (phase2, LOW);                //tahap sinyal pertama phase2 diberi sinyal low

  digitalWrite (phase3, LOW);                // tahap sinyal pertama phase3 diberi sinyal low

  digitalWrite (phase4, LOW);                // tahap sinyal pertama phase4 diberi sinyal low

  delay (tunda);                                       //jeda waktu delay sama dengan nilai tunda

  digitalWrite (phase1, LOW);                //tahap sinyal kedua

  digitalWrite (phase2, LOW);

  digitalWrite (phase3, LOW);

  digitalWrite (phase4, HIGH);

  delay (tunda);

  digitalWrite (phase1, LOW);                // tahap sinyal ketiga

  digitalWrite (phase2, LOW);

  digitalWrite (phase3, HIGH);

  digitalWrite (phase4, LOW);

  delay (tunda);

  digitalWrite (phase1, LOW);                // tahap sinyal ke empat

  digitalWrite (phase2, HIGH);

  digitalWrite (phase3, LOW);

  digitalWrite (phase4, LOW);

  delay (tunda);

}




Category
news (8)
project (8)