硬币检测电路设计

一、来源:凡亿教育

第一场:硬币检测装置原理分析、电路设计以及器件选型_哔哩哔哩_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.rhkb.cn/news/338269.html

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

相关文章

vs2019 c++20 规范 STL库中关于时间的模板

在学习线程的时候&#xff0c;一些函数会让线程等待或睡眠一段时间。函数形参是时间单位&#xff0c;那么在 c 中是如何记录和表示时间的呢&#xff1f;以下给出模板简图&#xff1a; 谢谢

CMake的作用域:public/private/interface

在 CMake 中&#xff0c;public、private和 interface是用来指定目标属性的作用域的关键字&#xff0c;这三个有什么区别呢&#xff1f;这些关键字用于控制属性的可见性和传递性&#xff0c;影响了目标之间的依赖关系和属性传递。 public 如果在一个目标上使用 public关键字时…

mysql去除重复数据

需求描述 doc表有很多重复的title,想去除掉重复的记录 表结构 CREATE TABLE doc (id INT PRIMARY KEY,title VARCHAR(255),content TEXT );去重SQL -- 创建临时表 CREATE TEMPORARY TABLE temp_doc AS SELECT * FROM doc WHERE 10;-- 插入唯一的记录&#xff08;每个title最…

FPGA定点数FFT过后转换为浮点数与Matlab计算的FFT结果进行比对

目录 1.前言2.FPGA的testbench中如何读取数据文件3.FPGA的testbench中如何将输出数据存储在文件中4.Matlab去读取testbench存储的文件数据4.1纯数字不带编码4.2 带编码的数据&#xff0c;如定点数 微信公众号获取更多FPGA相关源码&#xff1a; 1.前言 前面一篇文章讲了&…

基础—SQL—DCL(数据控制语言)小结

一、总结 在SQL分类中的DCL语句部分&#xff0c;主要讲到了两个部分的知识。 1、用户管理 用户管理&#xff0c;主要是管理哪些用户可以访问当前 mysql 数据库。 包括&#xff1a;创建用户、修改用户密码以及删除用户 2、权限控制 权限管理&#xff0c;主要是控制我们当前用户…

iOS App Tech Support(URL)

咪萌是一个语音类交友直播App&#xff0c;分成红艳知己&#xff0c;点唱大厅&#xff0c;歌手驻唱等不同房间分类&#xff0c;广场可以看到其他人发的一些动态&#xff0c;一个非常不错的App 如果您有任何疑问&#xff0c;您可以留言或者将问题发送至我们的邮箱。 我们会第一时…

Python知识点5---字符串的使用

提前说一点&#xff1a;如果你是专注于Python开发&#xff0c;那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了&#xff0c;而如果你和作者一样只是操作其他技术的Python API那就足够了。 Python的字符串在使用上和其他语言的差别不大&#xff0c;常规操作都…

GPT-4o VS GPT-3.5 完胜

前言&#xff1a; 最近&#xff0c;GPT-4o已经限时免费开放了&#xff0c;试了一下&#xff0c;然后&#xff0c;说我的时间到了&#xff0c;然后&#xff0c;有给我转到3.5&#xff0c;正好遇到一个问题做一下对吧&#xff0c;感觉4O完胜啊。3.5还是很好胡诌&#xff0c;也就…

java web爬虫

目录 读取本地文件 从网站读取文件 java爬虫 总结 读取本地文件 import java.io.File; import java.io.PrintWriter; import java.util.Scanner;public class ReplaceText {public static void main() throws Exception{File file new File("basic\\test.txt"…

如何使用Dora SDK完成Fragment流式切换和非流式切换

我想大家对Fragment都不陌生&#xff0c;它作为界面碎片被使用在Activity中&#xff0c;如果只是更换Activity中的一小部分界面&#xff0c;是没有必要再重新打开一个新的Activity的。有时&#xff0c;即使要更换完整的UI布局&#xff0c;也可以使用Fragment来切换界面。 何…

激光焊接机作为一种高效、精密的焊接设备

激光焊接机是一种用于材料加工时激光焊接的机器&#xff0c;以下是对其的详细介绍&#xff1a; 1. 定义与别称&#xff1a; 激光焊接机&#xff0c;又常称为激光焊机、镭射焊机&#xff0c;是材料加工激光焊接时用的机器。 2. 工作原理&#xff1a; 激光焊接是利用高能量…

进程间通信(27000字超详解)

&#x1f30e;进程间通信 文章目录&#xff1a; 进程间通信 进程间通信简介       进程间通信目的       初识进程间通信       进程间通信的分类 匿名管道通信       认识管道       匿名管道       匿名管道测试       管道的四种…

电商商城管理系统

前言&#x1f440;~ 将近一个月没更新了&#xff0c;最近忙着学校的大作业&#xff0c;一个是微信小程序的、一个是互联网编程的&#xff0c;也是忙完了这个大作业&#xff0c;这个大作业前端使用了vue、后端使用了java&#xff0c;接下来展示一些效果图&#xff0c;如果有需要…

HTTPS协议原理

HTTPS协议原理 一.前言-为何要有https协议二.加密与中间方劫持1.什么是加密2.为何要加密3.对称加密1.小例子2.好处和缺点 4.非对称加密5.数据指纹/数据摘要 三.站在设计者的角度提出方案1.只使用非对称加密 : 且只有server有密钥2.只使用非对称加密 : 且双方都有密钥3.非对称对…

网络安全-钓鱼篇-利用cs进行钓鱼

一、环境 自行搭建&#xff0c;kill&#xff0c;Windows10&#xff0c;cs 二、原理 如图所示 三、钓鱼演示 首先第一步&#xff1a;打开System Profiler-分析器功能 选择克隆www.baidu.com页面做钓鱼 之后我们通过包装域名&#xff0c;各种手段让攻击对象访问&#xff1a;h…

TH方程学习(3)

一、编程实现 根据论文给出的案例&#xff0c;使用TH方程进行数值仿真 1.初始化条件 %% 参考文献<New State Transition Matrix for Relative Motion on an Aribitrary Elliptical Orbit> %% 作者 Yamanaka Koji clc;clear global miu Re miu 3.986e5; Re 6378.137;…

阿里云语音合成TTS直播助手软件开发

阿里云的TTS比较便宜&#xff0c;效果比不了开源克隆的那种&#xff0c;比纯机器人效果好一点点 阿里云sambert https://help.aliyun.com/zh/dashscope/developer-reference/quick-start-13 Sambert系列模型 1万字1元 &#xff0c;每主账号每模型每月3万字免费 创建API-KEY htt…

域内用户枚举和密码喷洒

一. 域内用户枚举原理和流量 1. 原理 在AS-REQ阶段客户端向AS发送用户名&#xff0c;cname字典存放用户名&#xff0c;AS对用户名进行验证&#xff0c;用户存在和不存在返回的数据包不一样。 不同之处主要是在返回数据包中的状态码不同&#xff0c;根据不同的状态码来区分账…

271 基于matlab的可调Q因子小波变换故障诊断

基于matlab的可调Q因子小波变换故障诊断&#xff0c;可用在轴承、齿轮、活塞等故障诊断中&#xff0c;程序中包含了原始TQWT工具箱和轴承振动信号信号的谱包络的求取。通过仿真数据、实际轴承数据说明了方法的效果。程序已调通&#xff0c;可直接运行。 271 可调Q因子小波变换 …