基于STM32的恒流源设计
1.概述
本设计以STM32F103RCT6为主控芯片,利用MOS管的恒流区特点,设计恒流源。设计电流范围为1-300mA。
2.原理
基本原理图:
Q2为N沟道MOS管,在正常工作情况下,运放与MOS管之间构成深度负反馈,使得输入控制电压与Vr虚短,近似相等。这可以得到负载电流。
3.硬件设计
3.1.电源
电路图如图所示:
电源由+12V单电源输入,产生了正负5V双电源和+3.3V电源。+12V与-5V为运放电源,+5V为DAC电源,+3.3V为STM32、OLED电源。
3.2.DAC控制
电路如图所示:
LM385BD-2-5为DAC提供电压参考,参考电压为2.5V。74LVC4245A为电平转换器,使得3.3V电平与5V电平兼容。DAC1220为16/20位DAC,使用时设置的是20位DAC。
3.3.控制输出
电路如图所示:
运放使用OPA2277U精密运放,经过第一级运放耦合后,再与MOS管构成负反馈电路。MOS管信号为IRF640,IRF640的漏源极电阻小,为180m,对参考电阻影响小。参考电阻R10、R11、R12采用的是10R的金属箔电阻,温漂小,可以减小在大电流的情况下,温升所造成的影响,使得电流值稳定。
4.DAC1220程序设计
DAC1220采用SPI时序控制,只利用了SPI的时钟线,主发从收线和片选。
DAC1220相关程序:
/*
函数功能:使能器件
*/
void enable_DAC1220(u8 set)
{CS = set;
}void DAC1220_toggle(void)
{CS = 1;delay_us(800);CS = 0;delay_us(400);
}/*
函数功能:DAC1220写入一个字节数据
参数: data:写人的数据
SPI时序
*/
void DAC1220_write(u8 data)
{u8 i;CLK = 0;DIO = 0;for(i=0;i<8;i++){delay_us(10);CLK = 1;delay_us(10);DIO = ((data&0x80)? 1:0);data<<=1;delay_us(10);CLK = 0;delay_us(10);DIO = 0;}
}/*
函数功能:DAC1220初始化
*/
void Init_DAC1220(void)
{enable_DAC1220(0); //开启器件 低电平有效delay_us(400);DAC1220_write(0x04); //定位到控制寄存器的高8位delay_us(400);DAC1220_write(0x02); //清除校准寄存器的值DAC1220_toggle();DAC1220_write(0x05); //定位到命令寄存器的低8位delay_us(400);DAC1220_write(0x00); //正常模式,数据从高位开始写入delay_us(400);enable_DAC1220(1); delay_us(800);enable_DAC1220(0); delay_us(400);DAC1220_write(0x04); delay_us(400);DAC1220_write(0x00);DAC1220_toggle();DAC1220_write(0x05); //定位到命令寄存器的低8位delay_us(400);DAC1220_write(0xA1); //20位DAC,标准模式,自校准delay_us(100);enable_DAC1220(1); delay_ms(50);
}/*
函数功能:DAC写入编码值数据
输入到24位的数据寄存器
*/
void DAC1220_value(u32 value)
{enable_DAC1220(0); delay_us(800);DAC1220_write(0x00); //数据输入寄存器的高8位delay_us(400);DAC1220_write((value>>12)&0xff); //取出高8位DAC1220_toggle();DAC1220_write(0x01); //数据寄存器的中间8位delay_us(400);DAC1220_write((value>>4)&0xff); DAC1220_toggle();DAC1220_write(0x02); //数据寄存器的低8位delay_us(400);DAC1220_write((value<<4)&0xf0);DAC1220_toggle();enable_DAC1220(1); delay_ms(200);
}
5.实物图
完整的电路图与程序,我上传到了CSDN上,链接https://download.csdn.net/download/qq_37405067/13117465
基于STM32的恒流源设计相关推荐
- 基于stm32无线充电器设计
目录 一.项目描述 二.原理图 三.实物 四.论文 五.程序 六.资料清单 资料下载地址:基于STM32无线充电器设计 一.项目描述 本项目设计了一款用于小功率电子设备的无线充电器,该充电器由发送控制 ...
- 基于STM32指纹密码锁设计
基于STM32指纹密码锁设计 程序.仿真.原文 本设计主要由stm32f103rct6单片机.AS608指纹模块.LCD1602显示屏.AT24C02存储模块.继电器和指示灯组成,该指纹密码锁是以st ...
- 基于STM32的课程设计(毕业设计)——篮球记分器
写在前面-- 文章将介绍一个基于STM32的课程设计--篮球记分器.本设计由QFNU'2019级电子信息工程的CHQ小组完成.从开始到完成一共用了3个周的课余时间.C同学完成了作品的整体思路构建与程序 ...
- 基于STM32智能窗帘设计proteus仿真
本设计: 基于STM32智能窗帘设计(含源程序+proteus仿真) 仿真:proteus8.11 程序编译器:keil 5 编程语言:C语言 编号C0007 [腾讯文档]C0007 网盘链接 资料下 ...
- 基于stm32单片机电子秤设计
基于stm32电子秤设计 基于STM32F103C8T6计价电子秤 模块:采用STM32F103C8T6+LCD1602液晶显示+4*4矩阵按键+电子秤+hx711压力传感器 设计功能: 1.液晶显示 ...
- 基于stm32电子时钟设计
电子万年历的链接 基于STM32的电子万年历设计 摘 要 随着社会的发展,我们生活中充满了电子产品,我们IT信息人才就是要解决问题的.我们日常生活中需要了解时间,日期温度等模拟量,那么我们平时也可以看 ...
- 基于STM32的倾斜仪设计(一)—— 硬件设计(1)
开一篇博客记录一下自己的毕设工作. 在此次设计中,我们选用stm32作为控制核心和处理核心,并辅以485通信,可以实现倾斜仪与上位机的通信功能. 在设计完成之后,我们将其应用于工业现场,测量吊篮的倾斜 ...
- 基于STM32的数显温度计设计
一.设计目的 利用STM32完成数显温度计的制作,功能包括实时温度显示(摄氏度与华氏度),高温与低温报警,以及温区设置. 二.设计方案 系统采用STM2F103C8T6芯片实现,温度传感器采用DS18 ...
- 基于STM32的倾斜仪设计(二)—— 硬件设计(2)
2.4控制电路 本实验中选用的控制核心是STM32系列单片机,具体型号为STM32F103R8T6.STM32F103R8T6是一款嵌入式-微控制器集成电路,是ST旗下的一款常用的增强型系列微控制器. ...
最新文章
- 十问陆奇:努力、能力和机遇,谁能帮你跑赢未来?
- vi命令,印在杯子上,还是印在脑子里。
- LSD-SLAM 编译过程(Ubuntu 14.04 + ROS Indigo
- python映射类型-详解Python中映射类型(字典)操作符的概念和使用
- [蓝桥杯][2018年第九届真题]小朋友崇拜圈(简单图论)
- P2472-[SCOI2007]蜥蜴【网络流】
- 光耦在短距离通信中的应用
- 项目基于vue-uniapp,使用colorUi与uview框架,完美支持微信小程序
- libz.so.1: cannot open shared object file: No such file or directory
- Linux内核 触摸板,Linux下关闭触摸板和触摸杆
- 【原】执行nosetests 报错:pkg_resources.DistributionNotFound: nose==0.10.4
- 关于一个flask的服务接口实战(flask-migrate,flask-script,SQLAlchemy)
- python 异步IO编程
- 谈腾讯地图web api如何实现类似百度地图内置的城市切换、关键字输入提示功能
- Linux------进程概念、进程控制
- jquery前端简单分页_如何使用jQuery创建简单的分页
- 浅谈小学语文教学中的读
- 求多项式浮点java思路,求多项式函数实数根的方法
- 毕业设计 STM32单片机的蓝牙智能计步器手环
- 【Windows Server 2019】发布服务器 | 远程桌面服务的安装与配置 Ⅱ——配置RemoteAPP和访问