野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 28810|回复: 55

平衡车之路上的点点滴滴,原理分析加程序分享,不断更新。

[复制链接]
发表于 2016-10-20 13:21:24 | 显示全部楼层 |阅读模式
2016/10/20   雾霾天,但是心情很好,因为车子到了!
首先十分感谢火哥,这些天真的是实在太麻烦火哥了,心里太感动了,还要感谢其他人,谢谢你们
收到车子的第一天,虽然相对一些大牛们,我已经落后很远了,但是,我会慢慢赶上的
也许我的进度会慢一些,但是step by step ,脚踏实地地,我相信我也可以追上你们
废话少说,接下来放一些车子靓照
IMG_20161019_144346.jpg

IMG_20161019_144407.jpg

IMG_20161019_144513.jpg

D1:
问题1、之前用的JLINK V8仿真器,在开发板上是Jtag接口,可以方便地下载调试程序,但是,由于小车考虑到板子的面积,用的是SW接口,在网上看,是可以将JLINK配置到SW模式的,But,当我按照sw的接线接好后,在keil debug中却显示no SW-DP found,于是,接下来又是一阵百度之,有的说是  JLINK 是盗版,有的说是需要重新刷固件。。。。。因为之前msp430单片机那个仿真器就是被我刷成砖头了,故小心了一点,在群里面问了大牛们,但是也没有找到解决的方法,只好再上各个论坛找,最后终于找到了方法,下面是我的操作步骤,希望能对你们有帮助:
版本:KEIL V4.12    JLINK V8
1、先把线接好

需要接5根线
1脚、Vref
7脚、SWDIO
9脚、SWCLK
15脚、RESET
4-20任意脚、GND

2、在keil 中将芯片型号改好,然后debug选项中,换成SW模式,于是出现了这样的情况
在这个界面点setting,
QQ图片20161020130448.jpg 再点SW,于是问题出现file:///C:/Users/wuyongliao/Documents/Tencent%20Files/1667619546/Image/Group/2BMTTK~E@TSV1BNH%7B2B9]1M.jpg
QQ图片20161020130448.jpg
显示  no SW-DP found
3、去官网下个补丁,放到keil安装目录下的ARM\Segger.中,将之前的进行覆盖
官网地址:https://www.segger.com/IDE_Integration_Keil.html#knownproblems
我下载的是这个补丁,因为没能正确地识别sw
QQ截图20161020130748.png
4、接下来再去看debug选项,此时可以看到
QBQ%U@A}P2GZX}~YD(YKI.png
至此结束,接下来就要开始平衡车之旅了,因为我看网上有好多也出现了这个情况,希望这个方法能给你们帮助!
有不对的地方还请多多包涵,指教!





回复

使用道具 举报

 楼主| 发表于 2016-10-20 13:23:46 | 显示全部楼层
为何图片显示不出来
回复 支持 反对

使用道具 举报

发表于 2016-10-20 13:46:04 | 显示全部楼层
smtudou 发表于 2016-10-20 13:23
为何图片显示不出来

显示出来了                             
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-20 13:48:09 | 显示全部楼层

嗯,现在可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-20 23:07:34 | 显示全部楼层
2016/10/20
将按键,led,oled调通了,用了模拟IIC,刚开始驱动IIC时,显示总是杂乱无章的点,以为是模拟IIC写错了,看了之前大牛们的oled程序,改改代码,下进去还是不行,纳闷了,板子复位了好几下,还是不行,把电断掉,再接上,于是就可以了,这是为啥那??????
But,又通过模拟IIC写进去还是不行了,但是这次知道是自己程序出错了,经过检查发现是因为拿之前写过的程序移植,这个地方忘记改了,
只把后面的移位改了下,前面的GPIOB->CRH &= 0XFFFF0FFF自动舍弃了,
#define SDA_OUT() {GPIOB->CRH &= 0XFFFF0FFF;(u32)GPIOB->CRH |= 3<<12;}        //0011 通用推挽输出,50M
#define SDA_IN() {GPIOB->CRH &= 0X0FFF0FFF;(u32)GPIOB->CRH |= 8<<12;}        //1000 上拉/下拉输入
哎,,,,编程真是个细心活,

程序见附件!    希望得到各位大牛的指点!谢谢了~~

实验1 LED实验.rar

3.38 MB, 下载次数: 183

回复 支持 反对

使用道具 举报

发表于 2016-10-21 09:41:26 | 显示全部楼层
smtudou 发表于 2016-10-20 23:07
2016/10/20
将按键,led,oled调通了,用了模拟IIC,刚开始驱动IIC时,显示总是杂乱无章的点,以为是模拟I ...

进度还挺快
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-21 12:26:44 | 显示全部楼层

是拿着之前的程序改了下,就用了~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-22 00:10:11 | 显示全部楼层
2016/10/21
今天将ADC调通了,看到论坛里面有一个人说,这种锂电池的供电电压不能过低,当低于11.1V时,会对电池损坏,我却把电池硬是用没电了希望对电池不要有太大的损坏,于是也做了一个电量测量程序,用来进行对电量进行监控,当电量小于30%时,点亮LED1,来提示自己,当电量全部用完(电压小于11.1V时)点亮LED2,来warning自己。
今天把OLED屏的驱动SSD1306好好看了下,还有几节课要上,重点是自己水平不高,进度稍微慢些,但还在路上!!!加油,回村了~~~ IMG_20161021_233444.jpg


程序见附件,希望能得到大神指点,谢谢了!
实验3 ADC电量显示.rar (3.56 MB, 下载次数: 220)


回复 支持 反对

使用道具 举报

发表于 2016-10-22 08:33:28 | 显示全部楼层
不错,进步很大,看着我都想玩了
回复 支持 反对

使用道具 举报

发表于 2016-10-22 22:21:52 | 显示全部楼层
厉害了,学习住
回复 支持 反对

使用道具 举报

发表于 2016-10-22 23:44:56 | 显示全部楼层
都这么厉害,小白压力大
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-23 00:05:15 来自手机 | 显示全部楼层
2016/10/22
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-25 22:34:18 | 显示全部楼层
2016/10/25
上个周末,同学来玩,耽误两天,今天晚上考试,昨天又复习一天,耽误到今天,深深滴罪恶感
接下来就要开始控制电机了,想要对电机实现精密地控制,自控告诉我,要进行闭环控制,那就先进行小车的速度检测吧
2.GIF
对速度的检测,就要用到编码器
编码器:是一种将角速度或者角位移转换成一连串电数字脉冲的旋转式传感器
大致可以分为:光电式(比较精密)和霍尔式(比较稳定)
电机编码输出有两根线:编码器A相、B相(输出两根线的原因是为了分辨方向)
输出信号成正交(信号相位差为90°)
波形如下:
3.GIF
如果码盘上面刻了N个光电缝或者N个磁极,当电机转动一周时,就会有N个脉冲输出,咱们平衡小车转一周会输出390个脉冲,
但是考虑到精度的要求,当通过信号细分可以提高测量的精度,例如:现在小车旋转一周可以输出4*390个脉冲,咱们通过计数器计数时,测量的精度就可以提高4倍

之前上测量电路时,好像是讲过有这样的一个电路的,如下所示:
4.GIF 5.GIF
但是,STM32的定时器模块有一个编码器模式,其内部已经集成了这个细分电路,不得不佩服,STM32考虑的东西还是很多的,好叼
那余下的就是,设置STM32工作在编码器模式,由于电机编码输出已经接上拉电阻,故可以直接输入32
那接下来就是对32的设置:
6.GIF
可以看出,计数器可以仅在TI1、TI2或者TI1andTI2的有效边沿进行计数,计数的方向由上表可以进行设定,

设定完成后,单片机就可以很智能地识别转动的方向,从而对数据进行加1或者减1,一直加到你设定的TIMx_ARR寄存器的自动装载值
一直纠结的是,上来就是0,然后递减,那不是变负数,但是不会的,会数据溢出,从TIMx_ARR寄存器的自动装载值再递减,


在这里设置了,编码器模式3,也就是在TI1和TI2边沿都进行触发计数,也就是4倍频了,并将TI1和TI2设置为了上升沿
7.GIF
一个实例如下,可以看到对于毛刺可以有效地进行滤除

这只是将编码器用起来了,还没有进行测速,接下来,会开一个定时器,记脉冲进行测速,明天做了,今天编码器就到这里了!

PS:只是按照我所学习的步骤,将自己的理解码在了上面,有不对的地方,希望得到大神指导,谢谢了!
                                                                                                                                            --------smtudou





实验4 编码器.rar

3.82 MB, 下载次数: 327

回复 支持 反对

使用道具 举报

发表于 2016-10-26 09:48:41 | 显示全部楼层
写的不错,继续继续。
回复 支持 反对

使用道具 举报

发表于 2016-10-26 09:53:20 | 显示全部楼层
666
666
666
666
回复 支持 反对

使用道具 举报

发表于 2016-10-26 10:10:29 | 显示全部楼层
厉害!!!!!
回复

使用道具 举报

发表于 2016-10-26 10:57:39 来自手机 | 显示全部楼层
加油!!!!!!!
回复

使用道具 举报

 楼主| 发表于 2016-10-26 17:59:10 | 显示全部楼层
2016/10/26
今天下午来到实验室,发现电池还没有充满,不应该啊,充了这么长时间了
我就问了客服,他让我看一下充电器不接电池LED灯的状态,发现LED灯为绿灯,但是会闪过红色,(这就表示这个充电器已挂了)新到手的充电器可以通过这种方法来看下充电器的好坏!
那充电器已挂,那电池怎么样子那?我就用电压表测了下输出电压,发现为8.43v,正常应该是11.1v的,这说明有一块电池也已跪这种锂电池,每一块正常工作电压在3.5-4.2v,最高充电不要超过4.2*3=12.6v,最低不要低于11.1v,低于11.1v,甚至下限10.5v时,有可能对电池造成彻底的损坏
故:听论坛里大神的话是没错的,有一个大神已经在他的帖子里面提到过,无奈自己看到的时候太晚,虽然也做了一个电量监测的程序,但是电池已挂
IMG_20161026_170555.jpg
总结:有可能是自己刚拿到车时,比较兴奋,让小车跑了好长一段时间,也没有太关注OLED上的电压值,导致电池过放了,这导致了电池损坏,由于接下来又会有很多的战友加入到平衡车之列,希望你们拿到小车时,不要尽兴地让小车在火哥的hex文件下用力地跑,要看看电量怎么样,别把电池过放了,血的教训!!                                                                                                                            ---------小白成长记


回复 支持 反对

使用道具 举报

发表于 2016-11-4 23:45:23 | 显示全部楼层
大兄弟,你的OLED显示字符的函数不行呀
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-6 09:39:24 | 显示全部楼层
woaiwm 发表于 2016-11-4 23:45
大兄弟,你的OLED显示字符的函数不行呀

不好意思啊,我的板子不知道那个地方出现了点问题,不能工作了,到还没有查出来原因,暂时不能玩了,所以看不了,抱歉了
回复 支持 反对

使用道具 举报

发表于 2016-11-6 20:21:31 | 显示全部楼层
smtudou 发表于 2016-11-6 09:39
不好意思啊,我的板子不知道那个地方出现了点问题,不能工作了,到还没有查出来原因,暂时不能玩了,所以 ...

哦哦,好吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-9 21:32:14 | 显示全部楼层
2016/11/9
板子终于活过来了,下面大致说下我这么些天的坎坷吧!
上次调电机时,发现一个轮子可以控制,另外一个轮子没有反应,把接口换了一下,发现另一个电机可以正常转动,故电机是好的,于是开始查芯片6612FNG,当我在测他的引脚时,估计是那个地方短路掉了,没有在意电源指示灯,突然发现电源指示灯不亮了,赶紧把电源断掉,用手一摸ASM-1117和RT7272B发现好烫手,等温度降下来后,再加上电后发现,电源指示灯不亮了,整个板子没有反应了,当时整个人都感觉要完了,用电压表测了电源,输入正常,经过RT7272B后电压只有1.4V左右,当时就怀疑是把RT7272B烧坏了,于是第二天去电子市场买了一颗7272,由于那个有吹风枪的实验室没有开门,我这里又没有,当时急于想赶紧把板子修好,于是自己下手,之前没有拆过贴片芯片,看了网上的建议,先把各个引脚用小刀锯断,然后把芯片拿下后再去用吸枪将各个引脚的焊锡去掉即可,但是当我把芯片8个引脚拿掉后,芯片没有自己掉下来,发现坑爹了,,于是再去看原理图,原来还有一个9脚,傻眼了,9脚在芯片下面,只能用吹风枪了,但是,现在没有啊!!去手机修理店应该可以把他取下来,于是奔到手机修理店,一个年轻小伙,爱理不理的,说懒得弄,我说急着用的,他就说10元,吹一下,fuck~~~既然都来到这里了,算了,认了,10秒钟就吹下来,这tmd真坑爹,认了,让他帮忙把新的芯片焊上去,又说10元,这完全是打劫,又不是不会焊,甩给他10元,拿回来自己焊好,通上电,电源芯片还是好烫,于是干脆把1117也换掉,买芯片时,就多买了一颗1117,但是换上之后,依旧是很烫,,,,这时候的心情真的是感觉眼珠就在眼角,涩涩的,陷入了不知如何走的地步
。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。
既然是因为检测电机驱动芯片时,出的问题,那有可能就是电机驱动芯片出的问题,刚好那天看到了那个实验室开门了,于是就走了进去,一个工程师在焊板子,我说我的板子有些问题,能不能帮忙把芯片吹下来,老师傅二话没说,接过来板子,熟练地将它拿了下来,将电机驱动芯片拆下来后,再次接上电源,发现依旧是不行,难道是电源芯片又挂了,又去麻烦老师傅将两个电源芯片吹下来,自己拿回来,通过外接稳压电源来进行供电,供3.3v电源,但是发现接上电源,电压直接拉低,电流1A多一点,哪里有短路,之前检查问题时,也有测是否短路,但是测量后发现没有短路,那时测的是5V和gnd之间,这次通过加电源发现3.3v和gnd是短路的,再去测5v的gnd之间,依旧没问题,那就是3,3v和gnd之间有什么元器件击穿了,首先怀疑是电源旁边的稳压胆电容,去掉后,发现依旧是短路,,,,刚好看到群里面有人也有一个这样的问题,于是,我就也向群里面的大神求助,负责人 周**,真是大神,说主芯片坏掉了,于是又去麻烦老师傅将主芯片吹下来,老师傅还是二话没说,直接将其吹下来,说,小伙子,回去好好检查下,回来后,再次加上电源,电源指示灯正常,这时候,隐隐感觉,板子要活过来了,果不其然,今天下午又跑去电子市场买了一片新的STM32F103RBT6,回来,发现那位老师傅在实验室,真的好高兴啊!冲进去,让他先把手头的活干完,干完后,说,找到原因了,我是 嗯,还需要借用下 你的工具,焊下板子,他说都焊上,我说恩,他直接又是二话没说,拿起板子在一个放大镜一样的灯下,仔细地看了板子,用吸锡丝将一些管教的锡去掉,然后很仔细的把主控芯片焊了,然后把电源芯片和电机芯片,真的是十分感谢,老师傅只说了一句,没事!真的感动死了!!感觉自己真的好幸运!真是一个luck dog!
出来混总是要还的,每一次的坎坷算是让自己学习的机会吧!但,自己心里感觉不是太爽!!
接下来下了程序,发现真的可以了,终于可以好好地玩小车了!附图一张
IMG_20161109_170238.jpg


接下来,要静下心来做车了,落后大家比较多了,要慢慢赶了!



回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-9 21:35:53 | 显示全部楼层

你说的是OLED_ShowStr这个函数吗?
回复 支持 反对

使用道具 举报

发表于 2016-11-9 21:57:15 | 显示全部楼层
smtudou 发表于 2016-11-9 21:32
2016/11/9
板子终于活过来了,下面大致说下我这么些天的坎坷吧!
上次调电机时,发现一个轮子可以控制, ...

好坎坷的经历............但吹一下芯片都要10元,确实有点贵了。
回复 支持 反对

使用道具 举报

发表于 2016-11-10 00:53:06 | 显示全部楼层
64liux邀请您访问野火论坛
http://www.firebbs.cn/?fromuser=64liux
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-15 22:25:02 | 显示全部楼层
2016/11/15
前几天在做电机驱动部分,但是出现了一个问题就是,TIM1 CH4通道输出的PWM不知为何加上了一个直流偏压,直流偏压有3v多,致使电机驱动默认pwm输入为高,故有一个电机不可控,总以为是程序哪里没有配置好,纠结了好几天,今天在群里面问,听从大神们的建议,将6612吹下来,再去测pwm,发现正常了,早就应该怀疑这颗芯片的,哎,走了好多的冤枉路,既然现在电机搞不了了,那就转战陀螺仪,今天晚上简单滴驱动了6050,能读出数据,但是还没有进行处理,接下来对数据进行处理。坑爹地pwm
IMG_20161115_162724.jpg

相比其他人,我的确落后了好多了,但是,我没有停止,还在路上!


实验6 MPU6050.rar

4.04 MB, 下载次数: 139

回复 支持 反对

使用道具 举报

发表于 2016-11-16 15:38:22 | 显示全部楼层
好坎坷,真的好坎坷,但也学到了很多!!加油!
回复 支持 反对

使用道具 举报

发表于 2016-11-18 08:55:47 | 显示全部楼层
楼主, 继续。。
回复

使用道具 举报

 楼主| 发表于 2016-11-19 23:02:15 | 显示全部楼层
2016/11/19  
实现功能:利用mpu6050内部自带的DMP实现对姿态角的结算,通过匿名上位机进行显示。
软件版本:KEIL 4.12    V3.5的库
上次通过简单滴驱动mpu6050,输出了各个轴的加速度值和陀螺仪值,这些值分别代表的含义是:(参考第七工作室的一个原始数据解析的文档)
以aacz为例:
mpu6050初始化时,设置其加速度的量程范围是:加速度传感器,±2g
但是,加速度计输出的并不直接是加速度,而是一个16位的数值,这个数值代表着加速度值,加速度计的灵敏度是2^16/4 = 16384 LSB/G,故,当板子水平放置时,读取到的aacz值在16384附近跳动
同理,aacx,aacy,以及陀螺仪也是这样的道理。
由于,自己算法功底较差,自己对原始数据处理后效果也不敢苟同,可以肯定的是效果奇差,这学期的惯性导航课听的晕晕乎乎的,要想真的自己去滤波得姿态角,还需要自己下面再努力,暂时先采用了官方的dmp库,参考网上的例程来进行修改,实现四元数的输出。
DMP输出的是一个四元数,如何得到物体的姿态角,这个通过网上的讲解,大致看懂了,不过感觉这个公式的得出需要点数学功底


DMP输出的是w、x、y、z,由w、x、y、z反推,这感觉真的好难

最后,就得出了,反应小车的姿态角,,分别表示,俯仰、偏航、翻转三个方位角。
通过匿名上位机最后将该数据进行显示
平放时输出的三个姿态角值
QQ截图20161119224018.png
姿态图
QQ截图20161119224527.png
小插曲:
之前本科时,有一个老师让我去写mpu6050的驱动,那时候,网上看了下,好难,连忙退而却之,各种推脱说:软件不太懂什么的,让老师给我个稍微简单些的,于是就让我焊了一个心率计的硬件部分。当时高兴了好长时间,但是一时高兴了,可现在犯难了,要是从那时候就好好搞程序,一步一步来,不至于现在还是这样,以后要脚踏实地,遇到困难迎难而上,相信征服都是从被征服开始!On The Way!


实验6 MPU6050.rar

4.51 MB, 下载次数: 172

回复 支持 反对

使用道具 举报

发表于 2016-11-21 09:37:05 | 显示全部楼层
厉害了,研究生师兄多贡献一点算法给我们研究啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-25 23:35:41 | 显示全部楼层
本帖最后由 smtudou 于 2016-11-25 23:39 编辑

2016//11/25  实现功能:小车可以站立几秒钟了,还是挺兴奋的
这几天忙活的内容有:对PID有了一个直观的认识,之前自控上面总是说,PID,这次是切实地感受了下,也把自己这几天的迷惑和收获写在这里,有不对的地方,希望大神们指出,谢谢啦!
这个图,大家都很熟悉吧
QQ截图20161125214537.png
在做之前,我的困惑有
Q1、这个PID计算出来的值1有什么用处??有什么意义???会不会产生正反馈,即,转速减小,通过PID后计算的值1使转速继续减小,这样不就适得其反了吗???是怎么知道pid一定会是一个负反馈的??
Q2、定时器输出的pwm是如何通过改变占空比来使电机到达一个特定的速度???这个占空比和速度是怎么对应起来的?

首先,通过网上大神们的总结和马**视频中的讲解,我知道了第二个问题,如何通过pwm的的占空比来调节电机的速度,我们用的电机就是一个直流有刷电机,当改变电机两极之间的电压时,即可控制电机的转速,电压高时,转速也相对较大,电压低时,转速也较慢。对于PWM,我的理解就是一个占空比可调的方波信号,这个方波信号控制电机转动,当高电平时,电机转动,低电平时,电机停止,但是当这个pwm频率较高时,我们看到的电机不会出现转一下,停一下,再转一下,,,,,这有点像我们串行点亮数码管,分时点亮每一个数码管,当点亮每一个数码管之间的时间很短时,由于我们眼睛的视觉暂留,我们就认为数码管全部点亮,其实某一时刻,只有一个数码管点亮,其余都处于熄灭状态。电机在这个地方类似,当这个pwm信号频率在20k左右时(网上的推荐值),我们就会看到电机平稳地转动,其实他也是间歇性地进行工作,只是频率过高,我们感觉不到了。pwm通过改变占空比最终通过改变加在电机两端的电压来进行速度调节,pwm等效电压计算如下图所示
   占空比和等效电压之间的关系,V(等效)=(高电平时间)*高电平代表电压/(一个周期的时间)。
但是这个占空比和速度是怎么对应的那?听大神说可以理论上算,通过上面式子可以算出各个占空比所对应的等效电压值,然后电机的额定转速对应于最高电压12v,再由转速和电压成正比的关系,即可计算之。但是也有说要自己真实地去测一下,因为电压值和转速之间的关系不是简单的比例关系,但是我感觉只要知道了上面的这个式子,其实大致估计下就可以了,关键是明白这个关系,对于PID其实是没有用(也许是自己现在理解力有限??)。第二个问题大致就是这样了。

产生问题1,关键是自己对PID根本没有理解,之前对于PID的一个理解就是,设定一个值,当实际值和这个值有偏差存在时,他就会起作用,比设定值高了,输出值1就会使实际值变小,比设定值低了,输出值1就会使实际值变大。值1是关于偏差的函数,当偏差为0时,这个输出值1也就稳定了不再变化,占空比也稳定了,从而转速也稳定了下来,当用手按紧轮子,让他不要转时,测得的转速变小,从而产生偏差,PID就会产生值1来使转速加大。但是产生上面所述的功能需要一个前提,那就是你已经将PID参数调好,使它工作在正常的负反馈下,但也有可能测得转速变慢,施加PID后使转速变的更慢,即正反馈,这都和你设定Kp、Ki、Kd的极性有关。PID式子就是下面的这个,你要做的就是找到合适自己的Kp、Ki、Kd即可,所以,现在看来,完全不用纠结于值1什么意义,他就是和偏差有关的一个函数,是你设定的参数Kp、Ki、Kd,让你的系统正常工作。

最后,总的一个流程就是:给小车设定一个速度(不用考虑这个速度所对应的PWM占空比是多少,他会自动稳定过去的),当实际测得速度和设定速度不一致时,调节好的PID就会输出一个调节量给单片机,通过这个调节量来调节pwm的占空比来使小车的速度来靠近设定值,最终达到实际速度等于设定速度的目的。

小插曲:之前做电机PID控制时,只用了一个电机来调,下午将另外一个电机加上来,于是,很神奇的事情出现了,那就是当把小车向后倾斜时,两个轮子可以同时加速,放平时,都静止,但是,但是向前倾斜时,只有之前调好的那个轮子跟随倾角的改变从而来改变转速,另外一个不会转了,纳闷了,之前明明测得两个电机都是可以控制的,怎么不可控了,单独把控制电机B方向的函数拿到主函数里面,单独来调,发现就是不行了,,,于是各种调,就是不行,干脆直接再新建一个工程吧,单独调电机又是好的,,,,傻了,再把其他文件加进来,把各个模块初始化后,发现又不行了,,那问题就是在初始化这里,一个个注释着查看,终于发现问题了当注释掉        
OLED_Init();                        //oled初始化
就可以了,,继续向下面看,终于发现问题了,Fuck   问题出在这里
#define OLED_SDA_IN() {GPIOB->CRH &= 0X0FFF0FFF;(u32)GPIOB->CRH |= 8<<12;}        //1000 上拉/下拉输入
GPIOB->CRH &= 0X0FFF0FFF 应该写成 GPIOB->CRH &= 0XFFFF0FFF 导致PB15引脚不受控制,不能输出,
这个小问题查了一个下午,还好给他检查出来了,看来万事不能粗心马虎啊!
依旧在路上 On The Way!!
VID_20161125_173908.mp4_1480079806.gif
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-27 23:38:18 | 显示全部楼层
2016/11/27
功能实现:将小车的蓝牙模块调好了
没有调蓝牙模块之前,感觉蓝牙模块好难好难,感觉很高大上的样子,但是把他调通了,发现其实蓝牙通信就相当于是通过一根无形的线在进行数据传输
(也许,理解水平有限,大神们,别见笑,有说的不对的地方,还请指点[抱拳][抱拳][抱拳])
下面说下我对蓝牙的一些理解,希望能给一些人点滴的的启发,这就够了,当然由于是自己的理解,难免出错,请包涵[抱拳][抱拳][抱拳]
蓝牙实现的功能,即设备(STM32)通过蓝牙模块和其他设备(带有蓝牙功能的一切设备,这里用到的是手机)进行通信。通信过程是:单片机通过串口将数据发送至蓝牙模块,蓝牙模块会自动地将数据传出,带有蓝牙功能的设备就可以接收到此数据,然后进行处理后(这个处理过程咱们不涉及,直接用现成的各种手机APP什么的就可以),这样就实现了数据的无线传输功能。我们需要做的就是把串口配置好,能让数据发出去;能把接收回来的数据进行分析,从而实现先要实现的功能。

操作过程中遇到的一些问题:
Q1、由于看到原理图中直接标的是串口4,那就直接进行串口4的配置,但是死活接收中断进不去,发送也发不出来,于是各种网上看,有的说启动文件中没有串口中断4的入口定义,但是看了是有的,然后突然看到一个大神说,如果有的话,那就检查下串口4是不是真的存在,一语道醒梦中人,赶紧看下STM32RBT6的数据手册,Fuck,原来,这个芯片只有3个串口,坑爹,,,昨天一直在怀疑,手机APP是否真的靠谱,由于电脑上面没有带蓝牙,只能用手机调试了,问题,终于找到了,然后,看了下参考手册,看看能不能用其他串口映射过去,发现串口3可以映射过去
QQ截图20161127232117.png
于是映射过去,终于可以实现和手机的通信了!

附上,这张被坑的图,以后真的要养成认真看手册的好习惯!以此为戒
QQ截图20161127232826.png

On The Way!

实验16 蓝牙通信.rar

3.27 MB, 下载次数: 88

回复 支持 反对

使用道具 举报

发表于 2016-11-28 12:35:28 | 显示全部楼层
楼主   “PID式子就是下面的这个”   怎么看不到啊  或者楼主是否可以将您调试平衡的那部分程序长传给看下  怎么调试的  我的小车 也在PID这边 一直找不到合适的参数  总达不到自己想要的那种平衡!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-28 20:21:22 | 显示全部楼层
niqingqing 发表于 2016-11-28 12:35
楼主   “PID式子就是下面的这个”   怎么看不到啊  或者楼主是否可以将您调试平衡的那部分程序长传给看下  ...


u=1104875926,1282886295&amp;fm=21&amp;gp=0.jpg
想说的就是这个式子,那天忘记传代码了,抱歉了!!
我是参照平衡小车之家里面有一个调试流程来的,先调的直立,再调的速度,然后调的转向,但是转向这里调的不好,今天将蓝牙遥控加上后,走直线很困难,转向也不行,请求大神们指点如何调节转向环【抱拳】【抱拳】【抱拳】

下面代码是单独调平衡时的!

实验14 电机直立控制(加速度环和转向环).rar

4.83 MB, 下载次数: 224

回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-28 23:03:45 | 显示全部楼层
2016/11/28
实现功能:通过平衡小车之家的APP来对小车进行控制。
VID_20161128_220532.mp4_1480345247.gif
首先、感谢平衡小车之家,他们对于平衡车资源的开源让我受益匪浅。
现在大致可以通过手机APP来对平衡车进行控制,但是还没有达到自己心目中的那种状态
主要问题如下:
1、当控制小车向前运动时,当松开前进按钮后,当小车到达最远的地方后,会向后倒退一段距离
2、控制小车直立的PID调的还不是太好,当向前或者向后加速前进时,倾角稍微偏大一些,小车直接就会倒,被摔了好几次,心疼死
3、小车运行一段时间后,就会像荡秋千一样晃来晃去,并且晃的幅度会越来越大,感觉,这个系统是发散的
暂时发现了这几个方面的问题,究其原因,还是PID没有调好,前几天单独调PID时,感觉调的已经差不多了,今天加上控制发现,too young ,too naive
接下来努力的方向就是多去看下有关PID方面的书籍,争取,这次PID参数的整定不再那么地费劲,上次调PID参数,感觉,真的很费劲
对PID参数再次进行整定,然后再把程序进行优化,这就是接下来要做的。
大神们,对于调节PID参数的调节,有没有好一点的方法,请求指点~~
On The Way!            -------smtudou

实验18 蓝牙控制小车.rar

5.03 MB, 下载次数: 176

回复 支持 反对

使用道具 举报

发表于 2016-11-29 09:28:47 | 显示全部楼层
当年上课PID也是没学好,现在发现还真难调。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-29 09:34:52 | 显示全部楼层
qq4222 发表于 2016-11-29 09:28
当年上课PID也是没学好,现在发现还真难调。

对啊,感觉好难调,,,不知道有没有什么经验没?
回复 支持 反对

使用道具 举报

发表于 2016-11-29 11:24:18 | 显示全部楼层
smtudou 发表于 2016-11-29 09:34
对啊,感觉好难调,,,不知道有没有什么经验没?

没呢,也想找找这方面的资料
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-1 22:43:28 | 显示全部楼层
本帖最后由 smtudou 于 2016-12-1 22:44 编辑

2016/12/01 空气很好,心情也很好,因为平衡车基本做好!
VID_20161201_184006.mp4_1480596982.gif

基本做好了,将一些信息在oled屏幕上进行了显示,但是可优化的地方还是有的,只能说大致做出来了,接下来就陆续有考试要来了,于是平衡之路到今天为止,就先告一段落了。
真心感谢火哥,和其他组织这次活动的人,谢谢你们啦!心里满满地感动,再次说声感谢【握拳】【握拳】【握拳】
前前后后做了有一个月多,但是,自己心里清楚,一门心思在做这个事的时间不会超过一个月吧,中间出现了点坎坷,主mpu烧了,并且电机驱动烧过,电源芯片也被我换过,,,有一段时间,都真的是想要放弃了,但是,不能让自己说过的话扑空,答应别人的事情,就要做好,要么就不要答应。也许,我做的还不算够好,接下来,忙过考试,我依旧会再给他优化,让他止于完美!好事多磨,,,
(火影忍者 409.rmvb)[00.20.55.671].jpg
(火影忍者 411.rmvb)[00.17.25.109].jpg
QQ截图20150423225842.png
                                                                                                                                                                                                                                                                                                         --------smtudou


实验19 代码优化.rar

5.04 MB, 下载次数: 320

回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-1 23:24:51 | 显示全部楼层
简单录了一个视频,大家可以看下哟[嘿哈][嘿哈][嘿哈]
http://www.tudou.com/programs/view/Vc7W5ixCpHQ/
回复 支持 反对

使用道具 举报

发表于 2016-12-3 22:10:35 | 显示全部楼层
厉害了,我的哥!!
回复 支持 反对

使用道具 举报

发表于 2016-12-4 07:28:03 | 显示全部楼层
厉害了,我的哥!!
回复 支持 反对

使用道具 举报

发表于 2016-12-6 10:56:19 | 显示全部楼层
楼主  为啥我将你优化的那个程序 下载到我的下车里装备装X的   但是下载进去之后是黑屏  而且按键按了也没反应   还是我哪里设置的不对啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-6 23:08:32 | 显示全部楼层
niqingqing 发表于 2016-12-6 10:56
楼主  为啥我将你优化的那个程序 下载到我的下车里装备装X的   但是下载进去之后是黑屏  而且按键按了也没 ...

他的那个oled初始化有点慢的,等他慢慢初始化结束,看下oled屏是否有信息显示,初始化过程中,尽量把小车放直,要不然,MPU6050初始化,有可能失败,失败时,oled屏会提示failed    一直到successed
回复 支持 反对

使用道具 举报

发表于 2016-12-7 10:03:55 | 显示全部楼层
smtudou 发表于 2016-12-6 23:08
他的那个oled初始化有点慢的,等他慢慢初始化结束,看下oled屏是否有信息显示,初始化过程中,尽量把小车 ...

我这边下载下去还是一直都是黑屏,等了几分钟还是一样,我换成我之前的初始化函数也一样,可以麻烦您可以将你的那个HEX文件发我下  我在下载进去看看有没有问题  谢谢了  398924858@qq.com
回复 支持 反对

使用道具 举报

发表于 2016-12-9 09:12:19 | 显示全部楼层
smtudou 发表于 2016-11-9 21:32
2016/11/9
板子终于活过来了,下面大致说下我这么些天的坎坷吧!
上次调电机时,发现一个轮子可以控制, ...

我们论坛有平衡车的群吗,我想加一下,请问群号多少
回复 支持 反对

使用道具 举报

发表于 2016-12-9 13:10:48 | 显示全部楼层
koenlee93 发表于 2016-12-9 09:12
我们论坛有平衡车的群吗,我想加一下,请问群号多少

野火STM32平衡车交流群 459835644
回复 支持 反对

使用道具 举报

发表于 2016-12-9 16:23:58 | 显示全部楼层
niqingqing 发表于 2016-12-9 13:10
野火STM32平衡车交流群 459835644

谢谢你           
回复 支持 反对

使用道具 举报

发表于 2017-1-2 19:55:31 | 显示全部楼层
赞一个,厉害
回复 支持 反对

使用道具 举报

发表于 2017-1-9 20:58:19 | 显示全部楼层
厉害了,向你学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-4 01:32 , Processed in 0.066494 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表