Arduino pinlerinin çıkış olarak ayarlandığında 0 veya 5 volt verebildiğini daha önce öğrenmiştik. Arduino üzerinden 0 ile 5 volt arasında çıkış gerilimi verebilmek için analog sinyal üretmeliyiz. Bu sinyali Arduino’nun tüm pinleri üretememektedir. Bu sinyalin üretimi için seçilecek pinlerin PWM çıkışa sahip olması gerekir. Üretilen analog sinyalin genliğiyle motor hız kontrolü, LED parlaklığının ayarlanması gibi uygulamalar yapılmaktadır.
Hatırlatma: Kullandığınız kartın üzerindeki PWM çıkışları öğrenmek için Arduino’nun web sitesine bakabilirsiniz.
PWM sinyali daha önce servo motor kontrolünde öğrenmiştik. Arduino üzerinden üretilin analog sinyal aslında bir PWM sinyalidir. Analog çıkışın gerilimi, PWM sinyalinin görev zamanıyla (duty cycle) doğru orantılı olarak değişmektedir. Örneğin %50 görev zamanına sahip bir PWM sinyali üretildiğinde çıkış geriliminin 2,5 volt olduğu görülmektedir.
Aşağıdaki resimde PWM sinyalinin görev zamanıyla çıkış gerilimi arasındaki doğru orantı gösterilmiştir:
Her ne kadar analog çıkış denilse bile aslında bu pinlerden PWM sinyali üretildiği için, bazı uygulamalarda alçak geçiren filtre kullanılması gerekebilir. Alçak geçiren filtre, yüksek frekansa sahip sinyalleri süzerek sadece düşük frekanstaki sinyallerin kullanılmasını sağlar, yani sinyali yumuşatır. Bu filtre PWM sinyaline uygulandığında dalga tepeleri ve çukurlarını birleştirerek, dalga tepesi ve çukurları oranında sabit bir çıkış gerilimi sağlamaktadır.
Alçak geçiren filtrenin devre şeması aşağıdaki resimde gösterilmiştir. Bu filtredeki direnç ve kapasitenin değerine göre, filtrenin hassasiyeti değiştirilebilir.
Motorların hız kontrolü ve LED ışığın parlaklığının ayarlanması gibi projelerde alçak geçiren filtre kullanılmasına gerek yoktur. Bu filtre sadece kesin olarak sabit analog değere ihtiyaç duyan hassas uygulamalarda kullanılmaktadır.
Analog sinyalin üretilmesi için, daha önce temel Arduino fonksiyonlarında öğrendiğimiz analogWrite fonksiyonu kullanılır. Bu fonksiyon iki giriş değişkenine ihtiyaç duymaktadır. Bu değişkenlerden ilki analog çıkışın yapılacağı pini belirler. İkinci değişken ise çıkış geriliminin belirleyecek PWM sinyalinin görev zamanıdır. Buraya 0 ile 255 arasındaki değerler yazılır. Fonksiyona 0 değeri yollandığında bu pinden 0 volt, 255 değeri yollandığında 5 volt düzeyinde çıkış gerilimi alınır.
Çıkış gerilimi 0 – 255 değerleriyle doğru orantılı olarak değişmektedir. Örneğin, 3,3 volt çıkış gerilimine sahip olmak için fonksiyona 168 değeri yazılmalıdır. Bu sinyal Arduino’nun 10. pininden alınmak istenseydi fonksiyon analogWrite(10,168); şeklinde yazılırdı.