STM32F103C8T6 ve Labview ile RF İletişim Kullanılarak SERVO Motor Kontrol Projesi

Merhaba arkadaşlar bugün sizlerle RF iletşim ile Labview  ve STM32F103C8T6  kullanılarak servo motor  kontrolünü  gerçekleştiricez. Neden bu proje ? bu soruya cevap verecek olursak arkadaşlar  RF iletişim  bakımından   robotik uygulamalarda , kendin yap projelerinde yer alan RC araba, RC tank,Drone,kumanda devreleri ve tüm hobi sayısal elektronik devrelerinin temelini oluşturması , Servo motorun   seçilmesinin nedeni ise anaolog veya dijital sinyallere verdiği ani tepki, güneş takip sistemleri, Soğuk hava depolarında ve  mekatronik test düzeneklerinde kullanılması    beni bu projenin yapımına götürmüştür.Bu cevaptan sonra isterseniz projeye adım adım başlayabiliriz arkadaşlar;

GEREKSİNİM PROGRAMLARI

İlk olarak aşağıda verilen linkleri tıklayarak programları indirelim ,

  • Labview programını kendi bilgisayarınızın özelliğine ve bu programa ait istediğiniz sürümü Labview ifadesine  tıklayarak,
  • STM32F103C8T6 kartına ait yapılan yazılımın derlenmesi için Arduino IDE ifadesine tıklayarak,
  • Arduino IDE programında kullanılan STM32 serisine ait kartların dosyalarına Arduino for STM32 ifadesine tıklayarak indirilir .
  • NOT : Arduino for STM32 linkinden İndirilen bu dosyalar .zip dosyasından çıkartılır ve ardından ise OS (C) -> Program files(x86)->Arduino -> hardware dosyasının içerisine kopyalanır.

PROJENİN AMACI

Evet arkadaşlar programlarımızı indirip kurduk şimdide  bu projede neler öğreneceğiz sorusuna aşağıdaki maddelerle açıklayacak olursak;

  1. STM32F103C8T6 kartının özelliklerini ne olduğunu , RF iletişim protokolü,   Servo Motor kavramlarını öğrenmek.
  2. STM32F103C8T6 kartına ait gömülü yazılım kodları , açık kaynak kodu olarak kullanılarak yazılımda kullanılan komutlarının kullanım amaçlarını öğrenmek.
  3. STM32F103C8T6  kullanılarak  PC ile nasıl haberleşeceğini göstermek ve öğrenmek.

TEORİK BİLGİLER

STM32F103C8T6 Kartı ve Özellikleri ;

      Evet  arkadaşlar  STM32F103C8T6 kartı  STM32F103xx serisine aittir ve en yüksek çalışma frekansı  72 MHz frekanstır. Bu kart ARM®Cortex®-M3 32-bit RISC çekirdeği mimarisine sahiptir. Programların yüklenebilmesi için 128 kb’a kadar flash bellek ve 20Kbayt kadar ise SRAM’a sahiptir. PLL konfigürasyonu için iki adet  APB veriyoluna sahiptir. STM32F103C8T6 iki adet 12 bit ADC, üç adet genel amaçlı 16 bit zamanlayıcı ve bir adet PWM zamanlayıcı ve standart ve gelişmiş iletişim arabirimlerine sahiptir. İletişim arabirimleri olarak ise içerisinde  iki adet I2C ve SPI, üç adet USART, bir USB ve bir CAN-BUS arabirimi bulunur. Çalışma gerilimi 2.0 ile 3.6 volt aralığındadır. Çalısma sıcaklığı ise -40 C ile +85 C aralığındadır.

Resim http://showmeyourcode.org/how-to-program-stm32f103c8t6/ adresinden alınmıştır.

RF İletişim Nedir ?

 RF ,radyo frekansı demektir. Bir diğer deyişle  elektriksel sinyalin  istenilen dalga boyunda iletilmesidir ve elektronik  devrelerde genellikle iki devrenin haberleşmesi için kullanılır. RF devreleri iki türdür bunlar alıcı verici devrelerdir. Bu iki devreyi genellikle 2 tane veya 1 tane mikro işlemci kontrol eder. Çalısma frekansına göre  Radyo frekansı için bir frekansa ihtiyaç vardır ve bu frekans  ayarı ya  donanımla yada  yazılım ile ayarlanabilir.

RF Modül (hc-11)

Seri RF modülü, düşük maliyetli, yüksek performanslı olup 434 MHz’de çalışmaktadır. Bunun yanında  veri alma ve aktarma kontrolü için otomatik kurulum ile küçük boyutlu, yüksek çıkış gücü, yüksek hassasiyet, uzun iletim mesafesi ve yüksek iletişim veri hızı sunar. UART arabirimi ile yalnızca UART verilerini sağlayan kablosuz veri aktarımını gerçekleştirmek kolaydır. Ayrıca bu modülü kullananlar UART baud hızını, frekansını, çıkış gücünü, veri hızını, frekans sapmasını, bant genişliği vb. parametrelerini isteğe bağlı olarak belli komutlar ile  ayarlayabilirler. Dikkat edilecek husus bu  modül ayrı ayrı çalışamaz, iletişim kurmak için en az 2 adet gerekecektir.

HC-11-433MHz-wireless-font-b-RF-b-font-serial-UART-font-b-module-b-font

Servo Motor Nedir ?

Servo motorlar DC motorların temelini kullanırlar. Fakat dc motorlara ek olarak bünyesinde DC motor, dişli sistemi ve elektronik mil pozisyon ve kontrol devresi bulunur. Servo motorlar milin kaç derece döndüğünü ve hangi hızda döndüğünü algılar ve girişe geri besleme olarak verir.Böylece girişte istene durum ile çıkış arasında bir sinyal meydana gelir. Bu sinyal dijital olarak servo motora bildirilir. Böylece pozisyon kontrol devresi kaç tur atacağını  bilir ve o kadar tur atar. R/C tipi servolarda ise encoder yoktur.Bunun yerine mile bağlanmış ve dönüşü algılayan potansiyometre vardır. Bu tip servo motorlar PWM ile çalışırlar.

tp-sg90x10__6

Bu çalışmamızda R/C servo motor olarak SG90 model servo motor kullanılacaktır. Bu servo motor ile ilgili temel bilgileri verecek olursak;

  1. Bu servo motorların kontrolünde PWM sinyalinin DUTY CYCLE değeri çok önemlidir. Duty Cycle değerine göre servo milinin açısı belirlenir. 
  2. SG90 servo motorunun periyodu 20 ms’dir. Duty cycle değeri %5 yapıldığı zaman servo motorun mili  0 derecede , %7.5 yapıldığında 90 derece , %10 yapıldığı zaman ise 180 derece dönmektedir. 

MALZEME LİSTESİ
Proje kapsamında teorik bilgiler verildikten sonra projenin devamı için gerekli olan malzemeler aşağıdaki tabloda yer verilmiştir.

MALZEME ADI MALZEME ADET MALZEME ADI MALZEME ADET
Breadboard 2 *** ***
STM32F103C8T6 1 *** ***
Data Kabloları N TANE *** ***
SG90 1 *** ***
HC-11 2 *** ***
USB TTL Dönüştürücü 1 *** ***
ST-LİNK V2 1 *** ***
*** *** *** ***

ŞEMATİK DEVRE
Bu projenin şematik bölümü fritzing programında  çizilmiştir. Şematik kısmına bakılacak olursa  seri iletişim iki kısımdan meydana gelmiştir. 1. kısımda veri gönderilip alınması  PC USB TTL dönüştürücü RF modül  sıralamasını izlemiştir. 2. kısımda ise 1.kısımdan gelen veri RF Modül STM32F103 sıralaması izlemiş ve ardından STM32 den RF modül yardımıyla PC ye gönderilmiştir. RF modül, servo motor ve STM32F103C8T6 kartının 5V kısmından besleme yapılmıştır.

NOT:5V kısmına bağlı 3.3 V regületör entegresi vardır bu bakımdan kartın 5V kısmından beslenme kısmı sorun yaşatmamaktadır. 

RF-STM32
KAYNAK KODLARI

Bu projenin gömülü yazılımı Arduino IDE  derleyecisinde  derlenmiştir. Komutlara bakılacak olursa her satır yanında.     ‘ // ‘ ifadelerinin yanında açıklamaları bulunmaktadır . Kaynak kodlarının yanındaki açıklamaları dikkate alarak proje çalışmanıza devam etmeniz önerilir.

 /*   Program Adı :RF ile Servo Motor kontrolü
      Donanım     : STM32F103C8T6
      Derleyici   : Arduino IDE 1.8.5
      MCU         : 72 MHz
      Yazan       : Adil Teoman Kurt
      Adres       : https://electrolog.blog
 */

#include <Servo.h>
const int ServoPals =25; // STM32F103 kartının B9 pini ServoPals olarak betimleniyor
int deger; //deger adında değişken tanımlanıyor
String inString=""; // inString adında string tanımlanıyor 
Servo servoKontrol;// servo kütüphanesi servoKontrol olarak tanımlanıyor

void setup()
 {
  Serial.begin(9600); //Seri iletişim başlatılıyor ve Baudrate 9600 yapılıyor
  servoKontrol.attach(ServoPals);// Servoya ait PWM sinyali servoPals değişkeni ile eşleştiriliyor
 }
void loop()// İşlem yapılacak bölüm 
{
  while (Serial.available() > 0)// Veri gelinceye kadar while döngüsü işletilmez
    {
      int data=Serial.read(); // Seri iletişim hattan gelen veri okunuyor
      if( isDigit(data)) //gelen karakterler dizi haline getiriliyor
       {
         inString +=(char)data;
       }
      
      if (data == "\n") //Gelen verinin son karakteri newline komut geince bu kısım işler
       {
         deger= inString.toInt(); //Oluşturulan string integer'a dönüştürülüyor 
         deger=map(deger,0,179,0,179);//deger ifadesi map komutu ile eş açıya bölünüyor
         servoKontrol.write(deger);//deger ifadesi servonun chipine gönderiliyor
         Serial.print("Servo motor derece : "); //PC ye tırnak içerisinde bulunan ifade gönderiliyor
         Serial.println(deger); // PC ye açı değeri gönderiliyor
         delay(15); // 15 milisaniyelik bekleme konuluyor
         inString=""; //String ifadesine boş string gönderiliyor
       }
    }
}

   
    
}

LABVIEW ARAYÜZ PANELİ
Bu projenin arayüz programı Labview programı  ile oluşturulmuştur . Programın ‘Comport Settings’ bölümü ile USB TTL dönüştürücü iletişime geçmek için yapılan ayarları, ‘Data Sent’ ile servo motor kontrolü ve  son olarak ‘Data Received ‘ kısmı ile STM32F103 den gönderien  verilerin yazıldığı bölümdür. ‘Data Sent’ kısmında ise bulunan anahtar ile servo motorun kaba veya hassas kontrolü yapılmaktadır.

Labview RF

PROJENİN VİDEOSU

Bu projede hazırlanan Labview  programına ait  arayüzünün STM32F103C8T6 ile  gerçek  zamanlı elektronik devresi ile ilgili çalışmayı anlatan videoya Labview +STM32F103C8T6+RF ifadesine tıklayarak izleyebilirsiniz.

EK DOSYALAR

Bu bölüm ise Labview arayüz dosyasının  .exe dosyasını , STM32F103C8T6 için yazılan gömülü yazılımının  .bin uzantılı  dosyasını içermektedir.

Ek dosyalar ( .bin ve .exe)

BİLGİLENDİRME

   Proje hakkında  merak ettiklerinizi  iletişim adresinden sorabilir veya yorum kısmına yazabilirsiniz arkadaşlar projede herkese  iyi çalışmalar.

Hoşçakalın…..

2 comments

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.