2109-全国大学生电子设计竞赛-F-纸张数识别(内含arduino代码以及题解)

题目:

一,任务
设计 并制作纸张 计数 显示装置 ,其 组成如图 1所示 。两块 平行 极板 (极板 A、 极板 B)分别通过 导线 a和导线 b连接到测量显示电路, 装置 可测量并显示 置于 极板 A与极板 B之间的纸张数量。
理想实物图
二,要求
1,基本要求
(1)极板 A和极板 和极板 B上的金 属电极 部分均 为边长 50mm0mm ±1 mm 的正方形, 导线 a和导线 b长度均为 500mm ±5mm 。测量显示电路应具有“自校 。测量显示电路应具有“自校 。测量显示电路应具有“自校 。测量显示电路应具有“自校 准”功能, 即正式测试前,对置于两极板间不同张数的纸进行量,以获取测量校准信息。
(2)测量显示电路可自检并报告极板A和极板B电极之间是否短路。
(3)测量 置于两 极板之间 1~ 10 张不等的 给定 纸张数。每次在极板间放 入 被测纸张 并固定 后,一键启动测量显示被纸张数 后,一键启动测量显示被纸张数 后,一键启动测量显示被纸张数 并发出一声蜂鸣。 每次测量 从按下 同一 测量启动键到发出蜂鸣的 时间 不得超过 5秒钟 , 在此 期间对 测量装置 不得有任何人工干预 。
2.发挥部分
(1) 极板、导线 均不变, 测量 置于 两极板之间 15 ~30张不等的 给定 纸张 数。 对测量启动键、显示蜂鸣 测量启动键、显示蜂鸣 测量启动键、显示蜂鸣 、测量 时间 、不得人工干预 、不得人工干预 、不得人工干预 等有关要求同“基 要求同“基 要求同“基 本要求 (3) ”。
(2) 极板 、导线 均不变 ,测量 置于两 极板之间 30 张以上 的给定 纸张 数。 对测量启动键、显示蜂鸣 测量启动键、显示蜂鸣 测量启动键、显示蜂鸣 、测量 时间、不得人工干预等有关 时间、不得人工干预等有关 时间、不得人工干预等有关 要求同“基 要求同“基 要求同“基 本要求 (3) ”。
(3) 其他。
三、说明
(1) 被测纸张一律为 70g 规格的 规格的 A4 复印纸, 极板 A、B电极 接触 被测纸 张的具体位置不限。测试 时使用 测试 现场提供 的同规格纸张 。
(2) 极板 A、B可用金属板材 可用金属板材 制作 ,也 可用 双面覆铜板(简称) 双面覆铜板(简称) 制 作。双面板的一 。双面板的一 面加工 出边长 50mm ±1mm 的正方形 覆铜电 极板,另 一面 允许 有用于焊接导线 a、b的过孔 焊盘 与引线、 不允许有覆铜面 网。禁止用多层板 制作极。
(3) 极板 A、B与导线 a、b(信号线) 必须 为二线制平行极板结构 二线制平行极板结构 ,每块 ,每块 极板 的电极 只能连接一根信号线; 导线 a、b的线缆类型与排布方式 不限。极板 、导线不 符合上述 要求 的不予测试 。
(4) 参赛者自行设计极板与纸张之间的 结构, 使两极板 能压紧或夹被测 纸张, 该结构不得增加 电极板 面积 ;极板 A、B与导线 a、b部分 不得 安装 或连接 元器件 、其他 传感器 或量器 ,否则 不予测试 。
(5) “自 校准”应在测试前 校准”应在测试前 的作品恢复准备阶段完成, 开始 测试 后不 得再 进行“自校准” 操作。
(6) 每次 开始 测量 只能按同一个启动键(只能按一次), 完成 测量 时发出 蜂鸣音 并显示 锁定 的被测纸张数,无法锁定 显示 纸张数 的不得分 。

评分表

思路:

利用fdc1214模块将两极板之间的电容大小转换为数字信号返回到单片机,通过多次测试总结数据,
数据处理可以用三种方法进行:
(1):
打表,将数据区间不断的精确,从而确定固定纸张对应数值,从而得之数目,然后将数字映射到LDC模块进行显示
(2):
利用EXCEL表格进行函数模拟,得出具体的函数(但是解函数比较麻烦,好像涉及到五阶函数求解模拟)
(3):利用matlab(数学建模的巨巨应该会很熟悉)进行模拟函数,因为本人太过于菜,不得不用打表处理数据。

代码


#include <Wire.h>
#include <LCD.h>
LCD lcd(33, 31, 29);//LCD,CS,DAT,CLK
struct node{
  int l;
  int r;
};
node arr[31]={
  {13960,14399},{14400,15100},{15101,15500},{15501,16000},{16001,16300},{16301,16700},{16701,16950},{16951,17150},{17151,17450},{17451,17830},{17831 ,18040},{18041,18140},{18141,18330},{18331,18520},{18521,18725},{18726,18900},{18901,19040},{19041,19130},{19131,19230},{19231,19400},{19401,19500},{19501,19620},{19621,19720},{19721,19820},{19821,19910},{19911,20000},{20001,20055},{20056,20130},{20131,20220},{20221,20300},{20301,20555}};
///打表的数据
char str1[] = "-paper";
char str2[] = "cutting-out";
char str3[]="HAPPY-DAY";
///LCD显示的内容
int light=13;
int lamp1=2;
int lamp2=3;
int buzzer = 12;
int kl[4] = { 4,5, 6, 7};            //行线引脚定义
int kc[4] = { 8,9, 10, 11};         //列线引脚定义
int key = 0;                          //键值
int key1 = 0;                         //判断按键是否释放标志
int key_l;                            //行
int key_c;                            //列
int flag = 0;                         //有键按下标志
#define FDC2X14_Address 0x2A
#define FDC2X14_W FDC2X14_Address<<1
#define FDC2X14_R (FDC2X14_Address<<1)+1
#define DATA_CH0 0x00
#define DATA_LSB_CH0 0x01
#define DATA_CH1 0x02
#define DATA_LSB_CH1 0x03
#define DATA_CH2 0x04
#define DATA_LSB_CH2 0x05
#define DATA_CH3 0x06
#define DATA_LSB_CH3 0x07
#define RCOUNT_CH0 0x08
#define RCOUNT_CH1 0x09
#define RCOUNT_CH2 0x0A
#define RCOUNT_CH3 0x0B
#define OFFSET_CH0 0x0C
#define OFFSET_CH1 0x0D
#define OFFSET_CH2 0x0E
#define OFFSET_CH3 0x0F
#define SETTLECOUNT_CH0 0x10
#define SETTLECOUNT_CH1 0x11
#define SETTLECOUNT_CH2 0x12
#
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值