|
本帖最后由 ts2000 于 2017-8-22 17:09 编辑 8 |8 N" M. @( N0 W
培训的第一节课基本就是跟课本念的一样。基本上看过文档的都知道在说些什么。不过下午还是很有技术的培训内容。虽然大部分也听不懂。只能说自己的水平也太差了。而且过程中还突然断电了。哎,这大热天的真要命。好了,看过培训之后,来实现第一个实战的内容: Task 1: 速度控制与电机启动停止先看看要求: 1. 电机以3000RPM运行) q0 P3 @/ r& J6 `, v9 A 2. 程序启动电机运行,运行速度为3000RPM,在5s后停止转动8 g" m/ D# D- Q z! q0 M2 i; a 3. 停止5s后电机重新运行,速度依然是3000RPM7 |$ A0 h) |9 ~4 x 4. 以上过程重复操作. d# @7 X: d) ~$ B' b1 _ 3 v' r" k/ i, Q# H! u x 8 z! W( l" W2 G7 W$ C; l. q 其实要实现这个也不难,只要在官方的FOC软件中稍微修改一下就可以实现了。下面来介绍一个实现的过程。
用KEIL5打开文件。 在main.c 文件 178行下面插入下面代码:0 W0 o+ M) Z1 x3 ] , D5 x7 A: k: f: F2 r MCI_ExecSpeedRamp(oMCI[0], 3000/6, 1000); // 初始化电机的转速与及启动上升时间3 l; k1 T! \+ W+ S0 Y while(1) //重复执行启动5秒,再停止5秒的过程 {. q- u3 E- Z. x3 L, @0 w& u MCI_StartMotor(oMCI[0]); //启动电机 for(i=0;i<100;i++) //调用100次500us3 X4 d( l9 `- b2 s3 R { TB_Set_DebounceDelay_500us(100); // 50ms的延时。没办法,官方的延时最大是255,我这里调用了100次实现,不用去修改官方代码 while(TB_DebounceDelay_IsElapsed() == FALSE ); //等待延时时间到 }$ L. C9 b O2 V6 T/ `* ? MCI_StopMotor(oMCI[0]); //停止电机* D( C' Z& E. c, i4 }% P }# [4 p) e0 Z$ \. _+ ]% i$ L/ k " u# d; P# U5 t7 F0 C$ H! I 7 X* e/ E7 I$ E 其实电机的实现函数有帮助文件,在官方的foc软件里可以找到。如果是自己需要实现电机的各种功能,直接可以参考官方的文档实现。这一点ST的官方确实做得非常好。大大方便了一些对电机不太懂的朋友。' P6 Y4 @. U# v+ ]# g2 R2 P + R; O+ s, @/ r' Y2 C3 O1 ? 4 f, I7 F8 y$ E: T2 D9 B; } |
微信公众号
手机版