是德科技创新测量工具,开启毫米波测量新视野

符合安规要求,非常适合工业控制及三相电源应用

LYTSwitch™-7 LED结合PFC及恒流输出特性

迷你四轴飞行器(增加了IPEX天线的PCB)

  • 迷你四轴飞行器(增加了IPEX天线的PCB)
  • 迷你四轴飞行器(增加了IPEX天线的PCB)

迷你四轴飞行器(增加了IPEX天线的PCB)

迷你四轴飞行器(增加了IPEX天线的PCB)


资源包含主板PCB源码,遥控器源码,

CPU: STM32F103CBSTM32F103CB数据手册

2.4G: NRF24L01NRF24L01数据手册

电子罗盘:HMC5883HMC5883数据手册

陀螺仪+加速度计:MPU-6050 MPU-6050数据手册

电机:7*16

 自测,完全可用

白色的四轴(天狼3号)为增强版本,讲板载天线换成了IPEX天线,经测试无线信号更强。

电路相关文件

电路图文件
四轴飞行器(原理图和PCB).zip
描述:四轴飞行器原理图和PCB
其他文件
四轴遥控.zip
描述:四轴遥控
教程
程序.zip
描述:程序
源代码
天狼3号四轴.PcbDoc
描述:天狼3号PCB文件,并在丝印层加了元器件型号
收藏 (96)
扫码关注电路城

电路城电路折扣劵获取途径:

电路城7~10折折扣劵(全场通用):对本电路进行评分获取;

电路城6折折扣劵(限购≤100元电路):申请成为卖家,上传电路,审核成功后获取。

(版权归Dream Creater所有)

版权声明:电路城所有电路均源于网友上传或网上搜集,供学习和研究使用,其版权归原作者所有,对可以提供充分证据的侵权信息,本站将在确认后24小时内删除。对本电路进行投诉建议,点击投诉本电路反馈给电路城。



继续阅读


  • 新鲜出炉:电赛四轴遥控-10通道PWM-15单片机-多功能

    新鲜出炉:电赛四轴遥控-10通道PWM-15单片机-多功能功能:1.10通道PWM输出2.油门感度(比例)可设。3.四按键功能设置。4.AUX1通道8位拨码。可用于调参、飞行模式选择等。5.AUX2通道可设值输出。6..AUX3通道直接开关,0-MAX。(MAX可设)7.AUX4通道直接开关。可用于直接解锁飞控。8.失联固定输出,防止飞控跑飞伤人。9.LCD5110显示,8个参数设置模式。10.遥控电池低电量报警。(板带反接保护)11.两个LED显示,LED1用于2.4G发送闪烁,LED2用于电池报警;说明:适用所有PWM输入的飞控,单层PCB,手工做板即可。已经测试稳定飞行,距离受限于2.4G模块。测试100米内飞行正常,隔两堵墙正常通讯部分附件截图如下所示:
    来自:DIY创意产品时间:2017-07-23 单片机 diy制作 四轴飞行器
  • 自制迷你PIXHAWK飞控PCB,打完板就可以用哦~

    亲自画的开源迷你PIXHAWK飞控,已经调试成功,打完板就可以用PIXHAWK飞控主要电路讲解•1.电源部分:通过芯片BQ24315从电池取出两路5V电压,给各个传感器和总线提供电压。通过芯片MIC5332将电压5V转成3.3V,给控制器芯片提供电压。•2.传感器部分:MPU-6000 加速度/磁场芯片,测量无人机飞行的角度及加速度。MS5611气压芯片,通过测得的气压算出无人机飞行的高度。•3.USB下载部分:给STM32控制芯片下载程序的接口,加上了静电保护芯片,对控制芯片起到了一定的保护作用 。•4.EEPROM存储部分:掉电不会失去数据,一般用来做备份数据存储,一旦飞控在空中故障重启,可以延续前面的状态和计算结果。•5.SBUS总线输出: SBUS总线外围加TXS0108 驱动芯片启到抗干扰的作用。•6.STM32主控制器:主控器STM32F427,ARM 32位CortexM4内核,带有浮点运算器;256KB RAM;2MBFlash;•7.STM32协控制器:协控制器STM32F103,ARM 32位CortexM3内核,最高72M工作频率•8. TXS0108 驱动芯片:主要是起到信号隔离和增强驱动能力的作用,并不能把TTL 转换成RS232 等串口形式,这样做的好处是一旦一个串口出现大电流只能烧毁驱动芯片,不会烧毁主控器。 •9.三色LED控制专用芯片:三色LED 由TCA62724 专用芯片管理附件包含原理图和PCB图。
    来自:飞行器时间:2017-07-05 四轴飞行器 自制pcb
  • 基于STM32的四轴飞行器设计

    此设计包含四轴飞行器原理图以及PCB,主要包含STM32F103CBT6,MPU6050,HMC5883,MS5611,各部分已经调试通过,但未完成四轴飞行器总体的软件设计,现公开设计完成的硬件资料。附件内容截图:四轴飞行器PCB 3D截图:
    来自:DIY创意产品时间:2017-06-01 stm32 四轴飞行器
  • 微型迷你四轴飞行器带气压计磁场计等功能(原理图+PCB源文件+程序源码等)

    微型迷你四轴飞行器带气压计磁场计完整资料硬件描述:主控芯片stm32f103cbt6陀螺仪MPU6050气压计MS5611电子罗盘HMC5833720空心杯电机数字电路,模拟电路双电源芯片,单点接地。微型迷你四轴飞行器原理图+PCB 截图:微型迷你四轴飞行器 PCB 实物截图:附件内容截图:源码截图:
    来自:飞行器时间:2017-05-25 四轴飞行器 迷你四轴 气压计
  • 四轴飞行器 一键起飞 寻迹 定高

    这个项目是本人电子设计大赛的四轴寻迹比赛中获得一等奖的项目,本团队付出艰辛的付出终于完成了这个项目,本人已经毕业,就职于深圳某疆,感谢我的团队一直的辛勤付出,才取得当时的成果。我这里贡献我的资料,包括整一套的方案,包括软件程序和硬件pcb,可以直接进行打板子。直接烧录程序一样可以达到视频的效果。如购买资料可以获得本人有限的技术支持!!视频演示:四轴飞行器主控板 PCB 3D截图:附件内容截图:
    来自:飞行器时间:2017-04-22 四轴飞行器 一键起飞 四轴寻迹


  • MWC小四轴

    pcb自制,投版可用...
    来自:飞行器时间:2016-09-25 四轴飞行器 小四轴
  • IAP15W4K58S4-小四轴DIY(原理图、源码)

    51单片机也能玩四轴?下面是基于STC宏晶科技推出一款非常好玩的迷你四轴飞行器单片机使用51增强型IAP15W4K58S4飞行超稳定,是个玩51单片机的新手小四轴源代码和原理图截图:...
  • 基于STM32的飞行控制器电路、PCB、论文等(有PCB光板卖)

    基于STM32的飞控电路设计,双层板电路,电路设计非常紧密主控采用STM32F103RB系列,SWD下载调试,2.4G无线传输,SD卡记录航行数据需要该飞行控制器电路PCB光板的,可以QQ联系:1962434506 极客兴工飞行控制器电路、PCB截图:...
  • Crazyflie2.0国外开源四轴PCB(可直接打板)

    号外号外号外!!千呼万唤的Crazyflie2.0的电路图开源啦(经测试可直接打板)!...
  • 开源一个自己做的小四旋翼工程,会有相关讲解

    1. float q0q0 = q0*q0; float q0q1 = q0*q1; float q0q2 = q0*q2; // float q0q3 = q0*q3; float q1q1 = q1*q1; // float q1q2 = q1*q2; float q1q3 = q1*q3; float q2q2 = q2*q2; float q2q3 = q2*q3; float q3q3 = q3*q3; 这段程序就是为了把需要用到的姿态矩阵的元素求出来给出的。 2. vx = 2*(q1q3 - q0q2); / vy = 2*(q0q1 + q2q3); vz = q0q0 - q1q1 - q2q2 + q3q3 ; 可以看到vx,vy,vz为CRb的最后一列的三项,四元数矩阵带入(1)式得vx,vy,vz分别是axB,ayB,azB每一项g前的系数。且静止情况下vx,vy,vz组成向量模长基本可以认为为1. 3. norm = sqrt(ax*ax + ay*ay + az*az); //acc数据归一化 ax = ax /norm; ay = ay / norm; az = az / norm; 以上已说,由四元数倒推回去的加速度,向量模长为1,为了比较误差进行归1化,算的由加计得出的向量。 4. ex = (ay*vz - az*vy) ; ey = (az*vx - ax*vz) ; ez = (ax*vy - ay*vx) ; 接着可以通过叉乘(向量外积)计算误差 5. exInt = exInt + ex * Ki; eyInt = eyInt + ey * Ki; ezInt = ezInt + ez * Ki; 对误差进行积分 6. gx = gx + Kp*ex + exInt; gy = gy + Kp*ey + eyInt; gz = gz + Kp*ez + ezInt; 进行pi滤波,其实就是互补滤波 7. q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT; q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT; q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT; q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT; 龙格库塔法。。。就是方程的数值解法。。近似解。。一阶解法 0736fac7228d4220f912874ee8cee5e5_21.png (0 Bytes, 下载次数: 0)下载附件 2010-12-14 22:54 上传 这个跟四元数的微分方程对应有兴趣的看看书。。。。 8. norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3); q0 = q0 / norm; q1 = q1 / norm; q2 = q2 / norm; q3 = q3 / norm; 对四元数进行规范化,即化为模长为1 ,因为只有规范化的四元数才能表示刚体旋转。 9. Q_ANGLE.Y = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch Q_ANGLE.X = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll 仍旧一一对应关系发现2(q1q3 -q0q2)刚好跟欧拉角对应,由此利用自带库函数即可求得俯仰角,横滚角类似,偏航角由于没有罗盘进行校正求没有意义,控制中采用采用PD控制。 补充,由于陀螺仪会有零点漂移开始一定要进行补偿。这段是在mpu6050.c中程序,对直流偏执进行了补偿。 MPU6050_ACC_LAST.X=((((int16_t)mpu6050_buffer[0]) << 8) | mpu6050_buffer[1]) - ACC_OFFSET.X; MPU6050_ACC_LAST.Y=((((int16_t)mpu6050_buffer[2]) << 8) | mpu6050_buffer[3]) - ACC_OFFSET.Y; MPU6050_ACC_LAST.Z=((((int16_t)mpu6050_buffer[4]) << 8) | mpu6050_buffer[5]) - ACC_OFFSET.Z; MPU6050_GYRO_LAST.X=((((int16_t)mpu6050_buffer[8]) << 8) | mpu6050_buffer[9]) - GYRO_OFFSET.X; MPU6050_GYRO_LAST.Y=((((int16_t)mpu6050_buffer[10]) << 8) | mpu6050_buffer[11]) - GYRO_OFFSET.Y; MPU6050_GYRO_LAST.Z=((((int16_t)mpu6050_buffer[12]) << 8) | mpu6050_buffer[13]) - GYRO_OFFSET.Z; 这里还要说一点,这里加速计的数据用的是滑动平均值滤波法,一定要有这个。。不然由于机械振动造成的影响非常大。。。 void repare_Data(void) { static uint8_t filter_cnt=0; int32_t temp1=0,temp2=0,temp3=0; uint8_t i; MPU6050_Read(); MPU6050_Dataanl(); ACC_X_BUF[filter_cnt] = MPU6050_ACC_LAST.X; ACC_Y_BUF[filter_cnt] = MPU6050_ACC_LAST.Y; ACC_Z_BUF[filter_cnt] = MPU6050_ACC_LAST.Z; for(i=0;i<FILTER_NUM;i++) { temp1 += ACC_X_BUF; temp2 += ACC_Y_BUF; temp3 += ACC_Z_BUF; } 选择716电机,720的转速跟716的差不多,注意电机孔直径一定要大一点。。不然塞不进去。。然后补充一下MPU6050的摆放位置没有关系。。同一坐标系下测的的加速度角速度都是没有关系的。。。关于电源还有QFN的芯片。。。注意这个其实很好焊,用烙铁沾点锡加点焊锡膏在对准的引脚上拖焊就行。。可以拿个灯照着看反光比较容易对准。关于软件最关建的说说。。只有姿态解算部分。。PID部分我的算法还得改。。。。这个网上有开源的就是串机PID。。。额。。本人菜鸟。。还没看懂。。大二还没学自控。。回去会看的。。。注意这里MPU最好用硬件IIc,因为小四轴的姿态更新频率是1000HZ比较快,这里的IIC只是一个器件。。目前还没出什么问题。 这里有一部分是我之前写的总结 (1)欧拉角法静止状态,或者总加速度只是稍微大于g时,由加计算出的值比较准确。 使用欧拉角表示姿态,令Φ,θ和Φ代表ZYX 欧拉角,分别称为偏航角、俯仰角和横滚角 。 载体坐标系下的 加 速 度(axB,ayB,azB)和参考坐标系下的加速度(axN, ayN, azN)之间的关系可表示为(1)。其中 c 和 s 分别代表 cos 和 sin。axB,ayB,azB就是mpu读出来的三个值。 这个矩阵就是三个旋转矩阵相乘得到的,因为矩阵的乘法可以表示旋转。这是程序 void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az) { float norm; // float hx, hy, hz, bx, bz; float vx, vy, vz;// wx, wy, wz; float ex, ey, ez; // 先把这些用得到的值算好 float q0q0 = q0*q0; float q0q1 = q0*q1; float q0q2 = q0*q2; // float q0q3 = q0*q3; float q1q1 = q1*q1; // float q1q2 = q1*q2; float q1q3 = q1*q3; float q2q2 = q2*q2; float q2q3 = q2*q3; float q3q3 = q3*q3; if(ax*ay*az==0) return; norm = sqrt(ax*ax + ay*ay + az*az); //acc数据归一化 ax = ax /norm; ay = ay / norm; az = az / norm; // estimated direction of gravity and flux (v and w) vx = 2*(q1q3 - q0q2); //四元素中xyz的 vy = 2*(q0q1 + q2q3); vz = q0q0 - q1q1 - q2q2 + q3q3 ; // error is sum of cross product between reference direction of fields and direction measured by sensors ex = (ay*vz - az*vy) ; //向量外积在相减得到差分就是误差 ey = (az*vx - ax*vz) ; ez = (ax*vy - ay*vx) ; exInt = exInt + ex * Ki; //对误差进行积分 eyInt = eyInt + ey * Ki; ezInt = ezInt + ez * Ki; // adjusted gyroscope measurements gx = gx + Kp*ex + exInt; //将误差PI后补偿到陀螺仪,即补偿零点漂移 gy = gy + Kp*ey + eyInt; gz = gz + Kp*ez + ezInt; //这里的gz由于没有观测者进行矫正会产生漂移,表现出来的就是积分自增或自减 // integrate quaternion rate and normalise //四元素的微分方程 q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT; q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT; q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT; q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT; // normalise quaternion norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3); q0 = q0 / norm; q1 = q1 / norm; q2 = q2 / norm; q3 = q3 / norm; //Q_ANGLE.Yaw = atan2(2 * q1 * q2 + 2 * q0 * q3, -2 * q2*q2 - 2 * q3* q3 + 1)* 57.3; // yaw Q_ANGLE.Y = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch Q_ANGLE.X = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll }1. float q0q0 = q0*q0; float q0q1 = q0*q1; float q0q2 = q0*q2; // float q0q3 = q0*q3; float q1q1 = q1*q1; // float q1q2 = q1*q2; float q1q3 = q1*q3; float q2q2 = q2*q2; float q2q3 = q2*q3; float q3q3 = q3*q3; 这段程序就是为了把需要用到的姿态矩阵的元素求出来给出的。 2. vx = 2*(q1q3 - q0q2); / vy = 2*(q0q1 + q2q3); vz = q0q0 - q1q1 - q2q2 + q3q3 ; 可以看到vx,vy,vz为CRb的最后一列的三项,四元数矩阵带入(1)式得vx,vy,vz分别是axB,ayB,azB每一项g前的系数。且静止情况下vx,vy,vz组成向量模长基本可以认为为1. 3. norm = sqrt(ax*ax + ay*ay + az*az); //acc数据归一化 ax = ax /norm; ay = ay / norm; az = az / norm; 以上已说,由四元数倒推回去的加速度,向量模长为1,为了比较误差进行归1化,算的由加计得出的向量。 4. ex = (ay*vz - az*vy) ; ey = (az*vx - ax*vz) ; ez = (ax*vy - ay*vx) ; 接着可以通过叉乘(向量外积)计算误差 5. exInt = exInt + ex * Ki; eyInt = eyInt + ey * Ki; ezInt = ezInt + ez * Ki; 对误差进行积分 6. gx = gx + Kp*ex + exInt; gy = gy + Kp*ey + eyInt; gz = gz + Kp*ez + ezInt; 进行pi滤波,其实就是互补滤波 7. q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT; q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT; q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT; q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT; 龙格库塔法。。。就是方程的数值解法。。近似解。。一阶解法 这个跟四元数的微分方程对应有兴趣的看看书。。。。 8. norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3); q0 = q0 / norm; q1 = q1 / norm; q2 = q2 / norm; q3 = q3 / norm; 对四元数进行规范化,即化为模长为1 ,因为只有规范化的四元数才能表示刚体旋转。 9. Q_ANGLE.Y = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch Q_ANGLE.X = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll 仍旧一一对应关系发现2(q1q3 -q0q2)刚好跟欧拉角对应,由此利用自带库函数即可求得俯仰角,横滚角类似,偏航角由于没有罗盘进行校正求没有意义,控制中采用采用PD控制。 补充,由于陀螺仪会有零点漂移开始一定要进行补偿。这段是在mpu6050.c中程序,对直流偏执进行了补偿。 MPU6050_ACC_LAST.X=((((int16_t)mpu6050_buffer[0]) << 8) | mpu6050_buffer[1]) - ACC_OFFSET.X; MPU6050_ACC_LAST.Y=((((int16_t)mpu6050_buffer[2]) << 8) | mpu6050_buffer[3]) - ACC_OFFSET.Y; MPU6050_ACC_LAST.Z=((((int16_t)mpu6050_buffer[4]) << 8) | mpu6050_buffer[5]) - ACC_OFFSET.Z; MPU6050_GYRO_LAST.X=((((int16_t)mpu6050_buffer[8]) << 8) | mpu6050_buffer[9]) - GYRO_OFFSET.X; MPU6050_GYRO_LAST.Y=((((int16_t)mpu6050_buffer[10]) << 8) | mpu6050_buffer[11]) - GYRO_OFFSET.Y; MPU6050_GYRO_LAST.Z=((((int16_t)mpu6050_buffer[12]) << 8) | mpu6050_buffer[13]) - GYRO_OFFSET.Z; 这里还要说一点,这里加速计的数据用的是滑动平均值滤波法,一定要有这个。。不然由于机械振动造成的影响非常大。。。 void repare_Data(void) { static uint8_t filter_cnt=0; int32_t temp1=0,temp2=0,temp3=0; uint8_t i; MPU6050_Read(); MPU6050_Dataanl(); ACC_X_BUF[filter_cnt] = MPU6050_ACC_LAST.X; ACC_Y_BUF[filter_cnt] = MPU6050_ACC_LAST.Y; ACC_Z_BUF[filter_cnt] = MPU6050_ACC_LAST.Z; for(i=0;i<FILTER_NUM;i++) { temp1 += ACC_X_BUF; temp2 += ACC_Y_BUF; temp3 += ACC_Z_BUF; } ...
    来自:智能车时间:2016-05-24 diy制作 四轴飞行器 mpu6050 四旋翼

芯片低价购
销量
82
查看
20K
qinshiysb

qinshiysb

资深卖家
在校学生
参数名 参数值
发布于 2014 年 06 月 21日
更新于 2015 年 01 月 29日
Moore8直播课堂