当前位置: 首页 > news >正文

硬币检测电路设计

一、来源:凡亿教育

第一场:硬币检测装置原理分析、电路设计以及器件选型_哔哩哔哩_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开源地址:

  https://oshwhub.com/talented_fish/fan-yi-jiao-yu-ying-bi-jian-ce-dian-luicon-default.png?t=N7T8http:// https://oshwhub.com/talented_fish/fan-yi-jiao-yu-ying-bi-jian-ce-dian-lu

九、部分踩坑:购买的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并联上减少更多的电压来形成整体电压下降。这是第二处灵敏度增加。注意R23电阻的功率按如此计算(12V*50%=6V,6*6/75=0.48W【串联谐振时电阻极小】,远小于3W,这样放热较小)

TP4点电压为什么减小?

10.3 峰值检波电路

 

 输入交流信号,运放输出与二极管负极之间有一个导通压降,V+>V-期间输出端电压上升,电容充电。V+<V-期间,输出端电压下降,由于二极管存在,电容不能向运放放电,所以电容向右边的电阻放电,但是速度极慢,只放少许电压即又开始充电,几乎维持在一个水平线上(轻微波澜)。以此起到检测峰值的作用。

D2二极管起到钳位作用,让输入不低于0.7V。

R7电阻起到限流作用(V+>V-时充电会有较高脉冲)

R4(NC)预留做电流衰减

R5(NC)预留起放大作用

R10起隔离作用

10.4 半桥驱动电路

12V通过D1向VB充电,同时防止VB向VCC引脚充电。

R18和R19起到隔离的作用(MOS管特性)

R20和R21起到下拉的作用(防止静电,保持稳定)

D4和D5用于在MOS关断时放电加快关断速度

10.5 单片机最小系统板电路

 10.6 OLED模块 

10.7 电源电路

10.8 按键电路

十一、实物调试 

11.1 先测试按键和屏幕是否正常使用,电压值是否正确采集

11.2 测试实际并联谐振频率

(1)使单片机PWM输出一路2KHZ占空比50%的方波

(2)按如下图更改电路

(3)用示波器测试图中SIN_OUT位置处的波形,测试其频率

(4)将电路恢复原来的位置,测试真实串联谐振频率(下图TP4点的信号,示波器接入)

 

 

 

11.3 上图测试出来LC串联谐振的实际频率为28.571KHZ,所以我们修改之前设置的单片机输出的PWM,为28.6KHZ(占空比50%) 

再次测试11.2中的TP4点的信号发现信号变为漂亮的正弦波信号。

11.4 将硬币挨个放到线圈上,观察不同的硬币导致最后呈现的电压,在程序中记录

11.5 由于这个电路会受到温度变化(温度引起阻值变化导致电压变化),所以需要在软件中设计一个矫正电压值的功能,这也是我们为什么需要设计三个按键

http://www.lryc.cn/news/361286.html

相关文章:

  • 3.基础光照
  • Image Search-这是你的图像搜索
  • 对GPT-4o的评价:技术革新与未来展望
  • 【TB作品】msp430f5529单片机,dht22,烟雾传感器
  • uni-app全局弹窗的实现方案
  • Love-Yi情侣网站3.0存在SQL注入漏洞
  • 自然语言处理(NLP)—— 神经网络语言处理
  • SHA256计算原理
  • Mysql | select语句导入csv后再导入excel表格
  • SpringBoot:手动创建应用
  • 【LeetCode】39.组合总和
  • 用JS来控制遥控车(一行代码即可连接, 超简单!)
  • MyBatis-Plus如何优雅的配置多租户及分页
  • 国产操作系统上Vim的详解01--vim基础篇 _ 统信 _ 麒麟 _ 中科方德
  • 如何正确理解事件溯源架构模式?
  • 【漏洞复现】电信网关配置管理系统 rewrite.php 文件上传漏洞
  • 线性调整率:LINE REGULATION详解
  • Workfine默认首页功能详解
  • CSAPP Lab07——Malloc Lab完成思路
  • 简单、免费、无广告的高性能多线程文件下载工具
  • 【退役之重学 SQL】什么是笛卡尔积
  • Vue3禁止 H5 界面放大与缩小功能
  • 上位机图像处理和嵌入式模块部署(f407 mcu中tf卡读写和fatfs挂载)
  • 汽车识别项目
  • 【面试题-012】什么是Spring 它有哪些优势
  • ImageButton src图片会照成内存泄露吗 会使native内存增加吗?
  • 负载均衡与容错性:集群模式在分布式系统中的应用
  • 【UE5.1 角色练习】09-物体抬升、抛出技能 - part1
  • 最大的游戏交流社区Steam服务器意外宕机 玩家服务受影响
  • 如何手动批准内核扩展 Tuxera NTFS for mac内核扩展需要批准 内核扩展怎么打开