昨天下午陈冰老师跟我们集中讲了三方面的知识:
(1) 电机的原理与控制。
讲了电机的控制原理,通过桥电路控制通断,形成pwm波来控制电机。最开始是MCU控制控制器,在控制器里再加个MCU 通过外部MCU与控制器内的MCU通信来控制是更“轻松”的方法,把“脏活累活”都交给控制器自己去干。
从直流有刷电机逐渐深入,讲到了直流无刷电机,舵机,步进电机的原理。扩展讲了编码器的原理和应用,开环控制和闭环控制。如何根据需求选择电机,电池和驱动器。
(2)can总线。
通信方式有很多I2C SPI 串口,老师分别讲述了这些的传输数据的方法,然后引出了can总线。详细讲了can的工作方式,配置方法,如何在我们的板子上使用can;还给我们看了程序实例,通过实例给我们讲了can的初始化方法,can的读写方法。can总线采用半双工形式,所以可以用于多个设备通信;采用差分传输(一个RX分成RX+,RX-;通过读取两个差值来判断高低电频)抗干扰性强;用“时间尺”去量每个比特, “比如说,一个设备要发送一个数据1011,设备有一个高精度时钟CLK,时钟周期是1us,发送设备在前10个CLK周期在总线上发送1,在随后的10个CLK周期在总线上发送0,接下来的10个CLK周期发送1,最后10个CLK通信周期发送1,这样就用40个CLK周期,量了4个比特发出去。在接收端,假设具有同样精度的接收时钟,周期也是1us,接收设备用这个时钟去量总线的数据,先后得到了1011四个比特,从而实现了异步串行通信。”(引自老师博客)还有具体实现时需要解决的问题在老师博客中有详细说明,老师也通过程序实例给我们讲了怎么用程序解决这些问题。
(3) 如何用Linux控制我们手中的板子。
从板子到我们手中开始,我们就一直在学习Linux,也实现了用Linux挂载;可是我们一直有一个问题: 比如用51单片机,我们写一个程序,编译成二进制文件烧到板子里,板子就可以运行,但是不知道怎么把写的程序编译成板子可以运行的文件,不知道怎么把在Linux下编译好的文件搞到板子中。 老师给我们讲了交叉编译的原理,给我们演示了如何编译写好的文件;交了几个把编译好的文件搞到板子的方法,用NFS(之前自己也看过相关教程,可是NFS要配置很多东西,要求电脑与Linuxping通,电脑跟板子ping通,所以搞了几次都没成功),用U盘这个方法可以解决目前的需求,而且很好实现(当天晚上我就实现了)
现阶段的目标:
编写简单的程序控制板子的IO口,把板子上的简单测试程序跑一遍。学习我们需要的传感器的控制方法。
关于can我们现在还只是了解了工作方式和大概的使用方法,关于报文还有具体的编程方法还不是太了解,希望能与老师学长一起学习,只要can玩的比较熟了后就可以开始整个机器人的编程了,想想就好激动!
PS:第一次写博客,有些东西写的可能不太好,也许有错误的地方,望老师学长同学多多指教!