Elektronik / Mikrodenetleyici Projeleri/

PIC18F4550 ULN2803 Usb ile step motor kontrolü vb6

Sponsorlu Bağlantılar

Devre bilgisayarın USB portu üzerinden Visual Basic 6.0 ile yazılan program ile step motor kontrolü yapıyor pic yazılımı Pic Basic Pro ile hazırlanmış PIC18F4550 ve pc programının kaynak kodları var.

Elektronik ve bilgisayar endüstrisindeki gelişmeler, günlük hayatta kullandığımız birçok cihazın daha hızlı, daha güvenilir ve daha kullanışlı olmasını gerektirmektedir. Bu amaç doğrultusunda mikrodenetleyici olarak tanımlanan küçük bilgisayarlardan oldukça sık yararlanılmaktadır. Özellikle elektronik ölçme ve enstrumasyon alanında bilgisayar ve mikrodenetleyici destekli cihazların sayısı her geçen gün artmaktadır.

PIC18F4550 Mikrodenetleyicisi ile tasarlanmış bu devre ile step motorun adım adım, açısal olarak ve tur sayısı olarak döndürmek. Çağımızda elektromekanik bir çok devre step motor kullanıyor. Bu motorların kontrolü ise küçük mikro devreler aracılığıyla gerçekleştirilmektedir. Bu projedeki amaç kontrolü bilgisayar tabanlı yaparak kontrolün geliştirilmesidir.

Kullanılan Programlar

Mikro denetleyiciyi programlamak için Pic Basic Pro görsel arayüzle kontrolü sağlamak için Visual Basic 6.0 kullanılmıştır. Baskı devre tasarımı için Ares programı kullanılmıştır. Derleyici olarak Proton kullanılmıştır.

Bilgisayar Kullanıcı Arayüzü

Projenin bu kısmı Visual Basic 6.0 ile tasarlanmıştır. Şekil 2.1’de görüldüğü gibi sağ üst köşede PIC mikrodenetleyicin D Portunun ilk dört pinine giden sinyaller gösterilmiştir. Step motorumuz pic’in bu pinleri ile kontrol edilmektedir. Kırmızı olan kutucuklara “1” sinyali siyah olan kutucuklara “0” sinyali gönderilmektedir.

pic18f4550-vb6-usb-program
Şekil 2.1 Step Motor Kontrolünün Bilgisayar Ara yüzü

Yön seçeneği ise motorun hangi yöne döneceğini ayarlamaktadır. Yön seçeneğinin hemen yan tarafında bulunan çubuk hız ayar çubuğudur. Motorun hız ayarı Visual Basic’te bulunan timer komponenti ile yapılmaktadır. Döndür butonu motoru daimi olarak seçtiğimiz yünde döndürme komutu vermekte olup durdur butonu çalışmakta olan motoru durdurur.

Açı döndür butonu motorumuzu 7.5 derecenin katları şeklinde motoru açısal olarak döndürür. Tur atma butonu üstünde bulunan kutudaki sayı adedince devir yaptırma komutu verir.

step-motor-pic18f4550-usb-vb6

Pic ile bağlantı kurulduğu zaman Şekil 2.2’de görüldüğü gibi “Pic İle bağlantı kuruldu” yazısı aktif hale gelmektedir.

pic-ile-baglanti-kuruldu
Şekil 2.2 Bağlantı kurulması

Veri Aktarım Hattı USB Hakkında

USB Tarihçesi: USB arabiriminin geliştirilmesi Hewlett Packard firması ile başlamıştır. Fakat o zamanlar HP Arabirim Bus’ı olarak anılmaktaydı. Bu arabirimin sadece HP’ye yani tek bir firmaya ait olması Lisans ücretleri ve buna benzer sebeplerden dolayı istenmeyen bir durum olduğundan USB standartlarını belirlemek üzere bir örgüt kurulmuştur. Bu örgütte bulunan şirketler Intel, Microsoft, NEC, Philips HP ve Compaq’dır. Ocak 1996 tarihinde ilk olarak USB 1.0 sürümü devreye girmiş, hemen ardından Eylül 1998′ de ise USB 1.1 sürümleri hazırlanmıştır.

USB 1.1 ile gelen özelliklerden bir tanesi Kesme OUT transfer tipi’nin ve yüksek hız desteğinin eklenmesidir. (Bu transfer tipi ve diğerleri ileriki ünitelerde incelenecektir.) Aralık 2000’de ise mini-B tipi konnektör eklenmiştir. USB arabirimine destek veren ilk işletim sistemi 98 kadar kuvvetli olmada Windows 95’dir. Fakat bu arabirim 98 işletim sistemi ile yaygınlaşmıştır. Tüm gelişmelerden sonra en büyük adım olan USB 2.0 geliştirildi.20 kat olması hedeflenen transfer hızı 40 kat olarak belirlenmiş ve transfer hızı saniyede 480MBit yani 60MB olmuştur.

USB Avantajları ve Dezavantajları

USB arabiriminin avantajları denildiğinde akla ilk gelen yüksek işlem hızı ve hata denetiminin son derece güvenli olmasıdır. Böylece tasarımcıları yazılım ve donanımlarında hata denetimi ile uğraşmaktan kurtarmaktadır.USB arabirimi sinyallere fonksiyonlar yüklemediğinden birkaç USB portuna takılı cihaz aynı hat üzerinden farklı işlevleri yerine getirebilir.

Paralel porta takılı bir cihaz düşünün.Bu cihaz paralel portun bir veya birkaç bitini kendisi için tahsis edip özel bir amaçla kullanıyorsa bu diğer cihazlar için bir engel oluşturacaktır. Bir diğer avantaj ise güç sarfiyatının düşük olmasıdır. Tasarımlar sayesinde kullanılmayan cihazların güçleri kesilir fakat gerektiğinde tekrar haberleşmeye hazırdırlar. USB tasarımında kullanılacak devre elemanları pahalı değildir. Örneğin bu makaledeki projelerimizde kullanacağımız PIC18F4550 denetleyicisi Microchip firması tarafından üretilmiş, ek özellikleri ile birlikte USB modülünü de bünyesinde barındırmaktadır ve fiyatı yaklaşık 15YTL kadardır.

Bu yonganın SPI, I/O, CCP,USART, ADC, TIMERS ve kesmeler gibi ek özellikleri sayesinde hem USB haberleşmesi halledilir hem de tasarımla ilgili ek işlemler tek bir yonga ile yapılabilir. USB’nin dezavantajları denildiğinde ise akla ilk gelen eski donanımlarla uyumsuz olmasıdır. USB desteği olmayan bir sisteme USB cihazını bağlamanın tek yolu dönüştürü kullanmaktır. Fakat buda USB işlevselliğini gölgelemektedir. USB arabirimi masaüstü arabirimi olarak tasarlandığından mesafe sınırlamaları vardır.

Kablo boyutu düşük hızlı cihazlar için 3 metre tam hızlı ve yüksek hızlı cihazlar için 5 metre olabilir. Fakat hub kullanılarak bu sınır azda olsa aşılabilir. Cihazlar kendi aralarında haberleşemezler. İki mikrodenetleyici yonga seri protokol kullanarak örneğin 9600baud hızında haberleşebilirken USB sistemlerde bu söz konusu değildir. Haberleşmeyi sadece PC yönetir, başlatır ve sonlandırır. USB’nin dezavantajları hakkında bir örnek daha verirsek buda protokolün çok karmaşık olmasıdır.

Aynı zamanda USB cihazların satışlarında, cihazın üretici kimliğine sahip olması gerekir. Bu USB-IF’den 1500$ karşılığında alınabilir. Yani yüksek çaplı projeler tasarlanmak isteniyorsa USB’nin çok da ucuz olduğu söylenemez. Tüm bu dezavantajların yanında USB arabirimin diğer avantajları göz önüne alındığında başka protokollerle çalışmak zaman kaybından başka bir şey değildir.

USB Projesini geliştirmek için gerekli elemanlar

USB Denetleyici Seçimi: Piyasada USB projelerinde kullanılmak üzere farklı firmalarca tasarlanmış birçok USB denetleyicisi mevcuttur. Bazıları bir mikrodenetleyiciye arabirim olarak bağlanabilirken, bazıları da direkt denetleyici içerisinde yer almaktadır. Bir denetleyiciye arabirim olarak bağlanabilen USB arabirim yongaları maliyet, eleman fazlalığı ve giriş/çıkış uçlarının bazılarının kendilerine tahsis edilmeleri gibi unsurlardan dolayı çok fazla tercih edilmemelidir.

Fakat bu yapılacak tasarıma ve USB arabirim yongasına göre değişmektedir. Örnek vermek gerekirse USBN9604 gibi bir USB arabirim yongası, bir denetleyiciye hem paralel hem de seri olarak bağlanabilir. Aynı zamanda piyasa fiyatı kendi kategorisinde bulunan diğer yongalara göre daha ucuzdur. Fakat yinede bunun haricinde birde denetleyici yonga fiyatı olduğundan On-Chip USB yongalar daha ucuza gelmektedir.

Bu sorunların yanında tasarım yapılacak USB yonganın kolay bulunabilmesi de belli başlı bir olaydır. Aynı zamanda kullanılacak yonganın iç mimarisine hâkim olmak, internetten hazır kod ve kaynak bulmak da son derece önemli etkenlerdendir. İşte bu sorunları göz önünde bulundurarak projelerimizde, tek chip üzerinde USB arabirim modülü ve diğer çevresel donanımları bulunan PIC18F4550 yongasını kullanacağız. Bu chip’e alternatif olarak giriş/çıkış sayısı daha az olan PIC18F2550’de kullanılabilir.

PIC18F4550’nin USB Özellikleri

PIC18F4550’nin dâhili USB birimi bulunmaktadır ve temel özellikleri aşağıda listelenmiştir;

* USB 2.0 uyumludur.
* Low Speed(1.5Mb/s) ve Full Speed(12Mb/s) hızlarını desteklemektedir.
* Kontrol, Kesme, İzokron ve Yığın transferleri desteklemektedir.
* 32 Adet Uçnoktası vardır.(Çift yönlü 16 adet)
* 1KB USB Ram belleği(Dual Access)
* Dahili voltaj regülatörü
* Dahili Pull-Up dirençleri

PIC18F4550’nin USB işlemleri için ayırdığı toplam 22 adet register’ı mevcuttur. Bunların en önemli olanları ve projelerimizde sıkça kullanacaklarımız aşağıda incelenmiştir.Daha fazla bilgi ve diğer bitlerin özellikleri için chip’in datasheet’i incelenebilir. Her USB destekli microdenetleyicide olduğu gibi PIC18F4550’ninde SIE motoru bulunur.(Serial interface Engine)SIE gönderilen paketlerin çözülmesinde ve ilgili register’ların set edilmesinde aynı zamanda gönderilecek verilerinde USB paket formatına dönüştürülmesinde büyük bir rol üstlenir.PIC18F4550’nin SIE motoru dahili tranceiver’dan faydalanabileceği gibi dış bir tranceiver’ada bağlanabilir. Dahili bir 3.3 volt regülatörü vardır ve 5 volt’luk uygulamalarda dahili tranceiver’a güç sağlar.Hem SIE’nin hemde CPU’nun USB RAM’ine direkt hafıza erişimi mevcuttur.

USB Control Register – UCON –

USB-Control-Register-UCON-kontrol-yazmaci
Şekil 3.1 USB Kontrol Yazmacı

PPBRST bitinin set edilmesi tüm Ping-Pong Buffer işaretçilerinin düzenlenen tamponlara yerleştirilmesini sağlar. 0 olarak bırakılırsa Ping-Pong buffer’lar görmezden gelinir. Ping-Pong buffer özelliği birçok denetleyicide bulunur. Bu özellik bilgi setinin tampona yazılmasının hemen ardından ikinci setinde tampona yazılmasını sağlar.Böylece ilk veri gönderilirken ikinci veri seti’de gönderime hazır olur.Bu alım işleminde de aynıdır.

SE0 biti USB bus’ında Single Ended Zero durumu oluştuğunda set olur.Bu durum D+ ve D- hatlarının aynı anda yüksek olduğu özel bir durumdur.

PKTDIS biti SIE’nin paket aktarmasını ya da almasını aktif yapmak üzere kullanılan bir bayraktır.Bu bit bir SETUP paketi alınmasının ardından SIE tarafından set edilir ve paket aktarma/alma işlemi pasif yapılmış olunur.SIE’nin paket alma/aktarma işlemine tekrar izin vermek için bu bit CPU tarafından sadece temizlenebilir.

USBEN biti USB modülünü aktif/pasif yapar.Eğer cihaz bus’a bağlı ise ve bu bit set edilirse cihaz attached durumuna geçer, temizlenirse cihaz bus’dan çıkatılmış gibi olur. (Detached)Böylece cihaz’ın bus ile olan ilişkisi yazılımsal olarak kontrol edilebilir.Aynı zamanda bu bit set edildiğinde tüm PPBI yazmaçlarını 0’a kurar, USB regülatörünü dahili pull-up dirençlerini aktif yapar(Eğer ayarlandıysa)

RESUME biti PC’ye resume sinyali göndermek için kullanılır.Resume sinyali göndermek için bu bit yaklaşık 1 ile 13ms arası set edilmeli ardından temizlenmelidir.Askı durumundaki bir cihaz PC’ye haberleşmeyi canlandırması için Resume sinyali gönderebilir.

SUSPND biti USB modülün suspend duruma yani askıya geçmesini sağlar.Bu bit set edilerek SIE’nin clock kaynağı pasif yapılmış olunur.Bus’da 3ms işlem görmeyen bir cihaz suspend durumuna geçmelidir.Bu durum IDLEIF bayrağının set olmasıyla anlaşılabilir.Bu durumda SUSPND biti set edilerek suspend moduna geçilmelidir.Bus’da takrardan faaliyet başlaması durumunda ACTVIF biti set olur.Bu durumda SUSPND biti temizlenmeli ve SIE’nin clock kaynağı aktif edilmelidir.

USB Configuration Register – UCFG –

USB-Configuration-Register-UCFG-konfugurasyon-yazmaci
Şekil 3.2 USB Konfigürasyon Yazmacı

USB Status Yazmacı USB Status Register –USTAT—
USB Uç nokta n Yazmacı USB Endpoint n Control Register – UEPn –
Tampon Künyesi n Status Yazmacı (CPU Mod) BDnSTAT CPU Mod
Tampon Künyesi n Status Yazmacı (SIE Mod) BDnSTAT SIE Mod
USB Kesme Yazmacı USB Interrupt Status Register – UIR –
USB RAM Yerleşimi Buffer Descriptor ve Buffer Descriptor Tablosu
PING-PONG Buffer Özelliği USB Osilatör Konfigürasyonu Ayarları
Easy HID İle Projeyi Oluşturma

USB ile Step Motor Kontrolü projesini hazırlayan Eyüp ŞEKERLİ – tüm dosyalar: PIC18F4550 ULN2803 Usb ile step motor kontrolü vb6

Dosya indirme LINK listesi (TXT formatında) link-10944.zip şifre-pass: 320volt.com

  • fatihbarut

    harika bir paylaşım.
    Teşekkürler.

  • Tarık

    Öncelikle böyle bir paylaşım yaptığı için Eyüp ŞEKERLİ ‘ye ve emeği geçenlere çok teşşekür ederim.Ellerinize sağlık.Bir sorum olacak : devredeki 470pf kondasatörün çeşiti ve osc. kısmındaki 1M ohm’luk direncin sebebi nedir.Biraz araştırdım fakat kesin bir sonuca ulaşamadım.Şimdiden teşekkürler.

  • Tarık

    1M ohm luk direnç yüksek frekanslarda oluşan kapasite etkisini minumuma indirmek için,470pf kondansatör için dise mercimek kondasatör denen tipdeki kondasatörden kullandım ve devre sorunsuz bir şekilde çalıştı.Teşekkürler.

  • Halil

    pekala usb ile iki motor kontrolü yapmak istersek bunun için nasıl bir devre kulanmak gerekir arkadaşlar ?

  • fatih

    arkadaşlar bu devre en fazla kaç amperlik step motoru çalıştırabilir. Ben yüksek amperli bir step motor calıstırmak istiyorum. model helikopterim için.

    bu konu hakkında yardımcı olabilecek arkadaslar varsa lütfen yazsın

  • davut naci kaya

    @fatih
    bu devrede sürücü olarak uln2803 kullanılmış, bu malzeme ile küçük step motorları sürebilirsiniz. sizin step motorunuzun gücü çektiği akım nedir. ona göre mosfetli bir devre kullanmalısınız. aşağıdaki linkte n kanal power mosfet IRF510 kullanılmış bir devre var. mosfetlere soğutucuda takılabilir.

    http://elektroinfo.blogspot.com/2008/11/pic16f84-ile-projeler.html

  • fatih

    davut abi, ben aşağıdaki motorlardan bir tanesini kullanmak istiyorum yada bunlara yakın değerlerde bir motor kullanmak istiyorum.

    Şimdi ben bunları çalıştırabilmek için, bu devredeki hangi malzemeyi hangi malzeme ile değiştireyim bu konu hakkında yardımcı olur musunuz ?

    http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=14741 200kv

    http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=5158 700 KV

  • davut naci kaya

    @fatih linklerde step motorlar görülmüyor.

  • fatih

    Turnigy L2508A-3500 Brushless Heli Motor (200w)

    Specifications:
    Dimension: 25mm x 20.5mm
    Weight: 31g
    Kv: 3500rpm/V
    Voltage: 7.2v (2s)
    Max Power: 200w
    Max Current: 27A
    No load Current: 1.1A
    Diameter of shaft: 2.3mm
    ESC: 30A
    Kv (rpm/v) 3500
    Weight (g) 31
    Max Current (A) 27
    Resistance (mh)
    Max Voltage (V) 7
    Power(W) 200
    Shaft A (mm) 2.3
    Length B (mm) 21
    Diameter C (mm) 25
    Can Length D (mm) 11
    Total Length E (mm) 29

    ———-
    KB45-17XL 700kv Brushless Inrunner
    Kv: 700RPM/V
    Idle current: 1.6A (8.4V)
    Max Amp: 48A (36V)
    Max Watts: 1600W
    Max volt: 48VWeight: 557g
    Shaft: 6mm
    Size: 77x45mm
    Voltage: 36v

    This size motor will fit our larger 5inch and 4.75inch EDF perfectly. (same mounting holes & shaft size)

    Kv (rpm/v) 700
    Weight (g) 557
    Max Current (A) 48
    Resistance (mh) 0
    Max Voltage (V) 36
    Power(W) 1600
    Shaft A (mm) 6
    Length B (mm) 77
    Diameter C (mm) 45
    Can Length D (mm) 75
    Total Length E (mm) 97

    Davut abi benim için onemli olan 2nci motor, acaba bu motoru bu devre calistirir mi? icerisinden hangi parcalari hangileriyle degistirmem gerekliki bu motoru calistirsin

    http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=14741
    http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=5158

  • davut naci kaya

    Aşağıdaki linkleri inceleyin. yüksek güçlü mosfetler bu projede işinize yarayabilir. IGBT kullanmakta bir çözüm olabilir. devredeki frekans ve voltajda bu tip motorları sürmek için önemli.

    bu mosfetleri bu devrede kullanmak konusunda bir şey diyemeyeceğim, hiç bu kadar yüksek güçlü mosfet kulanmadım.

    http://www.st.com/stonline/books/pdf/docs/6035.pdf

    http://www.irf.com/product-info/datasheets/data/irfp064n.pdf

  • ahmadanuar

    can you give me the programming code in language C for stepper motor?

  • fatih

    Program çalıştı elinize sağlık çok güzel olmuş :)

  • Ramazan BALTA

    Arkadaşlar arayüz programını nerden indireceğiz?

  • osman

    pic pcye bağlanıyor ama programdan kontrol edemiyorum neden olabilir?