Komponen yang diperlukan :
- Lampu led merah 4x
- Resistor 1KΩ 4x
- Dioda in4001 (1A)
- Potensio/trimpot (VR) 10K 1
- IC ULN 2803
- Breadboard
- Kabel Jumper
- Motor Stepper Unipolar 4 phase
- Power Supply 5V 1A
- 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);
}