DigitalPotentiometer

Bu örnek, I2C senkron seri protokolü üzerinden iletişim kuran bir Analog Devices AD5171 Dijital Potansiyometrenin nasıl kontrol edileceğini gösterir. Arduino'nun I2C Tel Kütüphanesi'ni kullanarak, dijital pot 64 direnç seviyesinden geçerek bir LED'i solduracak.

I2C protokolü veri göndermek ve almak için iki hat kullanılmasını içerir: Arduino veya Genuino Master kartının düzenli aralıklarla attığı bir seri saat pimi (SCL) ve iki cihaz arasında verinin gönderildiği bir seri veri pimi (SDA) . Saat çizgisi alçaktan yükseğe değiştiğinde (saat darbesinin yükselen kenarı olarak bilinir), belirli bir cihazın adresini ve aa komutunu veya verilerini sırayla oluşturacak olan tek bir bilgi biti karttan SDA hattı üzerinden I2C cihazı. Bu bilgiler - bit bitinden sonra - gönderildiğinde, çağrılan cihaz isteği yürütür ve gerekirse, zamanlama olarak SCL'de Master tarafından üretilen saat sinyalini kullanarak aynı satır üzerinden verilerini geri gönderir.

12C protokolü, her etkin cihazın kendine özgü bir adrese sahip olmasına izin verdiğinden ve hem ana hem de bağımlı cihazlar tek bir hat üzerinden iletişim kurmaya başladığı için, Arduino veya Genuino kartınızın birçok cihazla iletişim kurması (sırayla) mümkündür veya diğer kartlar, mikro denetleyicinizin yalnızca iki pimini kullanırken.

Gerekli Donanım

  • Arduino veya Genuino Kurulu
  • AD5171 Dijital Tencere
  • LED
  • 680 ohm direnç
  • 2 4.7k ohm dirençler
  • bağlantı telleri
  • breadboard

Devre

AD5171'in 3, 6 ve 7 numaralı pinlerini GND'ye ve 2 ve 8 numaralı pinleri + 5V'ye bağlayın .

Dijital kabın saat pimini (SCL), pim 4'ü Arduino'daki analog pim 5'e ve pim 5'i, veri hattı (SDA), analog pim 4'e bağlayın. Hem SCL hem de SDA hatlarına, 4.7K ohm çekme ekleyin her iki hattı +5 V'ye bağlayan dirençler.

Son olarak, 680 ohm LED seri ile AD5171'in "sileceği" olan pin 1'e bir LED bağlayın.

AD5171'in pimi 6, ADO, toprağa bağlandığında adresi 44'tür. Aynı SDA veriyoluna başka bir dijital kap eklemek için, ikinci kabın ADO pimini + 5V'ye bağlayın, adresini 45 olarak değiştirin.

Bu dijital potansiyometrelerin yalnızca ikisini aynı anda kullanabilirsiniz.

Şematik

Kod


// I2C Digital Potentiometer
// by Nicholas Zambetti 
// and Shawn Bonkowski 

// Demonstrates use of the Wire library
// Controls AD5171 digital potentiometer via I2C/TWI

// Created 31 March 2006

// This example code is in the public domain.

// This example code is in the public domain.


#include 

void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
}

byte val = 0;

void loop()
{
  Wire.beginTransmission(44); // transmit to device #44 (0x2c)
                              // device address is specified in datasheet
  Wire.write(byte(0x00));            // sends instruction byte  
  Wire.write(val);             // sends potentiometer value byte  
  Wire.endTransmission();     // stop transmitting

  val++;        // increment value
  if(val == 64) // if reached 64th position (max)
  {
    val = 0;    // start over from lowest value
  }
  delay(500);
}

See Also