Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

3 Mayıs 2021 Pazartesi

Arduino PWM Çıkışlarını Uzatma - TLC5940

 Arduino PWM Çıkışlarını Uzatma - TLC5940 

Bu Arduino Eğitiminde, Arduino Kartını kullanarak TLC5940 PWM Sürücüsünün nasıl kullanılacağını öğreneceğiz. TLC5940, PWM çıkışları sağlayan 16 Kanallı bir LED Sürücüdür ve Arduino PWM yeteneklerini genişletmek için mükemmeldir. Sadece LED'ler değil, bu IC ile PWM sinyallerini kullanarak servoları, DC Motorları ve diğer elektronik bileşenleri de kontrol edebiliriz.

Nasıl Genişletilir-Arduino-PWM-Outpits --- TLC5940-Eğitimi

Temel özellikler


  •  VCC = 3V ila 5V
  • 16 Kanal
  • 12 bit (4096 Adım) PWM Kontrolü
  • Sürüş Yeteneği
        - 0 mA - 120 mA (VCC> 3.6V)
        - 0 mA - 60 mA (VCC <3.6V)
  • Seri Veri Arayüzü
  • 30 MHz Veri Aktarım Hızı
  • Papatya zinciri

Papatya dizimi harika bir özelliktir, bu da birden fazla TLC5970 IC'yi seri olarak birbirine bağlayabileceğimiz anlamına gelir. Bununla, Arduino'nun PWM yeteneklerini 16'dan fazla çıkışa, örneğin 32, 48 veya 64 PWM çıkışına genişletebiliriz ve yine de Arduino Board tarafından bir TLC5940 IC'yi kontrol etmek için kullanılan aynı 4 pini kullanabiliriz.



Arduino ve TLC5940 Bağlantıları


TLC5940'ı kontrol etmek için Arduino Kartınızın 4 pinini işgal etmemiz gerekiyor. Alex Leone tarafından yapılan TLC5940 Arduino Kitaplığını kullanacağımız için, IC'yi kütüphane yapılandırmasına göre veya aşağıdaki devre şemalarını kullanarak Arduino'ya bağlamamız gerekir:

Arduino-ve-TLC5940-Kablolama --- Devre-Şemaları

Yukarıdaki devre şeması, LED'lere güç sağlamak için harici güç kaynağı kullanıyor, ancak çekilen akımın toplam miktarı Arduino'nun (Mutlak Maksimum Derece, DC Akım VCC) sınırını aşmıyorsa, sadece Arduino VCC'nin kendisi kullanılarak da bağlanabilir. ve GND Pimleri - 200 mA).

Ayrıca TLC5940'ın sabit akım düşürücü olduğunu, dolayısıyla akımın çıkış pinlerine doğru aktığını da not etmemiz gerekir. Bu, LED'leri bağlarken negatif ucu (Katot) IC'nin çıkış pinine ve pozitif ucu (Anot) 5V VCC'ye bağlamamız gerektiği anlamına gelir.

Ayrıca, dekuplaj için 2 kapasitör ve çıkışlardan akan akım miktarını kontrol etmek için bir dirence ihtiyacımız var. Direncin değeri, kontrol etmek istediğimiz bileşene bağlıdır ve TLC5940 veri sayfasından aşağıdaki diyagram kullanılarak seçilebilir .

TLC5940-Direnç-Değer-Diyagramı

Dolayısıyla şemaya göre 20mA akım gerektiren LED'leri kontrol etmek için 2K'lık bir dirence ihtiyacımız var.

Kaynak kodu


Alex Leone tarafından yapılan TLC5940  Arduino Kitaplığını indirip kurduktan sonra, IC'nin çıktılarını nasıl kontrol ettiğini anlamak için onun "BasicUse" demo örneğini kullanabiliriz.

İşte bu kitaplığı kullanarak 16 LED'i kontrol etmek için bu öğretici için yaptığım basit bir kod. İşlevlerin nasıl çalıştığını anlamak için koddaki yorumları okuyun.

/ *
* Arduino ve TLC5940 Eğitimi - Basit Örnek
* Dejan Nedelkovski, www.HowToMechatronics.com tarafından
* /
#include "Tlc5940.h"
geçersiz kurulum () {
Tlc. init ( 0 ) ; // TLC5940'ı başlatır ve tüm kanalları kapatır
}
geçersiz döngü () {
Tlc. set ( 0,4095 ) ; // (0'dan 15'e Çıkış Pini, 0'dan 4095'e PWM Değeri)
// Not: Önceki işlev çıktıyı hemen etkinleştirmez. Çıkış, Tlc.update () işlevi yürütüldüğünde etkinleştirilecektir!
Tlc. güncelleme () ; // Önceden ayarlanmış çıktıları etkinleştirir
gecikme ( 1000 ) ;
// 16 çıktının hepsini aynı anda etkinleştirmek için, hepsinin 4095 PWM değerine ayarlanmasını sağlamak için bir for döngüsü kullanabiliriz. Daha sonra Tlc.updata () işlevi hepsini aynı anda etkinleştirecektir.
for ( int i = 0; i < 16; i ++ ) {
Tlc. set ( i, 4095 ) ;
}
Tlc. güncelleme () ;
gecikme ( 1000 ) ;
// Tlc.clear () işlevi tüm çıktıları temizler veya tüm çıktıların PWM değerini 0 olarak ayarlar
Tlc. temizle () ;
Tlc. güncelleme () ;
gecikme ( 1000 ) ;
// Bu for döngüsü 16 LED'in hepsini tek tek etkinleştirecek
for ( int i = 0; i < 16; i ++ ) {
Tlc. set ( i, 4095 ) ;
Tlc. güncelleme () ;
gecikme ( 200 ) ;
Tlc. temizle () ;
Tlc. güncelleme () ;
gecikme ( 200 ) ;
}
}

Birden fazla TLC5940'ı kontrol etme


Bu IC'lerden birden fazlasını seri olarak bağlamak için, yukarıda gösterildiği gibi aynı devre şemalarını kullanabiliriz. Tek fark, birinci IC'nin SOUT'unun (Sinyal Çıkışı - pin 17), ikinci IC'nin SIN'ine (Sinyal Girişi - pin 26) bağlanması gerektiğidir.

TLC5940-Tutorial-Library-configuration

Programlama kısmına gelince, bazı değişiklikler yapmamız gerekiyor. TLC5940 kitaplık klasöründe tlc_config.h dosyasını değiştirmemiz ve NUM_TLCS değişkeninin değerini seri bağlı TLC5940 IC sayısı ile değiştirmemiz gerekir ve bizim durumumuzda bu değer 2'dir. Bunu yaptığımızda, artık kolayca tüm adresleri ele alabiliriz. 0'dan 31'e kadar olan LED'ler ve daha önce açıklanan aynı programlama yöntemini kullanın.

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

Arduino ile buton nasıl kullanılır ?

 

Arduino ile buton nasıl kullanılır ?


Arduino'nun dijital pinlerini giriş olarak nasıl kullanacağımızı göreceğiz.Arduino ile buton nasıl kullanılır ?


Dijital pinlerin bir giriş olarak kullanımını göstermek için , Arduino'nun dijital giriş / çıkış pinlerine bağlı iki LED'i kontrol etmek için buton kullanılır. 

Arduino'nun Dijital Girişlerini Okuma

Dijital girişi okumak için Arduino'nun GPIO pinlerini kullanmak için Arduino'nun pinMode () fonksiyonunu kullanıyoruz. PinMode () rutini, GPIO pinlerini aşağıdaki gibi bir dijital çıkış pini olarak tanımlamak için kullanılır:

pinMode(GPIO_Pin,INPUT);

Örneğin, Arduino'nun GPIO_0'ını bir dijital giriş pini olarak ilan etmek istiyorsanız, yukarıdaki işlevi şu şekilde kullanın:

pinMode(0,INPUT);

GPIO pinini dijital çıkış pini olarak yapılandırdıktan sonra, digitalWrite () işlevini kullanarak giriş pininin durumunu okuyabiliriz:

int state;
state = digitalRead(GPIO_Pin);

Bu digitalWrite (), durumunu bilmek istediğiniz pin numarası olan bir giriş argümanını kabul eder. Bu işlev, dijital giriş pininin durumuna bağlı olarak mantık yüksek veya düşük döndürür.


Arduino kartının 1 ve 2 numaralı pinlerine iki LED bağlanır. basma düğmesi Arduino kartının 0 numaralı pinine bağlıdır.

Basma Düğmesi Arayüzü

Basma düğmesi temel olarak iki LED'i kontrol etmek veya iki LED'i açmak / kapatmak için kullanılır. basma düğmesine basıldığında. Her iki LED de yanıyor ve bir düğmeye basılmadığında LED'ler sönük kalıyor. Akım sınırlama direnci olarak her iki LED ile iki direnç seri olarak bağlanmıştır.

Aşağı Çekme Direnci

Butonun bir tarafı 5 voltluk kaynak ile bağlanır ve diğer tarafı 10k ohm direnç ile toprağa bağlanır. Basma düğmesine basılmadığında, pin 0 için giriş olarak bir mantık düşük kullanılır ve basma düğmesine basıldığında, mantık yüksek pin 0 girişi olarak kullanılır.

Not: Basma düğmeli 10k Ohm direnç, aşağı çekme direnci olarak kullanılır. Basmalı düğmeyi bırakır bırakmaz dijital giriş mantığının durumunu düşük hale getirecektir, aksi takdirde dijital giriş sıfırda kayan bir durum görünecektir.Arduino ayrıca dahili bir aşağı çekme direncine sahiptir. Bu eğitimin sonraki bölümünde, Arduino'nun dahili çekme direncini kullanarak basma düğmesinin nasıl kullanılacağını göreceğiz. Harici direnç ihtiyacını ortadan kaldıracaktır.

Her iki durumun devre şemaları, basma düğmesine basılmadığında aşağıda Simülasyon şeması gösterilmektedir :



Bu şema, basma düğmesine basıldığında çıkışı gösterir. Gördüğünüz gibi her iki LED de yanıyor.


Yukarıdaki devrenin kodu aşağıda verilmiştir. Bu kodu Arduino yazılımına kopyalayın.

int buttonStatus; // Variable declare to store status of digitalWrite
 void setup() 
{

  pinMode(1, OUTPUT); 
  pinMode(2, OUTPUT); 
  pinMode(0, INPUT); 
 }

void loop()
 {

 buttonStatus = digitalRead(0);
  if (buttonStatus == HIGH) 
  { 
  digitalWrite(1, HIGH);
  digitalWrite(2, HIGH); 
  } 
  else 
  {

 digitalWrite(1, LOW); 
  digitalWrite(2, LOW); 
  }
 }

Kod Nasıl Çalışır?

Arduino ile buton kullanımının programlanmasını anlamak için, Öncelikle giriş fonksiyonunu ve kullanımını bilmeniz gerekir. Giriş işlevinin açıklaması aşağıda verilmiştir:

pinMode (pin numarası, GİRİŞ):Aynı  işlev, pimi bir giriş pini olarak bildirmek için kullanılır. Burada GİRİŞ  bağımsız değişken bir giriş pimi olarak belirtilen pin numarası bildirmek için kullanılır. Örneğin pinMode (0, INPUT) işlevi pin 0'ı bir giriş pini olarak bildirir.

digitalRead (pin numarası):digitalRead fonksiyonu, giriş pininin durumunu okumak için kullanılır, pin mantık seviyesinde yüksek veya mantık seviyesinde düşüktür. Bu işlevin çıktısı, uygulamanıza göre diğer işlevleri gerçekleştirmek için kullanılabilecek başka bir değişkende saklanır.

digitalWrite (pin numarası, YÜKSEK / DÜŞÜK):digitalWrite işlevi, çıkışın mantıksal yüksek veya mantık düşük olduğu belirtilen pin numarasında yazmak veya çıktı almak için kullanılır.

İlk olarak, butonun durumunu saklamak için kullanılacak bir tamsayı değişkeni tanımlarsınız.

int buttonStatus; // Variable declare to store status of digitalWrite()

Kurulum işlevinin içinde, pinMode () rutinini kullanarak dijital pin 1 ve 2'yi çıkış pinleri olarak yapılandırıyoruz. Benzer şekilde, dijital pini sıfırı bir giriş pini olarak ilan ediyoruz.

 void setup() 
{
  pinMode(1, OUTPUT); 
  pinMode(2, OUTPUT); 
  pinMode(0, INPUT); 
 }

Bildiğiniz gibi Arduino taslağında, tekrar tekrar çalışan her şey döngü işlevinin içine yerleştirilir. Loop () içinde, önce digitalRead () işlevini kullanarak pinin sıfır durumunu kontrol ederiz ve pinin durumunu "buttonstate" değişkenine kaydederiz.

Bundan sonra durum "buton durumu" değişkenini kontrol etmek için koşul kullanılırsa. Koşul doğruysa, digitalWrite () dijital çıkış pinlerini yüksek aktif hale getirir ve aksi takdirde bu çıkış pinleri düşük aktif kalır.

void loop()
 {

 buttonStatus = digitalRead(0);
// if button pressed execute next instructions
// other execute instructions under else block
  if (buttonStatus == HIGH) 
  { 
  digitalWrite(1, HIGH); // Set pin_1 active high
  digitalWrite(2, HIGH); //// Set pin_2 active high
  } 
  else 
  {

 digitalWrite(1, LOW); // Set pin_1 active low
  digitalWrite(2, LOW); // Set pin_2 active low
  }
 }

Basma Düğmesi 

Son örnekte, basma düğmeli harici bir direnç kullandık. Ancak Arduino ayrıca dahili Pull-Up özelliği de sunar. PinMode () kullanarak dahili Pull-Up'ı yapılandırabiliriz.

Bu hat, arduino'nun dahili pull-up direncini etkinleştirecek ve Arduino ile doğrudan bir butona arayüz oluşturabiliyoruz.

// Make pin 2 digital input with internal pull-up resistor enabaled
pinMode(2,INPUT_PULLUP); 

Devre Şeması

Bu şemada Arduino'nun dijital pin 2'si ile sadece bir buton bağladık ve Arduino'nun 13. pinine bağlı on board led'i kullanacağız.

Dahili kaldırma direncini kullanan Arduino ile basma düğmesi

Bu, LED'i basma düğmesi ve dahili çekme direnci ile kontrol etmek için örnek bir koddur.

void setup() 
{
  pinMode(13,OUTPUT);
  pinMode(2,INPUT_PULLUP);// put your setup code here, to run once:
}

void loop() 
{
  if(digitalRead(2)==LOW)
  {
  digitalWrite(13,HIGH);
  }
  else 
  digitalWrite(13,LOW);
}

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.