2017电子设计攻略_控制类

2019-04-13 15:42发布

2017年电子设计大赛准备攻略(控制类)

                                  Author: 靳皓屹   中北大学

1.  组队

      组队是一件非常重要的事情。在组队之前,一定要想清楚:     (1)三个人中间是否有一位核心成员(具有决断力,能够定好团队的方向); (2)分工问题;个人认为最合理的分工是这样的:硬件+驱动+APP,之后会详细的谈这个问题; (3)指导老师,指导老师是否能够帮到你;

2.  分工问题详解:

      硬件负责人:负责搭建机械结构,电路设计制作,以及配合驱动负责人调好底层驱动程序;     驱动负责人:负责各个模块基础函数的编写,并帮助APP负责人解除程序bug,团队的中枢,需要有较为深的单片机功底;     APP负责人: 负责根据题目要求编写相应的应用,需要有清醒的头脑,和扎实的编程功底,并且要学会一些基础的算法,比如PID;         下面我以一个简单的小题目为例,去阐述一下三个人如何去配合:     题目:制作一个温度报警仪,当温度高于20度时,蜂鸣器响起,用户必须按下按键来解除报警;低于20度时蜂鸣器不响。         拿到这个题目,一看其实很简单,一个人就能完成;但是在电子设计大赛时,要求会很多,会有很多的逻辑,驱动方面要求也会很高,另外机械结构要求就更高了。就当这是一个电赛题,三个人应该如何应对?             三个人一起商讨一个整体方案:     我们采用STM32单片机,DS18B20作为测温模块,自己制作蜂鸣器报警模块(无源的),自己制作按键模块。循环检测温度,如果大于20度,则蜂鸣器响起,开始检测按键是否按下与温度是否降下,如果降下来或者按了按键,蜂鸣器停止报警。         硬件负责人:开始制作硬件模块,蜂鸣器模块,按键模块,留好排针,并可以通过自己的电平测试(就是加上相应的电平来看看是否可以工作)。         驱动负责人:开始编写各个模块驱动,温度模块,按键模块,蜂鸣器模块,写到什么程度?             温度模块:封装出一个 floatget_temp();  只要调用这个函数,就能得到温度值;         按键模块:封装一个  int get_key();   调用这个函数就能够得到按键值;               蜂鸣器模块: 封装一个 void beep(intx);  当beep(1)时,蜂鸣器就能响。反之不响;        APP负责人:将上述驱动看成一个黑盒(就是假设上面的函数已经OK),然后按照题目逻辑写主函数;         当硬件同学完成硬件制作后,把模块交给驱动同学,测试一下如果没有问题,然后把APP同学的主函数添加到驱动同学的工程当中,看看能不能行,如果不能的话继续debug,这个时候三个人可以齐心协力,商量问题出在谁身上。      

3. 赛前准备:

   (1)项目篇        入门的话非小车莫属了。做一个循迹小车,最好按照上述的方法合作完成,不要死坑一个人,时间长了被坑的那个人效率会很低。            之后就是去做往年的电赛题,建议做平衡类的,比方说倒立摆和自平衡小车,别的题目意义不是太大;                  平衡类的题目主要是PID算法的调优。怎么调,我们以前是暴力求解法,说白了就是瞎试,但是这样不是很科学,我电赛之后一直没搞这方面也没总结,这方面最好找你们的指导老师,看看他们有没有高招,至少,不要一直试参数。               (2)准备篇:            硬件负责人: 学习CAD制图,单片机,PCB制作,一些传感器的基本原理,学着自己去制作一些传感器和模块,稍后我会列举;            驱动同学:   学习单片机,每个知识点都要搞清楚,比方说GPIO,中断,定时器,PWM,I2C,SPI,串口;还有一些模块:            显示屏,蓝牙,NRF2401,直流电机,步进电机,舵机,航模用的无刷电机,这些都要搞清楚,都要亲手去驱动一遍;            APP负责人:  学习单片机,经常做一些程序逻辑训练,学一些自动控制原理(PID算法的调优);               (3)模块篇:            直流电机驱动器(LN298),步进电机驱动器(专业驱动器),电调(无刷电机);            OLED显示屏,触摸屏等等(显示)            蓝牙模块,NRF2401;            蜂鸣器模块;            编码器,精密电阻器(测转角);            MPU6050(自带库DMP,测角度,加速度,角加速度)            光耦模块(用于保护);                       上述模块是一些常用的,大家电赛之前准备好足量的,还有驱动程序都要搞好。            还有就是要设计一个人机交互界面,通用模板,不管什么项目都可以用。