CV. ZENTRONIC - Perusahaan Jasa Listrik dan Elektronika

Senin, 27 Maret 2023

TB6600 Stepper Motor Driver dengan Arduino

Driver motor stepper TB6600 digunakan untuk mengontrol motor stepper bipolar dua fase yang lebih besar seperti motor NEMA 23 yang digunakan dalam printer 3D, mesin CNC, dan robot. Dalam tutorial ini saya akan menjelaskan perangkat keras driver motor TB6600 secara detail dan juga menunjukkan cara mengontrol driver dengan Arduino. 


 

Deskripsi perangkat keras driver Motor Stepper TB6600.

Driver motor Stepper TB6600 awalnya dibangun di sekitar IC motor stepping TB6600HG yang dibuat oleh Toshiba. Namun saat ini banyak dari driver ini memiliki IC TB67S109AFTG yang juga dibuat oleh Toshiba.

Chip ini hampir serupa dalam kinerja dan spesifikasi tetapi TB6600HG lebih besar dan memiliki peringkat arus puncak yang lebih tinggi hingga 5A dibandingkan dengan chip TB67S109AFTG yang lebih kecil dengan peringkat arus puncak 4A. Selain itu, TB6600HG hanya mendukung hingga 1/16 microstepping sedangkan TB67S109AFTG mencapai 1/32.

Driver memiliki over-current, under-voltage shutdown, dan proteksi overheating. Spesifikasi lain dapat sedikit berbeda tergantung pabrikannya dan oleh karena itu Anda harus selalu memeriksa datasheet driver Anda sebelum digunakan.

Menghubungkan driver motor Stepper TB6600 ke Arduino.

Koneksi agak sederhana dan dilakukan seperti yang diilustrasikan di bawah ini. Saya akan menghubungkan driver dalam konfigurasi katoda umum, yaitu, semua sisi negatif dari sinyal kontrol akan dihubungkan ke ground.

 

Pastikan Anda tidak menghubungkan motor stepper dengan nilai arus lebih dari 3,5 A ke driver.

A+,A- dan B+,B- adalah sambungan untuk fase atau kumparan motor stepper bipolar 4 kawat. Sepasang kabel dari satu koil motor dihubungkan ke A- dan A+ dan yang lainnya ke B- dan B+.

 

 

Adjusting Microsteps and Current

Driver motor stepper TB6600 memiliki sakelar DIP yang digunakan untuk mengatur langkah mikro dan arus tergantung pada spesifikasi dan aplikasi motor stepper yang digunakan. Tabel dengan microstep dan pengaturan saat ini dicetak di atas casing driver.

Dalam mode langkah penuh, motor stepper biasanya menghasilkan 200 langkah per putaran yang menghasilkan ukuran langkah 1,8°. Driver TB6600 mendukung mode microstepping yang memungkinkan resolusi lebih tinggi untuk motor stepper dengan memungkinkan lokasi langkah menengah melalui pemberian energi fase motor dengan level arus menengah.

Misalnya, saat dalam mode ½ langkah, motor stepper akan menghasilkan 400 langkah mikro per putaran dan dalam mode ¼ langkah akan menghasilkan 800 langkah mikro per putaran.

Pengaturan microstep TB6600 dapat diubah dengan mengaktifkan atau menonaktifkan sakelar DIP S1, S2, dan S3 dalam urutan tertentu seperti yang ditunjukkan pada tabel di bawah ini. Pengaturan di bawah ini adalah untuk driver microstepping 1/32.

 


Pengaturan microstep yang lebih kecil akan menghasilkan pengoperasian yang lebih mulus dan tenang, tetapi akan membatasi kecepatan tertinggi yang dapat Anda capai saat mengontrol driver motor stepper dengan mikrokontroler.

 

 

Jangan sesuaikan sakelar DIP saat driver dihidupkan.

Sakelar S4, S5 dan S6 digunakan untuk mengatur arus yang masuk ke motor saat sedang berjalan. Lebih baik memulai dengan level arus 1 A dan jika motor kehilangan langkah atau macet; Anda dapat terus meningkatkan level saat ini.

 


Kode untuk mengendalikan driver motor Stepper TB6600 dengan Arduino.

Mikrokontroler seperti Arduino dapat digunakan untuk mengontrol kecepatan, jumlah putaran dan arah putaran motor stepper. Kode di bawah ini adalah contoh bagaimana hal ini dapat dicapai.

const int stepPin = 5;

const int dirPin = 2;

const int enPin = 8;

 

void setup() {

  pinMode(stepPin,OUTPUT);

  pinMode(dirPin,OUTPUT);

  pinMode(enPin,OUTPUT);

  digitalWrite(enPin,LOW);

 }

 void loop() {

  digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction

  for(int x = 0; x < 800; x++) {

    digitalWrite(stepPin,HIGH);

    delayMicroseconds(500);

    digitalWrite(stepPin,LOW);

    delayMicroseconds(500);

  }

  delay(1000); // One second delay

  digitalWrite(dirPin,LOW); //Changes the direction of rotation

  for(int x = 0; x < 800; x++) {

    digitalWrite(stepPin,HIGH);

    delayMicroseconds(500);

    digitalWrite(stepPin,LOW);

    delayMicroseconds(500);

  }

  delay(1000);

}

 

Deskripsi kode

Pertama, pin langkah (PUL+), arah (DIR+), dan aktifkan (ENA+) dideklarasikan dengan pin Arduino masing-masing sebagai 5, 2, dan 8.

Di bagian setup(), semua pin kontrol motor dinyatakan sebagai OUTPUT digital. Saya juga mengaktifkan driver dengan menyetel pin aktifkan  LOW.

Bagian loop() menentukan jumlah langkah yang akan diambil motor. Empat baris kode di bawah ini akan mengirimkan pulsa ke pin step sehingga menghasilkan satu microstep.

digitalWrite(stepPin, HIGH);

delayMicroseconds(500);

digitalWrite(stepPin, LOW);

delayMicroseconds(500);

 

Mengontrol jumlah langkah atau putaran:

Perulangan for mengulangi baris kode di atas beberapa kali yang mewakili langkah-langkah per revolusi. Misalnya, jika driver disetel ke mode ¼ langkah, maka kode di for loop harus dieksekusi 800 kali untuk mendapatkan 1 putaran, yaitu,

for(int i = 0; i < 800; i++) {

    digitalWrite(stepPin,HIGH);

    delayMicroseconds(500);

    digitalWrite(stepPin,LOW);

    delayMicroseconds(500);

  }

Jika motor diatur ke mode 1/8 langkah, maka putaran for di atas akan menghasilkan setengah putaran.

Mengontrol arah putaran motor.

Arah putaran motor stepper ditentukan dengan menyetel pin arah (DIR+) baik  HIGH atau  LOW dan tergantung pada bagaimana Anda menghubungkan motor stepper, saat pin DIR disetel HIGH, motor akan berputar searah jarum jam dan saat disetel  LOW berputar berlawanan arah jarum jam.

Mengontrol kecepatan putaran motor.

Kecepatan motor stepper ditentukan oleh frekuensi pulsa yang kita kirim ke pin STEP yang diatur menggunakan fungsi delayMicroseconds(). Semakin pendek penundaannya, semakin tinggi frekuensinya dan karenanya semakin cepat motor bekerja.


 

 

 

 

 

 

 

 

Video


 

Minggu, 26 Maret 2023

Arduino Ethernet Shield W5100 untuk Kendali LED dan mengirim data suhu/lembab ke browser

 

Introduction :

Arduino Ethernet Shield V1 menghubungkan Arduino Anda ke internet hanya dalam hitungan menit. Cukup colokkan modul ini ke papan Arduino Anda, sambungkan ke jaringan Anda dengan kabel RJ45 (tidak disertakan) dan ikuti beberapa petunjuk sederhana untuk mulai mengendalikan dunia Anda melalui internet.

 

Arduino Ethernet Shield V1 memungkinkan papan Arduino untuk terhubung ke internet. Ini didasarkan pada chip Wiznet W5100ethernet. Wiznet W5100 menyediakan tumpukan jaringan (IP) yang mampu TCP dan UDP. Ini mendukung hingga empat koneksi soket simultan. Gunakan Library  Ethernet untuk menulis sketsa yang terhubung ke internet menggunakan Arduino IDE.

 

Arduino berkomunikasi dengan W5100 dan kartu SD menggunakan bus SPI (melalui header ICSP). Ini ada di pin digital 10, 11, 12, dan 13 di Uno dan pin 50, 51, dan 52 di Mega. Di kedua papan, pin 10 digunakan untuk memilih W5100 dan pin 4 untuk kartu SD. Pin ini tidak dapat digunakan untuk I/O umum. Pada Mega, pin SS perangkat keras, 53, tidak digunakan untuk memilih W5100 atau kartu SD, tetapi harus disimpan sebagai keluaran atau antarmuka SPI tidak akan berfungsi.

Perhatikan bahwa karena W5100 dan kartu SD berbagi bus SPI, hanya satu yang dapat aktif pada satu waktu. Jika Anda menggunakan kedua periferal dalam program Anda, hal ini harus ditangani oleh pustaka terkait. Namun, jika Anda tidak menggunakan salah satu periferal dalam program, Anda harus membatalkan pilihannya secara eksplisit. Untuk melakukan ini dengan kartu SD, atur pin 4 sebagai output dan tulis tinggi ke sana. Untuk W5100, atur pin digital 10 sebagai output tinggi.

 About this project :

Dalam pelajaran ini, kami akan menunjukkan cara menggunakan W5100 Ethernet Shield dan papan Arduino UNO untuk berfungsi sebagai Server Web untuk mendapatkan suhu/kelembaban jarak jauh dari sensor DHT11 dan mengontrol browser mengendalikan LED (atau aplikasi seluler).

Preparation

Hardware:

Software:

Schematic Diagram :


 
Coding

#include <SPI.h>
#include <Ethernet.h>
#include <dht.h>
#define DHT11_PIN 7
dht DHT;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
IPAddress ip(192, 168, 0, 141); //uncomment this line if you want define static IP instead of dynamic IP from DHCP server
EthernetServer server(80); //server port

String readString;
int ledPin = 8;

void setup(){
Serial.begin(9600);
Serial.println("connect DHCP server");
    pinMode(ledPin, OUTPUT); //pin selected to control
    // Test LED
    digitalWrite(ledPin, HIGH); // set pin high
    delay(500);
    digitalWrite(ledPin, LOW); // set pin low
    
    //start Ethernet
     Ethernet.begin(mac,ip); // if you defined static ip in line 28, change this line to   Ethernet.begin(mac,ip);
     server.begin();
     Serial.print("Please use your browser to visit http://");
  Serial.println(Ethernet.localIP());
}

void loop(){
    
    EthernetClient client = server.available();
    if (client) {
        while (client.connected()) {
            if (client.available()) {
                char c = client.read();
               
                //read char by char HTTP request
                while (readString.length() < 100 && c != 0x0D  ) {
                    //store characters to string
                    readString += c;
                    c = client.read();
                }
            
                Serial.println(readString);
          int chk = DHT.read11(DHT11_PIN);
            String msg="HTTP/1.1 200 OK\n\rContent-Type: text/html\n\r\n\r";
     msg +="<HTML><BODY><H1 style=\"color:green;\">Test W5100 ETHERNET SHIELD</H1><br>";
     msg +="<HTML><BODY><H1 style=\"color:red;\">By ZENTRONIC.CO.ID</H1><br>";
     msg +="<H2><a href=\"/?LEDON\"\">Turn On LED</a><br></H2>";
 
     msg +="<H2><a href=\"/?LEDOFF\"\">Turn Off LED</a><br></H2>";
        msg +="<p>Real time temperature: ";
   msg +=  DHT.temperature;
    msg +=  " C ; Real time Humidity: " ;
    msg += DHT.humidity ;
     msg += "%</p></BODY></HTML>";
 
                    client.println(msg);

                    delay(10);
                    //stopping client
                    client.stop();

                    // control arduino pin
                    if(readString.indexOf("?LEDON") > -1) //checks for LEDON
                    {
                        digitalWrite(ledPin, HIGH); // set pin high
                    }
                    else{
                        if(readString.indexOf("?LEDOFF") > -1) //checks for LEDOFF
                        {
                            digitalWrite(ledPin, LOW); // set pin low
                        }
                    }
                    //clearing string for next read
                    readString="";

            }
        }
    }
}

Catatan : IP Address disesuaikan dengan IP address di LAN Router anda.

Blok Diagram :


 

Running Result

Ketika kode berjalan di papan Arduino, buka Serial Monitor (atur baud rate ke 9600 di sudut kanan bawah), Anda akan melihat monitor serial menampilkan IP perangkat Anda di halaman berikut:

 


 

Kunjungi alamat IP di atas dari browser, Anda dapat melihat data suhu dan kelembaban di browser yang dikumpulkan oleh sensor DHT11 yang terhubung ke pin D8 sebagai berikut:

Test W5100 ETHERNET SHIELD

By ZENTRONIC.CO.ID

Turn On LED

Turn Off LED

Real time temperature: 0.00 C ;real time Humidity: 0.00%

Sekarang di monitor serial Arduino IDE Anda, Anda akan melihat sesuatu seperti GET /…… , ini adalah pesan yang berasal dari browser jarak jauh.

Saat Anda mengklik tombol Nyalakan LED di halaman ini, LED yang terhubung ke D7 akan menyala. Serial monitor akan menampilkan GET /?LEDON HTTP/1.1 , ini adalah pesan dari browser yang menyuruh Arduino untuk menyalakan LED.

 



Sekarang Ketika Anda mengklik Matikan tombol LED di halaman browser, LED yang terhubung ke D7 akan mati. Serial monitor akan menampilkan GET /?LEDOFF HTTP/1.1 , ini adalah pesan dari browser yang menyuruh Arduino untuk mematikan LED.

 Video :


 

Selasa, 21 Maret 2023

Tutorial Motor Stepper Arduino - Menghubungkan Motor Stepper 28-BYJ48 dengan Arduino Uno

 


Motor stepper semakin mengambil posisinya di dunia elektronik. Mulai dari kamera Pengawas biasa hingga mesin/Robot CNC yang rumit, motor stepper ini digunakan di mana-mana sebagai aktuator karena menyediakan pengendalian yang akurat. Motor Stepper adalah motor sinkron tanpa sikat yang menyelesaikan putaran penuh menjadi beberapa langkah. Dalam tutorial motor stepper Arduino ini kita akan belajar tentang motor stepper 28-BYJ48 yang paling umum tersedia dan bagaimana menghubungkannya dengan Arduino menggunakan modul motor stepper ULN2003.

Stepper Motors:

Mari kita lihat motor Stepper 28-BYJ48 ini.

 


Oke, jadi tidak seperti motor DC biasa yang satu ini memiliki lima kabel dengan semua warna mewah yang keluar darinya dan mengapa demikian? Untuk memahami hal ini pertama-tama kita harus mengetahui cara kerja stepper dan apa keistimewaannya. Pertama-tama motor stepper tidak berputar, mereka melangkah dan juga dikenal sebagai motor langkah. Artinya, mereka hanya akan bergerak selangkah demi selangkah. Motor ini memiliki urutan kumparan yang ada di dalamnya dan kumparan ini harus diberi energi dengan cara tertentu untuk membuat motor berputar. Ketika setiap kumparan diberi energi, motor mengambil satu langkah dan urutan energi akan membuat motor mengambil langkah terus menerus, sehingga membuatnya berputar. Mari kita lihat kumparan yang ada di dalam motor untuk mengetahui dengan pasti dari mana asal kabel ini.

 


Seperti yang Anda lihat, motor memiliki pengaturan koil 5-lead Unipolar. Ada empat kumparan yang harus diberi energi dalam urutan tertentu. Kabel Merah akan dipasok dengan +5V dan empat kabel yang tersisa akan ditarik ke ground untuk memicu koil masing-masing. Kami menggunakan mikrokontroler seperti Arduino memberi energi pada kumparan ini dalam urutan tertentu dan membuat motor melakukan jumlah langkah yang diperlukan.

Nah sekarang, kenapa motor ini dinamakan 28-BYJ48? Dengan serius!!! Aku tidak tahu. Tidak ada alasan teknis mengapa motor ini dinamai demikian; mungkin kita harus menyelam lebih dalam ke dalamnya. Mari kita lihat beberapa data teknis penting yang didapat dari datasheet motor ini pada gambar dibawah ini.

 


Calculating the Steps per Revolution for Stepper Motor:

Penting untuk mengetahui cara menghitung langkah per Revolusi untuk motor stepper Anda karena hanya dengan begitu Anda dapat memprogramnya secara efektif.

Di Arduino kita akan mengoperasikan motor dalam urutan 4 langkah sehingga sudut langkahnya menjadi 11,25° karena 5,625°(diberikan dalam lembar data) untuk urutan 8 langkah akan menjadi 11,25° (5,625*2=11,25).

     Langkah per putaran = 360/sudut langkah

Di sini, 360/11,25 = 32 langkah per revolusi.

Circuit Diagram :

Diagram rangkaian untuk proyek kontrol motor stepper arduino ditunjukkan di bawah ini. Kami telah menggunakan motor Stepper 28BYJ-48 dan modul Driver ULN2003. Untuk memberi energi keempat kumparan motor stepper kami menggunakan pin digital 8,9,10 dan 11. Modul driver ditenagai oleh pin 5V dari Arduino Board.

Tapi, nyalakan driver dengan Catu Daya Eksternal saat Anda menghubungkan beberapa beban ke motor stepa. Karena saya hanya menggunakan motor untuk tujuan demonstrasi, saya telah menggunakan rel +5V dari Papan Arduino. Ingat juga untuk menghubungkan Ground Arduino dengan ground modul Diver.

 

Code Explanation

  • First, download the libraries Stepper.h. You can download the libraries from:

https://github.com/arduino-libraries/Stepper

 

Code for Arduino Board:

// Arduino stepper motor control code

#include <Stepper.h> // Include the header file

// change this to the number of steps on your motor

#define STEPS 32

// create an instance of the stepper class using the steps and pins

Stepper stepper(STEPS, 8, 10, 9, 11);

int val = 0;

void setup() {

  Serial.begin(9600);

  stepper.setSpeed(200);

}

void loop() {

  if (Serial.available()>0)

  {

    val = Serial.parseInt();

    stepper.step(val);

    Serial.println(val); //for debugging

  }

}

Working of Stepper Motor with Arduino:

Setelah koneksi dibuat, perangkat keras akan terlihat seperti ini pada gambar di bawah.

 

 

 

Kontrol Motor Stepper Arduino

Sekarang, unggah program di bawah ini ke Arduino UNO Anda dan buka monitor serial. Seperti yang telah dibahas sebelumnya kita harus melakukan 2048 langkah untuk membuat satu putaran penuh, jadi ketika kita memasuki 2048 motor akan melakukan satu putaran penuh searah jarum jam dengan melakukan 2048 langkah. Untuk memutar berlawanan arah jarum jam cukup masukkan angka dengan tanda “–“negatif. Jadi, memasuki -1024 akan membuat motor berputar setengah jalan berlawanan arah jarum jam. Anda dapat memasukkan nilai yang diinginkan, seperti memasukkan 1 akan membuat motor hanya mengambil satu langkah.



 

Semoga Anda memahami proyek ini dan senang membangunnya. Jika Anda ragu mempostingnya di bagian komentar di bawah kami di forum kami.

Arduino – LM35 Temperature Sensor

  Sensor Suhu seri LM35 adalah perangkat suhu sirkuit terpadu presisi dengan tegangan keluaran yang berbanding lurus dengan suhu Celcius. ...