发作品签到
专业版

基于立创·梁山派的智能小车设计

工程标签

88
0
0
0

简介

该项目参考立创的“14天搞定智能小车”,用到了GD32F470ZGT6单片机的资源有:GPIO、通用定时器、基本定时器、USART、UART、DMA、ADC、软件IIC、SysTick、中断等功能

简介:该项目参考立创的“14天搞定智能小车”,用到了GD32F470ZGT6单片机的资源有:GPIO、通用定时器、基本定时器、USART、UART、DMA、ADC、软件IIC、SysTick、中断等功能
复刻成本:275.05

开源协议

GPL 3.0

创建时间:2025-03-06 10:26:35更新时间:2025-03-28 17:53:53

描述

1、项目名:

  • 基于立创·梁山派的智能小车设计;
  • 项目类型:原理图设计、PCB设计、元件采购、焊接调试、单片机C语言编程;

2、学习目标:

  • 认识GD32F470ZGT6单片机的内核架构、内部资源、标准库编程方式等;
  • 学习使用该单片机的定时器产生 PWM 信号来驱动电机;
  • 学习使用用C语言编程的方式得心应手的操作该单片机;
  • 学习使用寄存器和标准库的编程方式操作该单片机;

3、功能介绍:

  1. 四路电机驱动;
  2. 蓝牙无线遥控小车;
  3. 一路超声波避障;
  4. 两路红外循迹;
  5. 两个独立按键控制小车启停以及运动模式切换;
  6. 电池欠压提醒;
  7. 电池电量检测;
  8. 环境光照强度检测;
  9. 环境温湿度检测;
  10. 蜂鸣器报警提醒;
  11. OLED显示;

4、技能掌握:

  1. 熟练使用 Keil uVision5 软件对该单片机创建工程;
  2. 熟练在 Keil uVision5 软件中使用 DAP_Link 对该单片机进行在线仿真调试;
  3. 熟练使用寄存器和标准库的方式操作该单片机;
  4. 熟练使用该单片机的GPIO、通用定时器、基本定时器、USART、UART、DMA、ADC、软件IIC、SysTick、中断等功能;
  5. 熟练使用该单片机的通用定时器产生 PWM 信号(包括调整 PWM 信号的频率和占空比),配合 rz7899 H桥芯片,实现对N20电机的正反转和调速控制;
  6. 掌握了该单片机与DHT11温湿度传感器、HC-SR04超声波模块、HC-05主从一体蓝牙模块之间的通信;
  7. 掌握了 ITR9909 一体式红外对管配合 LM393 双路比较器与该单片机通信电路;

5、不足之处:

  • 小车在蓝牙app控制模式下:当小车在运动时不能实时修改小车的速度,必须停止小车后才能修改小车的速度;
  • 小车在超声波避障控制模式下:只能检测正前方的障碍物,在躲避障碍物时,小车左右两个角会出现撞击障碍物的情况;
  • 小车在红外循迹模式下:摇摆幅度过大、且速度过快会出现冲出赛道的情况;
  • 在 PCB 上温湿度传感器和蓝牙模块的接口布局不当,导致在装配这两个模块时,与核心板出现拥挤;

6、碰到的问题与解决方法:

  • 问题1:当小车运行时,电机会出现啸叫;
  • 问题2:当在 TIMER6 中断服务程序中定期执行获取各模块和传感器(电池电压、光照强度、温湿度、超声波测距)的数据时,用户按下按键(按键输入方式使用外部中断来实现)时,会出现程序卡死,导致 OLED 显示屏不在动态的更新数据;
  • 问题1解决方法:通过上网查询相关资料,电机会出现啸叫的原因是 PWM 的信号频率过低。原来使用的 PWM 信号频率为 1KHz,当将 PWM 信号的频率提高到 20KHz时在启动小车,电机出现啸叫的问题就解决了。
  • 问题2解决方法:[原因:] 通过在线调试,程序卡死在delay_us函数中的while(!(SysTick->CTRL & 0x00010000));语句(该语句的作用时检一直检查 SysTick 有没有产生下溢事件)。首先需要了解的是该延时函数的延时功能是使用 SysTick 的产生下溢事件来实现的;起初为了实现快速的响应按键按下,配置两个按键的外部中断优先级要高于 TIMER6 的中断优先级;而在这两个中断服务程序中都会执行延时函数;当 TIMER6 的中断服务程序在执行延时函数时,并没有执行完毕,这时用户按下按键产生外部中断,这时由于中断优先级的配置,程序会跳到外部中断服务程序中执行,但是在外部中断服务程序中也会执行延时函数,当外部中断服务程序执行完毕,SysTick 的下溢标志位会被清除、计数器会被禁用;这时程序在返回到 TIMER6 中断服务程序中执行延时函数时会一直停留在while(!(SysTick->CTRL & 0x00010000));语句;这时 SysTick 计数器在上一级的中断服务程序中已被禁用,无法在进行计数,更不会产生下溢事件,所以程序一直卡死在这里。[解决方法:”] 将 TIMER6 的中断优先级配置比外部中断(按键输入)优先级要高,这样一来在 TIMER6中断服务程序没有执行完时,即使按键按下也不会中断 TIMER6 中的任务,就不会出现程序卡死在延时函数中的while(!(SysTick->CTRL & 0x00010000));语句;但是之后在执行按键中断服务程序中的延时函数时仍然会发生程序卡死在延时函数中的while(!(SysTick->CTRL & 0x00010000));语句的情况;这时就必须在进入按键中断服务程序时立马禁用 TIMER6 的中断请求,在执行往按键中断服务程序后在开启 TIMER6 的中断请求;这时程序卡死在delay_us函数中的while(!(SysTick->CTRL & 0x00010000));语句的问题就解决了。

7.原理图简介:

  • 7.1 主控IC
    • 核心架构:
      • CPU内核:ARM Cortex-M4,支持DSP指令集和浮点运算单元(FPU)。
      • 主频:高达240 MHz,性能可达300 DMIPS。
      • 工作电压:1.8V~3.6V(宽电压范围)。
    • 存储资源:
      • Flash:1MB(ZGT6型号)。
      • SRAM:256KB(含64KB Core Coupled Memory,用于高速数据访问)。
      • 扩展存储:支持外部存储器接口(EMIF),可连接SRAM、NOR Flash等。
    •  外设接口:
      • 通信接口:
        • 多达6个USART、3个UART、4个SPI、3个I2C。
        • 2个CAN 2.0B控制器。
        • 1个USB 2.0 OTG(全速/高速)。
        • 1个10/100M以太网MAC(需外接PHY芯片)。
      • 模拟外设:
        • 3个12位ADC(16通道,2.4 MSPS采样率)。
        • 2个12位DAC。
      • 定时器:
        • 高级定时器(支持PWM输出、死区控制等)。
        • 通用定时器、基本定时器、看门狗定时器。
        •  
    • 封装与引脚:
      • 封装:LQFP144(ZGT6后缀表示144引脚封装)。
      • GPIO数量:多达112个,支持复用功能。
    •  开发工具与生态:
      • IDE支持:Keil MDK、IAR Embedded Workbench、GCC(如PlatformIO)。
      • 调试接口:SWD/JTAG。
      • 官方库:提供标准外设库(类似STM32的HAL库)和例程。
      • 兼容性:硬件和软件设计上兼容STM32F4系列,便于迁移。
    • 应用场景:
      • 工业自动化(PLC、HMI)。
      • 高端消费电子(无人机、智能家居)。
      • 网络设备(以太网网关)。
      • 需要高性能计算的嵌入式设备。
    • 优势:
      • 性价比:相比国际大厂同配置芯片更具价格优势。
      • 国产化:适合供应链本土化需求。
      • 低功耗:支持多种省电模式(睡眠、待机等)。

 

  • 7.2 电源输入电路

 

    • 元件功能介绍:
      • CN1              :接线端子,用于连接两节 3.7V 串联的锂电池。
      • D1                 :二极管,用于防电池反接。
      • SW1              :滑动机械开关,用于接通和断开电源。
      • R1                 :10K 电阻,用于给 LED1 限流保护。
      • LED1             :发光二极管,用于电源指示灯。
      • C1                  :瓷片电容,用于电源储能滤波。
      • AMS1117-50  :LDO 5V 稳压 IC,用于将输入电压稳压到 5V。
      • C2                  :瓷片电容,用于稳压后储能滤波。

 

  • 7.3 电源电压检测电路

    • 元件功能介绍:
      • R2、R3、R4:10K电阻*3,用于组成分压网络,根据欧姆定律,R4 两端的标准电压范围为:0V~2.466V,最大电压范围为:0V~2.800V;
    • 实际电压计算方法:
      • 标准电压计算:((adc_val / 4095.0f) * ADC_VREF) *(7.4f / 2.466f); // 计算电池标准电压
      • 最大电压计算:((adc_val / 4095.0f) * ADC_VREF) *(8.4f / 2.800f); // 计算电池最大电压

 

  • 7.4 红外循迹电路

    • 元件功能介绍:
      • LM393  :双路电压比较器, 用于给单片机提供红外循迹功能所需的电平数据。
      • TIR9909:一体式红外收发传感器,接收端用于给 LM393 同相输入端提供比较电压。
      • R13       :100欧姆电阻,用于给红外发射管提供限流保护。
      • R14       :10K电阻,用于给红外收发传感器的接收端组成分压网络。
      • RP1      :10K电位器,用于调节比较器的反相输入端的电压。
      • R15      :10K电阻,用于将比较器的输出端电位拉高。
      • R16      :100欧姆电阻,用于给 LED6 提供限流保护。
      • LED6   :发光二极管,用于指示比较器输出端的电平状态。

 

  • 7.5 电机驱动

    • 元件功能介绍:
      • rz7899:一款DC双向马达驱动电路。它有两个逻辑输入端子用来控制电机前进、
        后退及制动。该电路具有良好的抗干扰性,微小的待机电流、低的输出内阻,同
        时,他还具有内置二极管能释放感性负载的反向冲击电流。
      • N20   :在该项目中使用的 N20 电机规格是,电压:6V、转速:500转/分钟。

 

  • 7.6 功能按键

    • 元件功能介绍:
      • START1:轻触按键,启动功能按键。
      • MODE1:轻触按键,模式功能按键。

 

  • 7.7 光照强度检测

    • 元件功能介绍:
      • R11:100K电阻,用于与 R12 组成分压网络。
      • R12:光敏电阻,用于感知环境光照强度数据,以供单片机 ADC 采集。

 

  • 7.8 蜂鸣器

    • 元件功能介绍:
      • BUZZER1:3.3V蜂鸣器,用于产生蜂鸣声。 
      • Q1:PNP三极管,用于控制蜂鸣器的工作状态。
      • R9:10K电阻,用于将 Q1 的基极上拉到高电平状态。
      • R10:1K电阻,用于给 Q1 的基极与单片机的 I/O 口提供限流保护。

 

  • 7.9 按键指示灯,车灯电路

    • 元件功能介绍:
      • LED2:蓝色发光二极管,启动按键指示灯。 
      • LED3:蓝色发光二极管,模式按键指示灯。 
      • LED_L:绿色发光二极管,左车灯指示灯。 
      • LED_R:绿色发光二极管,右车灯指示灯。  
      • R5:1K电阻,给 LED2 提供限流保护。
      • R6:1K电阻,给 LED3 提供限流保护。
      • R7:100欧姆电阻,给 LED_L 提供限流保护。
      • R8:100欧姆电阻,给 LED_R 提供限流保护。

 

  • 7.10 OLED 显示模块

 

  • 7.11 DHT11 温湿度传感器

 

  • 7.12 HC-SR04 超声波模块

 

  • 7.13 HC-05 蓝牙模块

 

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
1.蓝牙app控制_480.mp4
1
2
2.超声波避障.mp4
0
3
4.温湿度数据采集.mp4
0
4
5.光照强度数据采集.mp4
0
5
6.电池欠压提醒.mp4
0
6
3.小车红外循迹演示视频.mp4
0
7
BOM_智能小车V0.0.1_PCB_2025-03-07.xlsx
0
8
智能小车V0.0.1-GPIO分配表.xlsx
1
9
GD32_智能小车_over.zip
2
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航