手机触摸不灵,苹果手机换外屏有什么影响还是总成。

查看: 182058|回复: 187
我的两轮自平衡小车全套资料
主题帖子精华
在线时间92 小时
  好多年前,看到电视新闻上介绍segway,很是惊叹。然后大概是2、3年前吧,看到网上有人做出了2轮自平衡小车,然后我也很想自己也做一个来玩。无奈于自己的水平有限,对硬件一窍不通,动手能力有限,故也没有做成。(那时候的加速度传感器还是每个ic一个维度的,不像现在的MPU6050一个ic就集成了6个输出量,对电路设计和手工焊接能力要求都挺高的)。
  去年的时候吧,网上发现出现了很多加速传感器的集成模块,cortex-m3风头正盛,自己工作也算比较稳定清闲,感觉时机成熟了,便开始了两轮自平衡小车的制作,到去年底大概成型。程序采用的是互补滤波与PID控制,感觉程序还是有一定的问题与改进空间,想着以后慢慢优化。无奈半成品状态后一直无心继续改进,期间还出现了硬盘出现故障,差点所有成果毁灭的事故;想想虽然作品不是很完美,还是上传到论坛保管的好,也跟大家共享交流一下。同时感谢在制作过程中论坛版主、网友对我的帮助。bow~!
成品效果图:
视频1:这个视频拍摄的时候还没加编码器与红外遥控,只能通过铁尺子调整小车的重心位置,使得小车能够大致保存平衡。
视频2:最终效果。程序还没调好,还没拍啊
19:08 上传
点击文件名下载附件
8.27 MB, 下载次数: 118572
业余程序玩家。
主题帖子精华
新手上路, 积分 25, 距离下一级还需 25 积分
在线时间0 小时
回复【楼主位】ofourme:
---------------------------------
有个问题想请教:
//&通过小车移动速度与移动距离,调整小车平衡所需的pwm输出
pwm_balance&+=&(speed*6+distance*0.1);
&其中,6和0.1是如何得到的
先谢过。。。
主题帖子精华
新手上路, 积分 39, 距离下一级还需 11 积分
在线时间1 小时
很好的资料,谢谢楼主,学习了
主题帖子精华
在线时间92 小时
二、硬件选择与方案设计
  胶枪、电转、电表等耐用品工具的价格不计算在内,下列原件总共花了我大概450元吧。无意给淘宝商家做广告,所以请大家自动略过图片中的商家logo。
1. 控制板采用原子的STM32 MINI开发板,不带屏的话138元吧。遥控使用板上的红外接收器,当然理论上也可以使用板上的rf无线模块接口。
2. 方位传感器采用iic接口的9轴模块,花了我88大洋。包括加速度、角速度、气压、地磁传感器,主要是考虑到以后别的用途,如果采用6轴模块的话,应该可以降到50元以内吧。
  自平衡小车需要使用到1个角速度分量和2个加速度分量,通过融合滤波得到较为准确的小车倾斜角度值。查看网上几年前的小车,都是使用3个独立ic搭建的,而且还是使用模拟量输入;查找网上资料,现在都是集成ic,接口主要有spi和iic,而且还有中断输入。我买的这个模块只有iic接口,而且没有中断输出,iic接口,故只能采用周期性查询方式;加速度传感器采用的是ADXL345,角速度传感器采用L3G4200D,这两个ic的手册资料是比较齐全的,便于学习。
3. 采用9v减速电机与铝合金支架、轮胎,指导价格98元。卖家给的资料有限,电机的参数不明,减速比都是自己测的。
  经过实测,电机的减速比大概为150。感觉小车的力矩还是比较大的,但是反应速度不够快;采用减速比100的电机或是大轮胎,应该能够改善小车的动力性能。电机有两个电源输入端口,通过改变电压的正负极,可以改变电机的转动方向;通过改变驱动电压的大小,可以改变电机的转速。
4. 电机驱动模块采用全隔离的L298N驱动板,抗干扰,30元。如果不是光耦隔离的话会便宜很多。卖家给的实物和照片不太一样,有一条pwm控制线5v有效,3.3v无效,说明商家卖出之前没完整的做过测试。我自己并了个电阻搞定了,也便没有跟卖家纠缠了。
  模块有4个逻辑控制输入端口,接控制器的4个io口,控制2个电机的转向与停止;2个pwm输入,接控制器的pwm输出,控制2个电机的转速;1个逻辑电源输入接口,从stm32控制板上取电。驱动部分,2个电源输入端口,接聚合物锂电池,考虑到5v稳压模块从电池取电,减速电机又是9v的,建议采用9v以上的电池(我采用的是12v);4个驱动输出接2个减速电机的4个输入口。
5. 电池采用12v 3000mah的聚合物锂电池,65大洋,不包括充电器的价格。恒定放电电流可达4A,瞬间可达40A。不知道用9v的电池可不可以,当时怕电压太小,所以就没有买。据说普通的电池不能用在小车上,因为电机的瞬间电流很大,普通电池无法提供。
6. 逻辑电路5V供电模块,采用LM2596降压模块从12v锂电池取电,6元。
  该模块的输出电压可调,我调整到了5v输出。
7. 测速码盘,1个18元。
  为了省钱省地方,我只用了1个,有了这个就可以得到电机的速度反馈,再通过控制调整小车的速度、位置。小车的动力部分其实不一定要使用减速电机,而可以使用步进电机,这样就可以省掉编码器,而且控制性能更加良好。但这样带来的是需要采用专门的步进电机控制板,还有成本的攀升。不差钱的同志可以考虑采用步进电机方案。
8. 铜柱、洞洞板、连接线等若干。
业余程序玩家。
主题帖子精华
在线时间92 小时
三、 STM32F103RBT6 资源的使用:
(一)控制小车需要的端口如下:
1、2个pwm输出,用于控制2个电机的转速,我们用pwm1和pwm2表示。在此使用定时器0的两个pwm输出端口PA0和PA1。
2、4个数字gpio输出,用于控制2个电机的正方转与停止,我们用motor1-1、motor1-2、motor2-1和motor2-2表示。
3、1个数字gpio输入,用于接收红外遥控器发出的信号,我们用ir表示。
4、2个iic模拟gpio端口,用于控制获取9轴模块的数据,我们用iic-scl和iic-sda表示。
5、2个编码器信号输入接口。每个编码器需要2个接口,我只使用了1个编码器,故需要2个端口。使用了定时器4的编码器模式,故需连接到定时器4的t4ch1和t4ch2端口。
  以上端口共11个。为了减少和板上资源的冲突,使板上的SD卡、FLASH和EEPROM等可以同时使用,11个端口经过尽心挑选,比如ir使用跳线连接到了PC1,使用与FLASH、SD卡同一个模拟iic端口等。当然,也牺牲了一些板上的功能,如:触摸屏、WK_UP按键等。如果要使用2个编码器的话,可以考虑另外使用定时器1的t1ch1和t1ch2端口或者是t1ch1n和t1ch2n。通过一定的编程技巧,理论上可以使液晶屏能够显示图像,同时不影响2个编码器的使用。
(二)板上资源的使用:
  开发板所使用的芯片采用64管脚封装,51个可用IO。51个IO包括:PA 0-15、PB 0-15、PC 0-15、PD 0-2。板上io的使用情况与小车io对应情况如下(加*标志的表示楼主“尽量”不去占用的io端口,避免与板上资源冲突):
PA0 -WK_UP/温度传感器&&---------------------- pwm1
PA1 -红外传感器/JF24_FIFO*& ------------------ pwm2
PA2&-FLASH_CS/U2TX*
PA3 -SD_CS/U2RX*
PA4 -SPI1_NSS/NRF_CE/JF24_RST
PA5 -SPI1_SCK
PA6 -SPI1_MISO
PA7 -SPI1_MOSI
PA8-LED0*& ------------t1ch1
PA9-串口1RX* ----------t1ch2
PA10-串口1TX*
PA11-USB_D- -------------------
PA12-USB_D+ --------------------
PA13-KEY0/JTAG/SWDIO/SP2*
PA14-JTAG-----------------------
PA15-KEY1/JTAG/PS2*
PB0~15-液晶数据端口
PB6&&&------------t4ch1
PB7&&&------------t4ch2
PB13&&------------t1ch1n
PB14&&------------t2ch2n
PC0 -T_SCK ---------- motor2-1
PC1 -T_PEN ---------- ir
PC2 -T_MISO --------- motor1-2
PC3 -T_MOSI --------- motor1-1
PC4 -NRF_CS& JF24_CS
PC5 -NRF_IRQ JF24_BKT
PC6 -LCD_RD*
PC7 -LCD_WR*
PC8 -LCD_RS*
PC9 -LCD_CS*
PC10-LCD_BL*
PC11-IIC_SDA ------------------------------- iic-sda
PC12-IIC_SCL -------------------------------- iic-scl
PC13-T_CS/侵入检测/RTC输出* ----------- motor2-2
PC14-RTC晶振*
PC15-RTC晶振*
PD0 -系统晶振*
PD1 -系统晶振*
PD2 -LED1*
可以输入模拟量的io:PA0-7,PB0-1,PC0-5
业余程序玩家。
主题帖子精华
在线时间92 小时
四、主程序框架
  其实一开始是想使用rt-thread操作系统的,不过这样以来就增加了程序的复杂性了。程序处于调试阶段,还是老老实实的使用大循环吧。帖几段伪代码,还有一些注释,作为程序框架的介绍。
----------------------------------------
int main(void)
&&& ~~~~//各种系统资源的初始化
&&&&while(1)
&&&&&&& if(tick_flag)// SysTick时钟中断每10ms使tick_flag置1。
&&&&&&& {//大部分程序都采用10ms的控制周期,不过也可以考虑更高的控制频率,毕竟cortex-m3的运算能力比起前人的51、avr强太多了。
&&&&&&&&&&& tick_flag = 0;
&&&&&&&&&&& balance_proc();//根据9轴模块的数据,PID调整pwm的输出
&&&&&&&&&&& control_proc();//读取ir输入,调整pwm的输出
&&& return 0;
----------------------------------------
void control_proc(void)
//----------遥控器反馈控制部分----------
&&& int i = ir_key_proc(); // 将红外接收到的按键值,转换为小车控制的相应按键值。
&& &switch(i)
&&&&&&& ~~~~//根据按键值,修改pwm_speed和pwm_turn的值。
&&& pwm_turn *= 0.9;&// pwm_turn的值以0.9的比例衰减,使小车在接收到一个转向信号后只转动一定的时间后停止转动。
//----------编码器反馈控制部分----------
&&& speed = speed*0.7 +0.3*(encoder_read());&// 定周期(10ms)读取编码器数值得到实时速度,再对速度进行平滑滤波
&& &encoder_write(0);&&&&&&&// 编码器值重新设为0
&&& distance +=&&&&&&&// 对速度进行积分,得到移动距离
&&& if(distance&6000) distance = 6000;&&&// 减少小车悬空、空转对控制的影响
&&& else if(distance&-6000) distance = -6000;
----------------------------------------
void balance_proc(void)
&& &static unsigned int err_cnt=0;
&& &int pwm_
&& &float radian, radian_& &// 当前弧度及弧度的微分(角速度,角度值用弧度表示)
&& &adxl345_read(&acc);&&&// 读取当前加速度。由于传感器按照的位置原因,传感器的值在函数内部经过处理,变为小车的虚拟坐标系。
&& &l3g4200d_read(&gyr);&&// 读取当前角速度。同样经过坐标系变换。
// 此段程序用于传感器出错时停止小车
&& &err_cnt = err_cnt*115&&7;&// err_cnt以0.9的比例系数衰减(115&&7的值约为0.9,避免浮点数,提高速度)
&& &if(acc.flag != 0x0F || gyr.flag != 0x0F)&& // 读取的角度、角速度值有误。可能是电磁干扰、iic线太长等导致出错。
&&&&&& &&LED0_ON();&&// 亮红灯
&&&&&& &&err_cnt +=100;&// 等比数列,比例系数0.9(115&&7),常数项100;根据公式,连续10项的和约为657
&&&&&& &&if(err_cnt&657)&// 当连续发生约10次(约0.1秒)错误则超过657而溢出。
// 此段程序用于倒立或失重时停止小车
&& &if(acc.z&=0)
// 小车的虚拟x轴方向为小车前进方向,虚拟y轴为小车左边,虚拟z轴为小车上升方向。
// 前倾角度为负,后倾角度为正。
// 通过计算加速度分量,得到小车倾斜弧度(未滤波)
&& &radian = (float)(acc.x)/acc.z;&//& 一阶展开:Q =f(x)=x-x^3/3+x^5/5+...+(-1)^k*x^(2k+1)/(2k+1)+...
// 通过角速度传感器,得到小车的角速度(单位为 弧度/秒)
&& &radian_pt = gyr.y*RADPT;
&& &radian_filted = ofme_filter(radian_filted, radian, radian_pt);&&// 互补滤波得到小车的倾斜角度
// 此段程序用于小车倾斜角度过大时,停止小车
&& &if(radian_filted& ANGLE_RANGE_MAX || radian_filted&ANGLE_RANGE_MIN)
// 通过PID计算,得到保持小车角度为零所需要的电机pwm输出
&& &pwm_balance = pid_proc(&sPID, radian_filted, radian_pt);
//小车角度为零不代表小车重心为零,还需要通过小车移动速度与移动距离等信息,调整小车平衡所需的pwm输出
&& &pwm_balance += (speed*6+distance*0.1);
// 在pwm_balance的基础上,加上速度分量与转动分量,调整小车两个电机的转速。
&& &pwm_control(pwm_balance+pwm_speed+pwm_turn, pwm_balance+pwm_speed-pwm_turn);
// 如果pwm超出有效值,红灯亮。用于调试,了解系统状态。
&& &if(pwm_balance&=1000||pwm_balance&=-1000) LED1_ON();
&& &LED0_OFF();
&&& puts("balance error.\r\n");
&& &pwm_control(0, 0);&&& &&&// 关闭电机
----------------------------------------
程序列表说明:
业余程序玩家。
主题帖子精华
在线时间92 小时
~~~~~~~~~~~~
业余程序玩家。
主题帖子精华
在线时间31 小时
主题帖子精华
中级会员, 积分 260, 距离下一级还需 240 积分
在线时间1 小时
板凳,强势围观,不要太监。
我可以一辈子都呆在家里不出来么?
主题帖子精华
金钱105398
在线时间664 小时
主题帖子精华
金牌会员, 积分 1020, 距离下一级还需 1980 积分
在线时间183 小时
必须要顶呀
主题帖子精华
新手上路, 积分 47, 距离下一级还需 3 积分
在线时间0 小时
昨天在外面看到有个人开着呢~
STM32我跟你拼了!!!
主题帖子精华
在线时间32 小时
已加精华,等待楼主完善资料了。
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!
主题帖子精华
金牌会员, 积分 1275, 距离下一级还需 1725 积分
在线时间98 小时
好贴必顶~~
主题帖子精华
初级会员, 积分 54, 距离下一级还需 146 积分
在线时间0 小时
主题帖子精华
初级会员, 积分 111, 距离下一级还需 89 积分
在线时间10 小时
沒有遙控,&但為何會前後移動?
主题帖子精华
高级会员, 积分 729, 距离下一级还需 271 积分
在线时间16 小时
回复【14楼】Cho:
---------------------------------
为了维持车身的平衡,重心移动
主题帖子精华
高级会员, 积分 784, 距离下一级还需 216 积分
在线时间3 小时
加油,有空我也做个玩玩
我的工作就是天天在玩
主题帖子精华
中级会员, 积分 387, 距离下一级还需 113 积分
在线时间0 小时
看上去好牛啊,能走钢丝就更牛了
主题帖子精华
在线时间2 小时
主题帖子精华
初级会员, 积分 111, 距离下一级还需 89 积分
在线时间10 小时
樓主可否上全套程序給大家參考?
主题帖子精华
在线时间92 小时
回复【19楼】Cho:
樓主可否上全套程序給大家參考?
---------------------------------
附件有啊,可供参考。不过还有点小问题,还没调试好。
资料就暂时整理到这里。有什么问题需要我补充说明的可以留言提意见。
业余程序玩家。
主题帖子精华
高级会员, 积分 539, 距离下一级还需 461 积分
在线时间0 小时
/v_show/id_XNDMyMDUxMjI4.html
往事随风!
主题帖子精华
高级会员, 积分 539, 距离下一级还需 461 积分
在线时间0 小时
lz可以去参加飞思卡尔智能车比赛!!!
往事随风!
主题帖子精华
高级会员, 积分 539, 距离下一级还需 461 积分
在线时间0 小时
回复【2楼】ofourme:
---------------------------------
/v_show/id_XNDMyMDUxMjI4.html参加飞思卡尔把
往事随风!
主题帖子精华
在线时间92 小时
回复【23楼】zsk:
---------------------------------
楼主是已经毕业,业余玩玩程序的大叔。:-)
业余程序玩家。
主题帖子精华
高级会员, 积分 539, 距离下一级还需 461 积分
在线时间0 小时
回复【24楼】ofourme:
---------------------------------
搜噶
往事随风!
主题帖子精华
高级会员, 积分 539, 距离下一级还需 461 积分
在线时间0 小时
回复【24楼】ofourme:
---------------------------------
大叔在哪儿高就?
往事随风!
主题帖子精华
初级会员, 积分 89, 距离下一级还需 111 积分
在线时间0 小时
顶~~
最近正看惯性导航的东西呢,也用到9轴的的传感器,师兄的滤波算法看的一头雾水,看看仁兄的资料能豁然开朗就好了哈
主题帖子精华
金钱105398
在线时间664 小时
终于来了啊,呵呵。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
初级会员, 积分 54, 距离下一级还需 146 积分
在线时间0 小时
不知道楼主用的电机和测速码盘是到哪儿买的?&&我在淘宝上找了半天都没看到有可以装这种码盘的电机,我前些时候用TT马达做了个两轮平衡车,效果很不好,转速很不够,而且配套的码盘精度太低,10ms的周期根本就测不到车速,&&楼主发个连接给我参考一下了!
主题帖子精华
在线时间92 小时
回复【29楼】zq6220c:
---------------------------------
码盘买的是100栅格的,但连接到轴承的部位也是我自己改装的,我在电机轴套上了电线的绝缘皮后再装到安装柱上。之前试过用502胶水、热熔胶,转几圈就掉下来了。
减速电机的话建议用100减速比的,或用大的轮子。
有钱的话用步进电机啊,这样就不用编码器了,或者买自带编码器的电机。
业余程序玩家。
主题帖子精华
在线时间48 小时
卧槽,碉堡了。顶你。
一直努力就很好。
主题帖子精华
新手上路, 积分 21, 距离下一级还需 29 积分
在线时间0 小时
在这里给您一个超赞
主题帖子精华
新手上路, 积分 41, 距离下一级还需 9 积分
在线时间0 小时
楼主好屌!!!!
主题帖子精华
在线时间48 小时
准备想做了。。
一直努力就很好。
主题帖子精华
在线时间92 小时
回复【34楼】qq:
---------------------------------
做吧。不过感觉个人想好做好的好很难。
另,你的等级是怎么来的?
业余程序玩家。
主题帖子精华
在线时间48 小时
回复【35楼】ofourme:
---------------------------------
我喜欢要么不做,要么做好。
另,原子给的。
一直努力就很好。
主题帖子精华
在线时间48 小时
回复【35楼】ofourme:
---------------------------------
LZ,直流电机买可以和编码器一起一套的吧。
一直努力就很好。
主题帖子精华
在线时间92 小时
回复【37楼】qq:
---------------------------------
你可以买一体化的啊,我这个不配套的,都差点被搞死了。有钱的话,多出几百买步进电机,都不用编码器了,而且纯数字控制,多好。
编码器判断正反转不知道别人是怎么做的,我直接交给定时器的编码器模式去处理。
之前小车还能停在一个位置摆动,现在编码器好像失灵了,小车直接往一个方向行走加速最终倒下。不知是程序处理的问题还是编码器安装的问题。
现在的视频是之前没有安装编码器时的情况,得用铁尺调整重心才能不那么快倒下。
业余程序玩家。
主题帖子精华
在线时间48 小时
已经看上一个步进,
底架和驱动板一起已经要200+了,我还没陀螺仪和加速度计。
控制器用MINI板。
好贵,买不起了T&T&。
一直努力就很好。
主题帖子精华
中级会员, 积分 213, 距离下一级还需 287 积分
在线时间0 小时
好东西&&&顶一下。。
只求每天都能把小事做好。
主题帖子精华
新手上路, 积分 15, 距离下一级还需 35 积分
在线时间52 小时
我弄了个4驱动的小车。呵呵。
原子哥是不是又要出黑科技了呀。^_^...
主题帖子精华
初级会员, 积分 173, 距离下一级还需 27 积分
在线时间7 小时
主题帖子精华
初级会员, 积分 173, 距离下一级还需 27 积分
在线时间7 小时
主题帖子精华
在线时间92 小时
回复【43楼】arm51avr:
重心太高
---------------------------------
有什么影响吗?重心高,转动惯量更大,也不一定是坏事。
业余程序玩家。
主题帖子精华
初级会员, 积分 86, 距离下一级还需 114 积分
在线时间0 小时
强人呀&&&膜拜
主题帖子精华
高级会员, 积分 565, 距离下一级还需 435 积分
在线时间69 小时
主题帖子精华
金牌会员, 积分 1944, 距离下一级还需 1056 积分
在线时间0 小时
回复【2楼】ofourme:
---------------------------------
还是龙丘的,龙丘的OLED我买过几个
Time?And?Relative?Dimension?In?Space.
主题帖子精华
在线时间92 小时
回复【47楼】Tardis:
还是龙丘的,龙丘的OLED我买过几个
---------------------------------
龙丘是什么?好像很厉害的样子》~
业余程序玩家。
主题帖子精华
金牌会员, 积分 1944, 距离下一级还需 1056 积分
在线时间0 小时
回复【48楼】ofourme:
---------------------------------
没,龙丘出的模块,质量都比较好
Time?And?Relative?Dimension?In?Space.
Powered by联系人:宋经理
公司名称:
小型装载机两轮驱动装载机 小型装车机
最近被加入的企业
名片夹还没有企业信息,赶紧查看企业联系方式加入吧!
『曲阜市金诺机械制造有限公司』的联系方式为,,联系人:宋经理
品牌:金诺型号:ZL910行走方式:轮胎式装载机转向系统:前轮转向装卸方式:前卸式装载机类型:小型驱动系统:后轮驱动传动形式:其他发动机位置:后置发动机铲斗容量:0.5m3额定载荷:0.8t发动机型号:25L发动机额定功率:18kW卸载高度:2300mm卸载距离:≥600mm最大掘起力:80kN轴距:1600mm最大牵引力:40kN动臂提升时间:5s最小转弯半径:3000mm整机尺寸:50mm整机重量:1700t
以上是小型装载机两轮驱动装载机 小型装车机的详细介绍,包括小型装载机两轮驱动装载机 小型装车机的价格、型号、图片、厂家等信息!
小型装装载机是一种广泛用于公路、铁路、建筑、水电、港口、矿山等建设工程的土石方施工机械,它主要用于铲装土壤、砂石、石灰、煤炭等散状物料,也可对矿石、硬土等作轻度铲挖作业。换装不同的辅助工作装置还可进行推土、起重和其他物料如木材的装卸作业。...
商机库包括所有采购、招标信息的汇总
与小型装载机两轮驱动装载机 小型装车机相关的产品信息
小型装载机两轮驱动装载机 小型装车机产品相关搜索
最新装载机/铲车产品
按排行字母分类:
我需要采购装载机/铲车,请供应商联系我....
马可波罗&&全心服务
联系电话:*
允许同品类其他优质供应商联系我
联系电话:

我要回帖

更多关于 苹果内屏坏了有哪些现象 的文章

 

随机推荐