感谢EEPW给我们这样一个机会玩的开心!
(点击链接地址可直接跳至相应楼层)
2楼----------------------------------组装过程
4楼----------------------------------资料分享
5楼----------------------------------蓝牙连接
感谢EEPW给我们这样一个机会玩的开心!
(点击链接地址可直接跳至相应楼层)
2楼----------------------------------组装过程
4楼----------------------------------资料分享
5楼----------------------------------蓝牙连接
终于发货了! 好激动QAQ 小车从天府之城——成都 出发啦
收到包裹后 迫不及待打开 包装非常用心 每个零件都被裹得里三层外三层 业界良心啊来个全家福
下面开始正式安装 先安装轮子 很简单 撸上去就ok
话说这可是瑞士电机 脏点也不影响使用 电机底座应该是3D打印的 也是下了血本啊
安装电池之前先要安装铜柱 注意!此处应该安装母对母的铜柱 方便后面主板的安装
1300mAh的电池 大容量才够味~
卡紧电池 安装主板 四个安装孔对其后用公对母的铜柱固定 为亚克力板的安装做准备
可以看到可爱的led屏幕 右下角我用螺丝又固定了一下 增加稳定性
平衡车中我最关注的就是这块主板 平时自己也画板子 每每拿到一块板都要细细欣赏 学习上面的焊接和走线
首先是焊功没得说 对于几个贴片的锡量把握的恰到好处
再就是走线 非常有意思 这块板子上有45°的转角也有圆弧形转角 方中带圆么~
红色圆圈标记的貌似是负片 过孔使用负片可增强各层的连接 方便散热
总体来说 硬件做的很出色!值得学习
接下来即使电机和编码器的安装 注意红线位置 不要反接
电机底部的线不要接触地面 一般来说不需要做什么特殊处理 凭借线的刚性就能保持一个固定的姿态
插上电池 耐心一点 慢~慢~~插~~~
还是良心设计 专门配备的T型头 妈妈再也不会担心正负极反接啦!
上面的热熔胶既保证正负极开路 在插电池时手按在这里也不会很痛好人性的设计
安装亚克力板 打开电源 led屏正常工作 整个安装完成啦~
燃!
按一下左上角的按键就能实现简单的平衡了 (小视频截图不太清楚 有机会再更新)
前后移动是正常现象 有时也会产生剧烈的摆动 但是依然能够保持平衡
整个安装过程并不复杂 模块集成度高 就像搭积木 感谢passoni
硬件做好 接下来就是调试软件 更多的挑战在等待着我们
你准备好了么
有很长一段时间没有更新进程贴 实在惭愧 不过有句话怎么说来着:“现在意识到晚就还不算晚”
蓝牙连接
测试蓝牙连接的第一步是找到apk安装在手机上(首先你得有个安卓手机)
安装成功后打开APP 此时右上角显示“无连接”
打开小车电源 点击安卓手机的 menu 键 在弹出的菜单栏选择【连接设备】 在弹出的菜单栏点击【查找设备】选择"SPP-CA" (部分手机可能无法连接 或者无法打开APP 只需要在QQ群中选择其他版本的apk安装就好 总有一款适合你)
输入密码“1234” 就能连接成功
看到右上角显示“连接到SPP-CA”就连接成功了 在保持小车能自平衡的状态下(按一下小车左上角的白色按键)上下左右滑动屏幕中心的蓝色按钮 就能控制小车的前进方向了
小车舞台show
视频地址:http://player.youku.com/player.php/sid/XMTM1MDE3MTIwOA==/v.swf
小车爬坡show(最后小车趴在地上:累死本宝宝了(づ。◕‿‿◕。)づ)
电机驱动实验
想让小车跑起来,了解电机是必不可少的工作。下面让我们来看看STM32是如何通过TB6612FNG这款电机驱动芯片控制电机转速和方向的。
脑海中首先形成一个概念:MCU→电机驱动芯片→电机
电机驱动的硬件部分都已经在小车主板上集成,无需过多的连接,可直接进入程序代码部分。
我用的程序源码是“Mini Balance V2.5 标准版源码(集成DMP 卡尔曼滤波 互补滤波 小车默认搭载)”,同学们可以直接将其拷贝在磁盘根目录下修改其main函数即可,方便又快捷哦~
看过平衡小车使用说明的同学应该都记得测试上电后,可以先看看MiniBalance.c这个文件
非常好,这里面恰好有“赋值给PWM寄存器”的函数
void Set_Pwm(int moto1,int moto2) { if(moto1<0) AIN2=1, AIN1=0; else AIN2=0, AIN1=1; PWMA=myabs(moto1); if(moto2<0) BIN1=0, BIN2=1; else BIN1=1, BIN2=0; PWMB=myabs(moto2); }
噢~貌似是通过对AIN2 AIN1和PWMA的赋值来控制MOTO1,BIN1 BIN2和PWMB控制MOTO2。可这些又分别代表什么?
通过查阅小车原理图电机驱动部分和TB6612FNG芯片手册可以看到
果然是通过IN1 IN2和PWM这三个量控制电机的正反转和转速,在main.c函数中敲段代码试一下吧~(有些没有的代码可以先注释掉,头文件保留!)
int main(void) { SystemInit(); delay_init(72); usart1_init(); uart3_init(72,9600); JTAG_Set(JTAG_SWD_DISABLE); JTAG_Set(SWD_ENABLE); led_init(); MiniBalance_PWM_Init(3599,0); while(1) { Set_Pwm(1000,1000); } }
具体下载程序的流程可以参考《平衡小车使用说明》或者STM32使用MCUISP下载程序教程
程序成功下载,小车以“EEPW”LOGO正方向面朝自己实现后退功能,MOTO1和MOTO2给定不同的值可以实现不同的速度,速度在达到3500时不再增加,正负则实现转向功能,比如下面程序可以让小车以相同速度前进
(相比以上程序我又注释掉一部分语句)
int main(void) { SystemInit(); usart1_init(); MiniBalance_PWM_Init(3599,0); while(1) { Set_Pwm(-1000,-1000); } }
编码器数据采集实验
上一层我们对电机有了一个大概的了解,也能成功的驱动电机了,但是小车作为一个控制系统,想要实现自平衡,必须是一个闭环系统。
编码器(encoder)是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成电信号,前者称为码盘,后者称为码尺。按照读出方式编码器可以分为接触式和非接触式两种;按照工作原理编码器可分为增量式和绝对式两类。增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。绝对式编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。
通俗点讲,编码器输入端齿轮和电机输出端的齿轮啮合,通过内部转换再将这个信号返回给MCU,实现一个反馈的作用。如果觉得这个速度慢,那么通过MCU处理后可以加速;如果觉得速度快,同样可以减速达到理想的速度。其实就是个测速仪。
这个瑞士的电机内部集成电机和编码器,通过xh排线直接连接到主板,硬件方面就已经连接好了,还真是方便呀!
软件部分,我们打算通过oled显示编码器采集的数据。基于电机驱动的实验修改代码如下
int main(void) { SystemInit(); delay_init(72); usart1_init(); led_init(); Adc_Init(); MiniBalance_PWM_Init(3599,0); OLED_Init(); Encoder_Init(); if(Flag_Bizhang==1) TIM2_Cap_Init(0XFFFF,72-1); if(Flag_Bizhang==0) Encoder_Init2(); delay_ms(200); Timer1_Init(49,7199); while(1) { Set_Pwm(-1000,-1000); if(1==Flag_Show) oled_show(); } }
其中 oled_show()函数我没有修改 上面显示的信息比较多 但是我们关注的是中间两行
从oled屏上可以看到,当pwm值给-1000时,编码器采集Enco大约在160
当我们再次改变pwm的值时,此时让电机高速运转
int main(void) { SystemInit(); delay_init(72); usart1_init(); led_init(); Adc_Init(); MiniBalance_PWM_Init(3599,0); OLED_Init(); Encoder_Init(); if(Flag_Bizhang==1) TIM2_Cap_Init(0XFFFF,72-1); if(Flag_Bizhang==0) Encoder_Init2(); delay_ms(200); Timer1_Init(49,7199); while(1) { Set_Pwm(-3500,3500); if(1==Flag_Show) oled_show(); } }
注意,我将电机旋转方向也做了改变,让我们看看编码器是否能有所显示
编码器数据采集实验成功!
有奖活动 | |
---|---|
【有奖活动——B站互动赢积分】活动开启啦! | |
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |