四轴起飞时,发出触发信号使导航模块开始工作,同时读取ICM20602的加速度计、陀螺仪数据,对数据卡尔曼滤波后姿态解算,对角度与角速度采取串级PID调节。控制系统算法设计主要有ICM20602滤波算法,姿态解算算法、串级PID控制算法和定高部分控制算法。碍于篇幅所限,下面介绍最重要的串级PID控制算法和定高部分控制算法。地理坐标系中重力的水平分量为零,仅用三轴陀螺仪和三轴加速度计无法计算出航向角,由于巡线机器人保持稳定飞行只需要横滚角(roll)和俯仰角(pitch),所以四元数转换成欧拉角。定高控制算法采用的是增量式PID控制,定高控制的输出最后与姿态控制的输出叠加到四个电机的控制中。数据滤波使用的是低通滤波,采用近三次的平均值。为了防止姿态对激光测距的影响及减小高度控制对姿态控制的干扰使用欧拉角来校正高度值,即Hight=(float)Hight*(cos(roll)* cos(pitch))。将四元数转换后的欧拉角与陀螺仪测出来的角速度进行串级PID控制,其中欧拉角作为外环,角速度作为内环。外环的PID以及内环的PD设定值为测试数据值。由于内环的角速度控制不需要无静差,所以内环采用PD控制,为防止测量的误差造成较大影响,外环积分需要限幅。
标签: 传感器
上传时间: 2022-06-24
上传用户:默默
该板是MikroKopter 四轴飞行器的控制板。它可以实现下列任务:• 测量三轴角速度• 测量三轴加速度数据• 测量大气压力,用于高度控制• 接收数字罗盘信号• 测量电池电压• 接收R/C 信号• 处理传感器数据以及计算真实角位置• 驱动四个无刷电调尺寸50 * 50mm• 两个LED(如显示正确和错误)• 两个三极管,输出到外部灯(或其他功能)• 低压检测• 为接收机提供5V 电压三轴磁阻传感器和ASIC 都被封装在3.0×3.0×0.9mm LCC 表面装配中► 12-bit ADC 与低干扰AMR 传感器,能在±8 高斯的磁场中实现5 毫高斯分辨率► 内置自检功能► 低 电压工作(2.16-3.6V) 和超低功耗(100uA)► 内置驱动电路► I2C 数字接口► 无引线封装结构► 磁场范围广(+/-8Oe)
标签: 四轴飞行器
上传时间: 2022-07-23
上传用户:
数控系统在工矿领域已得到广泛应用,计算机数控系统通过对数字化信息的处理和运算,并转化成脉冲信号,实现对步进电机的控制,进而控制数控机床动作和零件加工。随着嵌入式技术的发展,我们可以设计规模更小,成本更低,功能更特定的嵌入式系统来完成传统计算机数控系统所完成的工作。 步进电机以其精度高、控制灵活、定位准确、起停迅速、工作可靠、能直接接受数字信号的特点,成为数控系统中的重要执行部件。然而根据步进电机的特性,必须要采取适当而有效的升降速控制策略,特别是在多电机连动的系统中,对多个电机连动的速度控制和脉冲分配也很值得研究。在本文中作者将介绍一种三轴连动的速度控制和脉冲分配的优化算法,以及其在基于FPGA和ARM配合的高速数控雕刻机控制系统中的实现。 在本文中还可以看见,为了减小本系统中主控MCU的压力,作者还将利用FPGA来设计一个针对多电机连动的速度控制和脉冲分配优化算法的外围定制控制器。 最终实验结果表明,作者所提出的优化算法及其在本系统的实现方案,完全达到客户所提出的高速数控雕刻机控制系统的各项设计性能指标。
上传时间: 2013-07-02
上传用户:dreamboy36
在嵌入式系统的开发过程中,仿真器是一个必不可少的开发工具。特别是对于初级嵌入式系统开发工程师,借助一个功能强大的仿真器进行开发工作,可以达到事半功倍的效果。一个嵌入式仿真、调试系统支持单步执行、设置断点、观察变量内容及寄存器内容等功能。开发人员可以通过各类调试功能观察变量和寄存器的变化,从而可以很清楚的了解整个程序运行的状况,及时的调整和修改程序,并不需要反复的向芯片烧写程序,就可以完成对于程序的调试工作。 @@ 本文在分析了目前市场上常用仿真器的设计原理的基础上,提出了以三星公司的S3C44BO ARM7处理器为主CPU,通过以太网接口进行数据传输的ARMJTAT仿真器的设计方案。利用这种仿真器进行程序调试,不仅可以大幅度的提高下载速度,还可以实现仿真器资源的共享,而且调试时程序是在目标板上运行,仿真更接近于目标硬件。 @@ 文中首先对于传统仿真器的设计原理、作用、存在的问题进行了研究,然后提出了基于S3C44BO的以太网接口的ARM-JTAG仿真器的设计。该仿真器的设计主要分为以下几步:第一,提出总体设计方案,包括硬件的设计及软件的设计。第二,详细介绍该仿真器的硬件结构设计和程序开发过程,其中特别对以太网接口的设计进行了研究。第三,总结了该仿真器的功能、特点。 @@关键词:仿真器;S3C44BO;以太网接口;JTAG;LwIP
上传时间: 2013-06-16
上传用户:253189838
lis35de应用单片机程序,利用51单片机采集lis35de的数据并传给串口,设计lis35de的控制字,和三轴加速度的读取。
标签: wang-pro
上传时间: 2013-06-14
上传用户:cmc_68289287
ADIS16480是一款MEMS惯性测量单元(IMU),内置一个三轴加速度计、一个三轴陀螺仪、一个三轴磁力计和一个气压计。除了提供完全校准、帧同步的惯性MEMS传感器,ADIS16480还集成了一个扩展卡尔曼滤波器(EKF),可计算动态方位角。
上传时间: 2013-10-22
上传用户:上善若水
特点: 精确度0.1%满刻度 可作各式數學演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A|/ 16 BIT类比输出功能 输入与输出绝缘耐压2仟伏特/1分钟(input/output/power) 宽范围交直流兩用電源設計 尺寸小,穩定性高
上传时间: 2014-12-23
上传用户:ydd3625
开关在电路中起接通信号或断开信号的作用。最常见的可控开关是继电器,当给驱动继电器的驱动电路加高电平或低电平时,继电器就吸合或释放,其触点接通或断开电路。CMOS模拟开关是一种可控开关,它不象继电器那样可以用在大电流、高电压场合,只适于处理幅度不超过其工作电压、电流较小的模拟或数字信号。 一、常用CMOS模拟开关引脚功能和工作原理 1.四双向模拟开关CD4066 CD4066 的引脚功能如图1所示。每个封装内部有4个独立的模拟开关,每个模拟开关有输入、输出、控制三个端子,其中输入端和输出端可互换。当控制端加高电平时,开关导通;当控制端加低电平时开关截止。模拟开关导通时,导通电阻为几十欧姆;模拟开关截止时,呈现很高的阻抗,可以看成为开路。模拟开关可传输数字信号和模拟信号,可传输的模拟信号的上限频率为40MHz。各开关间的串扰很小,典型值为-50dB。
上传时间: 2013-10-27
上传用户:bibirnovis
特点(FEATURES) 精确度0.1%满刻度 (Accuracy 0.1%F.S.) 可作各式数学演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A| (Math functioA+B/A-B/AxB/A/B/A&B(Hi&Lo)/|A|/etc.....) 16 BIT 类比输出功能(16 bit DAC isolating analog output function) 输入/输出1/输出2绝缘耐压2仟伏特/1分钟(Dielectric strength 2KVac/1min. (input/output1/output2/power)) 宽范围交直流两用电源设计(Wide input range for auxiliary power) 尺寸小,稳定性高(Dimension small and High stability)
上传时间: 2013-11-24
上传用户:541657925
TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。 TLC2543的特点 (1)12位分辩率A/D转换器; (2)在工作温度范围内10μs转换时间; (3)11个模拟输入通道; (4)3路内置自测试方式; (5)采样率为66kbps; (6)线性误差±1LSBmax; (7)有转换结束输出EOC; (8)具有单、双极性输出; (9)可编程的MSB或LSB前导; (10)可编程输出数据长度。 TLC2543的引脚排列及说明 TLC2543有两种封装形式:DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1 TLC2543电路图和程序欣赏 #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit clock=P1^0; sbit d_in=P1^1; sbit d_out=P1^2; sbit _cs=P1^3; uchar a1,b1,c1,d1; float sum,sum1; double sum_final1; double sum_final; uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar wei[]={0xf7,0xfb,0xfd,0xfe}; void delay(unsigned char b) //50us { unsigned char a; for(;b>0;b--) for(a=22;a>0;a--); } void display(uchar a,uchar b,uchar c,uchar d) { P0=duan[a]|0x80; P2=wei[0]; delay(5); P2=0xff; P0=duan[b]; P2=wei[1]; delay(5); P2=0xff; P0=duan[c]; P2=wei[2]; delay(5); P2=0xff; P0=duan[d]; P2=wei[3]; delay(5); P2=0xff; } uint read(uchar port) { uchar i,al=0,ah=0; unsigned long ad; clock=0; _cs=0; port<<=4; for(i=0;i<4;i++) { d_in=port&0x80; clock=1; clock=0; port<<=1; } d_in=0; for(i=0;i<8;i++) { clock=1; clock=0; } _cs=1; delay(5); _cs=0; for(i=0;i<4;i++) { clock=1; ah<<=1; if(d_out)ah|=0x01; clock=0; } for(i=0;i<8;i++) { clock=1; al<<=1; if(d_out) al|=0x01; clock=0; } _cs=1; ad=(uint)ah; ad<<=8; ad|=al; return(ad); } void main() { uchar j; sum=0;sum1=0; sum_final=0; sum_final1=0; while(1) { for(j=0;j<128;j++) { sum1+=read(1); display(a1,b1,c1,d1); } sum=sum1/128; sum1=0; sum_final1=(sum/4095)*5; sum_final=sum_final1*1000; a1=(int)sum_final/1000; b1=(int)sum_final%1000/100; c1=(int)sum_final%1000%100/10; d1=(int)sum_final%10; display(a1,b1,c1,d1); } }
上传时间: 2013-11-19
上传用户:shen1230