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

共23条 2/3 1 2 3 跳转至
菜鸟
2018-05-08 21:16:06     打赏
11楼

---主板---

1.原理图设计

    由于主板为整个项目的核心,如果搞定主板了,整个项目就完成了51%。于是给自己定个小目标,1周的时间完成原理图的设计,同时采购选型好的器件,渠道为某宝,某创商城。

1.1电位采集

    恒电位仪主要是采集负电压,因此采集端必须使用运放来完成信号的处理。好在相对较擅长运放电路的设计。电位采集的技术指标为-3V到1V电压 ,精度0.02mV,输入阻抗为1M欧姆,输出计划为0-2.5V。

    运放计划使用最普通的4运放,LM324,虽然这个运放精度,带宽,压摆率,失调电压等指标都不是本次设计的首选,但是手中这颗运放实在是太多了,说句技术人员不该说的话,“凑合着用吧”。

    下面贴出一张电位采集的原理图。

电位采集.png

        由于输入阻抗非常高,因此信号输入使用一级跟随器,同相放大,提高输入阻抗。运放使用双电源,短时间内,还是感觉双电源比较好设计,不需要考虑使用低压运放、轨对轨运放、电平平移、低电压信号叠加等问题。电阻全部使用1%精度的电阻。

    下面是采集电路使用proteus 8.6 SP2 PRO仿真过程中调整电阻等参数过程。

TIM截图20180508212142.png注:在此承诺,本人在此项目中提到使用的几款EDA软件并未拿来从事任何商业性质的开发与设计。如有侵权,请联系本人。

1.2电源电路

    由于主板中需要双电源,因此使用双电源给整个主板供电, 供电方式采用比较古老但是非常可靠的线性稳压,双电源12V用双抽头变压器直接整流滤波输出,不需要稳压,因为运放电压允许波动±2V。5V采用一颗L7805,3.3V采用一颗1117-3.3.这样主板电源基本上就完成了,非常简单的电源方案。后期如果有时间优化设计的话,可以换成宽电压多路DCDC的方案。

电源.png    考虑到主板输入输出需要隔离,然后就在电源电路中使用了一颗金升阳公司DCDC1W的NN1-0505微功率电源模块。额,这算不算广告。不过后续更新帖中我可能会提到每个设计环节使用的器件品牌型号等。

    电源不多介绍了,简单、可靠。

1.3输入输出电压电流采集

    由于恒电位仪应用于工业,因此需要良好的电磁兼容。作为电压电流的采集,尽可能在辐射发射环节减小对采集电路的干扰。因此计划全部使用4-20MA信号传输电压电流。

    那么主板上需要采集4-20MA电流,然后将电流信号转化为电压信号,给MCU的ADC口。

首先使用proteus进行仿真,虽说仿真与实际相差甚远,但是简单电路还是比较好用的,主要也不是高频等环境、器件离散、温度、噪声等变量较多的仿真。下面直接贴图

TIM截图20180508215138.png

R74为120R的负载电阻,20MA电流的话压降2.4V,不需要放大,因此一级运放即可,工作在跟随状态,后面D13为瞬态抑制,主要是保护MCU的IO输入口。电路简单,也不做过多的介绍。此图为一个通道,其他的电流等采集都是一样的。


菜鸟
2018-05-08 21:54:11     打赏
12楼
厉害

菜鸟
2018-05-08 22:36:47     打赏
13楼

---主板---

1.4基准电路

正好有ADI公司的REF03G和microchip公司的MCP1501两个基准,指标看datasheet都差不多,工作范围-40℃到125℃,最大温度系数50ppm/℃。唯一不一样的是输入电压范围。既然差不多,那就都画到板上,到时候需要哪个焊接哪个。

TIM截图20180508223609.png

1.5输入输出电路

    输入电路主要用于应急开关,手动控制等功能,输出功能主要用于控制整机主回路继电器,预充电继电器、散热风扇等。全部隔离。输入端使用台湾亿光的EL817光耦,输出端使用宏发DC12继电器。继电器的驱动电路使用ULN2003达林顿驱动。

这两部分也是非常简单,光耦输入端并接电阻降低输入阻抗,防止干扰导致MCU无动作。达林顿内部集成反向保护二极管,因此在这里没有额外增加反向二极管。继电器功率也比较小,反向电压吸收交给ULN2003了。

1.6通讯

    主板计划设计两个串口,1个用于跟串口屏通讯,另一个备用;设计1个485通信口,设计1个CAN口,这两个口目前没有其他规划,只是把这些通讯口硬件设计上,以备后期使用。比如适配modbus或者can协议。

    TTL转RS232使用一颗美信公司经典的MAX3232,支持两个串口转换。3.3供电,支持与MCU直连。如图

TIM截图20180508225607.png


485使用一颗美信公司的MAX1487或TI的65LBC184,CAN使用microchip的MCP2561。就不上图了,都是数据手册上的典型应用。

1.7其他外围

    存储使用一颗24C02,用于存储校验数据,用户数据等。时钟使用一颗爱普生公司的RX8025,这颗时钟内置晶振,标准IIC,看datasheet,精度还是不错的,其实纠结于使用DS3231。温度传感器使用的MCP9800,转换精度12bit,跟18B20差不多,但是用起来,因为是IIC,要好用一些。而且内部带补偿。

贴图

TIM截图20180508225745.png

    存储,时钟,温度传感器我用了一组IIC,节省好几个IO口。

下面贴一张主板原理图,至此,主板基本上需要具备的硬件电路都设计完成(需要解释的是,这是十多天的成果,上班族,时间宝贵啊,都是在晚上干,而且弄弄到凌晨,在此吐槽一下搞技术,不容易)如果有其他遗漏不合理的地方,那就搭桥解决,呵呵,搞电子技术的最擅长搭桥了

TIM截图20180508231516.png貌似上传的看不清,那就项目报告里贴PDF吧。




菜鸟
2018-05-08 23:30:42     打赏
14楼

---主板---

2.PCB设计

    PCB设计花费的时间相对较少了,不是高速板,不需要考虑阻抗、差分等。至于电磁兼容,靠经验和后期调试了。

    直接贴主板的版图,布板技术有限,还望高手指点,相互交流相互提高。主板为双面板,单层元器件。

如图

呵呵,功能强大的3D功能。

    某知名PCB工厂做回来的板子立刻手动焊接,焊接过程的图片忘记拍了,只能补充一张正在夜间调试的了。

拍照水平有限。。。

TIM截图20180508233712.png为了实现功能,还是进行了飞线搭桥,而且还增加了两个电容。板子看起来非常不美观啊。部分器件不需要的就没有焊接。以后有用的时候再焊接。


菜鸟
2018-05-09 19:23:18     打赏
15楼

---驱动---

  1. 驱动使用最经典的IGBT驱动,因为项目原计划使用IGBT,所以使用M57962L,主要还是用过,而且手头有,不需要为重新选型所做工作。

  2. 驱动板原理图1天就搞定了,而且还游刃有余,以前做电源用过的电路在这里直接搬过来了。下面贴图


  3. 以上分别是原理图,PCB图和焊接好的实物图。这个驱动还是比较顺利,用以前做过的改动一下就可以了。在这里讲解一下驱动板的关键,就是关断IGBT的负压,从原理图中可以看到,驱动电源使用24V供电,通过7824和7809三端稳压将驱动波形变换成-5V到15V,以便快速关断IGBT。



菜鸟
2018-05-10 23:55:22     打赏
16楼

---功率输出---

1.功率输出使用半桥拓扑,额。。。对于半桥就不给大家讲解了,论坛暗藏高手,不敢显摆

功率输出部分没有制作版图,找来一块散热片,将功率器件整流器件都固定在上面了,额外有输入输出滤波电路,这两部分比较简单,输入部分没有考虑谐振,按照典型应用来的,输出也是简单的几只电容。(其实越简单的地方,越暗藏玄机,因为输入输出电容太大或太小都会影响整个机器的性能,包括桥臂电容)

下面来一张功率拓扑图吧。

TIM截图20180510234157.png这样硬件性的设计整体基本上就完成了。下面开始紧张的code design。实际当做到这一步的时候,也就是处在五一假期的前夕了,于是决定假期里哪里也不去了,在家里调试代码。就是这样,感觉时间也是非常紧张,突然感觉这个项目选的有点庞大了,刚刚开始的思路很好,设计架构也很好,就是时间,感觉根本完不成。。。好吧,想起同事的一句话来:“没有困难也要创造困难”


菜鸟
2018-05-11 00:10:57     打赏
17楼

---代码与调试---

1.触屏代码

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

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

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

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

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

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


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

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     打赏
19楼

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 11:03:00     打赏
20楼

1、MCC频率配置问题,datasheet的指出PLL0<=120MHz@125℃,MCC遵守了这个限制(例程上手工配置的频率是略微大一点点点的120.03MHz)

2、MCC在配置ADC选择PGA作为输入时配置有问题,目前暂时没有发现别的问题


共23条 2/3 1 2 3 跳转至

回复

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