Yeniden Merhaba Arkadaşlar,ADC_Uygulamasi01

Bir önceki yazımızda, Energia ile MSP430G2553 uygulamalarına temel düzeyde 5 örnek vermiştik. Bu yazı ile de 6. uygulamamızı gerçekleştirmiş olacağız.

6- Analog Giriş, PWM Çıkış

Bu örnek uygulama ile, MSP430G2533  LaunchPad kartı üzerindeki  P1_0 nolu analog girişe uygulanan gerilim değerinin analogRead()  fonksiyonu  ile okunup; P2_1 nolu dijital pine bağlı olan LED ‘e, bu analog giriş değerine bağlı olarak oluşturulan PWM çıkış değeri analogWrite() fonksiyonu ile gönderilecektir.

MSP430G2553 mikroDenetleyicisi içerisinde bulunan Analogdan Dijitale Dönüştürücü (ADC : analog-to-digital converter ) ünitesi ile okunan değişken gerilim değerleri  0 ile 1023 değerleri arasında dijital değerlere dönüştürülür. O volt gerilim değer olarak 0’a, 5 volt gerilim değeri ise 1023 değerine  dönüştürülmektedir. map fonksiyonu ile de ,0-1023 arası girisDegerinin, 0-255 arası çıkış değerine oranlanması işlemi yapılır ve bu oluşan 0-255 arası değer PWM değeri olarak çıkışa gönderilir. Analog olarak okunan değer ve PWM değeri LCD ekranın da gösterilmektedir.

analogRead() ve analogWrite() fonksiyonlarının doğru çalışabilmesi için uygun özelliklere sahip pinler seçilmelidir. Uygun pinler için ;
LaunchPadMSP430G2553-V1.5  Bu uygulamaları gerçekleştirirken, MSP430G2533  LauncPad ve Çizgi-Tagem tarafından üretilen MSP430 Geliştirme Kartını (BaseBoard) kullanacağız. Uygulamalar ile açıklamalar “Program Kodu” ekranındaki, program kodları arasındaki yorum satırlarında yapılmıştır. Daha fazla bilgi veya sorularını için yorum yapabilir ya da e-posta gönderebilirsiniz.

Çizgi-Tagem tarafından üretilen MSP430 Geliştirme Kartının Uygulama İçin  Ayarlanması:

ADC_Uygulamasi02

1- Analog Giriş Pinin Seçilmesi :

ADC_Uygulamasi03

2- Çıkış LED’inin ayarlanması:

ADC_Uygulamasi05

3- LCD’nin açılması:

ADC_Uygulamasi04

4- Giriş/Çıkış değerlerinin LCD ekran görüntüsü :

/*
MSP430G2553 LaunchPad LCD, ADC ve PWM Uygulaması
Bu örnek uygulamada, MSP430 LaunchPad kartını ile 16x2 LCD kullanılarak;
Giriş pininden okunan analog bilginin, 0 ile 255 arası bir değere orantılanarak
PWM (pulse width modulation – darbe genişlik modülasyonu) ile çıkış pinine bağlı
bulunan LED in parlaklığı değiştirilecek ve LCD ekranında bu değerler gösterilecektir.
Devre bağlantıları:
=================================
LCD pin Connect to
---------------------------------
01 - GND GND, pot
02 - VCC +5V, pot
03 - Contrast Pot wiper
04 - RS Pin8 (P2.0) 2.7
05 - R/W GND
06 - EN Pin9 (P2.1) 2.6
07 - DB0 GND
08 - DB1 GND
09 - DB2 GND
10 - DB3 GND
11 - DB4 Pin10 (P2.2) 1.4
12 - DB5 Pin11 (P2.3) 1.5
13 - DB6 Pin12 (P2.4) 1.6
14 - DB7 Pin13 (P2.5) 1.7
15 - BL+ +5V
16 - BL- GND
=================================
Bu örnek uygulama kodu açık kaynaktır.
*/
// kütüphane dosyasının eklenmesi:
#include <LiquidCrystal.h>
// kütüphanede belirtilen LCD pinlerinin tanımlanması:
LiquidCrystal lcd(P2_7, P2_6, P1_4, P1_5, P1_6, P1_7);
// analogGiris ve analogCikis pinlerinin tanımlanması:
const int analogGirisPini = A0;
const int analogCikisPini = P2_1;
// POT giriş değeri ve LED çıkış değeri :
int girisDegeri = 0;
int cikisDegeri = 0;
// LCD de ADC ve PWM değerlerini göstermek için oluşturulan mesaj:
char mesaj[20];
// buraya yazdığınız ayarlama kodları, sadece bir kez çalıştırılacaktır:
void setup() {
// analogCikisPini’nin çıkış olarak tanımlanması:
pinMode(analogCikisPini, OUTPUT);
// kullanılan LCD nin sütun ve satır sayılarının belirtilmesi:
lcd.begin(16, 2);
// kürsörün belirtilen yere taşınması:
// sütun= 6, satır= 1:
lcd.setCursor(5, 0);
// LCD mesajının yazılması:
lcd.print("MERHABA");
// kürsörün belirtilen yere taşınması:
// sütun= 4, satır= 2:
lcd.setCursor(3, 1);
// LCD mesajının yazılması:
lcd.print("MCU--TURKEY");
// analogCikisPini etiketli LED 5 kez,
// yakılıp söndürülüp test edilecektir:
for(int i=0; i<5; i++)
{
digitalWrite(analogCikisPini, HIGH);
delay(30);
digitalWrite(analogCikisPini, LOW);
delay(500);
}
// LCD ekranını temizleme:
lcd.clear();
}
// buraya yazdığınız döngü kodları, sonsuz döngü olarak sürekli çalıştırılacaktır:
void loop() {
// analogGirisPini'nin değerinin okunması ve giriDegeri değişkenine aktarılması:
girisDegeri = analogRead(analogGirisPini);
// map fonksiyonu ile 0-1023 arası girisDegerinin, 0-255 arası değere dönüştürülmesi:
cikisDegeri = map(girisDegeri, 0, 1023, 0, 255);
// cikisDegeri değişken içeriğinin PWM olarak P2_1 pinindeki LED'e gönderilmesi:
analogWrite(analogCikisPini, cikisDegeri);
// kürsörün belirtilen yere taşınması:
// sütun= 2, satır= 1:
lcd.setCursor(1, 0);
// LCD mesajının yazılması:
lcd.print("ADC UYGULAMASI");
// kürsörün belirtilen yere taşınması:
// sütun= 1, satır= 2:
lcd.setCursor(0,1);
// LCD yazılacak mesaj dizisinin oluşturulması:
sprintf(mesaj, "ADC:%04d PWM:%03d", \
(girisDegeri),\
(cikisDegeri));
// mesaj dizisinin LCD ekrana yazılması:
lcd.print(mesaj);
// ADC değerinin LCD de sabit görünmesi için bekleme:
delay(300);
}

Kolay gelsin.
Erkan ÇİL
Kozan / 2014

e-posta : erkancil@gmail.com

ek: Uygulamanın Videosu:

Energia Uygulama Örnekleri(6) : Analog Giriş, PWM Çıkış