原创 项目总结-1

2016-3-21 10:48 885 6 6 分类: 工业电子

搞了几天的项目终于出去了,现场的问题等现场再解决吧

总结一下项目的内容和自己调试过程中所遇到的情况:

项目内容是通过一个步进电机滑台旋转下压使下面的产品达到一定的压力 压力单位为 g 

控制板的设计使用了24位AD芯片AD7190,总的来说这个芯片的性能还是不错的,常用在一些高端的产品中,内置128PGA增益和50/60hz抑制,可配置为双差分通道或者5通道。 ad参考电压选择了ADP333线性稳压芯片

板子设计参考了官方资料,板子模拟地和数字地已经通过一个0欧姆进行连接,但是实际测试过程中出现电压UV波动,后来在差分输入端又添加102瓷片电容后情况稍有好转,但还是达不到要求,参考X宝的一块板子后发现比较稳定,后者主要采用了大量隔离,ad部分和其他部分全部隔离,隔离部分采用了 金升阳 的电压隔离芯片,不知道是不是和这个有关系

电机控制部分刚开始是采用PID调节,可效果并不是太好,可能是PID用法有问题

不过调试过程中也了解了P是控制响应速度,I能够补充每次调节的误差

最后还是采用了分段调节方式,增加驱动器细分,控制效果还算可以

控制板采用了stm32主控,调试过程中也是出现了几个不可思议的问题,已在下面列出

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

Stm32复位后PB3,PB4,PA13,PA14默认为下载接口,作为通用IO口使用时必须加上以上初始化

 

//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

IO口初始化时目标IO必须明确,我就是因为注释掉了第一行而导致程序异常

 

关于printf()函数:

#include 

串口输出在程序调试过程中是很方便的,C语言也为我们提供了方便的接口,stm32开发平台MDK使用时只需要在文件中添加重定义函数

int fputc(int ch, FILE *f)

  USART_SendData(USARTx, (uint8_t) ch);       

  while (USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET)  

  return ch;

}

然后在Target options中勾选USE MicroLIB 即可 下为printf常用格式:

printf("当前电压为:%f mV    当前压力为;%f g\r\n",temp,weightg);

还有在设备上调试时如果jlink在断电情况下仍然与Stm32有连接,则控制板上电时可能会出现不能正常复位,IO状态不确定,这点在设备上实际调试时还是需要注意的。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条