ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:25.90KB ,
资源ID:19517219      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19517219.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(自平衡小车开源程序向zlstone致敬Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

自平衡小车开源程序向zlstone致敬Word文档下载推荐.docx

1、27. PORTC=0X00;28. 29. DDRD=0B11110010;30. PIND=0X00;31. PORTD=0X00;32. 33. 34. 35. /- 36. /定时器1初始化 37. voidT1_initial(void)38. 39. TCCR1A|=(1COM1A1)|(1WGM10)|(1COM1B1);/T1:8位快速PWM模式、匹配时清0,TOP时置位 40. TCCR1B|=(1WGM12)|(1CS11);/PWM:8分频:8M/8/256=4KHz;41. 42. 43. 44. /- 45. /定时器2初始化 46. voidT2_initial(v

2、oid)/T2:计数至OCR2时产生中断 47. 48. OCR2=0X4E;计数20ms(0X9C)10ms(0X4E)时产生中断;49. TIMSK|=(1OCIE2);50. TCCR2|=(1WGM21)|(1CS22)|(1CS21)|(1CS20);/CTC模式,1024分频 51. 52. 53. 54. /- 55. /外部中断初始化 56. voidINT_initial(void)57. 58. MCUCR|=(1ISC01)|(1ISC00)|(1ISC11)|(1ISC10);/INT0、INT1上升沿有效 59. GICR|=(1INT0)|(1INT1);/外部中断

3、使能 60. 61. 62. 63. /- 64. /串口初始化;65. voidUSART_initial(void)66. 67. UBRRH=0X00;68. UBRRL51;/f=8MHz;设置波特率:9600:19200:25;69. UCSRB(1RXEN)|(1TXEN);/接收器与发送器使能;70. UCSRCURSEL)|(1UCSZ0)|(1UCSZ1);/设置帧格式:8个数据位,1个停止位;71. 72. UCSRB|=(1RXCIE);/USART接收中断使能 73. 74. 75. 76. /- 77. /串口发送数据;78. voidUSART_Transmit(u

4、nsignedchardata79. 80. while(!UCSRA&UDRE);/等待发送缓冲器为空;81. UDRdata;/将数据放入缓冲器,发送数据;82. 83. 84. 85. /- 86. /串口接收数据中断,确定数据输出的状态;87. #pragmainterrupt_handlerUSART_Receive_Int:12 88. staticUSART_State;89. voidUSART_Receive_Int(void)90. 91. USART_State=UDR;/USART_Receive();92. 93. 94. 95. /- 96. /计算LH侧轮速:IN

5、T0中断;97. /- 98. staticintspeed_real_LH;99. /- 100. #pragmaSPEEDLHINT_fun:2 101. voidSPEEDLHINT_fun(void)102. 103. if(0=(PINB&BIT(0)104. 105. speed_real_LH-=1;106. 107. else108. 109. speed_real_LH+=1;110. 111. 112. 113. 114. /- 115. /计算RH侧轮速,:INT1中断;116. /同时将轮速信号统一成前进方向了;117. /- 118. staticspeed_real

6、_RH;119. /- 120. #pragmaSPEEDRHINT_fun:3 121. voidSPEEDRHINT_fun(void)122. 123. BIT(1)124. 125. speed_real_RH+=1;126. 127. 128. 129. speed_real_RH-=1;130. 131. 132. 133. 134. /- 135. /ADport采样:10位,采样基准电压Aref 136. /- 137. staticAD_data;138. /- 139. intADport(unsignedport)140. 141. ADMUX=port;142. ADC

7、SRA|=(1ADEN)|(1ADSC)|(1ADPS1)|(1ADPS0);/采样频率为8分频;143. while(!(ADCSRA&(BIT(ADIF);144. AD_data=ADCL;145. AD_data+=ADCH*256;146. AD_data-=512;147. return(AD_data);148. 149. 150. 151. /* 152. /- 153. /Kalman滤波,8MHz的处理时间约1.8ms;154. /- 155. staticfloatangle,angle_dot;/外部需要引用的变量 156. /- 157. staticconstQ_a

8、ngle=0.001,Q_gyro=0.003,R_angle=0.5,dt=0.01;158. /注意:dt的取值为kalman滤波器采样时间;159. staticP22160. 1,0,161. 0,162. ;163. 164. staticPdot4=0,0,0,0;165. 166. staticC_01;167. 168. staticq_bias,angle_err,PCt_0,PCt_1,E,K_0,K_1,t_0,t_1;169. /- 170. voidKalman_Filter(floatangle_m,floatgyro_m)/gyro_m:gyro_measure

9、171. 172. angle+=(gyro_m-q_bias)*dt;173. 174. Pdot0=Q_angle-P01P10;175. Pdot1=-P11;176. Pdot2=-177. Pdot3=Q_gyro;178. 179. P00+=Pdot0180. Pdot1181. P10Pdot2182. P11Pdot3183. 184. 185. angle_errangle_mangle;186. 187. 188. PCt_0P00;189. PCt_1190. 191. ER_angle+PCt_0;192. 193. K_0/E;194. K_1195. 196. t

10、_0197. t_1P01;198. 199. -=t_0;200. 201. 202. 203. 204. 205. angleangle_err;206. q_bias207. angle_dotgyro_m-q_bias;208. 209. /*/ 210. 211. /*212. /-213. /互补滤波214. /-215. staticangle,angle_dot;/外部需要引用的变量216. /-217. staticbias_cf;218. static219. /-220. voidcomplement_filter(floatangle_m_cf,floatgyro_m_

11、cf)221. 222. bias_cf*=0.998;/陀螺仪零飘低通滤波;500次均值;223. bias_cf+=gyro_m_cf*0.002;224. angle_dot=gyro_m_cf-bias_cf;225. angle=(angle+angle_dot*dt)*0.90+angle_m_cf*0.05;226. /加速度低通滤波;20次均值;按100次每秒计算,低通5Hz;227. 228. */229. 230. 231. 232. 233. /- 234. /AD采样;235. /以角度表示;236. /加速度计:1.2V=1g=90;满量程:1.3V3.7V;237.

12、 /陀螺仪:0.5V4.5V=-80+80满量程5V=200=256=200238. /- 239. staticgyro,acceler;240. /- 241. voidAD_calculate(void)242. 243. 244. acceler=ADport(2)+28;/角度校正 245. gyro=ADport(3);246. 247. acceler*=0.004069;/系数换算:2.5/(1.2*512);248. acceler=asin(acceler);249. gyro*=0.00341;/角速度系数:(3.14/180)*100/512=0.01364;250.

13、251. Kalman_Filter(acceler,gyro);252. /complement_filter(acceler,gyro);253. 254. 255. 256. 257. /- 258. /PWM输出 259. /- 260. voidPWM_output(intPWM_LH,intPWM_RH)261. 262. (PWM_LH252)273. 274. PWM_LH=252;275. 276. 277. 278. (PWM_RH289. 290. PWM_RH=252;291. 292. 293. 294. OCR1AH=0;295. OCR1AL=PWM_LH;/OC

14、1A输出;296. 297. OCR1BH=0;298. OCR1BL=PWM_RH;/OC1B输出;299. 300. 301. 302. 303. 304. 305. /- 306. /计算PWM输出值 307. /车辆直径:76mm;12*64pulse/rev;1m=3216pulses;308. /-309. /staticspeed_diff,speed_diff_all,speed_diff_adjust;310. /staticK_speed_P,K_speed_I;311. staticK_voltage,K_angle,K_angle_dot,K_position,K_position_dot;312. staticK_angle_AD,K_angle_dot_AD,K_position_AD,K_position_dot_AD;313. staticposition,position_dot;314. staticposition_dot_filter;315. staticPWM;316. staticspeed_output_LH,speed_output_RH;317. staticTurn_Need,Spe

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1