Isi kandungan:

Pandu Motor Stepper Dengan Mikroprosesor AVR: 8 Langkah
Pandu Motor Stepper Dengan Mikroprosesor AVR: 8 Langkah

Video: Pandu Motor Stepper Dengan Mikroprosesor AVR: 8 Langkah

Video: Pandu Motor Stepper Dengan Mikroprosesor AVR: 8 Langkah
Video: Stepper Motor Interfacing with AVR Microcontroller 2024, Julai
Anonim
Pandu Motor Stepper Dengan Mikropemproses AVR
Pandu Motor Stepper Dengan Mikropemproses AVR

Ada beberapa motor stepper yang dicabut dari pencetak / pemacu cakera / dll yang tergeletak?

Ada yang mencuba dengan ohmeter, diikuti dengan beberapa kod pemacu mudah pada mikropemproses anda dan anda akan melangkah dengan gaya.

Langkah 1: Kenali Steppers

Kenali Steppers
Kenali Steppers
Kenali Steppers
Kenali Steppers

Pada dasarnya, anda perlu mengetahui ke mana semua wayar kecil pergi.

Langkah pertama adalah untuk mengetahui sama ada motor unipolar atau bipolar. Lihat Jones di Steppers untuk latar belakang yang lebih mendalam, kemudian di Laman Ian Harries untuk kaedah mudah untuk mengetahui motor yang tidak dikenali. Baca sedikit, kemudian sertai saya dalam panduan motor ini yang saya dapat dengan harga murah. (Mereka dijual dengan harga $ 0,99 sekarang. Mereka kecil, agak ringan, tetapi tidak mempunyai banyak tork. Belum tahu apa yang akan baik.)

Langkah 2: Cari Persamaan

Cari Persamaan
Cari Persamaan
Cari Persamaan
Cari Persamaan

Oleh itu, anda mempunyai lima (atau empat, atau enam) wayar. Motor anda akan mempunyai dua bahagian, dan anda mungkin dapat mengetahui hanya dengan melihat sisi mana setiap wayar berada.

Sekiranya anda hanya melihat empat wayar, anda bernasib baik - ini adalah motor bipolar. Yang mesti anda buat ialah mengetahui dua pasang wayar yang mana satu. Sekiranya anda mempunyai motor unipolar, atau lebih daripada 4 wayar, anda mesti mematahkan ohmeter anda. Apa yang anda cari adalah wayar biasa (tanah) untuk setiap separuh. Anda dapat mengetahui yang mana tanah di motor bipolar kerana mempunyai separuh daya tahan terhadap salah satu tiang daripada tiang yang melintang di atasnya. Gambar adalah nota saya dari menyambungkan kabel ke wayar dan mencatat rintangan (atau jika mereka dihubungkan sama sekali). Anda dapat melihat bahawa Putih adalah tanah untuk trio bawah b / c ia mempunyai separuh ketahanan terhadap Merah atau Biru yang mereka miliki antara satu sama lain. (Motor ini pelik dan tidak mempunyai ketukan tengah pada gegelung magnet atas. Rasanya seperti separuh bipolar, setengah unipolar. Mungkin anda boleh menggunakan ini untuk merasakan putaran pada gegelung Merah-Putih-Biru ketika Hitam-Kuning gegelung sedang dipacu.)

Langkah 3: Perhatikan Urutan Melangkah

Tentukan Urutan Melangkah
Tentukan Urutan Melangkah

Saya akan menggerakkan motor ini sebagai bipolar, jadi saya mengabaikan wayar tanah Putih. Saya hanya mempunyai empat wayar yang perlu dibimbangkan.

Anda mungkin ingin menjalankan motor unipolar anda sebagai bipolar pula, kerana ia menggunakan keseluruhan gegelung dalam kedua fasa dan bukannya bergantian antara dua bahagian setiap gegelung. Lebih banyak gegelung = lebih banyak daya kilas. Jalankan arus melalui pasangan (perhatikan kekutuban yang anda pilih) dan kemudian jalankan arus melalui pasangan lain pada masa yang sama. Semasa memasang pasangan kedua, perhatikan arah motor yang berpusing. Tuliskan ini. Sekarang balikkan kekutuban pada pasangan pertama yang anda pilih. Kemudian sambungkan pasangan kedua lagi dengan kekutuban mereka juga terbalik. Perhatikan arah. Dari sini, anda seharusnya dapat mengetahui urutan putaran motor ke kedua-dua arah. Dalam contoh saya, kedua-duanya akhirnya berpusing berlawanan arah jarum jam, jadi melalui urutan dengan cara yang sama saya memilih akan melangkah CCW motor.

Langkah 4: Mengambil Motor untuk Memacu Uji

Mengambil Motor untuk Memacu Uji
Mengambil Motor untuk Memacu Uji

Sekiranya anda belum diatur untuk pengaturcaraan mikropemproses, anda boleh melakukan lebih buruk daripada Ghetto Development Kit atau mana-mana daripada pelbagai programmer PIC. Sambungkan kabel terus ke mikroproses anda dan bakar dengan kod berikut:

/ * Bermain dengan menggerakkan motor stepper kecil. * /

/ * Sertakan fungsi delay * / #define F_CPU 1000000UL #include / * Pin defs for ATTiny2313 * / / * Clockwise order * / #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define KUNING _BV (PB3) #define DELAY 200 / * milisaat antara langkah * / int utama (tidak sah) {DDRB = 0xff; / * Aktifkan output pada semua pin B * / PORTB = 0x00; / * Tetapkan semuanya ke 0v * / sementara (1) {/ * gelung utama di sini * / PORTB = BLUE; _delay_ms (DELAY); PORTB = HITAM; _delay_ms (DELAY); PORTB = MERAH; _delay_ms (DELAY); PORTB = KUNING; _delay_ms (DELAY); }} Seberapa mudah kod itu? Sungguh sederhana. Yang dilakukannya hanyalah membuat beberapa definisi yang bagus sehingga saya dapat merujuk pada wayar dengan warna dan bukannya nama pin mereka, dan kemudian ia menukarnya secara berurutan dengan kelewatan yang dapat disesuaikan. Sebagai permulaan, saya memilih kelewatan setengah saat antara langkah. Lihat video pendek untuk hasilnya. Sekiranya anda benar-benar menyukai permainan anda, hitung jumlah langkah per kitaran untuk mengetahui resolusi sudut satu langkah motor. (Oh ya. PS. Memandu tanpa beban pada 3.6v dengan mudah. Lihat bateri dalam video.)

Langkah 5: Ayunkannya ke Belakang dan Ke Depan

Oleh itu, anda berjaya melakukannya mengikut arah jam. Ada yang lebih menarik? Sedikit pembersihan kod, dan kita boleh menjalankannya berulang-ulang. Saya memasukkan urutan mengikut arah jam ke dalam tatasusunan sehingga anda dapat melalui fasa-fasa dengan mudah untuk gelung. Sekarang anda boleh menjalankan gelung ke atas atau ke bawah untuk mengikut arah jam atau lawan jam.

int main (tidak sah) {const uint8_t delay = 50; const uint8_t mengikut arah jam = {BIRU, HITAM, MERAH, KUNING}; uint8_t i; DDRB = 0xff; / * Aktifkan output pada semua pin B * / PORTB = 0x00; / * Tetapkan semuanya ke 0v * / sementara (1) {/ * gelung utama di sini * / untuk (i = 0; i <= 3; i ++) {/ * melangkah warna mengikut arah jam * / PORTB = mengikut arah jam ; _delay_ms (kelewatan); } untuk (i = 3; i> = 0; i -) {/ * melangkah melalui warna ccw * / PORTB = mengikut arah jam ; _delay_ms (kelewatan); }}} Lihat video yang tidak senonoh untuk mendapatkan sokongan.

Langkah 6: Saya Tidak Pernah Separuh Langkah, Kerana Saya Bukan Separuh Langkah …

Cari lirik selain, separuh langkah motor anda adalah di mana ia berada. Anda mendapat arus puncak yang lebih tinggi, tork sekejap, dan resolusi sudut dua kali. Singkatnya: Daripada Biru, Hitam, Merah, Kuning, anda memandu motor dengan Biru, Biru + Hitam, Hitam, Hitam + Merah, Merah, Merah + Kuning, Kuning, Kuning + Biru. Hasilnya ialah untuk separuh masa anda melibatkan kedua magnet sekaligus. Dan semasa kedua-dua set terlibat, motor menunjuk separuh di antara keduanya, mengecilkan sudut antara "tangga" dan menjadikan motor berpusing lebih lancar. Bolehkah anda memberitahu dari video? Saya tidak pasti… Sekarang bahagian kod yang melangkah setengah kelihatan seperti ini:

batal separuhLangkah (kelewatan uint16_t, arah uint8_t ) {uint8_t i; untuk (i = 0; i <= 3; i ++) {PORTB = arah ; / * bahagian gegelung tunggal * / _delay_ms (kelewatan); PORTB | = arah [i + 1]; / * tambah separuh langkah * / _delay_ms (kelewatan); }} Perintah PORTB pertama menetapkan kutub tunggal menjadi positif dan selebihnya menjadi negatif. Kemudian ia menunggu. Kemudian perintah PORTB kedua menetapkan tiang kedua (pada belitan yang lain) menjadi positif, melibatkan kedua belitan untuk 1.4x tork (dan 2x arus). Senarai program lengkap dilampirkan di bawah. Dua tatasusunan sekarang didefinisikan (mengikut arah jam, berlawanan arah jam) dan kedua-duanya mempunyai 5 elemen masing-masing untuk membolehkan kemasukan i + 1 dalam fungsi halfStepping.

Langkah 7: Tambahkan Pemandu Motor

Tambah Pemandu Motor
Tambah Pemandu Motor
Tambah Pemandu Motor
Tambah Pemandu Motor
Tambah Pemandu Motor
Tambah Pemandu Motor

Setakat ini begitu baik.

Satu-satunya masalah ialah motor nampaknya tidak mempunyai tork sebanyak itu, yang mungkin disebabkan oleh kenyataan bahawa mikropemproses hanya akan mengeluarkan ~ 50mA per pin. Langkah seterusnya yang jelas adalah menghubungkannya dengan pemandu motor untuk membekalkan lebih banyak jus. Tetapi kemudian berfikir sedikit: Saya hanya memandu dengan jarak 5v, dan rintangan penggulungan gegelung adalah ~ 125 ohm. Yang bermaksud bahawa motor ini hanya menarik 40mA per pin, dan ia mesti dipacu dengan baik oleh cip AVR (beefy!). Oleh itu, untuk mendapatkan lebih banyak voltan yang menggerakkan motor, saya menyambungkannya ke cip H-Bridge SN754410. Litarnya cukup sederhana. Setiap pin dari AVR menuju ke input, dan pin output yang sesuai menuju ke motor. Cip memerlukan 5v untuk bahagian logik, dan boleh mengambil voltan lebih banyak di bahagian motor. Menjalankannya pada 11.25v (tiga bateri 3.6v) sedikit sebanyak membantu. Jelas lebih banyak daya kilas pada jari saya, tetapi ia masih bukan kuasa besar. Tidak buruk untuk motor yang lebih kecil daripada nikel. Dan kini litar ini menjadi pemacu motor stepper bipolar tujuan umum. Ditambah 29 Nov: Berlari motor malam tadi pada 12v untuk beberapa saat dan ia mulai panas. Saya tidak pasti sama ada masalah frekuensi resonan atau terlalu banyak arus untuk belitan. Walau apa pun, berhati-hatilah jika anda memandu motor kecil ini dengan voltan yang lebih besar.

Langkah 8: Akhir

Jadi apa yang saya pelajari? Memandu motor stepper dengan AVR (dan cip H-bridge) cukup mudah, walaupun dalam mod setengah melangkah "mewah".

Tidak pasti apa yang akan saya lakukan dengan motor stepper kecil. Ada apa-apa cadangan?

Disyorkan: