在本节中,我们来完成控制模块的电路设计。首先我们需要对控制模块做一下简单的功能分析,也就是说我们先要了解控制模块都具有哪些功能,然后再逐步的完成这些功能。
实际上我们所做的控制模块除了本身的功能之外,还需要将电源模块和NanoPi两个电路板插在其上方组合在一起,所以我们的控制电路板的整体结构如下:
也就是说,控制模块是一个底板,上面带有几组插槽,电源模块和NanoPi通过引脚插入到底板当中完成组装。
此外,控制模块还需要接入超声波模块用于测量前方障碍物到国体的距离,以及一些预留的GPIO引脚。
现在我们来完成控制模块的电路设计,首先是芯片的选型,我们本来可以选用STM32F103RCT6作为控制模块的处理芯片,并在其上完成嵌入式程序的开发,但就目前情况来看此芯片价格高居不下,于是我们选用了STM32F407VET6,也就是说使用了Cortex-M4系列芯片来作为我们的处理芯片。
一、原理设计
第一步,为STM32F407VET6加入到我们的电路原理图当中:
第二步,在12和13脚上加入外部晶振电路,其中晶振频率为8MHz,两个电容均为22pF:
第三步,为14脚加入复位电路,并将94脚BOOT0和37脚BOOT1通过下拉电阻接地:
第四步,为VBAT、VDD、VSS、VDDA、VERF接入电源并接入电容:
第五步,为72脚和76脚加入SWD固件烧写接口,即1.27mm间距孔(使用其它间距也可以,例如2.54mm间距):
第六步,为VCAP加入电容:
这样我们的STM32F407VET6的基础电路就完成,之后我们需要在相应的GPIO上加入我们定制的功能。
功能一:加入AD采集功能,我们使用PA0、PA1、PC2、PC3进行电压采集,分别是ADC1_CH0、ADC1_CH1、ADC1_CH12、ADC1_CH13,其中ADC1_CH0为我们的电源电压采集功能,其它通道为预留功能:
功能二:电机驱动信号PWM输出,我们使用TIM4的4个PWM输出脚PD12、PD13、PD14、PD15以及TIM3的4个PWM输出脚PC6、PC7、PC8、PC9,其中TIM3的4路PWM输出为预留功能:
功能三:使用HCSR04超声波测距功能,接入PD9和PD8,由于HCSR04的ECHO脚输出是5V,所以我们使用10K和20K分压电阻将其转为3.33V:
功能四:我们参考MPU6050电子陀螺仪的外围电路,将其加入到设计图当中,并将PA6和PA7接入到其中,也就是I2C1接口,其中PB6和PB7都加了10K的上拉电阻:
功能四:我们使用PE0和PE1两个引脚来作为系统的信号指示灯:
功能五:加入与电源模块的接口,此接口我们在前一节中已经完成,对应的连接到控制模块中。接口中输入5V电源,我们需要通过AMS1117电源芯片将其转为3.3V,同时加入一个LED电源指标灯,当电源工作正常时LED灯亮起:
功能六:加入NanoPi接口并将其USB接口引出,NanoPi与我们控制模块中有几个部分需要连接:
电源接口5V供电。
使用串口与STM32连接。
引出USB插槽到控制模块。
我们参考NanoPi Duo2的GPIO定义其接口如下:
Pin# | GPIO1 | Name | Linux gpio | Pin# | GPIO2 | Name | Linux gpio | |
1 | 5V | VDD_5V | 2 | RXD | DEBUG_RX(UART_RXD0)/GPIOA5/PWM0 | 5 | ||
3 | 5V | VDD_5V | 4 | TXD | DEBUG_TX(UART_TXD0)/GPIOA4 | 4 | ||
5 | 3V3 | SYS_3.3V | 6 | GND | GND | |||
7 | GND | GND | 8 | SCL | I2C0_SCL/GPIOA11 | 11 | ||
9 | IRRX | GPIOL11/IR-RX | 363 | 10 | SDA | I2C0_SDA/GPIOA12 | 12 | |
11 | PG11 | GPIOG11 | 203 | 12 | CS | UART3_TX/SPI1_CS/GPIOA13 | 13 | |
13 | DM3 | USB-DM3 | 14 | CLK | UART3_RX/SPI1_CLK/GPIOA14 | 14 | ||
15 | DP3 | USB-DP3 | 16 | MISO | UART3_CTS/SPI1_MISO/GPIOA16 | 16 | ||
17 | DM2 | USB-DM2 | 18 | MOSI | UART3_RTS/SPI1_MOSI/GPIOA15 | 15 | ||
19 | DP2 | USB-DP2 | 20 | RX1 | UART1_RX/GPIOG7 | 199 | ||
21 | RD- | EPHY-RXN | 22 | TX1 | UART1_TX/GPIOG6 | 198 | ||
23 | RD+ | EPHY-RXP | 24 | CVBS | CVBS | |||
25 | TD- | EPHY-TXN | 26 | LL | LINEOUT_L | |||
27 | TD+ | EPHY-TXP | 28 | LR | LINEOUT_R | |||
29 | LNK | EPHY-LED-LINK | 30 | MP | MIC_P | |||
31 | SPD | EPHY-LED-SPD | 32 | MN | MIC_N |
我们根据NanoPi Duo2的GPIO接口来完成相应的功能:
其中,U4为USB插座,用于插入USB摄像头;P3为NanoPi-Duo2自身的Debug接口;NanoPi的UART1和STM32的UART1相连,用于数据通信,注意Tx和Rx需要反相接入。
功能七:使用串口2作为STM32的Debug接口:
最后:引出预留的5V电源和3V电源以及一些GPIO脚:
这样,我们就基本上完成了控制模块的电路设计,整体设计原理图如下:
可以看到我们的STM32F407VET6和NanoPi-Duo2剩余了很多GPIO引脚没有被使用,包括I2C、SPI、UART、GPIO等功能,读者可以根据自己的需要加入相应的功能。我们接下来对控制模块的电路进行布局和布线。
二、布局布线
首先我们需要将元器件摆放在相应的位置上,同样的原则,将同一模块的中的元器件摆放在一起,如下图将ASM1117和其相关的元器件摆放在一起:
之后,我们将Cortex-M4处理器,也就是我们选用的STM32F407VET6的电源电容与其摆放在一起,电容尽量靠近芯片的电源引脚:
之后,将8MHz晶振和其振荡电路的电容C5和C8摆放在一起:
将L2和R4以及L3和R8摆放在一起,其中L2和L3是两个LED灯:
一些排针插座:
MPU6050电子陀螺仪和其相关的外围电路:
最后,NanoPi Duo2的插座和USB插座:
至此,我们的布局工作就完成了,来看一下整体布局:
接下来,对所有网线进行布线:
最后,对PCB顶层和底层进行覆铜,完成GND网络的连接:
最终效果:
这样,我们就完成控制电路板PCB的设计工作,之后我们需要将设计图提交到工厂进行生产。
Copyright © 2015-2023 问渠网 辽ICP备15013245号