纸张计数装置:测多少张不重要,关键是准确!(源码开源)
不想错过我的推送,记得 点击右上角 - 查看公众号 - 设为星标!摘下星星给我⭐️!
我们是来自中国民航大学的参赛队员(胡冀威王启鑫 莫浩杰),在2019全国电赛F题中取得国一的成绩,在此分享我们的作品,感谢达尔闻邀约。
作品的源码可以在“达尔闻说”公众号,回复:F题代码,即可获得。
我们的作品应用FDC2214电容传感器芯片测量电容值所用的LC谐振原理,采用矩阵压缩拟合算法和中值平均滤波算法,设计并制作一套应用电容传感器FDC2214计量纸张的系统。系统主要由STM32F407处理器及其最小系统、FDC2214电容传感器芯片及其外围电路、二线制平行电容极板及其固定结构构成。
STM32主控板:系统的总控制器,采用STM32F407VGT6单片机,上面集成了常用的按键和OLED显示屏。
/*!
* @brief FDC2214初始化函数
* @return 1:成功;0:失败
* @since v1.0
* Sample usage: FDC2214_Init();
*/
uint8_t FDC2214_Init(void)
{
uint16_t deviceID = 0;
deviceID = FDC2214_Read16(FDC2214_Addr, FDC2214_DEVICE_ID); //读器件ID
if (deviceID == FDC2214_ID)
{
FDC2214_Reset();
FDC2214_SetRcount(FDC2214_Channel_0, 600); //600 cycles 转换周期
FDC2214_SetSettleCount(FDC2214_Channel_0, 200); //200 cycles 等待时间
FDC2214_SetChannelClock(FDC2214_Channel_0, 2, 1); //设置时钟分频,1分频,40MHz
FDC2214_SetActiveChannel(FDC2214_Channel_0); //开启通道0
FDC2214_SetCurrentMode(0); //全电流激活模式
FDC2214_SetClockSource(1); //外部时钟源
FDC2214_SetHighCurrentMode(1); //高电流传感器驱动
FDC2214_SetMUX_CONFIG(0, FDC2214_Channel_Sequence_0_1, FDC2214_Bandwidth_10M); //关闭自动扫描,10MHz带宽
FDC2214_SetSleepMode(0); //退出睡眠状态,开始工作
return 1;
}
return 0;
}
纸张数的计算:DealData_BaseData是一个数组,记录了不同纸张数的FDC2214读数,比如DealData_BaseData[0]记录的是1张纸的FDC2214读数、DealData_BaseData[1]记录的是22张纸的FDC2214读数,以此类推。通过计算当前读数与基准值的误差,然后进行排序,最小的即为最接近的纸张数。
static int cmpfunc(const void *a, const void *b)
{
return ((dealData *)a)->error - ((dealData *)b)->error;
}
//计算纸张数
uint16_t DealData_Calculate(void)
{
uint32_t dataTemp = 0;
dataTemp = FDC2214_Data;//缓存FDC2214数据
DealData_Init(0);
for (uint16_t i = 0; i < PAPER_COUNT; i++)
{
DealData_ErrorData[i].error = fabs((double)((int32_t)dataTemp - (int32_t)DealData_BaseData[i]));//记录当前值与存储基准值的误差
}
qsort(DealData_ErrorData, PAPER_COUNT, sizeof(dealData), cmpfunc);//将误差从小到大快速排序
return DealData_ErrorData[0].index;//返回最小值,及最接近的值
}
自校准程序:因为采用对数函数进行拟合y=A*ln(x)+B,需要计算出2个参数A、B,采用矩阵来计算这两个参数,这样的优点是可以输入多个已知数来进行计算,提高准确度。矩阵运算库采用的是CMSIS-DSP库。计算后得出A、B两个参数,将这两个参数带入y=A*ln(x)+B中,计算出当纸张数为X时的理论FDC2214读数,然后将这个数填入DealData_BaseData作为基准值。
自校准程序以及作品的全部程序,可以在“达尔闻说”公众号,回复:F题代码,即可获得。
一定要找好队友,不一定要那种特别强,但也尽量别找基础比较弱的,3个人要配合好,别都到了测评现场还在吵架。
单片机就不用多说了,TI的、ST的都行,找一款自己用得最熟的。把常用的程序模块化,比如ADC、PWM、定时器、OLED显示等等。用的时候直接复制过来用,可以节约很多时间。 程序上尽量有一个可以调参数的菜单,这样可以脱机调参数,而不必每次都连电脑改参数了。菜单推荐GitHub上一个开源的OLED菜单SOLGUI,用起来也比较方便。https://github.com/MaxwellXyao/SOLGUI_V2 常用的模块还是要多备点,能自己做的尽量自己做,避免出现2018年TI杯省赛那样要求在板子上打上序列号。
C题线路负载及故障检测装置(湖南理工学院)F题测多少张纸才能获得国一?(上海海事大学)H题国一电磁炮打靶,做过才知道多心酸(河北地质大学)B题轴距仅210mm的四旋翼有多稳(上海大学)D题简易放大器电路特性仪,拿国一不简易(南京邮电大学)F题纸张计数精准测量出200张纸?!(湖南师范大学)A题无线充电小车,车小能量大(南京邮电大学)A题小车充电一分钟,到底能跑多远(西北大学)达尔闻 2019年电赛培训及猜题,采访集锦国奖出炉!竞赛获奖名单,戳这里>>
9万+直播在看的电赛猜题文字版,戳这里>>2019电赛题目公布,戳这里>>电赛最受关心的问题及解答,戳这里>>国一师兄提前带你终极测评,戳这里>>西电李同学的综测详解,戳这里>>复测现场,达尔闻采访优秀队伍,戳这里>>2019年电赛综合测评TOP作品一览,戳这里>>
达尔闻为参加电赛的同学们准备了以下课程:
MOS管开关波形过冲、电源隔离、电源纹波测量
从时域角度快速调节PID控制器!
逆变知识立即补!电赛清单“功率分析仪"预测
毕业设计开班啦!达尔闻秋季大事件
达尔闻携全球分销商-得捷电子(Digi-key)带来17讲毕设系列线上课程。
讲师:毕设导师,名校博士/硕士,资深工程师,知乎大神,B站Up主
课程内容:从选题、基础知识补足,毕设题目拆解教学到毕设案例分享。
时间:2019年9月-2019年12月
福利:丰富的毕设资料、项目方案,免费开发板等,立即占座:
方式一,毕业设计-得捷 交流qq群:657307701
方式二,识别下方二维码进微信交流,如群满可添加妮姐微信:459888529