这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【设计竞赛】触屏恒电位仪

共15条 2/2 1 2 跳转至
菜鸟
2018-05-11 00:10:57     打赏
11楼

---代码与调试---

1.触屏代码

之前提到过,串口屏最大的工作量不是在代码上,而是在美工上面,虽说作为电子工程师PS技术应该也不在话下,但是技术角度的审美与艺术审美还是差别的,所以为了赶进度,找人帮我把几张图简单的P了一下。

开机画面2.jpg声明:上面一图为开机LOGO,里面引用了microchip公司和电子产品世界的LOGO,承诺不做任何商业用途,只做本次项目开发使用,如有侵权,请联系我。

启动画面.jpg上图是启动画面,开机会进行自检。

J界面3.jpg上面这张就是整个设备的主界面了,左面一栏是控制按钮,中间右边是显示窗口,最下面一行为日期、时间和温度。

TIM截图20180511000350.png这是在串口屏开发环境中进行控件的配置与参数的设置

串口屏的设计基本上算是最简单的一个环节了。


菜鸟
2018-05-11 00:38:46     打赏
12楼

2.主板代码

    2.1整个项目中最最重要的环节,也是整个项目的核心。虽然不是按照实际的开发进度上传进程,但是每个环节都有做笔记和电子文档。

来两张开发手记吧。

2.2开发环境为MPLAB X IDE(英文版) V4.15,MCC,DCDT,Windows7 64bit。

2.3之前用过IDE环境开发过1619等8位机,由于配置简单,没有用过MCC,这次选用的这颗芯片引脚比较多,而且功能寄存器也非常多,尝个鲜,使用MCC进行配置。看数据手册这个芯片能跑到70MIPS,担心频率高了受干扰,一开始配置在40MHz上运行。还是比较担心MCC出现BUG,因为这样过于信任MCC,一旦出问题,需要按照datasheet上一点点的查错,那将花费更多的时间。没办法,因为开发周期紧张,还是决定使用MCC。为了出现问题方便查错,每个模块配置完后,都进行编译下载调试。一开始使用MCC的时候,IDE使用的为中文版,不知哪里的问题,第一次打开MCC的时候,再回去编写代码,双击代码窗口就消失掉了,非常诡异,后来论坛上发帖求助,好心坛友告知,使用英文版的就没有此问题了。后来果断卸载中文版,全部安装英文版的。



菜鸟
2018-05-11 01:20:43     打赏
13楼

2.4使用MCC配置的时钟为68.1725MHz不知为何无法配置成70MHz,但是看手册和例程,手动配置是可以实现的,不知这是什么原因。ADC和PWM时钟使用的独立时钟,频率为117.92MHz。系统时钟与ADC、PWM时钟分开是这款DSC的优势,首先相互不干扰,第二,作为电源响应速度是非常重要的,这种方式可以有效解决很多问题,这也是我一直在关注microchipdsPIC芯片的原因。时钟问题就这样吧,不能耗费过多的时间研究。

TIM截图20180511004647.png

2.5IO配置在这个软件里比较方便,可视化界面,不需要研究寄存器了。而且IO配置较为简单,目前所用到的是开关量输入输出,模拟输入,通信口等。串口通信配置两路,串口1给触摸屏,串口2备用。波特率习惯性的配置成9600,8bit,1校验,在这里又省去了计算。。。配置到这里的时候,就开始编译了,自动生成的代码没有问题,然后看着生成代码里有注释,调用起来比较方便。串口屏的驱动程序直接在官网上下载的51例程,把底层驱动程序改动了一下,像串口收发数据这样的,其他的都不变。

串口屏的驱动程序引用了两个C文件,3个H文件,其他的都被我精简掉了,串口收发程序直接移植到自动生成的C文件里,如上图中,串口1接收中断程序里,直接把数据寄存器内容送入数据处理子程序queue_push();

2.6IIC配置的时候出现了一个问题 ,就是按照传统的思想,把7位地址和1位收发一起算到待发的数据寄存器里了,就是不好用,IIC一共挂有一个存贮器,时钟和温度传感器,还以为芯片有问题,后来一个个拆下来,还是不行。找来逻辑分析仪发现DSC发送的地址跟实际地址不一样,难道是配置错了?于是赶紧对照数据手册进行查错,貌似自动生成的代码没有问题啊。后来在不断的用逻辑分析仪捕捉数据的时候,发现填入的地址和输出的波形数据都被左移了,突然恍然大悟,实际上自动生成的代码里要求填入IIC器件的实际7位地址,具体到读写的时候,程序会进行自动处理,而且一开始把7位地址和收发位一起算到里面了。这导致地址一直不正确,更正后,立刻发现通讯正常,后续将另外几个器件焊接好,调试通过。使用新器件,坑很多啊。。。


菜鸟
2018-05-11 12:58:10     打赏
14楼

2.7配置ADC和PWM的时候相对顺利一些。ADC使用自动生成的代码直接调用就可以了。调试PWM的时候,重点研究了一下辅助时钟和工作模式。每一路PWM都可以使用主时钟或者独立时钟,也就是说每一路PWM的频率都可以单独设置,包括相应的控制,死区等。这给设计一款PFC+全桥+同步整流等甚至需要更多PWM的复杂电源带来了便利。这比普通的移相,全桥,板桥等电源控制芯片强大的多。如果设计半桥电源,PWM应该设置在推挽工作模式上。频率应该配置为实际频率的2倍,否则按照100K设置的话,实际的工作频率才是50KHz,所以在配置频率的时候要特别注意这一点,互补没有这个问题。ADCAN2采集电压,ADCAN0采集电流,都是独立内核,触发方式都是PWM1的主触发,PWM触发ADC转换完成后,进入中断,中断里面调用2P2Z硬件补偿运算,然后更新PWM,更新的寄存器为PDC1。开发板例程里使用了模拟比较器峰值电流模式,由于先前电路结构设计并不支持峰值电流模式,因此就没有使用模拟比较器,而是将CMP1DAC直接换成PDC1。

2.8使用DCDT进行参数补偿。频率为22KHz,此时自动控制理论都忘记的差不多了,又回去找到了胡寿松的《自动控制原理》恶补了一下知识。自动生成好数据,然后将DCDT的数据配置到里面。

3.调试总结

    整个项目中,除了功率输出上面的板子及其部分配件变压器是在以前老电源上拆的,IGBT也是照搬以前的电路,其他的包括触屏,主板和驱动都是在短短两个月不到的时间搞的,实际上项目一开始就选的有些庞大了。而且对我来说,最难的是对于数字电源的设计思路的理解,硬件上面都没有太大问题,硬件设计的思路都和以前普通电源没有太大的区别。过去使用普通电源芯片设计,除了使用阻容件进行补偿,变压器设计,电磁兼容设计都不是太大的问题。因为变压器有2M的电桥测量,电磁兼容有3G频谱+近场探头预检测,而且周边有大牛给与指导。占用我时间较长,耗费较大精力的是基于数字电源的新的设计思路。就像开发板里的DEMO一样,工作在峰值电流模式,PWM配置到最大,然后再通过比较器控制PWM的输出,电压环路则是通过2P2Z补偿器进行补偿。只能理解透彻DEMO程序,并且看着datasheet配置一一核对,才能理解数字电源设计的新思路。最终时间不够,输出的电压带负载的时候有压降,目前还没有找到问题。后续不会因为结束比赛而结束项目。既然都了很多工作了,计划完善下去。

最后贴一张整机线路原理图

TIM截图20180511002659.png




菜鸟
2018-06-17 23:14:39     打赏
15楼

虽然被通知获奖,但是看到microchip的评语中没有提供代码,照片和视频,在这里说明一下,所有的视频图片代码已经打包发送到指定邮箱,如下图,压缩包里有573M的东西,是包括代码图片和视频的。问题出在了我后来因为将没有整理过的项目报告打包发走了,发现后,又将整理后的项目报告打包重新发了一份,而这一份邮件里只有项目报告,并没有图片代码和视频。再次感谢microchip和eepw。TIM截图20180617230428.png


共15条 2/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]