找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3978|回复: 0
收起左侧

高速智能球型摄像机方案设计

[复制链接]
ID:161953 发表于 2017-5-1 16:55 | 显示全部楼层 |阅读模式
之前在做类似项目时做的参考文件,内容看图片,很齐全的了

       Intel提供了一系列第6代Intel® Core™处理器和Intel® Xeon®处理器,包括最近发布的分别搭载Intel®Iris™ Pro Graphics P580和P55的Intel® Xeon® E3-1578L v5和E3-1558L v5处理器。这些处理器能够实时处理多达2个4k HEVC输出流或多达15个全高清-HEVC流。 对于使用视频分析并需要迅速将片段传输给相关人员以提醒潜在事故的监控系统,这样的性能至关重要。 这些事故可以是有人在停车场闲逛、将商品装进钱包或提包、将背包丢弃在机场或其他运输站场。
高速球型摄像机介绍:
        高速球型摄像机是一种智能化摄像机前端,全名叫高速智能化球型摄像机,或者一体化高速球智能球,或者简称快球,简称高速球。高速球集成了云台系统、摄像头系统和通讯系统,云台系统是指电机带动的旋转部分,通讯系统是指对电机的控制和通讯系统,云台系统是指电机带动的旋转部分,通讯系统是指对电机的控制以及对图像和信号的处理部分,摄像机系统是指采用的一体机机心。
         具体来讲,高速球采用“精密微分步进电机”实现高速球的快速、准确的定位、旋转;将摄像机叠加了OSD(on-screen display)菜单的图像传输出来。通信系统连接上位机和MCU,实现操作者对云台和摄像机的控制。通讯协议通常采用PELCO(派尔高)的传输协议。
本设计主要描述了uPD781146的使用,步进电机的驱动,OSD菜单的叠加,以及PELCO-P通信协议的实现等。

高速智能球型摄像机方案款图:
0.png 0.png 360截图20170501165008386.jpg

0.png

源程序:

  1. #include "driver.h"
  2. #include "TAU.h"
  3. #include "DELAY.H"
  4. #include "OSD.H"
  5. #include "TLC5620.H"
  6. #include "math.h"
  7. #include "Serial.H"

  8. #include "OSD.h"


  9. void System_Init(void);
  10. U16 ii,jj;

  11. //const U8 H_Motor_PA[16] = {40,137,220,255,255,255,220,137,40,137,220,255,255,255,220,137};
  12. //const U8 H_Motor_PB[16] = {235,235,200,117,20,117,200,235,235,235,200,117,20,117,200,235};


  13. void main(void)         
  14. {                         
  15.         System_Init();  
  16.         Motor_Check();
  17.         init_upd6464a();
  18.         while(1)         
  19.         {                 
  20.                 Display_Angle(Pan_Angle,Tilt_Angle);
  21.                 delay_x1ms(50);
  22.         }               
  23. }                        
  24.                         

  25. void System_Init(void)
  26. {
  27.        
  28.         U16 i,j;
  29.        
  30.        
  31.         DI();  
  32.         Clock_Init();
  33.        
  34.         PM0.1 = 1;
  35.        
  36.         //DA
  37.         TLC5620_Init();
  38.         //timer
  39.         TAU_Init();
  40.        
  41.         //485
  42.         SAU1_Init();
  43.         UART3_Start();
  44.        
  45.         //osd
  46.         init_upd6464a();
  47.         //var
  48.        
  49.         clock = 0;
  50.         round = 0;
  51.         Pan_Run_Stop_Flag = 0;
  52.         Tilt_Run_Stop_Flag = 0;
  53.         Pan = 0;
  54.         Pan_Last = 0;
  55.         Tilt = 0;
  56.         Tilt_Last = 0;
  57.         Pan_Clock = 0;
  58.         Tilt_Clock = 0;

  59.         First_Run_Pan = 0;
  60.         First_Run_Tilt = 0;
  61.         Pan_Angle = 0;
  62.         Tilt_Angle = 0;
  63.         Receive_Flag = 0;
  64.        
  65.        
  66.         Micro_Step = 128;
  67.         for(i = 0;i<(4*Micro_Step);i++)
  68.         {
  69.                 H_Motor_PA_128[i] = (U8)((fabs(sin(3.1415*i/(2*Micro_Step))))*255);
  70.                 H_Motor_PC_128[i] = (U8)((fabs(sin(3.1415*i/(2*Micro_Step))))*255);
  71.                 H_Motor_PB_128[i] = (U8)((fabs(cos(3.1415*i/(2*Micro_Step))))*255);
  72.                 H_Motor_PD_128[i] = (U8)((fabs(cos(3.1415*i/(2*Micro_Step))))*255);
  73.                
  74.         }
  75.        
  76.         Micro_Step = 64;
  77.         for(i = 0;i<(4*Micro_Step);i++)
  78.         {
  79.                 H_Motor_PA_64[i] = (U8)((fabs(sin(3.1415*i/(2*Micro_Step))))*255);
  80.                 H_Motor_PC_64[i] = (U8)((fabs(sin(3.1415*i/(2*Micro_Step))))*255);
  81.                 H_Motor_PB_64[i] = (U8)((fabs(cos(3.1415*i/(2*Micro_Step))))*255);
  82.                 H_Motor_PD_64[i] = (U8)((fabs(cos(3.1415*i/(2*Micro_Step))))*255);
  83.                
  84.         }
  85.        
  86.         Micro_Step = 32;
  87.         for(i = 0;i<(4*Micro_Step);i++)
  88.         {
  89.                 H_Motor_PA_32[i] = (U8)((fabs(sin(3.1415*i/(2*Micro_Step))))*255);
  90.                 H_Motor_PC_32[i] = (U8)((fabs(sin(3.1415*i/(2*Micro_Step))))*255);
  91.                 H_Motor_PB_32[i] = (U8)((fabs(cos(3.1415*i/(2*Micro_Step))))*255);
  92.                 H_Motor_PD_32[i] = (U8)((fabs(cos(3.1415*i/(2*Micro_Step))))*255);
  93.                
  94.         }
  95.        
  96.         Micro_Step = 16;
  97.         for(i = 0;i<(4*Micro_Step);i++)
  98.         {
  99.                 H_Motor_PA_16[i] = (U8)((fabs(sin(3.1415*i/(2*Micro_Step))))*255);
  100.                 H_Motor_PC_16[i] = (U8)((fabs(sin(3.1415*i/(2*Micro_Step))))*255);
  101.                 H_Motor_PB_16[i] = (U8)((fabs(cos(3.1415*i/(2*Micro_Step))))*255);
  102.                 H_Motor_PD_16[i] = (U8)((fabs(cos(3.1415*i/(2*Micro_Step))))*255);
  103.                
  104.         }
  105.         Micro_Step = 8;
  106.         for(i = 0;i<(4*Micro_Step);i++)
  107.         {
  108.                 H_Motor_PA_8[i] = (U8)((fabs(sin(3.1415*i/(2*Micro_Step))))*255);
  109.                 H_Motor_PC_8[i] = (U8)((fabs(sin(3.1415*i/(2*Micro_Step))))*255);
  110.                 H_Motor_PB_8[i] = (U8)((fabs(cos(3.1415*i/(2*Micro_Step))))*255);
  111.                 H_Motor_PD_8[i] = (U8)((fabs(cos(3.1415*i/(2*Micro_Step))))*255);
  112.                
  113.         }
  114.        
  115.         TLC5620_SetOutput_2(CHL0,255,CHL1,255);
  116.         TLC5620_SetOutput_2(CHL2,255,CHL3,255);
  117.        
  118.         Motor_Init();
  119.        
  120.         delay_x1ms(600);
  121.        
  122.        
  123.         EI();
  124.        

  125.        
  126.        
  127.        
  128.        
  129.        
  130.         /*
  131.         for(i = 60000;i> 1;i--)
  132.         {
  133.                         MOTOR_PWMA = 1;//high
  134.                         MOTOR_PWMB = 0;//low
  135.                         Delay(1);
  136.                         //delay_x1ms(1);
  137.                         MOTOR_PWMA = 1;//high
  138.                         MOTOR_PWMB = 1;//high
  139.                         Delay(1);
  140.                         //delay_x1ms(1);
  141.                         MOTOR_PWMA = 0;
  142.                         MOTOR_PWMB = 1;
  143.                         Delay(1);
  144.                         //delay_x1ms(1);
  145.                         MOTOR_PWMA = 0;
  146.                         MOTOR_PWMB = 0;
  147.                         Delay(1);
  148.                         //delay_x1ms(1);
  149.         }
  150.         for(i = 10000;i> 1;i--)
  151.         {
  152.                         MOTOR_PWMA = 1;//high
  153.                         MOTOR_PWMB = 0;//low
  154.                         Delay(1);
  155.                         //delay_x1ms(1);
  156.                         MOTOR_PWMA = 1;//high
  157.                         MOTOR_PWMB = 1;//high
  158.                         Delay(1);
  159.                         //delay_x1ms(1);
  160.                         MOTOR_PWMA = 0;
  161.                         MOTOR_PWMB = 1;
  162.                         Delay(1);
  163.                         //delay_x1ms(1);
  164.                         MOTOR_PWMA = 0;
  165.                         MOTOR_PWMB = 0;
  166.                         Delay(1);
  167.                         //delay_x1ms(1);
  168.         }*/
  169.         /*
  170.        
  171.         for(i = 20000;i> 19950;i-=40)
  172.         {
  173.                        
  174.                         MOTOR_PWMA = 1;//high
  175.                         MOTOR_PWMB = 0;//low
  176.                         j = i;
  177.                         Delay(j);
  178.                         MOTOR_PWMA = 1;//high
  179.                         MOTOR_PWMB = 1;//high
  180.                         j = i-10;
  181.                         Delay(j);
  182.                         MOTOR_PWMA = 0;
  183.                         MOTOR_PWMB = 1;
  184.                         j = i-20;
  185.                         Delay(j);
  186.                         MOTOR_PWMA = 0;
  187.                         MOTOR_PWMB = 0;
  188.                         j = i-30;
  189.                         Delay(j);
  190.         }*/
  191.         /*
  192.         while(1)
  193.         {
  194.                        
  195.                         MOTOR_PWMA = 1;//high
  196.                         MOTOR_PWMB = 0;//low
  197.                         Delay(400);
  198.                         //delay_x1ms(1);
  199.                         MOTOR_PWMA = 1;//high
  200.                         MOTOR_PWMB = 1;//high
  201.                         Delay(400);
  202.                         //delay_x1ms(1);
  203.                         MOTOR_PWMA = 0;
  204.                         MOTOR_PWMB = 1;
  205.                         Delay(400);
  206.                         //delay_x1ms(1);
  207.                         MOTOR_PWMA = 0;
  208.                         MOTOR_PWMB = 0;
  209.                         Delay(400);
  210.                         //delay_x1ms(1);
  211.                        
  212.                        
  213.         }
  214.         */
  215.         //TLC5620_SetOutput(CHL0,00);
  216.         //TLC5620_SetOutput(CHL1,00);
  217.        
  218.        
  219.        
  220.         //TAU_Channel3_Start();
  221.         /*
  222.         while(1)
  223.         {
  224.                        
  225.                         MOTOR_PWMA = 1;//high
  226.                         MOTOR_PWMB = 0;//low
  227.                         Delay(1490);
  228.                         //delay_x1ms(1);
  229.                         MOTOR_PWMA = 1;//high
  230.                         MOTOR_PWMB = 1;//high
  231.                         Delay(1490);
  232.                         //delay_x1ms(1);
  233.                         MOTOR_PWMA = 0;
  234.                         MOTOR_PWMB = 1;
  235.                         Delay(1490);
  236.                         //delay_x1ms(1);
  237.                         MOTOR_PWMA = 0;
  238.                         MOTOR_PWMB = 0;
  239.                         Delay(1490);
  240.                         //delay_x1ms(1);
  241.                        
  242.                        
  243.         }
  244.         */
  245.        
  246.        
  247.        
  248.         //delay_x1ms(100);
  249.         //Motor_Init();
  250.        
  251.         //MOTOR_PWMA = 0;//high
  252.         //MOTOR_PWMB = 0;//low
  253.        
  254.        
  255.         //Motor_Init();
  256.        
  257.         //for(j = 1000;j<=500;j-=50)
  258.         //{
  259.         /*
  260.                 for(i = 1000;i>= 400;i-=200)
  261.                 {
  262.                        
  263.                         MOTOR_PWMA = 1;//high
  264.                         MOTOR_PWMB = 0;//low
  265.                         Delay(i);
  266.                         MOTOR_PWMA = 1;//high
  267.                         MOTOR_PWMB = 1;//high
  268.                         Delay(i-50);
  269.                         MOTOR_PWMA = 0;
  270.                         MOTOR_PWMB = 1;
  271.                         Delay(i-100);
  272.                         MOTOR_PWMA = 0;
  273.                         MOTOR_PWMB = 0;
  274.                         Delay(i-150);
  275.                        
  276.                        
  277.                 }
  278.         */       
  279.        
  280.                
  281.         /*
  282.                
  283.                 for(i = 900;i> 800;i-=20)
  284.                 {
  285.                        
  286.                         MOTOR_PWMA = 1;//high
  287.                         MOTOR_PWMB = 0;//low
  288.                         Delay(i);
  289.                         MOTOR_PWMA = 1;//high
  290.                         MOTOR_PWMB = 1;//high
  291.                         Delay(i-5);
  292.                         MOTOR_PWMA = 0;
  293.                         MOTOR_PWMB = 1;
  294.                         Delay(i-10);
  295.                         MOTOR_PWMA = 0;
  296.                         MOTOR_PWMB = 0;
  297.                         Delay(i-15);
  298.                        
  299.                        
  300.                 }
  301.                 while(1)
  302.                 {
  303.                        
  304.                         MOTOR_PWMA = 1;//high
  305.                         MOTOR_PWMB = 0;//low
  306.                         Delay(250);
  307.                         //delay_x1ms(1);
  308.                         MOTOR_PWMA = 1;//high
  309.                         MOTOR_PWMB = 1;//high
  310.                         Delay(250);
  311.                         //delay_x1ms(1);
  312.                         MOTOR_PWMA = 0;
  313.                         MOTOR_PWMB = 1;
  314.                         Delay(250);
  315.                         //delay_x1ms(1);
  316.                         MOTOR_PWMA = 0;
  317.                         MOTOR_PWMB = 0;
  318.                         Delay(250);
  319.                         //delay_x1ms(1);
  320.                        
  321.                        
  322.                 }
  323.                 for(i = 500;i> 100;i--)
  324.                 {
  325.                         for(j = 0;j<10;j++)
  326.                         {
  327.                                 MOTOR_PWMA = 1;//high
  328.                                 MOTOR_PWMB = 0;//low
  329.                                 Delay(i);
  330.                                 MOTOR_PWMA = 1;//high
  331.                                 MOTOR_PWMB = 1;//high
  332.                                 Delay(i);
  333.                                 MOTOR_PWMA = 0;
  334.                                 MOTOR_PWMB = 1;
  335.                                 Delay(i);
  336.                                 MOTOR_PWMA = 0;
  337.                                 MOTOR_PWMB = 0;
  338.                                 Delay(i);
  339.                         }
  340.                 }
  341.         */       
  342.                
  343.         //}
  344.         //MOTOR_PWMA_PM = 1;//high
  345.         //MOTOR_PWMB_PM = 1;//low
  346.         /*
  347.         TLC5620_SetOutput(CHL0,255);
  348.         TLC5620_SetOutput(CHL1,255);
  349.                
  350.                 for(i = 0;i< 500;i++)
  351.                 {
  352.                        
  353.                        
  354.                         TOE0 &= ~TAU_CH5_OUTPUT_ENABLE & ~TAU_CH6_OUTPUT_ENABLE;
  355.                         TAU_Channel5_ChangeDuty(100);
  356.                         TAU_Channel6_ChangeDuty(0);
  357.                        
  358.                         TOE0 |= TAU_CH5_OUTPUT_ENABLE;
  359.                         TOE0 |= TAU_CH6_OUTPUT_ENABLE;
  360.                         Delay(400);
  361.                        
  362.                        
  363.                        
  364.                        
  365.                         TOE0 &= ~TAU_CH5_OUTPUT_ENABLE & ~TAU_CH6_OUTPUT_ENABLE;
  366.                         TAU_Channel5_ChangeDuty(100);
  367.                         TAU_Channel6_ChangeDuty(100);
  368.                         TOE0 |= TAU_CH5_OUTPUT_ENABLE;
  369.                         TOE0 |= TAU_CH6_OUTPUT_ENABLE;
  370.                         Delay(400);
  371.                        
  372.                        
  373.                        
  374.                        
  375.                        
  376.                         TOE0 &= ~TAU_CH5_OUTPUT_ENABLE & ~TAU_CH6_OUTPUT_ENABLE;
  377.                         TAU_Channel5_ChangeDuty(0);
  378.                         TAU_Channel6_ChangeDuty(100);
  379.                         TOE0 |= TAU_CH5_OUTPUT_ENABLE;
  380.                         TOE0 |= TAU_CH6_OUTPUT_ENABLE;
  381.                         Delay(400);
  382.                
  383.                        
  384. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

下载:
高速智能球型摄像机方案设计.rar (1.47 MB, 下载次数: 9)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表