Otonom Araç Kontrol Sistemi

STM32 Nucleo ile DMA Üzerinden PWM Servo Motor Açı ve Hız Kontrolü

Öğrenci Bilgileri

Ad Soyad:
Yusuf Ulaş
Sınıf:
11/D
Numara:
160
Okul:
Nuri Demirağ MTAL
Bölüm:
Bilişim Teknolojileri

Projenin Amacı

Bu projenin amacı, STM32 Nucleo geliştirme kartı kullanılarak servo motorların PWM sinyali ile kontrol edilmesini sağlamaktır. Bu sistem otonom araçlarda direksiyon yönlendirmesi, kamera yönü, sensör açısı veya mekanik parçaların hareket ettirilmesi için kullanılabilir.

Projede DMA kullanılarak PWM değerlerinin işlemciyi sürekli meşgul etmeden aktarılması hedeflenmiştir. Böylece mikrodenetleyici başka işlemleri de aynı anda daha verimli şekilde yapabilir.

Proje Görselleri ve Sistem Şeması

STM32 Nucleo Kartı

STM32 Nucleo Kartı

Servo Motor

Servo Motor

Otonom Araç Tasarımı

Otonom Araç 3D Tasarımı

Sistem Akışı:

Sensör Verisi → STM32 Nucleo → PWM Sinyali → Servo Motor → Araç Yön Kontrolü

Not: Bu alanlara daha sonra kendi çektiğiniz STM32, servo motor veya 3D tasarım görselleri eklenebilir.

PWM Nedir?

PWM, yani Darbe Genişlik Modülasyonu, dijital sinyal kullanarak motor gibi elemanları kontrol etmeye yarayan bir yöntemdir. Servo motorlarda PWM sinyalinin darbe süresi değiştirilerek motorun hangi açıya döneceği belirlenir.

Servo Motor Açı Kontrolü

Servo motor genellikle 0 ile 180 derece arasında hareket eder. PWM darbe genişliği az olduğunda motor bir tarafa, fazla olduğunda diğer tarafa döner.

Örnek:
1 ms PWM → 0 derece
1.5 ms PWM → 90 derece
2 ms PWM → 180 derece

DMA Nedir?

DMA, Direct Memory Access anlamına gelir. DMA sayesinde veriler işlemciden bağımsız olarak bellekteki alandan donanıma aktarılabilir. Bu projede DMA, PWM değerlerini zamanlayıcıya aktarmak için kullanılabilir.

DMA Kullanmanın Avantajları

Fusion 360 ile 3D Parça Tasarımı

Otonom araç uygulamasında yalnızca yazılım değil, mekanik tasarım da önemlidir. Fusion 360 programı ile araç gövdesi, servo motor bağlantı parçaları, tekerlek yuvaları ve sensör tutucuları tasarlanabilir.

3D tasarım sayesinde parçalar önce bilgisayar ortamında modellenir. Daha sonra gerekirse 3D yazıcı ile üretilebilir. Bu da projenin daha düzenli ve profesyonel görünmesini sağlar.

STM32 PWM Servo Motor Örnek Kod

Aşağıdaki örnek kod, STM32 üzerinde servo motor açısını PWM değeriyle değiştirme mantığını göstermek için hazırlanmıştır.

#include "main.h"

TIM_HandleTypeDef htim1;

void Servo_Aci_Ayarla(uint8_t aci)
{
    uint16_t pwm_degeri;

    /*
      0 derece  -> 500
      90 derece -> 1500
      180 derece -> 2500
    */

    pwm_degeri = 500 + ((aci * 2000) / 180);

    __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pwm_degeri);
}

int main(void)
{
    HAL_Init();
    SystemClock_Config();

    MX_GPIO_Init();
    MX_TIM1_Init();

    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);

    while (1)
    {
        Servo_Aci_Ayarla(0);
        HAL_Delay(1000);

        Servo_Aci_Ayarla(90);
        HAL_Delay(1000);

        Servo_Aci_Ayarla(180);
        HAL_Delay(1000);
    }
}

DMA ile PWM Mantığı Örnek Kod

uint32_t pwmVerileri[5] = {500, 1000, 1500, 2000, 2500};

HAL_TIM_PWM_Start_DMA(
    &htim1,
    TIM_CHANNEL_1,
    pwmVerileri,
    5
);

Bu örnekte PWM değerleri bir dizi içinde tutulur. DMA bu değerleri sırayla zamanlayıcıya aktarır. Böylece servo motor farklı açılara otomatik olarak hareket edebilir.

Otonom Araçta Kullanım Mantığı

Otonom araçta sensörlerden gelen bilgiler STM32 tarafından değerlendirilir. Örneğin araç sağ tarafta engel algılarsa servo motor sola dönebilir. Sol tarafta engel algılarsa servo motor sağa dönebilir. Böylece araç çevresine göre yön değiştirebilir.

Basit Karar Mantığı:

Engel sağda ise → Servo sola döner
Engel solda ise → Servo sağa döner
Engel yoksa → Araç düz gider

Sonuç

Bu projede STM32 Nucleo kartı ile PWM ve DMA kullanılarak servo motor kontrolünün nasıl yapılabileceği açıklanmıştır. Proje fiziksel olarak tam yetiştirilememiş olsa da çalışma mantığı, kullanılan teknolojiler, yazılım örnekleri ve 3D tasarım kısmı detaylı olarak anlatılmıştır.

Hazırlanan bu web sayfası, otonom araç projesinin teorik altyapısını ve geliştirme sürecini göstermek amacıyla hazırlanmıştır.

Web hosting by Somee.com