标题: STM32单片机四轴飞行器控制系统(硬件PCB、程序源码) [打印本页]

作者: viktorjc    时间: 2019-6-2 19:08
标题: STM32单片机四轴飞行器控制系统(硬件PCB、程序源码)
本作品设计的是小型四轴飞行器,采用一体化的设计思路,就是机身和处理器板作为一个整体,小型四轴器的处理器使用STM32F103芯片,传感器使用MPU6050,接收板使用STM32F4 Discovery开发板,使用IIC总线的方式与处理器连接;遥控板上面使用NRF24L01无线芯片,通过上位机利用自己定义的协议来完成小型四轴飞行器的姿态显示和控制;采用空心杯电机和两对正反桨,电池使用4.1V的锂电池;整个系统的电源控制部分采用662K稳压芯片,这样可以确保供电的稳定性,保证系统稳定可靠的运行。

Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)


单片机源程序如下:
  1. /* Includes ------------------------------------------------------------------*/
  2. #include "stm32f10x.h"
  3. #include "BSP/BSP.H"
  4. #include "app/uart/uart1.h"
  5. #include "app/rc/rc.h"
  6. #include "BSP/ultrasonic.H"
  7. #include "bsp/tim.h"

  8. //#include "STM32_I2C.h"
  9. /*
  10. TIM3
  11. TIM1
  12. */

  13. extern void i2cInit(void);

  14. //#define CLI()      __set_PRIMASK(1)  
  15. //#define SEI()      __set_PRIMASK(0)
  16. ////////////////////////////////////////////////////////////////////////////////
  17. //extern void Tim7_Init(u16 period_num);//用于精确延时

  18. void SYS_INIT(void)
  19. {
  20.         //MCO_INIT();                        //时钟输出初始化 2.4G 时钟
  21.         //LED_INIT();                        //LED初始化
  22.         //LED_FLASH();                //LED闪亮
  23.         Tim3_Init(500);        //1000=1MS,500=0.5MS
  24.         //Tim7_Init(500);        //1000=1MS,500=0.5MS
  25.        
  26.         Moto_Init();                //电机初始化
  27.         //Uart1_Init(500000);
  28.         Spi2_Init();
  29.         Nvic_Init();                //中断初始化
  30.         Nrf24l01_Init(MODEL_TX2,40);
  31.         if(Nrf24l01_Check())        Uart1_Put_String("FLY_NRF24L01 IS OK !\r\n");
  32.         else                                                                         Uart1_Put_String("FLY_NRF24L01 IS NOT OK !\r\n");

  33.         i2cInit();                        //I2c初始化
  34.         MPU6050_Init();
  35.         //Ultrasonic_Init();

  36.         ADC1_Init();//电压检测初始化
  37.         FLASH_Unlock();//模拟EEROM初始化
  38.         EE_INIT();
  39.         EE_READ_ACC_OFFSET();
  40.         EE_READ_GYRO_OFFSET();
  41.         EE_READ_PID();
  42. }
  43. ////////////////////////////////////////////////////////////////////////////////
  44. int main(void)
  45. {
  46.         SYS_INIT_OK=0;
  47.         SYS_INIT();
  48.         SYS_INIT_OK=1;
  49.         while (1)
  50.         {                             
  51.                
  52.         }
  53. }
  54. ////////////////////////////////////////////////////////////////////////////////
复制代码

所有资料51hei提供下载:
程序源码.7z (279.18 KB, 下载次数: 56)
硬件设计.zip (819.17 KB, 下载次数: 49)


作者: 科程电子888    时间: 2019-11-27 09:12
你好朋友,你这个还不错,给我需要的不太一样,可以交流下吗




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1