无聊的周末,开始了我的平衡车DIY设计。接下会不断更新我在DIY过程的遇到的问题,以及如何去处理。
首先确定好自己需要实现的功能,将其罗列起来,方便后续硬件的选型。作者第一版平衡车实现的是基本功能,没有附加其他的功能,所以硬件比较简单。
以下是作者用到的基本元器件:
元件 | 型号 |
---|---|
MCU | stm32f103c8t6 |
BluetoothLE | HC-08 |
驱动 | TB6612FNG |
串口 | CH340G |
陀螺仪 | MPU6050 |
5V稳压 | LM2596-5 |
3.3V稳压 | AMS1117 |
显示器 | 0.96OLED |
显示器3.3V稳压 | 662K |
蜂鸣器 | 5V有源蜂鸣器 |
元器件型号选好了,便是电路的设计:
1.MCU的设计(stm32f103c8t6):因为MCU是整个系统中最重要的电路,所以滤波电路是必不可少的部分,这是作者设计的电路,不过LC滤波电路的效果会更加好。作者的电路提供不同的烧写方式。
BOOT0 | BOOT1 | 烧写方式 |
---|---|---|
0 | X | JTAG or SWD |
1 | 0 | ISP |
2.驱动的设计(TB6612FNG):驱动的的电源直接接电池的,不过电池输入,作者还增加了一层滤波电路的设计。这是作者修改过的第二版驱动的电路图。第一版是使用了PA12和PA13引脚,然后后面发现,PA13的用成通用I/O时一直出问题,后面发现PA13是JTAG接口,在某度上查了一下,要作为通用I/O,其配置跟其他I/O不一样,需要在初始化时增加两句代码,而且初始化顺序不能颠倒。代码如下:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable , ENABLE);
作者通过网上的配置过程,确实能输出高低电平。但是测量它的电压,发现和普通I/O的电压值不一样,不同I/O的电压是3.3V左右,而它的输出只有1.5V左右。后面反复推敲,增加了个上啦电阻后,就可以正常一样使用了。如果嫌弃这样的配置,那么可以选择作者的第二版电路图。将PA12和PA13改为PB12和PB13。如下:
3.滤波电路的设计:作者在电路中的输入端增加了分压电阻,可以通过ADC实时采集电源的电压。采用二极管来防止电流反向处理。这个电路是作者自己随意设计的,可能不太正确,不对的大神可以指点指点。
4.CH340G串口电路的设计:作者在电路中增加ch340g的目的就是提供多种烧写方式。采用串口烧写代码的电路接法在上面第一点有说明。
5.JTAG烧写电路的设计:你会发现作者在的设计中,在每个引脚会增加个上拉电阻,原因是stm32的I/O识别的高电平需要2.0V以上,所以增加上拉电阻,以防I/O电压不足,导致出问题。
6.OLED电路的设计:作者的显示器设计,采用662K进行独立供电,也提供了几种方式实现,如下表:
R28 | R29 | R30 | R31 | |
---|---|---|---|---|
4线SPI | 0 | 1 | 0 | 1 |
3线SPI | 1 | 0 | 0 | 1 |
I2C | 0 | 1 | 1 | 0 |
7.稳压电路的设计:
5V稳压电路如下:
3.3V稳压电路,电路的输出端还增加了自恢复保险丝。如下:
8.BluetoothLE电路的设计:
9.按键模块电路的设计:
10.陀螺仪电路的设计
11.蜂鸣器电路的设计:
一、整体原理图:
二、PCB:
三、3D效果图:
四、实物图:
以上就是作者再设计过程中的经验分享。有不对的地方欢迎评价。