程控电阻器

程控电阻器

        由于要测试电阻型温度传感器,一个电阻箱又很贵,就想做一款 程控电阻器 来满足。

        设计满足300Ω到400kΩ可调电阻。


设计思路

        选择数字电位器去控制电阻输出,最好是精度高,范围大的数字电位器。经过寻找后,发现AD8403比较满足需求。采用STM32F103C8T6作为主控芯片。

AD8403

        AD8400/AD8402/AD8403分别是单通道/双通道/四通道、256位、数字控制可变电阻(VR)器件1,可实现与机械电位计或可变电阻相同的电子调整功能。AD8400内置一个可变电阻,采用紧凑的SOIC-8封装。AD8402内置两个独立的可变电阻,采用节省空间的SOIC-14表面贴装封装。AD8403内置四个独立的可变电阻,提供24引脚PDIP、SOIC和TSSOP三种封装。各器件均内置一个带游标触点的固定电阻,该游标触点在载入控制串行输入寄存器的数字码所确定的数字码分接该固定电阻值。游标与固定电阻任一端点之间的电阻值,随传输至VR锁存器中的数字码呈线性变化。在A端与游标或B端与游标之间,各可变电阻提供一个完全可编程电阻值。A至B固定端接电阻(1 kΩ、10 kΩ、50 kΩ或100 kΩ)的通道间匹配容差为±1%,标称温度系数为500 ppm/°C。

想法

        AD8403为四通道数字电位器,每个通道可分为256份,要想范围大。就要选择一片大的100K的。但是这样的话精度就只有100000/256=390欧。四通道串联范围可以达到400k,但是精度不符合我们的需求,在选择一片1K的AD8403,精度为1000/256=4欧,这样精度可以达到4欧,如果我们将1k的两两并联,这样并联之后每组可以达到500欧,正好包含了400欧,精度也达到了2欧,再通过串联将这两个和前边的100k的串联起来,这样的话就可以从0到400k欧范围,然后精度可以达到2欧(如果四个并联的话精度达到了1欧,但是范围只有250欧了,包含不了400欧,即有覆盖不到的地方)。这样就比较完美了。AD8403为了保护器件,就算输出0。器件也会有大约50欧的电阻。100k的和1k的会差一点,实测的话这样串并零最少也会有300欧。如果我们在1k的满足输出的时候。将100k的短路的话就可以得到更小的阻值。所以在1k串并零得到最大值之前,使用继电器将100k短路掉。

设计过程。

材料

  • STM32F103C8T6主控芯片
  • AD8403ARUZ1
  • AD8403ARUZ100
  • HFD4-3直插继电器
  • 贴片按键
  • 0.96寸OLED显示屏
  • Type-C
  • 1117电源芯片
  • 电阻电容晶振等。

原理图

        通过嘉立创绘制。
在这里插入图片描述

PCB

        通过嘉立创绘制。
在这里插入图片描述

程序

Keil 5编写。放上关键代码。
控制代码。

if(R_Zuzhi < 300)R_Zuzhi = 300;if(R_Zuzhi > 400000)R_Zuzhi = 400000;testShowFont(&u8g2,R_Zuzhi);/* 1616欧	本身有70欧  每1是3欧 还剩 1561欧 一半962欧*/if(R_Zuzhi < 1360){JDQ = 1;K1_5 = R_Zuzhi;}else{JDQ = 0;K2_Set = (R_Zuzhi -  Offset) / 398; if(K2_Set > 1020){Set1 = 255;Set2 = 255;Set3 = 255;Set4 = 255;if(K2_Set > 1023){Set5 = 255;Set7 = 255;}else{K1_5 = R_Zuzhi - (1020 * Jingdu) - Offset;}}else if(K2_Set > 765){Set1 = 255;Set2 = 255;Set3 = 255;Set4 = K2_Set - 765;K1_5 = R_Zuzhi - (K2_Set * Jingdu) - Offset;}else if(K2_Set > 510){Set1 = 255;Set2 = 255;Set3 = K2_Set - 510;Set4 = 0;K1_5 = R_Zuzhi - (K2_Set * Jingdu) - Offset;}else if(K2_Set > 255){Set1 = 255;Set2 = K2_Set - 255;Set3 = 0;Set4 = 0;K1_5 = R_Zuzhi - (K2_Set * Jingdu) - Offset;}else{Set2 = K2_Set;Set1 = 0;Set3 = 0;Set4 = 0;K1_5 = R_Zuzhi - (K2_Set * Jingdu) - Offset;}}K1_Set = (K1_5 - 56) / 2.56;if(K1_Set > 255){Set5 = 255;Set7 = K1_Set - Set5;}else{Set7 = 0;Set5 = K1_Set;}//            Set10 = Set9;AD8403_W(0, Set1); //100k短接 100k还有283欧电阻  共333欧AD8403_W(1, Set2);AD8403_W(2, Set3);AD8403_W(3, Set4);AD84032_W(0, Set5); //100k短接 1k还有55欧电阻AD84032_W(1, Set5);AD84032_W(2, Set7);AD84032_W(3, Set7);
//				SHDN=0;//为0时,所有? 缱鐰端开路,W连接到B,关闭SDO输出晶体管

AD8403驱动


void AD8403_W(int CH, int w)
{int i = 0;int channal = CH;int send_data = w;CS = 0;delay_us(10);//前两个bit  选通道for(i = 0; i < 2; i ++)            //send the channal index{if((channal & 0x02) == 0x02)SDI = 1;elseSDI = 0;delay_us(1);CLK = 1;           //Set SPI_SCK to High voltagedelay_us(1);CLK = 0;          //Set SPI_SCK to low voltagechannal = channal << 1;}//后八个bit  指定阻值for(i = 0; i < 8; i ++)            //send the resister value{if((send_data & 0x80) == 0x80)SDI = 1;elseSDI = 0;delay_us(1);CLK = 1;           //Set SPI_SCK to High voltagedelay_us(1);CLK = 0;          //Set SPI_SCK to low voltagesend_data = send_data << 1;}CS = 1;
}

实物展示

正面图

在这里插入图片描述

反面图

在这里插入图片描述

视频演示

程控电阻器演示

总结

虽然范围大,但是精度还是控制的不理想。可能是芯片问题。控制之后,电阻会抖动和飘移,但是总体还是实现了相应的功能。可以使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3245484.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS 7 Web面板的文件管理器说明

在使用CentOS 7 Web Panel&#xff08;CWP7&#xff09;时&#xff0c;偶尔要求在服务器曲面上修改&#xff0c;创建&#xff0c;编辑或删除文件。 最简单&#xff0c;最直接的方式是通过利用CWP7的内置文件管理器。 本文将详细介绍如何启动它&#xff0c;使用它&#xff0c;以…

【D3.js in Action 3 精译】2.3 用 D3 选中页面元素

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可视化最佳实践&#xff08;下&#xff09;1.4 本章小结 第二章…

C语言基础and数据结构

C语言程序和程序设计概述 程序:可以连续执行的一条条指令的集合 开发过程:C源程序(.c文件) --> 目标程序(.obj二进制文件,目标文件) --> 可执行文件(.exe文件) -->结果 在任何机器上可以运行C源程序生成的 .exe 文件 没有安装C语言集成开发环境,不能编译C语言程…

【数据结构】二叉树全攻略,从实现到应用详解

​ &#x1f48e;所属专栏&#xff1a;数据结构与算法学习 &#x1f48e; 欢迎大家互三&#xff1a;2的n次方_ ​ &#x1f341;1. 树形结构的介绍 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做…

Java18的主要新特性总结

目录 概述 变动说明 重要变更和信息 下载地址 Java18新特性总结 1、JEP 420: Switch 的模式匹配&#xff08;第二次预览&#xff09; 功能进化 Switch 模式匹配 类型标签 null标签 守卫标签 2、JEP 400&#xff1a;默认UTF-8编码 3、JEP 408&#xff1a;简易Web服务…

Java 虚拟线程:案例研究

一. 关键要点 虚拟线程是 Java 并发编程的一个重要进步&#xff0c;但在运行典型的云原生 Java 工作负载方面&#xff0c;它们并不比 Open Liberty 现有的自主线程池具有明显的优势。对于 CPU 密集型工作负载&#xff0c;由于目前尚不清楚的原因&#xff0c;虚拟线程的吞吐量低…

Idea如何快速高效的修改项目的包名

文章目录 前言一、全局替换的快捷键二、弹出如下的界面 前言 当我们有时候在做项目迁移的时候&#xff0c;需要快速的修改项目的包名&#xff01;那么如何快速高效的修改项目的报名呢&#xff1f; 经过尝试了很多方法&#xff01;最简单的方法就是利用全局替换来直接替换报名&…

QT实现带动态弹出动画的自定义通知提示框

Qt中经常会用到提示框&#xff0c;用于交互操作&#xff01;QMessageBox是被大多数人用到的&#xff0c;用起来是很方便&#xff0c;但是控件类型、大小、布局、样式、往往不是开发者想要的。本实例实现的Notification控件&#xff0c;是一种悬浮在角落的通知提醒框。 一、简述…

Day07-ES集群加密,kibana的RBAC实战,zookeeper集群搭建,zookeeper基本管理及kafka单点部署实战

Day07-ES集群加密&#xff0c;kibana的RBAC实战&#xff0c;zookeeper集群搭建&#xff0c;zookeeper基本管理及kafka单点部署实战 0、昨日内容回顾:1、基于nginx的反向代理控制访问kibana2、配置ES集群TSL认证:3、配置kibana连接ES集群4、配置filebeat连接ES集群5、配置logsta…

Mysql-错误处理: Found option without preceding group in config file

1、问题描述 安装MYSQL时&#xff0c;在cmd中“初始化”数据库时&#xff0c;输入命令&#xff1a; mysqld --initialize --consolecmd报错&#xff1a; D:\mysql-5.7.36-winx64\bin>mysql --initialize --console mysql: [ERROR] Found option without preceding group …

打印室预约小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;附近打印店管理&#xff0c;文件打印管理&#xff0c;当前预约管理&#xff0c;预约历史管理&#xff0c;打印记录管理 开发系统&#xff1a;Windows 架构模式&#xff1a;SSM JD…

linux服务器如何创建Raid10阵列,删除raid10

文章目录 1&#xff0c;首先查看一下机器上有几块盘2&#xff0c;构建raid10阵列3&#xff0c;把制作好的 RAID 磁盘阵列格式化为 ext4 格式4&#xff0c;创建挂载点然后把硬盘设备进行挂载操作5&#xff0c;查看/dev/md0 磁盘阵列的详细信息6&#xff0c;删除raid10 1&#xf…

理解深度学习中的过拟合和Dropout

新书速览|PyTorch深度学习与企业级项目实战-CSDN博客 随着迭代次数的增加&#xff0c;我们可以发现测试数据的loss值和训练数据的loss值存在着巨大的差距&#xff0c; 如图4-8所示&#xff0c;随着迭代次数的增加&#xff0c;training loss越来越好&#xff0c;但test loss却越…

分布式缓存-Redis持久化

使用缓存的时候&#xff0c;我们经常需要对内存中的数据进行持久化&#xff08;将内存中的数据写入到硬盘中&#xff09;。 原因&#xff1a;重用数据&#xff08;比如重启机器、机器故障之后恢复数据&#xff09;&#xff0c;做数据同步&#xff08;比如 Redis 集群的主从节点…

广告投放的智能优化:Kompas.ai如何提高广告效果

在数字广告领域&#xff0c;智能优化已成为提升广告投放效果和投资回报率(ROI)的关键。Kompas.ai&#xff0c;一款先进的广告智能优化工具&#xff0c;利用数据分析和机器学习技术&#xff0c;帮助广告主实现更精准、高效的广告投放。 智能优化在提升广告效果中的作用 智能优化…

微调 Florence-2 - 微软的尖端视觉语言模型

Florence-2 是微软于 2024 年 6 月发布的一个基础视觉语言模型。该模型极具吸引力&#xff0c;因为它尺寸很小 (0.2B 及 0.7B) 且在各种计算机视觉和视觉语言任务上表现出色。 Florence 开箱即用支持多种类型的任务&#xff0c;包括: 看图说话、目标检测、OCR 等等。虽然覆盖面…

MySQL字符串魔法:拼接、截取、替换与定位的艺术

在数据的世界里&#xff0c;MySQL作为一把强大的数据处理利剑&#xff0c;其字符串处理功能犹如魔术师手中的魔法棒&#xff0c;让数据变换自如。今天&#xff0c;我们就来一场关于MySQL字符串拼接、截取、替换以及查找位置的奇幻之旅&#xff0c;揭开这些操作的神秘面纱。 介绍…

谷歌浏览器114之前、126、127、128版本驱动下载,实时更新

114之前版本下载链接在这里 126以后版本下载链接在此&#xff0c;只有后面status是绿色对勾的才可以下载&#xff0c;**驱动大版本一致就可以使用&#xff0c;不需版本号一模一样&#xff1b;**下载所需版本只需点击对应的版本名称即可跳转到对应版本的下载位置。 以正式版为例…

FullCalendar日历组件集成实战(20)

背景 有一些应用系统或应用功能&#xff0c;如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件&#xff0c;但功能比较简单&#xff0c;用来做数据展现勉强可用。但如果需要进行复杂的数据展示&#xff0c;以及互动操作如通过点击添加事件&#xff0…

C# modbus 图表

控件&#xff1a;chart1(图表)&#xff0c;cartesianChart1(第三方添加图表)&#xff0c;timer(时间) 添加第三方&#xff1a; 效果&#xff1a;图标会根据连接的温度&#xff0c;湿度用timer时间进行改变 Chart1控件样式&#xff1a;Series添加线条&#xff0c;颜色&#xf…