PIC PROGRAMLAMA hbozkurt@mekatroniklab.com www.mekatroniklab.com.tr STEP MOTOR SÜRÜCÜ VE KONTROL AMAÇ Bu ayki sayımızda, özellikle CNC ve robotik uygulamalarda oldukça yaygın olarak kullanılan step motorlar için genel amaçlı bir step motor sürücü devresi ve PIC6F877 mikrodenetleyici ile kontrolünü gerçekleştireceğiz. NEDİR? Step Motor ( Adım Motor ), adından da anlaşılacağı üzere dönüş hareketini adım adım şeklinde gerçekleştiren motor tipleridir. İçerisinde bulunan bobinlere uygun sinyaller gönderildiğinde, istenilen yönde, hızda ve açıda hareketlerini gerçekleştirebilir. Motorun bir adımda gerçekleştirebileceği dönme açısını, içerisindeki sarım şekilleri belirler. Yapılarına göre step motorlar beş çeşittir. Bu uygulamamızda en yaygın olarak kullanılan unipolar step motorların sürücü devresi ve kontrolü üzerinde uygulama gerçekleştireceğiz. Unipolar Step Motorlar Unipolar step motorlar piyasada 5 veya 6 uçlu olarak bulunabilir. 5 uçlu motorlarda iki ortak uç motor içerisinde birleştirilerek tek çıkış olarak motor dışarısına aktarılır. 6 uçlu motorlarda ise iki ortak uç ayrı ayrı motor dışarısına aktarılır. Geriye kalan 4 kablo, motor kontrolünde kullanılan bobin uçlarıdır. VCC A B C D VCC Uç TESPİTİ NASIL YAPILIR? VCC BESLEME ORTAK UÇLARI ( 2 VEYA OLABİLİR ) VCC BOBİN A BOBİN B BOBİN C MOTOR KONTROL UÇLARI BOBİN D Motor kabloları üretici firmaya göre farklılıklar gösterdiği için bobin kabloları için renk kullanmadık..adim : Ölçü aletini Ohm kademesine aldıktan sonra bütün uçlar arasındaki direnç değeri ölçülür. Arasında eşit direnç değerini gösteren uçlar motorun ortak uçlarıdır. Ölçülen direnç değeri kullanılan motor çeşidine göre farklılıklar gösterebilir. 2.ADIM : Bulunan ortak uçlar enerji kaynağının pozitif ( + ) kutbuna bağlanır. Diğer 4 kablodan herhangi bir tanesi enerji kaynağının toprak ( - ) kutbuna bağlanır ve sabitlenir. 3.ADIM : Geriye kalan 3 kablodan herhangi birisini seçip toprak ( - ) kutbuna bağlanır. Bağlama esnasında step motorda 3 farklı durum gözlemlenir. A) Hareket saat yönünde bir adım şeklinde dönüş oluşturmuş ise bu uç B numaralı bobindir. B) Hareket saat yönünün tersinde olmuş ise bu uç D numaralı bobindir. C) Eğer motorda herhangi bir hareket olmuyor ise bu uç C numaralı bobindir. D) B,C ve D uçları tespit edildikten sonra geriye kalan uç A numaralı bobin olduğu tespit edilir. e-mekatronik 0
KONTROLÜ NASIL YAPILIR TEK FAZ UYARTIM : Motor içerisindeki bobinlerden sadece birisinin uyartılarak gerçekleştirilen kontrol şeklidir. Bu kontrol şeklinde gönderilen her bir uyartımda motor bir adımlık dönüş hareketi gerçekleştirmektedir. Hareketin yönü ise uygulanan adım sinyalinden bir sonraki uyartım sinyaline göre belirlenmektedir. SAAT YÖNÜ ADIM- 0 0 0 ADIM-2 0 0 0 ADIM-3 0 0 0 ADIM-4 0 0 0 SAAT YÖNÜNÜN TERSi ADIM- 0 0 0 ADIM-2 0 0 0 ADIM-3 0 0 0 ADIM-4 0 0 0 Tablo, Tek Faz Uyartım Tablosu İKİ FAZ UYARTIM : Bu kontrol yönteminde motorun iki bobinine aynı anda uyartım sinyali gönderilerek dönme hareketi sağlanır.. Bu yöntemle gerçekleştirilen kontrol yönteminde motor tek faz uyartım yöntemine göre daha fazla akım çekmektedir. Ancak, bu yöntemde motor durum tepkileri daha hızlıdır. SAAT YÖNÜ ADIM- 0 0 ADIM-2 0 0 ADIM-3 0 0 ADIM-4 0 0 SAAT YÖNÜNÜN TERSi ADIM- 0 0 ADIM-2 0 0 ADIM-3 0 0 ADIM-4 0 0 Tablo 2, İki faz Uyartım Tablosu KARMA FAZ UYARTIM : Tek faz uyartım ile iki faz uyartım yöntemlerinin birleştirilmesi ile oluşan kontrol yöntemidir. Bu yöntemle motor, her uyartımda yarım adım ilerleme gerçekleştirmektedir. Bu yöntem ile daha küçük adım açıları ile motor hareket ettirebilir. SAAT YÖNÜ ADIM- 0 0 0 ADIM-2 0 0 ADIM-3 0 0 0 ADIM-4 0 0 ADIM-5 0 0 0 ADIM-6 0 0 ADIM-7 0 0 0 ADIM-8 0 0 SAAT YÖNÜNÜN TERSi ADIM- 0 0 0 ADIM-2 0 0 ADIM-3 0 0 0 ADIM-4 0 0 ADIM-5 0 0 0 ADIM-6 0 0 ADIM-7 0 0 0 ADIM-8 0 0 Tablo 3, Karma Faz Uyartım Tablosu e-mekatronik 02
DEVRE ŞEMALARI Regülatör Devresi : Çeşitli akımlarda çalışan step motorlar bulunmaktadır. Bu nedenle bu uygulamamızda yüksek akıma dayanıklı bir regülatör devresi kullanmaktayız. LM2576 regülatör entegresi ile 3 ampere kadar akım çeken step motorları sürebilirsiniz. Bu devreyi sadece step motor sürücü devrelerinde değil, diğer uygulamalarınızda da kolaylıkla kullanabilirsiniz. Girişine minimum +7V DC uygulamalısınız. Bu gerilimi dilerseniz adaptör jack ı dilerseniz klemens üzerinden verebilirsiniz. AÇMA / KAPATMA LM2576 + ADAPTÖR 7V 40V KLEMENS + 000uF 25V BOBİN N5822 00uF 25V 680 Ω Malzemeler LM2576 00uF 25V Kırmızı LED Bobin 00uH L Enerji LED i 680 Ohm Direnç Açma / Kapatma Anahtarı 2 li Klemens Görsel,, 3A Regülatör Devre Şeması Datasheet Link : www.mekatroniklab.com/dnypic/lm2576.pdf Adaptör Jack N5822 Motor Sürücü Devresi : Malzemeler IRL540N K Ohm Direnç N4007 Diyot Step Motor Piyasada genellikle hazır kart şeklinde step motor sürücü devreleri bulunmaktadır. Bu uygulamamızda kendi step motor sürücümüzü yapacağız. Her bobin için yüksek akımı destekleyen ve girişi TTL özellikte olan IRL540N Mosfet i kullanılmaktadır. Bu sayede, yüksek veya düşük akımlı motor sürmek için rahatlıkla kullanabilirsiniz. Projelerinizde kullanacağınız step motorun özelliğine göre bu mosfet i değiştirebilirsiniz. B, B2, B3 ve B4 girişlerine, mikrodenetleyiciden veri göndererek motoru istediğiniz yön, açı ve hızda döndürebilirsiniz. Datasheet Link : www.mekatroniklab.com/dnypic/irl540n.pdf IRL540N N4007 N4007 G D S G D S G D S G D S G D S IRL540N KΩ KΩ KΩ KΩ B B2 B3 B4 Görsel 2,, 3A Step Motor Sürücü Devre Şeması e-mekatronik 03
Butonlar V0 RS E DT4 DT3 DT2 DT Mikrodenetleyici Step Motor PIC6F877 LCD Mikrodenetleyici ve LCD Devresi : Uygulamamızda mikrodenetleyici olarak PIC6F877 kullanılmaktadır. Eğer elinizde farklı PIC mikrodenetleyiciler var ise, devrenizi düzenleyerek bu projeyi aynı şekilde gerçekleştirebilirsiniz. Uygulamada step motor sürücüsünün girişleri mikrodenetleyicinin PD7, PD6, PD5 ve PD4 portlarına, LCD ise PB7-PB4, PB ve PB0 portlarına bağlanmıştır. Menü seçim ve motor çalıştırma gibi fonksiyonları gerçekleştirmek için ise, 2 ve GERİ/ÇALIŞTIR butonları, PC3, PC2 ve PC portlarına bağlanmıştır. 4Mhz 22pF RESET 22pF 0KΩ BT3 BT2 BT B B2 MCLR 40 PB7 PA0 PB6 PA PB5 PA2 PB4 PA3 PB3 PA4 PB2 PA5 PB PE0 PB0 PE VCC PE2 GND VCC PD7 GND PD6 OSC PD5 OSC2 PD4 PC0 PC7 PC PC6 PC2 PC5 PC3 PC4 PD0 PD3 PD 20 PD2 2 5 Ω 6 B4 B3 0 kω DT4 DT3 DT2 DT E RS LCD_POT V0 PB.4 PB.5 PB.6 PB.7 PB. PB.0 PD.0 PD. PD.2 PD.3 PC. PC.2 PC.3 LCD için DT DT2 DT3 DT4 E Step Motor için Butonlar için RS B B2 B3 B4 BT3 BT2 BT Y O N ( ) H I Z ( 2 ) G E R İ / C A L I S T I R S E C İ M Y A P I N I Z 4X20 KARAKTER LCD Malzemeler PIC6F877 4X20 Karakter LCD Push Buton 4Mhz Kristal 22pF Kondansatör 0K, 5 Ohm Direnç 0KΩ BT 0KΩ 0KΩ BT2 BT3 2 GERİ / ÇALIŞTIR Görsel 3, Mikrodenetleyici Bağlantı Devre Şeması e-mekatronik 04
Device = 6F877 ' Kullanılan Mikrodenetleyici XTAL 4 ' Çalışma Frekans Değeri Declare LCD_DTPIN PORTB.4 ' Data portlarının başlangıç biti Declare LCD_ENPIN PORTB. ' Enable bitinin bağlu olduğu port Declare LCD_RSPIN PORTB.0 ' Reset bitinin bağlı olduğu port Declare LCD_INTERFACE 4 ' LCD 4 bit çalıştırılmaktadır Declare LCD_LINES 4 ' LCD 4 satırdır DelayMS 250 ' 250mS Bekle Cls ' LCD Ekran temizlenir TRISD = %00000000 ' Mikrodenetleyicinin D portunun tüm bitleri çıkış TRISC = % ' Mikrodenetleyicinin C portunun tüm bitleri giriş Dim HIZ As Word ' HIZ değişkeni Word boyutunda tanımlanır Dim YON As Bit ' YON değişkeni Bit boyutunda tanımlanır Symbol BUTON = PORTC.3 ' PORTC.3 yerine programda BUTON sembolü kullanılacak Symbol BUTON2 = PORTC.2 ' PORTC.2 yerine programda BUTON2 sembolü kullanılacak Symbol GERI_CALISTIR = PORTC. ' PORTC. yerine programda GERI_CALISTIR sembolü kullanılacak YON = ' Ġlk ayarlanan yön SAĞ HIZ = 00 ' Ġlk ayarlanan motor hızı 00ms/adım BASLA: If GERI_CALISTIR = Then GoTo ANA_MENU GoTo BASLA ANA_MENU: PORTD = %0000 Print At,, "YON () ": Print At 2,, "HIZ (2) " Print At 3,, "CALISTIR ": Print At 4,, "---SECiM YAPINIZ----" MENU_KONTROL: If BUTON=0 Then GoTo YON_BELIRLE If BUTON2=0 Then GoTo HIZ_BELIRLE If GERI_CALISTIR = 0 Then GoTo MOTOR_CALISTIR GoTo MENU_KONTROL YON_BELIRLE: Print At,, "SAG () ": Print At 2,, "SOL (2) " If BUTON = 0 Then YON = If BUTON2 = 0 Then YON = 0 If GERI_CALISTIR = 0 Then GoTo BASLA If YON = Then Print At 3,, "YON SECiMi: SAG " If YON = 0 Then Print At 3,, "YON SECiMi: SOL " Print At 4,, " GERi " GoTo YON_BELIRLE HIZ_BELIRLE: Print At,, "ARTIR () ": Print At 2,, "AZALT (2) " If BUTON = 0 Then HIZ = HIZ + : Print At 3,, " HIZ : ",Dec HIZ," MS/ADIM" If BUTON2 = 0 Then HIZ = HIZ - : Print At 3,, " HIZ : ",Dec HIZ," MS/ADIM" DelayMS 250 If GERI_CALISTIR = 0 Then GoTo BASLA Print At 4,, "GERi " GoTo HIZ_BELIRLE MOTOR_CALISTIR: If GERI_CALISTIR = Then GoTo buton_cekildi GoTo MOTOR_CALISTIR buton_cekildi: Print At 2,, "HIZ : ",Dec HIZ," MS/ADIM" Print At 3,, " MOTOR CALISIYOR... " Print At 4,, " GERI " If YON= Then Print At,, "YON : SAG ": GoTo SAGA_DON If YON=0 Then Print At,, "YON : SOL ": GoTo SOLA_DON SAGA_DON: PORTD = %000 : DelayMS HIZ : If GERI_CALISTIR = 0 Then GoTo BASLA PORTD = %000 : DelayMS HIZ : If GERI_CALISTIR = 0 Then GoTo BASLA PORTD = %000 : DelayMS HIZ : If GERI_CALISTIR = 0 Then GoTo BASLA PORTD = %000 : DelayMS HIZ : If GERI_CALISTIR = 0 Then GoTo BASLA GoTo SAGA_DON: SOLA_DON: PORTD = %000 : DelayMS HIZ : If GERI_CALISTIR = 0 Then GoTo BASLA PORTD = %000 : DelayMS HIZ : If GERI_CALISTIR = 0 Then GoTo BASLA PORTD = %000 : DelayMS HIZ : If GERI_CALISTIR = 0 Then GoTo BASLA PORTD = %000 : DelayMS HIZ : If GERI_CALISTIR = 0 Then GoTo BASLA GoTo SOLA_DON: End HEX Uygulamanın HEX Kodu ve Simulasyon için link : www.mekatroniklab.com/dnypic/step_surucu.rar e-mekatronik 05
Akış Şeması BAŞLA Kristal ve Port Tanımlamaları LCD ve Değişken Tanımlamaları LCD TEMİZLE MENÜ Göster YÖN HIZ ÇALIŞTIR? Evet Hayır YÖN HIZ ÇALIŞTIR (SAĞ-SOL)? (ARTIR-AZALT)? ANA MENÜ: Y O N ( ) H I Z ( 2 ) G E R İ / S E C İ M C A L I S T I R Y A P I N I Z Ana menüde Yön, Hız ve Geri / Çalıştır seçenekleri bulunmaktadır.motorun dönüş yönünü ayarlamak için, hızını ayarlamak için ise 2 nolu buton kullanılmaktadır. Enerji verildiğinde başlangıç ayarları YÖN : SAĞ ve HIZ : 00mS / Adım dır. Dilerseniz bu değerleri uygulama programında değişiklik yaparak ayarlayabilirsiniz. YÖN MENÜSÜ: S A G ( ) S O L ( 2 ) Y O N S E C i M i : S G E R i A G 2 Hayır Hayır GERİ? GERİ? Evet Evet HIZ MENÜSÜ: Hayır GERİ ( DURDUR )? Evet DURDUR BİTİR Ana menü ekranında, nolu butonuna bastığınızda uygulama YÖN menüsüne dallanacaktır. Bu menüde, kullanıcı motorun dönme yönünü belirlemektedir. İlk ayar olarak SAĞ yön seçilmiştir. Motorun dönme yönünü değiştirmek için menüde gösterilen seçeneklerden birisini seçtiğinizde yön seçimi alanında değişiklik güncellenecektir. Yön belirleme işlemini yaptıktan sonra GERİ butonuna basarak ana menüye dönüş yapılır. 3 4 MOTOR ÇALIŞMA EKRANI: A R T I R ( ) A Z A L T G E R i ( 2 ) H I Z : 0 0 M S / A D I M Y O N : S A G H I Z : 0 0 M S / A D I M M O T O R C A L I S I Y O R G E R i Ana menü ekranında, 2 nolu butonuna bastığınızda uygulama HIZ menüsüne dallanacaktır. Bu menüde step motorunuzun iki adımı arasındaki süreyi belirleyebilirsiniz. Buda motorunuzun dönüş hızını değiştirecektir. İlk değer 00mS/Adım olarak tanımlanmıştır. Ayarlamanız bittikten sonra GERİ butonu ile ana menüye dönebilirsiniz. Ana menü ekranında, GERİ/ÇALIŞTIR butonuna bastığınızda program motor çalıştır alt programına dallanır ve daha önce ayarlamış olduğunuz yön ve hız bilgilerine göre motor dönmeye başlar. Motoru durdurmak için GERİ butonuna basmanız yeterlidir. e-mekatronik 06
www.mekatroniklab.com.tr
Proje Geliştirme Kitleri PIC Eğitimleri Komponent Proje Tasarım www.mekatroniklab.com.tr