简介

可以跳跃的自平衡三棱柱,采用ARDUINO NANO ,1s锂电池,升压模块,MPU6050,OLED,无刷电机搭建而成,采用两级PID控制。通过这个作品可以简单学习PID,学习怎么通过MPU6050的信息通过控制器输出PWM控制电机的运行。

采用ARDUINO NANO控制器,有比较多的控制库,对于一开始学习PID调试,非常好。

元器件清单

物料 数量
PCB 1(立创EDA绘制或者在捷配)
打印外壳 1(淘宝或者嘉立创三维猴)
升压模块 2(3.7V升5V;3.7V升12V)
Arduino Nano 1
无刷电机 1
1S锂电池 1
0.96OLED 1
MPU6050 1
电子元器件若干 1
M2螺钉 2
惯性轮 1

元器件购买

需要Arduino Nano, 1S锂电池, 电机, 0.96OLED等

Arduino Nano

Arduino Nano

Arduino Nano 是一款基于 ATmega328P的开发板。它可以直插面包板的 。Arduino Nano 与Arduino Uno十分类似。它与Uno的区别是Nano没有直流电压供电接口同时Nano通过Mini-B USB 接口与电脑连接。

14路数字输入输出口:工作电压为5V,每一路能输出和接入最大电流为40mA。每一路配置了20-50K欧姆内部上拉电阻(默认不连接)。除此之外,有些引脚有特定的功能 串口信号RX(0号)、TX(1号): 提供TTL电压水平的串口接收信号,与FT232Rl的相应引脚相连。

外部中断(2号和3号):触发中断引脚,可设成上升沿、下降沿或同时触发。 脉冲宽度调制PWM(3、5、6、9、10 、11):提供6路8位PWM输出。 SPI(10(SS),11(MOSI),12(MISO),13(SCK)):SPI通信接口。 LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,反之输出为低时LED熄灭。 6路模拟输入A0到A5:每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0到5V,可以通过AREF调整输入上限。除此之外,有些引脚有特定功能 TWI接口(SDA A4和SCL A5):支持通信接口(兼容I2C总线)。 AREF:模拟输入信号的参考电压。 Reset:信号为低时复位单片机芯片。

Arduino Nano的设计方式是允许在连接的计算机上运行的软件对其进行重置,而不是在上载之前需要物理按下重置按钮。FT232RL的一条硬件流量控制线(DTR)通过100纳米法拉电容器连接到ATMega328的复位线。当这一行被断言(取低)时,复位行下降足够长的时间来复位芯片。Arduino软件使用此功能,只需在Arduino环境中按Upload按钮即可上载代码。这意味着bootloader可以有更短的超时,因为DTR的降低可以与上载的开始很好地协调。这个设置还有其他含义。当NANO连接到运行MAC OS X或Linux的计算机时,每次从软件(通过USB)连接到它时,它都会重置。接下来的半秒钟左右,引导加载程序在NANO上运行。当它被编程为忽略格式错误的数据(即除了上传新代码之外的任何东西)时,它将截获连接打开后发送到板的前几个字节的数据。如果板上运行的草图在首次启动时收到一次性配置或其他数据,请确保与之通信的软件在打开连接后和发送此数据之前等待一秒钟。

微控制器
工作电压 5V
Flash Memory(闪存) 2 KB (ATmega328P) 其中由 0.5 KB用于系统引导(bootloader)
SRAM(静态存储器) 2 KB (ATmega328P)
EEPROM 1 KB (ATmega328P)
模拟输入引脚 8个
EEPROM 1Kb
输入/输出引脚直流电流 40 毫安
输入电压 7-12伏特
数字输入输出引脚 22个(其中有6个引脚可作为PWM引脚)
PWM引脚 6个
3.3V引脚电流 50 毫安
时钟频率 16 MHz

1S锂电池

在TB现在一个差不多的电池就可以了,大家可以根据自己需要购买。

升压模块3.7V升5V

升压模块3.7V升5V

我们从电池出来连接这个。方便输出5V给我们设备使用。

升压模块3.7V升12V

升压模块3.7V升12V

3.7V升12V电源模块选择这个,当然你可以选择其他的也可以。但是需要自己修改PCB。从电池输入电压,然后输出12V给电机使用。

注意:电池与负载的算法是:电池输出能力要比负载功率高一倍以上,比如负载是12V 0.5A 6W功率,那么电池需要提供12W功率,12W除以4.2V=2.85A,要求电池保护板连续输出电流为2.85A,瞬间峰值输出电流为4A,按照1C的电池驱动能力,此时电池容量应不低于3000mAh,如果驱动的负载是12V 1A ,那么电池需要提供24W能量,24W除以4.2V=5.7A,要求电池保护板提供5.7A连续电流,及峰值8-10A电流,此时按照1C的电池算法,电池容量应不低于5000mA-6000mA,如果驱动的负载是15W,那么电池需要一万毫安左右!保护板耐10A以上电流!

电机

测试使用:

电压测试 9V~12V~24V 都可以运行,9V 供电时空载电流 70mA转速大约 2246 转,12V 供电时空载电流 80mA 转速大约 3020 转,24V供电时空载电流 110mA 转速大约 6100 转。电机简单测试运行方法:红色线接正极,黑色线接负极,黄色电机使能线接电源正极,绿色 PWM 调速线接电源负极就可以运行,如果要反转蓝色线接电源正极就可以,正反转切换请在停机时候切换,以免瞬间正反转浪涌损坏驱动。

单片机控制时,PWM 值越小转速越快,越大转速越慢;正反转切换线接数字口,高低电平控制正反转;电机使能线接 3.3v。

电机安装孔示意

MPU6050 模块

芯片为mpu6050,带有3轴加速度传感器3轴陀螺仪。自带数据运动处理数据库(dmp)可以直接将读出的原始值转化四元数输出,经过计算得到欧拉角,从而得到X轴Y轴Z轴的角度和角速度。通过测量车模的倾角和倾角速度控制车轮的加速度来消除车的倾角。使用dmp可以减少对数学模型的分析,及其方便。 选择MPU6050模块作为小车姿态检测。MPU6050 芯片作为核心,该芯片内部整合了 3 轴陀螺仪和 3 轴加速度传感器,并可利用自带的数字运动处理器硬件加速引擎,通过主 IIC 接口,向应用端输出姿态解算后的数据。有了DMP,可以使用运动处理资料库,非常方便的实现姿态解算,降低了运动处理运算对操作系统的负荷,同时大大降低了开发难度。
本设计中所采用的六轴陀螺仪模块为MPU6050 模组之所以选择这个模块,是因为其有以下优点:

0.96OLED模块

  • 模块有单色和双色两种可选,单色为纯蓝色,而双色则为黄蓝双色。单色模块每个像素点只有亮与不亮两种情况没有颜色区分
    尺寸小,显示尺寸为0.96寸,而模块的尺寸仅为27mm*26mm大小
  • 高分辨率,该模块的分辨率为128*64
  • 多种接口方式,该模块提供了总共4种接口包括:6800、8080两种并行接口方式、 4线的穿行SPI接口方式、IIC接口方式
  • 不需要高压,直接接3.3V就可以工作了

原理图

PCB

3D


BOM

打印框架

总结

通过各个模块的安装就可以完成一个简单的平衡三棱柱,当然还需要PID才能很好的控制。这个项目相对来说比较简单,适合基础一般的小伙伴学习。后面还有STM32和ESP32版本难道高一点,可玩性也会多一点,后面还有其他很好玩的项目。