Ana Sayfa STM32F4 Discovery STM32F4 Discovery DC Motor Uygulaması

STM32F4 Discovery DC Motor Uygulaması

6 min read
8
0
5,560

DC motorlar endüsrtride uzun zamandan beri çok kullanılan motor tipidir.DC motorlar,sabit bir mıknatıs  ve içinde bir rotor içerirler.

DC motorlar direkt olarak mikrodenetleyici çıkışı ile süremeyiz.Bu nedenle sürücü devreler kullanılır.DC motorların sürücü ve yön kontrolü için H-köprü devreleri kullanılır.Köprü devreleri genellikle transistör ile yapılır.Fakat hem yön hem hız kontrolü için köprü devrelerinde  transistör yerine mosfet kullanılabilir.

3304-idea

 

A ve D veya B ve C MOSFET çiftine uygulanan gate sinyali PWM mantığına göre kontrol edilirse motorun hızı da kontrol edilmiş olur.Şekildeki diyotlar,DC motor tarafından oluşabilecek ters EMK’nın devre elemanlarına zarar vermesini önlemek için kullanılmıştır.Bu iş için BA159 hızlı diyotu gibi diyot modelleri tercih edilir.

Çoğu DC motor uygulamalarında H köprü sürücülerini içinde barındıran entegre elemanlar kullanılabilir.L293,L298,L6201,L6202,,L6203 veya LMD18200 gibi entegreler DC motor sürücü için kullanılabilir.Biz bu bölümde L298 entegresini inceleyeceğiz.

L298 DC Motor Sürücü Entegresi

L298 DC motor sürücü entegresi,içerisinde iki adet transistörlü sürücü devre barındırır.Bu entegre ile 2 adet motor kontrol edilebilir.Çalışma gerilimi 46V’a kadardır.Çıkış gerilimi 4 Ampere kadar çıkmaktadır.Entegre aynı zamanda aşırı ısı korumasına sahiptir.

Datasheetine buradan ulaşabilirsiniz.

Entegre hakkında bilgi verdikten sonra devremiz hakkında bilgi vereceğiz..

Aşağıda gördüğünüz devrede motorun ileri,geri ve dur işlemlerini gerçekleştiren şema gösterilmektedir.Motoru ileri yönde hareket ettirmek istediğmiz zaman STM32F4 Discovery kartının PA1 pinine bağlı buton basılması yeterlidir.Geri hareket için PA2 pinine bağlı butona basılması yeterlidir.Dur işlemi için PA3 pinine bağlı butona basılması yeterlidir.

DDD

 Aşağıda sürücü devreli motor şematik olarak gösterilmektedir.Entegrenin 5 nolu ucuna PD12 ,7 nolu ucuna PD13,6 nolu ucuna PD14 ve 11 nolu ucuna PD15 bağlanması gerekmektedir.

0219-1024x324

Devremizle ilgili yazılım aşağıda gösterilmektedir.


#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"

int main(void) {
GPIO_InitTypeDef GPIO_InitDef;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
//D portu cikis pinleri ayarlan1yor....
GPIO_InitDef.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOD, &GPIO_InitDef);

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
//A portu giris pinleri ayarlan1yor....
GPIO_InitDef.GPIO_Pin =GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitDef.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOA, &GPIO_InitDef);
//L298 enable A kanali aktif ediliyor....
GPIO_SetBits(GPIOD, GPIO_Pin_14);
//L298 enable B kanali inaktif ediliyor....
GPIO_ResetBits(GPIOD, GPIO_Pin_15);

while (1) {
//Motor ileri hareket....
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)) {
GPIO_SetBits(GPIOD, GPIO_Pin_12);
GPIO_ResetBits(GPIOD, GPIO_Pin_13);
}
//Motor geri hareket....
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2))
{
GPIO_SetBits(GPIOD, GPIO_Pin_13);
GPIO_ResetBits(GPIOD, GPIO_Pin_12);
}
//Motor durdur....
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3))
{
GPIO_ResetBits(GPIOD, GPIO_Pin_12);
GPIO_ResetBits(GPIOD, GPIO_Pin_13);
}
}
}

Kodlara buradan ulaşabilirsiniz…….

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Bilal Kaya
Daha Fazla Göster -  STM32F4 Discovery

8 Yorumlar

  1. Kadir

    10 Temmuz 2015 at 02:09

    iyi günler öncelikle paylaşım için teşekkürler ancak ben bu kodları direk yapıştırınca hata alıyorum hata şu şekilde;
    .\Objects\proje1.axf: Error: L6218E: Undefined symbol GPIO_Init (referred from main.o).
    .\Objects\proje1.axf: Error: L6218E: Undefined symbol GPIO_ReadInputDataBit (referred from main.o).
    .\Objects\proje1.axf: Error: L6218E: Undefined symbol GPIO_ResetBits (referred from main.o).
    .\Objects\proje1.axf: Error: L6218E: Undefined symbol GPIO_SetBits (referred from main.o).
    .\Objects\proje1.axf: Error: L6218E: Undefined symbol RCC_AHB1PeriphClockCmd (referred from main.o).
    Not enough information to list image symbols.
    Bunun çözümü nedir acaba

    Reply

    • Bilal Kaya

      Bilal Kaya

      10 Temmuz 2015 at 07:14

      Hocam Keil mi kullanıyorsunuz.Cevabınız evetse eğer,keil de eksik kütüphane eklemişsiniz gibi görünüyor veya yanlış yol tanımlamışsınız veya tanımlamamışsınız

      Reply

      • Bilal Kaya

        Bilal Kaya

        10 Temmuz 2015 at 07:17

        Ayrıca proje dosyalarının tamamına ulaşabileceğiniz bir link vermiştik yazımızda.

        Reply

  2. Kadir

    11 Temmuz 2015 at 14:31

    evet keil kullanıyorum. ben kütüphaneleri kontrol ettim onlarda sıkıntı yokta yanlış yol tanımlamak derken nasıl anlamadım daha yeniyim bu konuda

    Reply

    • Kadir

      11 Temmuz 2015 at 14:32

      ayrıca bütün uygulamalarımda bu hatayı alıyorum

      Reply

      • Bilal Kaya

        Bilal Kaya

        11 Temmuz 2015 at 20:37

        Problem proje dosyası nasıl oluşturulur konusunda.Keil’de kullanacağınız kütüphaneleri ekleyeceksiniz,ayrıca program içinde target options bölümünde C/C++ bölümünde,includepath kısmında yolları belirtmeniz lazım.Bu konu ile ilgili keil de nasıl proje oluşturlu videosu var sitemizde.Oradan bakabilrisin

        Reply

  3. […] entegrelerini kullanarak da çalışabilirsiniz.Motor sürücü devresi ile ilgili detaylı bilgiye buradan ulaşabilirsiniz.Konveyörümüzü tek yönde çalıştırılmıştır.İstenildiği takdirde […]

    Reply

  4. Semih

    5 Nisan 2017 at 22:18

    Hocam iyi günler öncelikle benim projemin bir kısmı stm ile dc motorda akım ölçümü ile alakalı bunun için izleyebileceğim bir yol var mı yardımcı olursanız çok sevinirim.Stm32f4 kullanıyorum motor sürücüm LMD18200 motoru başarılı bir şekilde sürdüm fakat akım sensörünü kullanma konusunda kod olarak bir tecrübem yok. akım sensörü olarak da ACS712 kullanacağım.Program olarak mikroc kullanıyorum yardımlarınız için şimdiden teşekkür ederim.
    İyi çalışmalar.

    Reply

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

Lazer İşleme Makinesi Yapımı

Merhaba arkadaşlar,bu projemizde sizlerle birlikte lazer işleme makinesi yapımını göreceği…