数字电位器——x9c104

Posted gaolab

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字电位器——x9c104相关的知识,希望对你有一定的参考价值。

一些传统的电子设备是通过改变电位器的电阻来实现调整,比如灯的亮度、电机的转速等。如果想对这种设备进行智能改造但不大幅度改变设备内部的电器结构,我们需要电位器的电阻可通过单片机或微机进行控制,数字电位器就是这类设备。

“我也是在项目中有这方面需求,又不想深入研究设备的内部构造(设备比较贵),发现竟然有数字电位器这样的好用的东西”

X9C104简介

项目需求最大电阻为100千欧,故这里使用的是常用的x9c104数字电位器芯片,该型号的芯片滑动阻值为40欧~100千欧,100阶,每阶1010欧。其他阻值型号如下表。

技术分享图片

芯片管脚介绍

芯片有8个管脚,有效管脚7个,分布位置如下图,功能如下表。

技术分享图片技术分享图片

芯片使用

本芯片是通过INC、U/D、CS三个输入端口的高/低电平和上升/下降沿组合实现滑动电位器Vw端的滑动。

技术分享图片

程序(Arduino版本)

/*
 * 函数 :set_X9c104
 * num  :滑动阶数,1010欧姆
 * ud   :方向,1表示上滑,0表示下滑
 * save :是否保存,1表示保存,0表示不保存
 */
void set_X9c104(int num,int ud,int save)
{
  digitalWrite(CS_pin,LOW);     //片选使能
  delayMicroseconds(10);        
  if(ud==1)                     //滑动方向选择
  {
     digitalWrite(UD_pin,HIGH);
  }
  else
  {
    digitalWrite(UD_pin,LOW);   
  }
  delayMicroseconds(100);
  for(;num>0;num--)               //开始向设定方向移动num阶
  {
    digitalWrite(INC_pin,HIGH); 
    delayMicroseconds(100);
    digitalWrite(INC_pin,LOW);
    delayMicroseconds(100);
  }
  delayMicroseconds(100);
  if(save==1)                     //是否保存选择
  {
    digitalWrite(INC_pin,HIGH);
    delayMicroseconds(100);
  }
  digitalWrite(CS_pin,HIGH);      
  delay(20);
}

 

此外,值得一提的是,这个芯片坏片比较多,买了3片,坏了2片,也是悲剧。

以上是关于数字电位器——x9c104的主要内容,如果未能解决你的问题,请参考以下文章

SPI应用 用SPI控制一个数字电位器

单片机ad与pwm问题

使用 ATmega16A 的 MAX5402 数字电位器的 SPI 配置

利用XPT2046芯片转换电位器模拟值为数码管显示数值的单片机项目源码

微控制器线性电位器输出

arduino读取一个block值