在本项目中,我们将连接数字电位计与arduino。在本演示中,使用MCP41010,但您可以使用MC41**系列的任何数字电位计。
MC41010简介
数字电位计就像任何具有三个端子的模拟电位计一样,只有一个区别。而在模拟中,您必须手动更改游标位置,而在数字电位计的情况下,游标位置是根据使用任何微控制器或微处理器提供给电位计的信号设置的。
MC41010是一款8引脚双列直插式封装IC。与任何模拟电位计一样,该IC有5k、10k、50k和100k三种规格。本电路采用10k电位计
MC4131,有以下8个端子:
引脚编号 引脚名称 很少描述
1 CS 此引脚用于选择连接到 arduino 的从机或外设。如果为“低”,则选择MC41010,如果为“高”,
则取消选择MC41010。
2 SCLK共享/串行时钟,arduino提供时钟,用于初始化从Arduino到IC的
数据传输,反之亦然。
3 SDI/SDO 串行数据通过此引脚在 arduino 和 IC 之间传输 4 个 arduino 的 VSS 接地端子连接到 IC
的此引脚
。
5 PA0 这是电位器的一个端子。
6 PW0 此端子是电位器的游标端子(用于改变电阻)
7 PB0 这是电位器的另一个端子。
8 VCC 通过此引脚为 IC 供电。
该IC仅包含一个电位计。有些IC最多内置两个电位计。此
游标和任何其他端子之间的电阻值以 256 步变化,从 0 到 255。由于我们使用10k电阻,电阻值以10和256之间的步长变化:
39k/0= 255欧姆/步进《》到《》
组件
我们需要此项目的以下组件。
- 阿杜伊诺
2.MC41010 集成电路
3.220欧姆电阻器
4.指示灯
5.连接线
如图所示进行连接。
- 将 cs 引脚连接到数字引脚 10。
- 将 SCK 引脚连接到数字引脚 13。
- 将SDI/SDO引脚连接到数字引脚11。
- VSS 到阿杜伊诺的接地引脚
5.PA0 至 5v 引脚的 arduino
6。PB0 到地面
arduino 7.PWO 到阿杜伊诺的模拟引脚 A0。
- VCC 至 5 V 的 arduino。
程序代码 1
此代码在Arduino IDE的串行监视器上打印游标端子和接地的电压变化。
#include 《SPI.h》
int CS = 10 ; // initialising variable CS pin as pin 10 of arduino
int x ; // initialising variable x
float Voltage ; // initialising variable voltage
int I ; // this is the variable which changes in steps and hence changes
resistance accordingly.
void setup()
{
pinMode (CS , OUTPUT) ; // initialising 10 pin as output pin
pinMode (A0, INPUT) ; // initialising pin A0 as input pin
SPI.begin() ; // this begins Serial peripheral interfece
Serial.begin(9600) ; // this begins serial communications between arduino
and ic.
}
void loop()
{
for (int i = 0; i 《= 255; i++)// this run loops from 0 to 255 step with 10
ms delay between each step
{
digitalPotWrite(i) ; // this writes level i to ic which determines
resistance of ic
delay(10);
x = analogRead(A0) ; // read analog values from pin A0
Voltage = (x * 5.0 )/ 1024.0;// this converts the analog value to
corresponding voltage level
Serial.print(“Level i = ” ) ; // these serial commands print value of i or
level and voltage across wiper
Serial.print(i) ; // and gnd on Serial monitor of arduino IDE
Serial.print(“t Voltage = ”) ;
Serial.println(Voltage,3) ;
}
delay(500);
for (int i = 255; i 》= 0; i--) // this run loops from 255 to 0 step with 10
ms delay between each step
{
digitalPotWrite(i) ;
delay(10) ;
x = analogRead(A0) ;
Voltage = (x * 5.0 )/ 1024.0 ; // this converts the analog value to
corresponding voltage level
Serial.print(“Level i = ” ) ; // these serial commands print value of i or
level and voltage across wiper
Serial.print(i); // and gnd on Serial monitor of arduino IDE
Serial.print(“t Voltage = ”);
Serial.println(Voltage,3);
}
}
int digitalPotWrite(int value) // this block is explained in coding
section
{
digitalWrite(CS, LOW);
SPI.transfer(B00010001);
SPI.transfer(value);
digitalWrite(CS, HIGH);
解释代码 1:
要将数字电位计与arduino一起使用,您需要首先包含arduino IDE本身提供的SPI库。只需使用以下命令调用库:
#include 《SPI.h》
在空隙设置中,引脚被指定为输出或输入。还给出了开始 SPI 和 arduino 和 ic 之间的串行通信的命令,它们是:
SPI.begin(); and
Serial.begin(9600);
在空隙回路中,for回路用于以总共256步改变数字电位器的电阻。首先从 0 到 255,然后再次返回到 0,每步之间有 10 毫秒的延迟:
for (int i = 0; i 《= 255; i++) and
for (int i = 255; i 》= 0; i--)
digitalPotWrite(i) 函数写入值以改变 ic 特定地址的电阻。
游标和终端之间的电阻可以使用以下公式计算:
R1= 10k*(256 电平)/256 + Rw 和
R2= 10k*电平/256 + Rw
这里R1=游标和一个端子之间的电阻R2=游标和其他端子
之间的电阻 电平=特定时刻的步进(for回路中使用的变量“I”)
Rw=游标端子
的电阻(可以在ic的数据表中找到)
使用digitalPotWrite()功能,通过将低电压分配给CS引脚来选择数字电位器芯片。现在,当选择IC时,必须调用一个地址,该地址将写入数据。在代码的最后一部分:
SPI.transfer(B00010001);
调用地址B00010001,以选择将在其上写入数据的IC的游标端子。因此,对于循环的值,即 i 被写入以改变电阻。
电路工作:
只要 i 的值不断将输入更改为 arduino 的 A0 引脚,也会在 0 到 1023
之间不断变化。这是因为游标端子直接连接到A0引脚,电位计的其他端子分别连接到5伏和地。现在,当电阻发生变化时,两端的电压也会发生变化,Arduino直接将其作为输入,因此我们在串行监视器上获得特定电阻值的电压值。
模拟 1:
以下是该电路在i的各种值下的一些仿真图片:
现在只需将一个串联的 LED 与 220 欧姆电阻连接到 IC 的游标端子,如图所示。
代码 2:
#include 《SPI.h》
int CS = 10;
int x;
float Voltage;
int i;
void setup()
{
pinMode (CS , OUTPUT);
pinMode (A0, INPUT);
SPI.begin();// this begins Serial peripheral interfece
}
void loop()
{
for (int i = 0; i 《= 255; i++)// this run loops from 0 to 255 step with 10
ms delay between each step
{
digitalPotWrite(i);// this writes level i to ic which determines resistance
of ic
delay(10);
}
delay(500);
for (int i = 255; i 》= 0; i--)// this run loops from 255 to 0 step with 10
ms delay between each step
{
digitalPotWrite(i);
delay(10);
}
}
int digitalPotWrite(int value)// this block is explained in coding
section
{
digitalWrite(CS, LOW);
SPI.transfer(B00010001);
SPI.transfer(value);
digitalWrite(CS, HIGH);
}
解释代码 2:
此代码与代码 1 类似,只是此代码中没有串行命令。因此,不会在串行监视器上打印任何值。
工作说明
由于 LED 在游标端子和接地之间连接,电阻随电阻变化而变化,因此 LED 两端的电压也会发生变化。因此,随着 LED 连接的电阻从 0
欧姆上升到最大值,LED 的亮度也会增加。由于电阻从最大值降低到0v,它再次缓慢消失。
模拟2
模拟3
这里还没有内容,您有什么问题吗?
电子电路资源推荐
- 华为PCB布线规范
来源:下载中心
- Cadence使用手册经典.pdf
来源:下载中心
- 信号完整性及高速数字电路设计
来源:大学堂
- 运算放大器视频教程
来源:大学堂
- 电阻的串联、并联及混联电路介绍及作用
来源:电路图
- 叠加原理:概念及其求解过程
来源:电路图
推荐帖子 最新更新时间:2024-11-21 19:34
- 浅淡测试夹具制作的制作策略
- 浅淡测试夹具制作的制作策略 【来源:SMT论坛网】【作者:skyline82】【时间: 2005-8-2 9:09:48】【点击: 3724】 随着印刷线路板技术向多层、细线、小孔、高密度方向发展(其实已经来临并快速普及),
- fighting模拟电子
- LCD无显示
- 小弟最近做LCD显示,出现下面状况,程序烧写进去后可以显示,但是过了一会就显示乱码,再过一会直接蓝屏了 下面是我的程序,麻烦过往 大侠赐教啊 #include \"stm32f10x_lib.h\" #include \"lcd.h\" /* Private t
- carsonqin1314stm32/stm8
- 关于时序分析中时钟的设置.
- 请教 各位:当 系统 中有一个20MHz的 输入 时钟时,经过PLL倍频后,产生一100MHz和一20MHz的内部时钟时,Clock Setting那里如何 设置 ,是不是应填最大的100MHz? PLL出来的100MHz和20MHz是不是相对于20MHz的输入时钟为衍生时
- swfc_qinmmFPGA/CPLD
- 多旋翼自主飞行器(C题)
- 多旋翼自主飞行器(C题) 多旋翼自主飞行器(C题) 这个要看看了。
- 哲人心雨电子竞赛
- ■■■■■★千元征集优秀IT培训教师线索★■■■■■
- 千元征集优秀IT培训教师线索 北京传智播客教育科技有限公司是一家专门致力于高素质软件开发人才培养的高科技公司,公司自成立以来,以其独到的培训理念和教学方式,取得了骄人的成绩,迅速在IT培训界获得盛誉。为满足社会快速膨胀的培训需求,公司急需扩大培训规模,现隆重推出“千元征集优秀
- 2042嵌入式系统
- 【USB充电器DIY】器件选择:其它(及完整清单)
- 其它使用到的一些器件/模块: ACS712ELCTR,电流传感器,¥3.18。 PCF8563时钟模块,¥2.7。 一位WS2812模块,¥0.4。 温度传感器,NTC,¥0.1。 2芯电源线,¥1。 2510风扇,¥
- dcexpert电源技术
- 【瑞萨R7F0C80212试用】一步一步玩R7F0C80212之第二弹 上电初实验
- 昊芯HXS320F28034数字信号处理器项目中电机相位控制与检测调试
- 易电源转发
- 请教:产品上的WIFI功能如何从软硬件两方面测试
- 求合适的资料或书籍?关于wince中的cab安装包的制作
- 串口通信程序为何只能发送接受2位?
- 以皇晶Acute TL2236逻辑分析仪进行串行闪存量测方案
- altpll_component 问题
- 51单片机的多任务处理问题
- EEWORLD大学堂----电源设计研讨会: 变频降压型变换器的控制策略
- lm3sI2C学习笔记之温度的测量
- Keil下S3C2440汇编程序工程配置问题
- 急问:stm32的rtc时钟必须用外部的晶振吗?
- EVC下的画面迁移问题
- DSPf28335的板子能做些什么呢?
- 【ST NUCLEO-WBA52CG】第四篇 BLE测试之BLE APP连接
- 报名有礼:【TI C2000在实时控制系统中的新特性】网络直播颁奖啦!
- 感兴趣的来看看
- 手机电源管理技术探秘
- 新手想学习ARM制板,弄明白原理图,高手请指点一下,该学什么基础知识?
- LTC3808 的典型应用 - 无 RSENSE、低 EMI、具有输出跟踪功能的同步 DC/DC 控制器
- MAXREFDES111#:隔离型、24V至5V、2W反激电源
- 在 SOT-23 封装中关断的 TC1240A 正倍增电荷泵的典型应用
- 将 ADuM4135 栅极驱动器与 Microsemi APTGT75A120T1G 1200 V IGBT 模块配合使用
- 简易电子琴
- NCP508MT33TBG 50mA、3.3V输出电压低压差稳压器典型应用
- 基于RDA5807FP 收音机
- STM32G474RE MCU的探索套件
- 使用 NXP Semiconductors 的 S12ZVH128CL 的参考设计
- 梦幻光立方 ——基于WS2812的RGB幻彩小夜灯