Translate

Kendali Motor Stepper Menggunakan Driver TB6600 dan Fitur Kendali Arah Putar dan Sudut Serta Kembali ke Posisi Awal

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