硬币检测电路设计

一、来源:凡亿教育

第一场:硬币检测装置原理分析、电路设计以及器件选型_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1Zh4y1V7Px/?p=1&vd_source=43eb1cb50ad3175d7f3b9385905cd88f

二、开发软件:KEIL MDK

三、主控芯片:STM32F103C8T6

四、电路原理图设计、PCB绘制:立创EDA

五、涉及成品模块:0.96 inch OLED , STM32F103C8T6最小系统板

六、实物测试视频:

硬币检测电路测试视频

电路上有三个按键,第一个是进入校正模式(进入后功能变为切换要校正的硬币),第二个为更新硬币电压值(更新时需要将硬币放到线圈上),第三个按键为跳出校正(掉电不保护)

七、程序开源地址:

硬币检测电路/程序 · lovefoolnotme/开源项目 - 码云 - 开源中国 (gitee.com)icon-default.png?t=N7T8https://gitee.com/lovefoolnotme/open-source-projects/tree/master/%E7%A1%AC%E5%B8%81%E6%A3%80%E6%B5%8B%E7%94%B5%E8%B7%AF/%E7%A8%8B%E5%BA%8F

#include "sys.h"
#include "usart.h"	
#include "delay.h"
#include "oled.h"
#include "bmp.h"
#include "ADC.h"
#include "key.h"
#include "IR2104.h"extern uint8_t DMAEndFlag;		//0:DMA结束
extern uint8_t MeasUpdateFlag;		//测量更新标志,大约1s更新一次
extern uint16_t voltage;					//电压值,3位小数uint8_t    key_value=0;
uint8_t    jiaozheng=0;
//1角,5角,1元
uint16_t nomoney =1190  ;
uint16_t yj      =1044 ;
uint16_t wj      =936 ;
uint16_t yy      =577 ;
//uint16_t wj_yy   =650 ;
//uint16_t wj_yj   =886 ;
//uint16_t yj_yy   =677 ;
uint16_t gap     =50   ;
int main(void)
{	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级delay_init();	                //延时函数初始化  Key_Configuration();ADC_Config();IR2104_Config();//加这个延时是等待OLED屏幕启动delay_ms(100);   OLED_Init();OLED_ColorTurn(0);//0正常显示,1 反色显示OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示OLED_Clear();OLED_Refresh();ADC_SoftwareStartConvCmd(ADC1, ENABLE);while(1){
//判断ADC的DMA传输是否完成ADC_DMA_End_Detection();		if(!DMAEndFlag) VI_Seperation();if(!MeasUpdateFlag){
//计算电压,单位mv			VI_Calc();
//显示电压,单位mv			OLED_ShowNum(88,10,voltage,5,8,1);}//扫描按键
key_value=Key_Scan();		/*******************************************************校正开始*******************************************************/
//校正电压值
if(key_value==1)
{while(Key_Scan()==1);   //等待松开按键key_value=0;//开始校正电压值OLED_Clear();		 while(1){key_value=Key_Scan();while(Key_Scan()!=0);		  //等待松开按键 ADC_DMA_End_Detection();		if(!DMAEndFlag) VI_Seperation();if(!MeasUpdateFlag){			VI_Calc();}//校正yijiao if(jiaozheng==0){ OLED_ShowString(0,0,"jiaozheng!",8,1);OLED_ShowString(0,30,"yijiao:",8,1);OLED_ShowNum(80,30,yj,4,8,1);OLED_ShowString(0,50,"voltage:",8,1);OLED_ShowNum(80,50,voltage,4,8,1);OLED_Refresh();}//校正wujiaoelse if(jiaozheng==1){OLED_ShowString(0,0,"jiaozheng!",8,1);OLED_ShowString(0,30,"wujiao:",8,1);OLED_ShowNum(80,30,wj,4,8,1);OLED_ShowString(0,50,"voltage:",8,1);OLED_ShowNum(80,50,voltage,4,8,1);OLED_Refresh();}//校正yiyuanelse if(jiaozheng==2){OLED_ShowString(0,0,"jiaozheng!",8,1);OLED_ShowString(0,30,"yiyuan:",8,1);OLED_ShowNum(80,30,yy,4,8,1);OLED_ShowString(0,50,"voltage:",8,1);OLED_ShowNum(80,50,voltage,4,8,1);OLED_Refresh();}switch(key_value){case 0: break;//进入下一校正前清除屏幕case 1: jiaozheng++;if(jiaozheng>2) jiaozheng=0; OLED_Clear();break;//校正值保存case 2: {if(jiaozheng==0) yj=voltage;else if(jiaozheng==1) wj=voltage;else if(jiaozheng==2) yy=voltage;					else ;};break;case 3: break;default:break;				}//退出if(key_value==3){jiaozheng=0;key_value=0;OLED_Clear();break;}}	}
/*******************************************************校正结束*******************************************************///1.  1角硬币放在线圈上if(((yj-gap)<voltage)&&(voltage<(yj+gap)))OLED_ShowPicture(0,0,64,64,yijiao,1);
//2.  5角硬币放在线圈上else if(((wj-gap)<voltage)&&(voltage<(wj+gap)))OLED_ShowPicture(0,0,64,64,wujiao,1);
//3.  1元硬币放在线圈上else if(((yy-gap)<voltage)&&(voltage<(yy+gap)))OLED_ShowPicture(0,0,64,64,yiyuan,1);		
//4.  没有硬币放在线圈上elseOLED_ShowPicture(0,0,64,64,college_logo,1);//刷新屏幕		OLED_Refresh();}
}

八、原理图、PCB开源地址:

硬币检测电路/原理图、PCB · lovefoolnotme/开源项目 - 码云 - 开源中国 (gitee.com)icon-default.png?t=N7T8https://gitee.com/lovefoolnotme/open-source-projects/tree/master/%E7%A1%AC%E5%B8%81%E6%A3%80%E6%B5%8B%E7%94%B5%E8%B7%AF/%E5%8E%9F%E7%90%86%E5%9B%BE%E3%80%81PCB

九、部分踩坑:购买的LDO,AMS1117 12V-5V存在质量问题,输入12V直接损坏,后面发现是质量问题后使用10V输入电路也可正常工作。

十、原理图设计讲解与经验(凡亿教育):

10.1 检测的原理:涡流效应

在图中,可以看到,线圈中加入交变电流时,可以产生涡流效应,类似于变压器,硬币类似于负载,当硬币加入时相当于负载接入,电流会增大,这个时候后边的电流增大前边的电流也会变大,检测前边电路的电压即可知道是否有负载接入,主要是看电压值,所以其实这个电路不仅可以检测硬币,还可以检测其他金属物品,但是需要自己指定。我们将1角、5角、1元硬币分别放上线圈查看前边电路的电压检测值即可知道不同硬币在电路中对应的电压值,并且修改程序来判别电压达到判别硬币的功能。

10.2 检测电路的设计

先从后面开始看,并联的C1、C2合计为2UF,然后我们会在线圈接口接一个14UH的线圈(相当于电感),此时C1、C2和线圈构成一个LC并联,R1焊接1R电阻,C3电容是用来隔离直流(到C3的型号是一个交流和直流叠加的型号),C5焊接470NF电容,L3焊接68UH电感,C5和L3构成一个LC串联,R23焊接75R3W的金属膜电阻。为什么这么设计:

(1)为了节能。(LC并联)当LC并联谐振时,电感(线圈)中的电流和电容(C1、C2)中电流几乎相等,其他部分的阻抗变化几乎对能量消耗没有影响。

谐振频率计算公式(并联和串联都是这样):

(2)提高灵敏度。(LC串联电路)

LC串联谐振时等效电阻最小,LC并联谐振时等效电阻最大。

我们输入的交变信号频率是取LC串联电路的谐振频率,当硬币接入时,后边电路前边电路电流增大,电感L减小,在上面的公式可以看出谐振频率会增大(下图为LC并联的f与r的关系图),相当于放入硬币前我们的等效电阻与频率曲线为红色曲线,放入硬币之后为绿色曲线。我们输入的频率没有变,而谐振频率后移,等效电阻减小了,我们要检测的就是LC并联处TP5测试点的电压,这里的等效电阻减小,则电压会减小。这是第一处灵敏度增加。电流增大,则TP4处的电压减小(功率守恒),TP4的电压为R1电阻和后面LC并联的电压之和,电流增大,R1上的电压增大,而TP4点的电压减小,只能在LC并联上减少更多的电压来形成整体电压下降。这是第二处灵敏度增加。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL常用插件

PostgreSQL 拥有许多常用插件&#xff0c;这些插件可以大大增强其功能和性能。以下是一些常用的 PostgreSQL 插件&#xff1a; 性能监控和优化 pg_stat_statements 1.提供对所有 SQL 语句执行情况的统计信息。对调优和监控非常有用。 2.安装和使用&#xff1a; pg_stat_k…

数据库之函数、存储过程

函数、存储过程 1.函数 函数&#xff0c;常用于对一个或多个输入参数进行操作&#xff0c;主要目的是返回一个结果值&#xff0c;就是一种方法&#xff0c;在postgre里存放的位置叫function&#xff0c;比如创建一个计算长方面积的函数。 举例&#xff1a;建立一个计算长方形…

kali-搭建Pikachu漏洞练习平台

环境&#xff1a;kali 压缩包&#xff1a;pikachu-master.zip &#xff08;下载地址&#xff1a;GitHub - zhuifengshaonianhanlu/pikachu: 一个好玩的Web安全-漏洞测试平台&#xff09; 1.mysql 1.开启kali中自带的mysql systemctl restart mysql #重启MySQL服务 systemc…

Java面试题:Redis2_解决Redis缓存击穿问题

缓存击穿 当一个key过期时,需要对这个key进行数据重建 在重建的时间内如果有大量的并发请求进入,就会绕过缓存进入数据库,会瞬间击垮DB 重建时间可能因为数据是多个表的混合结果需要分头统计而延长,从而更容易出现缓存击穿问题 缓存击穿的解决方案 添加互斥锁 先查询缓存…

Ubuntu系统配置DDNS-GO【笔记】

DDNS-GO 是一个基于 Go 语言的动态 DNS (DDNS) 客户端&#xff0c;用于自动更新你的 IP 地址到 DNS 记录上。这对于经常变更 IP 地址的用户&#xff08;如使用动态 IP 的家庭用户或者小型服务器&#xff09;非常有用。 此文档实验环境为&#xff1a;ubuntu20.04.6。 在Ubuntu…

GIt快速入门(一文学会使用Git)

GIt快速入门 文章目录 GIt快速入门一、为什么要学习Git二、Git的安装1.安装Git2.下载GUI 三、Git的概念1、版本控制2、集中式控制3、分布式控制4、多人协作开发1.并行开发2.分支管理3.冲突解决4.代码审查5.分布式特性 四、Git客户端操作1.界面介绍2.提交操作3.创建分支4.合并分…

vscode编辑器创建分支注意事项?!

最近在公司开发项目时&#xff0c;不小心将自己分支的东西提交到公司的master的分支&#xff0c;大家看看是什么情况&#xff1f; 先上图&#xff1a; 从图上看&#xff0c;我这边用了GITLENS这个插件&#xff0c;在创建分支时&#xff0c;有个create branch from&#xff0c;有…

Zynq学习笔记--AXI4-Stream 图像数据从仿真输出到图像文件

目录 1. 简介 2. 构建工程 2.1 Vivado 工程 2.2 TestBench 代码 2.3 关键代码分析 3. VPG Background Pattern ID (0x0020) Register 4. 总结 1. 简介 使用 SystemVerilog 将 AXI4-Stream 图像数据从仿真输出到图像文件 (PPM)。 用到的函数包括 $fopen、$fwrite 和 $f…

2024 第三届 AIGC 中国开发者大会:多模态大模型的发展与趋势

引言 在2024年第三届AIGC中国开发者大会上&#xff0c;零一万物联合创始人潘欣分享了多模态大模型的发展与趋势。潘欣对多模态大模型的历史、现状和未来进行了详细回顾和深刻思考&#xff0c;为我们揭示了该领域的发展路径和技术前景。本文将详细解读潘欣的分享内容&#xff0…

Vue3实战笔记(56)—实战:DefineModel的使用方法细节

文章目录 前言一、实战DefineModel二、思考原理总结 前言 今天写个小例子&#xff0c;实战DefineModel的使用方法细节 一、实战DefineModel 上文官方说的挺清楚&#xff0c;实战验证一下&#xff0c;新建DefineModel.vue&#xff08;这是儿子&#xff09;&#xff1a; <te…

Facebook开户 | Facebook二不限户

Facebook二不限户的正确使用方法 Facebook 二不限是指 Facebook 国内二不限户&#xff0c;是通过代理开出来的一种特殊账户&#xff0c;️需要广告主准备主页。 其特点是&#xff1a;限主页、不限域名、额度没解限&#xff0c;解限后则不限额度。 相比于三不限户&#xff0c;…

Pycharm的基础设置+Pycharm与AutoDL服务器连接

一.pycharm的基础设置 1.下载pycharm profession版&#xff0c;配置之前博客里面的解释器mask2 2.run detect.py 3.终端的设置 &#xff08;1&#xff09;先直接在终端里面pip install 我们再创建一个测试python文件&#xff1a;terninal_test.py 虽然上面安装成功了包&#x…

GNU Radio创建qt time plot python OOT块

文章目录 前言一、创建自定义的 OOT 块1、安装相应依赖2、创建 OOT 块3、修改相关4、编译及安装 OOT 块 二、测试1、grc 图2、运行结果 三、资源自取 前言 官方提供的绘制时域波形的 block 名字叫做 QT GUI Time Sink&#xff0c;其底层实现是用 C 写的&#xff0c;但是我发现…

回归预测 | MATLAB实现基于GOOSE-LightGBM的多特征输入单输出数据回归预测(鹅优化算法)

回归预测 | MATLAB实现基于GOOSE-LightGBM的多特征输入单输出数据回归预测(鹅优化算法) 目录 回归预测 | MATLAB实现基于GOOSE-LightGBM的多特征输入单输出数据回归预测(鹅优化算法)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现基于LightGBM算法的数据回归预…

AI办公自动化:用通义千问Qwen-Long批量总结PDF长文档内容

Qwen-Long是在通义千问针对超长上下文处理场景的大语言模型&#xff0c;支持中文、英文等不同语言输入&#xff0c;支持最长1000万tokens(约1500万字或1.5万页文档)的超长上下文对话。配合同步上线的文档服务&#xff0c;可支持word、pdf、markdown、epub、mobi等多种文档格式的…

查看VUE3代理后真正请求的URL

在vite.config.ts中添加如下配置&#xff1a; server: {host: "0.0.0.0", // 指定服务器应该监听哪个 IP 地址port: 8848, // 指定开发服务器端口open: true, // 开发服务器启动时&#xff0c;自动在浏览器中打开应用程序cors: true,// Load proxy configuration fr…

无人售货机零售业务成功指南:从市场分析到创新策略

在科技驱动的零售新时代&#xff0c;无人售货机作为一种便捷购物解决方案&#xff0c;正逐步兴起&#xff0c;它不仅优化了消费者体验&#xff0c;还显著降低了人力成本&#xff0c;提升了运营效能。开展这项业务前&#xff0c;深入的市场剖析不可或缺&#xff0c;需聚焦消费者…

openresty(Nginx) 配置 特殊URL 密码访问 使用htpasswd 配置 Basic_Auth登录认证

1 使用htpasswd 生成密码文件.htpasswd是Apache附带的工具。如果没有可以安装。 #centos 8.5 系统 yum install httpd-tools #Ubuntu 24.04 系统 sudo apt update sudo apt-get install apache2-utils #生成密码文件,用户test sudo htpasswd -c /usr/local/openresty/nginx/…

高效派单的秘诀:探索运维工单处理软件的五大关键功能-亿发

在快节奏的现代企业运营中&#xff0c;如何高效管理生产流程&#xff0c;确保任务按时完成&#xff0c;同时保持产品质量和客户满意度&#xff0c;是每个管理者面临的重要课题。工单管理系统&#xff0c;作为企业数字化转型的关键工具&#xff0c;正逐渐成为解决这些问题的利器…

C++——输入输出、基本变量类型

目录 一、输入输出 1、标准输出流&#xff08;cout&#xff09; 2、标准输入流&#xff08;cin&#xff09; 3、标准错误流&#xff08;cerr&#xff09;和标准日志流&#xff08;clog&#xff09; 4、示例代码 二、基本数据类型 1、宽字符的用法 2、如何使用 3、示例…