Kendali Motor Stepper Menggunakan Driver TB6600 dan Fitur Kendali Arah Putar dan Sudut Serta Kembali ke Posisi Awal
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat dikendalikan menggunakan pushbutton untuk arahnya dan potensio untuk mengatur sudut dari putaran motor stepper. alat ini juga tersedia fitur kembali ke posisi awal. untuk lebih jelasnya berikut adalah koding skemanya.
a. Skema Alat
b. Program Arduino IDE
#include <Wire.h>
#define dirPin 13
#define stepPin 12
int btkiri = 11;
int btkanan = 10;
int btreset = 9;
int dataadc;
int btkirix;
int btkananx;
int btresetx;
int kiri;
int kanan;
int pusat;
int langkah1,langkah2;
int derajat;
int i;
void setup() {
Serial.begin(9600);
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
pinMode(btkiri,INPUT_PULLUP);
pinMode(btkanan,INPUT_PULLUP);
pinMode(btreset,INPUT_PULLUP);
}
void loop() {
dataadc = analogRead(A0);
btkirix = digitalRead(btkiri);
btkananx = digitalRead(btkanan);
btresetx = digitalRead(btreset);
derajat = map(dataadc,0,1023,0,180);
Serial.print(pusat);
Serial.print(" : ");
Serial.print(langkah1);
Serial.print(" : ");
Serial.print(langkah2);
Serial.print(" : ");
Serial.println(derajat);
if(btkirix == 0){
delay(500);
for(i=0;i<derajat;i++){
digitalWrite(dirPin, LOW); // putar CW jarum jam
digitalWrite(stepPin, HIGH);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
digitalWrite(stepPin, LOW);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
}
kanan++;
}
if(btkananx == 0){
delay(500);
for(i=0;i<derajat;i++){
digitalWrite(dirPin, HIGH); // putar CCW jarum jam
digitalWrite(stepPin, HIGH);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
digitalWrite(stepPin, LOW);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
}
kiri++;
}
pusat = kanan - kiri;
langkah1 = kiri * derajat;
langkah2 = kanan * derajat;
if(btresetx == 0){
delay(500);
if(pusat > 0){ //ke kanan
for(i=0;i<langkah2;i++){ //balik ke kiri
digitalWrite(dirPin, HIGH); // putar CCW jarum jam
digitalWrite(stepPin, HIGH);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
digitalWrite(stepPin, LOW);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
}
pusat = 0;
kiri = 0;
kanan = 0;
}
if(pusat < 0){ // ke kiri
for(i=0;i<langkah1;i++){ //nalik ke kanan
digitalWrite(dirPin, LOW); // putar CCW jarum jam
digitalWrite(stepPin, HIGH);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
digitalWrite(stepPin, LOW);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
}
pusat = 0;
kiri = 0;
kanan = 0;
}
}
delay(200);
}
c. VIDEO HASILNYA
No comments:
Post a Comment