基于ar0134摄像头的FPGA工程

  • 工程简介:
    通过高速摄像头ar0134拍摄流水线上运动物体的一帧画面,显示到VGA,以便用户观察物体状态。

  • 系统结构与信号处理流程:
    1.流水线主轴接编码器;
    2.编码器信号由单片机控制板采集,通过用户设定稍作处理;
    3.单片机控制板将8路触发信号分别发送到8路FPGA控制板;
    4.FPGA控制板根据触发信号触发摄像头拍照,显示到显示器上。

  • 硬件选型:
    编码器:欧姆龙1000线差分信号输出;
    单片机:stm32f407;
    FPGA:核心板采用Cyclone IV E,Flash采用W25Q16;
    摄像头:ar0134彩色;

  • 单片机系统功能:
    能接收编码器输入信号,得知主轴转动的位置;
    当主轴转动到用户指定的位置,输出一个脉冲信号给FPGA,触发拍照;输出需要8~12路;
    通过增减按钮设定上述位置;每一路对应一组增减按钮。

  • FPGA系统功能:
    接收单片机的输出信号,触发摄像头拍照;
    将画面显示到VGA。

  • 设计思路:
    电路上,单片机通过光耦低电平输出到fpga引脚,fpga收到后assign到ar0134的trigger脚,fpga底板触发脚使用P沟道mos管与ar0134连接,以给出足够触发电流。
    程序上,在单片机中断中,依次比较8路设定,当达到某路通道设定的次数后,给此通道输出低电平,进行拍照,计数到一圈总次数的一半时,再拉高,为下一次触发做准备。

  • 遇到的问题:

  1. 快速运动时画面模糊;
    减少曝光时间,当前设为20,问题解决。

  2. ar0134在触发拍照模式,单片机给出触发信号,画面会出现错位;
    通过在工程里设置状态机得到解决。

  3. 单片机收不到编码器Z、A相中断信号。
    发现个别编码器存在质量问题,输出波形难看,信号弱,更换编码器。
    中断程序处理尽可能简短。问题解决。

  4. fpga烧写时,将sof文件和elf文件合并成jic文件烧入,nios ii部分不运行;
    发现epcs部分引脚未设置连接,设置后问题解决。

  5. 设计elf部分时,欲直接用eclips里的flash program烧写,结果提示flash芯片缺少layout data;
    根据网上搜到的方案,将w25q16的信息写入到烧写说明里,可以烧写。但是断电重启后程序不运行。
    该问题未能解决。目前采用jic文件烧写方式,烧写正常,后期考虑更换烧写芯片。

  6. 拍照在某些频率区域时画面抖动
    单片机源程序将判断延时时间是否达到的语句放到while循环中,后将此部分代码改到中断中,有改善但并不彻底。后经示波器测量,发现在单片机一次波形触发中FPGA发出头尾两次信号给摄像头,更改FPGA代码后解决这个问题。

  7. 如果先开启单片机以发送周期触发信号,再给fpga上电,则画面会错位,并且一直保持这种错位位置
    原因是刚上电时,niosii通过iic对ar0134进行配置,导致ar0134在输出数据的时候节奏被打乱;
    通过fpga上电后进行适当延时解决该问题。

  8. 画面下方有一条彩线;
    设置ar0134的每帧行数为990解决该问题。

  9. 自己画的ar0134摄像头板IIC通信不成功;
    这个问题很奇怪,一开始是出现时通时断不稳定的现象,后来焊接的基本不通了。对照购买的模块,电路、PCB布局基本一致,替换2个电源芯片后仍然有问题。目前重新用4层板制作,用FPC软排线与FPGA板相连,正在测试。

posted @ 2020-10-26 11:15  闪亮的敦敦  Views(369)  Comments(0Edit  收藏  举报