本帖最后由 ts2000 于 2017-8-22 17:09 编辑 培训的第一节课基本就是跟课本念的一样。基本上看过文档的都知道在说些什么。不过下午还是很有技术的培训内容。虽然大部分也听不懂。只能说自己的水平也太差了。而且过程中还突然断电了。哎,这大热天的真要命。好了,看过培训之后,来实现第一个实战的内容:0 o1 g5 S, f% T Task 1: 速度控制与电机启动停止先看看要求: 1. 电机以3000RPM运行 2. 程序启动电机运行,运行速度为3000RPM,在5s后停止转动# o1 t- l( g6 {' ^$ R$ }6 G 3. 停止5s后电机重新运行,速度依然是3000RPM; v6 Y% V& d9 I! y9 E3 j 4. 以上过程重复操作% |4 s5 c( S+ D. y% V 8 d6 q. G6 J0 d: W/ T9 x0 H 其实要实现这个也不难,只要在官方的FOC软件中稍微修改一下就可以实现了。下面来介绍一个实现的过程。# b' i& e. J/ d7 p 用KEIL5打开文件。2 ?# H( q' W8 t( Q, p+ c8 S 在main.c 文件 178行下面插入下面代码:. D q2 }' J& Y: A7 ?- U. c' } ( P; r) z& I9 w MCI_ExecSpeedRamp(oMCI[0], 3000/6, 1000); // 初始化电机的转速与及启动上升时间 while(1) //重复执行启动5秒,再停止5秒的过程6 I9 x0 \( N- D6 u4 q {* r8 C h1 |1 t" [) B MCI_StartMotor(oMCI[0]); //启动电机 for(i=0;i<100;i++) //调用100次500us# Q5 x6 ^" |1 r' O9 ^- _& m {( ?; Y/ j5 H! i5 q8 q3 ~2 B TB_Set_DebounceDelay_500us(100); // 50ms的延时。没办法,官方的延时最大是255,我这里调用了100次实现,不用去修改官方代码 while(TB_DebounceDelay_IsElapsed() == FALSE ); //等待延时时间到 } D5 T8 Q% u" h9 h2 W2 U4 R MCI_StopMotor(oMCI[0]); //停止电机 } 其实电机的实现函数有帮助文件,在官方的foc软件里可以找到。如果是自己需要实现电机的各种功能,直接可以参考官方的文档实现。这一点ST的官方确实做得非常好。大大方便了一些对电机不太懂的朋友。3 \8 Y, N7 h& Z6 `- w , I6 _+ |+ v7 o5 d6 G, \ # e7 j6 }/ Z+ k% z/ `+ k7 x # B1 Q+ B& P& Z! w, ]% X- F |