Mikrokontrolcüler lojik 0 ve lojik 1 üzerine çalışan dijital cihazlar olsada analog sistem ve devrelerdede yaygın kullanıma sahiptirler. Mikrokontrolcüler örnekleme ile analog giriş voltajıda okuyabilirler. Ve onu kendi ADC (analog digital converter) ile digital değerlere çevirebilirler. Mikrokontrolcüler ayrıca PWM metodunu kullanarak harici bir cihaza analog voltaj üretebilirler. Mikrokontrolcülerin birçoğunda dahili PWM modül ve ADC modül bulunması sayesinde analog voltaj girişi ve analog voltaj çıkışı rahatlıkla sağlanabiliyor. ADC ve PWM ile temel çalışmalar yapmış kişiler bu ikisinin birlikte uygun şekilde çalışmasını sağlamanın ve yapılandırmanın nekadar karmaşık olduğunu bilirler.

İşte bütün bunlar bir arduino kartında yeni başlayan birinin bile rahatlıkla analog giriş, çıkış kullanabileceği şekilde basitleştirilmiştir. Arduino uygun bağlantılar kullanarak tek başına girişlerin ve çıkışların alınabileceği veye verilebileceği bir karttır. Arduino kartları standart iletişim portları (USAART,IIC ve USB gibi) ile dijital giriş, çıkış analog giriş, çıkış kullanılarak diğer cihazlarla haberleşme imkanı sunmaktadır.

Arduino kartları AVR mikrokontrolcüsü için gereken tüm devre sistemini üstünde barındırmasıyla ve kendi arduino boot-loader ‘ıyla parlamıştır. Etkileyici bir diğer nokta ise temel düzeydeki prototiplemeler için en uygun cihaz olarak arduino yine karşımıza çıkıyor. C programlamayla birazcık uğraşmış kişiler bile Arduino IDE kullanımını kolayca kavrayıp arduino programlamaya başlayabilmektedirler. Arduino her basit ve karmaşık işler için anlaşılması kolay dahili fonksiyonlara sahiptir. Bu projede analog giriş ve çıkışların arduino kartında nasıl kullanılacağını göreceğiz. Analog giriş cihazı için ise basit bir potansiyometre kullanacağız ve bu değişimle aynı oranda parlaklığı değişecek olan (yani analog değerlerle) LED kullanacağız.

3 (Custom)

 

Bu projede arduino pro mini ve windows işletim sistemi üzerinde arduino IDE versiyon 1.0.3 ‘ü kullandık.

10_6

2_0_3

Arduino pro-mini kartları özel olarak hantal, ağırlık yapan, boyutu büyüten parçalarından kurtularak yalnızca temel parçalarını üzerinde barındırırlar. Bu yüzden yardımcı bir donanım olarak  programı USB ‘den TTL çevirimini yaparak arduino kartına yükleyen harici çeviricisi vardır.

 

15_2

Arduino pro mini kartında maximum 8 tane analog giriş pini bulunmaktadır. Bu pinler kart üzerinde A0, A1, A2, A3, A4, A5, A6, A7 ile gösterilir. Bunlar aslında okunan analog değerlerin dahili ADC (analog’u dijitale çevirici) ile dijital eşdeğerine çevrildiği giriş kanallarıdır. Bazı pro mini kartları daha az analog pine sahiptir. Bu projede analog giriş olarak analog pin ‘0’ kullanılıyor. Potansiyometrenin değişken bacağı bu projede analog giriş olarak A0 pinine bağlanıyor. Diğer iki pine ise VCC ve GND bağlanıyor. Böylece VCC’den gerilim uygulandığında potansiyometreyi sağa sola çevirerek arduinonun analog input pininden analog değerler okunabilecektir.

 

Arduino pro mini kartı normalde 6 tane analog voltaj üretebilecek analog çıkış pinine sahiptir. Bu pinler kartta 3, 5, 6, 9, 10 ve 11 ile gösterilir. Bunlar PWM yoluyla analog voltaj üretilebilecek analog çıkış pinleridir. Bu projede analog çıkış olarak 5. pine bir LED bağlanıyor. Ledin önüne uygun bir direnç koymayı unutmayınız.  Arduinodaki kodla sürekli olarak potansiyometreden analog değerler okundukça bu değerlere bağlı olarak 5. pine bağlanan ledin parlaklığı değiştirilebilecektir.

Devre Şeması:

CIRCUIT

 

Kod:

 

Kodda kullanılan analog Read() ve analogWrite() fonksiyonları aşağıda anlatılacaktır.

 

 

analogRead()

Bu fonksiyonu kullanarak analog pinden belirli argümanları kullanarak analog değer okunabilir ve bu değer döndürülebilir. Varsayalım ki ‘var’ adında bir değişkenimiz olsun ve biz bu var değişkenine analog A0 pininden okuduğumuz değerleri atamak istiyoruz bunu kodda nasıl gösteririz.

var= analogRead(A0);

Yukarıdaki durum arduino mikrokontrolcüsünde dahili olarak bulunan ADC ‘nin aktif olmasını sağlar ve   analog değeri 10 bit’lik dijital eşdeğerine çevirip ‘var’ değişkeni içerisinde depolar. ‘var’ değişkeninin tamsayı tipinde olması beklenir.

 

 

analogWrite()

Bu fonksiyon ile analog çıkıştan analog değerlerde gerilim üretilebilir. Mesela analog pin 5 ten analogWrite() fonksiyonu kullanarak eşdeğer değeri 100 olan bir voltaj çıkışı sağlayalım. Bunu kodla nasıl sağlayabiliriz.

analogWrite(5,100);
Yukardaki durumda aslında 100 değerini 8 bitlik PWM modülüyle uygun darbe genişliğinde eşdeğer voltaj çıkışı sağlanmaktadır.

 

map()

map(), bir değer aralığını başka bir aralığa çekmeye yarayan arduinonun dahili bir fonksiyonudur. Mesela Arduinonun ADC 10 bitlik bir değer üretiyor ancak PWM modülü ise onu 8 bitlik eşdeğer formunda üretmesi gerekiyor. Eğer analog giriş değerini doğrudan analog çıkışa çevirip yazmayı isterseniz aşağıdaki gibi map() fonksiyonunu kulanabilirsiniz.

var = map(potvalue, 0, 1023, 0, 255);

Yukardaki durumda aralığı 0 ile1023 arasında olan değer doğrudan 0-255 aralığına çekilir ve ‘var’ değişkeni içinde tutulur. ‘var’ değişkeni tamsayı yada karakter olabilir.

 

 

 

 

Video: