通信接口

如何Arduino通过SPI控制数字电位计

字号+ 作者:PLC工程师 来源:未知 2016-04-15 08:57 我要评论( )

如何Arduino通过SPI读取数字电位计1

Arduino如何通过SPI 控制数字电位计

In this tutorial you will learn how to control the AD5206 digital potentiometer using Serial Peripheral Interface (SPI). 

Digital potentiometers are useful when you need to vary the resistance in a circuit electronically rather than by hand. Example applications include LED dimming, audio signal conditioning and tone generation. In this example we will use a six channel digital potentiometer to control the brightness of six LEDs. The steps we will cover for implementing SPI communication can be modified for use with most other SPI devices.
 

硬件:

  • Arduino or Genuino board
  • AD5206 Digital Potentiometer
  • LEDs
  • 6 220 ohm resistors
  • hook-up wires
  • breadboard

AD5206数字式电位计介绍:

AD5206's 手册





The AD5206 is a 6 channel digital potentiometer. This means it has six variable resistors (potentiometers)
built in for individual electronic control. There are three pins on the chip for each of the six internal variable
resistors, and they can be interfaced with just as you would use a mechanical potentiometer. The individual
variable resistor pins are labeled Ax, Bx and Wx, ie. A1, B1 and W1. For example, in this tutorial we will be
using each variable resistor as a voltage divider by pulling one side pin (pin B) high, pulling another side
pin (pin A) low and taking the variable voltage output of the center pin (Wiper). In this case, the AD5206 

provides a maximum resistance of 10k ohm, delivered in 255 steps (255 being the max, 0 being the least).


 

原理:

 



代码:

/*
  Digital Pot Control

  This example controls an Analog Devices AD5206 digital potentiometer.
  The AD5206 has 6 potentiometer channels. Each channel's pins are labeled
  A - connect this to voltage
  W - this is the pot's wiper, which changes when you set it
  B - connect this to ground.

 The AD5206 is SPI-compatible,and to command it, you send two bytes,
 one with the channel number (0 - 5) and one with the resistance value for the
 channel (0 - 255).

 The circuit:
  * All A pins  of AD5206 connected to +5V
  * All B pins of AD5206 connected to ground
  * An LED and a 220-ohm resisor in series connected from each W pin to ground
  * CS - to digital pin 10  (SS pin)
  * SDI - to digital pin 11 (MOSI pin)
  * CLK - to digital pin 13 (SCK pin)

 Thanks to Heather Dewey-Hagborg for the original tutorial, 2005

*/


// inslude the SPI library:
#include <SPI.h>


// set pin 10 as the slave select for the digital pot:
const int slaveSelectPin = 10;

void setup() {
  // set the slaveSelectPin as an output:
  pinMode(slaveSelectPin, OUTPUT);
  // initialize SPI:
  SPI.begin();
}

void loop() {
  // go through the six channels of the digital pot:
  for (int channel = 0; channel < 6; channel++) {
    // change the resistance on this channel from min to max:
    for (int level = 0; level < 255; level++) {
      digitalPotWrite(channel, level);
      delay(10);
    }
    // wait a second at the top:
    delay(100);
    // change the resistance on this channel from max to min:
    for (int level = 0; level < 255; level++) {
      digitalPotWrite(channel, 255 - level);
      delay(10);
    }
  }

}

void digitalPotWrite(int address, int value) {
  // take the SS pin low to select the chip:
  digitalWrite(slaveSelectPin, LOW);
  //  send in the address and value via SPI:
  SPI.transfer(address);
  SPI.transfer(value);
  // take the SS pin high to de-select the chip:
  digitalWrite(slaveSelectPin, HIGH);
}

如需更详细资料,如有好资源分享,请加入QQ交流群:214461008

欢迎阅读,欢迎转载,不用注明出处!本站只提供入门和进阶资料,做您学习的小伙伴!

老司机也欢迎光临指导!有好内容请加群:214461008 不要看声明了,看内容吧!

相关文章
  • Arduino软串口的使用

    Arduino软串口的使用

    2016-05-04 15:27

  • [2016.05.04]Arduino串口从基础到高级最全面教程

    [2016.05.04]Arduino串口从基础到高级最全面教程

    2016-05-05 14:14

  • 手机APP通过蓝牙控制Arduino上的通讯实验及完整例程

    手机APP通过蓝牙控制Arduino上的通讯实验及完整例程

    2016-05-02 22:13

  • Arduino串口高级用法

    Arduino串口高级用法

    2016-05-17 09:24

网友点评
Arduino