15 Nisan 2015 Çarşamba

MSP430 G2553 kontrolörünü kullanarak L293D entegresiyle DC Motor Kontrolü



PWM (Sinyal Genişlik Modülasyonu) Tekniği Nedir?




Modülasyon işlemi gerçekleştiren bu tekniğin asıl amacı cihazlara verilen elektriğin gücünü kontrol altında tutmaktır. Sinyal bilgisinin aktarım için uygun hale çevirilmesi amacının yanı sıra güç kontrolü sağlamak ve elektrik makineleri, güneş pili şarj üniteleri gibi özel devrelere destek olmak amacı da taşır.







ROBOTİKTE SIK KULLANILAN MOTOR SÜRÜCÜ ENTEGRELER







Mikrodenetleyicilerin çıkışları DC motorları veya step motorları direkt olarak kontrol etmek için yetersiz olduğundan motor sürücü devreler kullanılır. Motor sürücü devreler ile mikrodenetleyicilerin çıkışlarından alınan sinyaller yükseltilerek motorların kontrolü sağlanır. Motor sürücü devreler transistörler kullanılarak H köprüsü ve benzeri şekillerde hazırlanabilir. Ancak genellikle kolaylık açısından motor sürücü entegre devreler tercih edilmektedir.




Robotikte en sık kullanılan motor sürücü entegre devreler; DC motor kontrolleri için L293D, L293B, L298 motor sürücü entegrelerdir. Motor sürücü entegre seçiminde temel özellik entegrenin kullanım voltajı ve akım sınırı gibi özellikleridir.




L293D ile DC Motor Kontrolü

Neden?
L293D, denetim kartlarının yüksek voltaj ve akım gereksinimi olan elemanları (motor,röle) kontrol etmesi için kullanılır. Motorun ihtiyaç duyduğu akım, denetim kartının verebileceğinden fazla olduğundan, voltajı ve akımı artırmak için sürücü devreleri kullanılmalıdır, aksi takdirde denetim kartının yanmasına sebep olunabilir.

Özellikler:
- Sağ ve sol tarafının bağımsız çalışması
- 1 adet L293D iki motoru çift yönlü kontrol edebilir



Devrenin kurulması:
- Ilk olarak, 4-5-12-13 nolu bacaklar(entegrenin tam ortasındakiler birleştirilip, toprak olarak kullanılmalıdır.
- Motorlar, 3-6 ve 11-14 nolu bacaklara bağlanır.
- 1-16-9 nolu bacaklara 5 Volt verilir.
- 2 ve 7 nolu bacaklar 1. motoru, 10 ve 15 nolu bacaklar 2. motoru çalıştırır.
- 8 nolu bacaktan, motora uygulanacak voltaj verilir (36 V’dan fazla olmamalıdır).






MSP430 G2553 7 Segment Display Code and Running




#include <msp430.h>

void kucuktenBuyuge(void); // Küçükten büyüğe sayar.
void buyuktenKucuge(void); // Büyükten küçüğe sayar.
void sayiGoster(int); // O anki sayıyı displayde gösterir.
void bekle(void); // Sayılar arası bekleme.
int i;
long int delay;
void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  P1DIR = 0xFF; // P1 çıkış olarak ayarlandı.
  P1OUT = 0x3F; // 0 sayısı displaye basıldı.
  P1OUT = 0x00; // 0 sayısı displaye basıldı.
  P1OUT = 0x86; // 0 sayısı displaye basıldı.


  while(1) // Sonsuz döngü.
  {
    kucuktenBuyuge(); // Fonksiyonlar çağrılıyor.
    buyuktenKucuge();
  }
}

void kucuktenBuyuge(void)
{

  for (i = 0 ; i < 9 ; i++) // 0'dan 9'a kadar sayar.
  {
    sayiGoster(i); // O anki sayıyı basması için fonksiyonu çağırır.
    bekle(); // Bir süre bekle.
  }
}

void buyuktenKucuge(void)
{

  for (i = 9 ; i > 0 ; i--) // 9'dan 0'a kadar sayar.
  {
    sayiGoster(i); // Sayının basılması için fonksiyon çağırır.
    bekle(); // Bir süre bekle.
  }
}

void sayiGoster(int sayi)
{
  switch(sayi) // Gelen sayı kaç?
  {
    case 0 : P1OUT = 0x3F; break; // Sayı 0 ise ilgili pinler ayarlanır.
    case 1 : P1OUT = 0x86; break; // 1
    case 2 : P1OUT = 0x5B; break; // 2
    case 3 : P1OUT = 0xCF; break; // 3
    case 4 : P1OUT = 0x66; break; // 4
    case 5 : P1OUT = 0xED; break; // 5
    case 6 : P1OUT = 0xFD; break; // 6
    case 7 : P1OUT = 0x07; break; // 7
    case 8 : P1OUT = 0xFF; break; // 8
    case 9 : P1OUT = 0xE7; break; // 9
    default : P1OUT = 0x0D; break; // Hata oluştu, displayde 'E' harfini göster.
  }
}

void bekle(void)
{

  for(delay = 0 ; delay < 20000 ; delay++); // Hiçbir işlem yapmadan bekle.
}
















Ros2 çalışmaları

 1) Her saniye yazı yazdırma. Eklediğim kod öncelikle Hello Cpp Node yazdıracak ardınca Hello ekleyecek. benim .cpp dosyamın adı my_first_no...