您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > Neurons智能PID电机驱动模块使用手册
Neurons智能PID电机驱动模块使用手册1.简介什么是neurons智能PID电机驱动模块?Neurons智能PID电机驱动模块是一个由自带的控制器来进行PID运算、梯形图控制,由板上的L298N来进行直流电机驱动的智能模块。是一个驱动+闭环控制的模块,而非简单地驱动。使用本模块,您可以只通过串口发送8个字节的命令(或者I2C接口5个字节)就可以控制双路电机(带编码器)的正反转速度,甚至可以直接设定电机的运动距离。两路电机的PID参数和梯形图参数都可以分别进行设定。Neurons智能PID电机驱动模块比淘宝上的十几元的电机驱动模块好在哪里?本智能模块包含了电机的驱动和智能控制。举个例子,如果您在机器人竞赛中需要小车往前行进一定距离,如果仅通过时间控制将会有很大误差。而使用本模块配合带有编码器的直流电机则能通过PID更为准确地控制电机行进的距离,从而能够让机器人小车做更多的动作。2.如何使用要使用本模块首先要确保您有一个+12V直流电源和一个+5V直流电源。其中+12V直流电源是给电机供电用(当然也要确保您的电机工作的额定电压是12V),+5V直流电源是给模块供电用。1.上位机控制您可以通过计算机的串口来控制电机的转速、行进距离。这时您需要一个串口线将模块和电脑连接起来提供上位机Demo软件2.单片机控制(串口)提供arduino例程。单片机可以是其他种类。3.单片机控制(I2C)提供arduino例程,单片机可以是其他种类。3.硬件结构1.主要芯片本模块的主要IC是板上的dsPIC33FMCU和L298N驱动芯片。其中MCU负责外部指令的处理和PID、梯形图的运算并控制L298N,L298N负责电机的驱动。板上还带有MAX3232串口电平转换电路,您可以直接和台式机的RS232接口相连。2.接口COMS电平UART接口:输出电压为3.3V,输入电压3.3V或者5V。可以选择由此接口给模块供+5V直流电。RS232UART接口:为以上接口经过RS3232转换过的输出。符合RS232标准。请勿将此接口与其他的MCU直接相连。I2C接口:输入输出电平为5V。可以选择由此接口给模块供+5V直流电。编码器接口(X2):用于和直流电机的编码器相连。一定要注意编码器的型号和板上电阻的配合。编码器应当是AB双向编码器。强烈推荐使用店主提供的电机。电机驱动接口(X2):和电机的正负极相接。电机电源:正负极按照PCB丝印相连,不能超过+25V。推荐使用+12V。4.如何使用模块在送到您手中之前已经进行过测试。如果是和电机一起购买,PID参数和梯形图参数都会有可以用的预设值,因您可以选择不进行任何的初始化直接对模块进行操作。您可以通过模块下侧的3个接口中的任何一个对模块发送命令。4.1串口命令格式波特率的确定:在模块上电或者复位之后,主机需要向模块发送0x55,模块成功接收之后即将波特率调整为和主机相同。波特率范围为9600~115200.所有的串口命令都是由8byte组成的。其中第1、2byte为固定值0x19和0x88,第3byte代表命令的种类。第4、5、6、7byte代表命令的数据,数据格式为long(32bit),高位在前,低位在后。第8byte应当为0x11.0x190x88CMDDATA1DATA2DATA3DATA40x11目前支持的写操作命令有:1)PID相关CMDhex作用‘M’设定第1个电机的转速1‘m’设定第2个电机的转速‘P’设定第1个电机的P参数‘p’设定第2个电机的P参数‘I’设定第1个电机的I参数‘i’设定第2个电机的I参数‘D’设定第1个电机的D参数‘d’设定第2个电机的D参数‘N’设定第1个电机积分误差的范围(一般不需要设定)‘n’设定第2个电机积分误差的范围(一般不需要设定)2)梯形图相关,使用梯形图功能时应当保证PID参数合理有效,否则会出现较大误差CMDhex作用‘A’设定第1个电机速度的增速,必须为正值‘a’设定第2个电机速度的增速,必须为正值‘B’设定第1个电机速度的最大速度,必须为正值‘b’设定第2个电机速度的最大速度,必须为正值‘C’设定第1个电机速度的减速,必须为正值‘c’设定第2个电机速度的减速,必须为正值‘E’设定第1个电机的行进距离‘e’设定第2个电机的行进距离3)其他CMDhex作用‘U’设定速度测量模式:0:四分频测速模式(normal)1:四分频+定时器测速模式(low-definitionencoder)2:位置模式(precisepositon)‘R’复位模块目前支持的读操作命令:CMDhex读取的参数(命令数据为-2)模块的回复(高位在前)‘S’第1个电机的实际转速1‘S’+速度(short)+‘L’‘s’第2个电机的实际转速‘s’+速度(short)+‘L’‘T’第1个电机的目标转速‘T’+目标速度(short)+‘L’‘t’第2个电机的目标转速‘t’+目标速度(short)+‘L’‘O’第1个电机的位置计数‘M’+2byte+‘L’+‘O’+2byte+‘L’‘o’第2个电机的位置计数‘m’+2byte+‘L’+‘o’+2byte+‘L’‘u’模块版本‘N’+‘M’+‘0’+‘1’Example:如果想要设定电机1的速度为200,只需发送0x190x880x4D0x000x000x000xC80x11其中0x4D(‘M’)为命令类型。0x000000C8为命令数据,为long类型的200.读取电机1的实际速度:0x190x880x530xFF0xFF0xFF0xFE0x11其中0x53(‘S’)为命令类型。0xFFFFFFFE为命令数据,为long类型的-2.读操作指令的命令数据都为-2.发送之后再从串口读4byte的数据,验证第1byte为’S’第4byte为’L’之后,提取2、3byte的数据即为当前速度。如果读操作指令的命令数据为-1,则模块会不断向串口发送数据,这一功能应当在与上位机软件配合时使用。“模块不断向串口发送数据”的周期为30ms,可以通过demo软件更改为10ms*n,不推荐更改为更小的值,在较低波特率下可能会导致丢帧。4.2I2C接口命令格式使用I2C对模块进行控制时,模块作为slave,外部的单片机作为master.推荐总线频率为100KHz。I2C不需要设定波特率,因此等模块上电之后可以直接使用。模块中默认的设备地址是0x50.I2C的命令格式和串口相似。不同的是没有了包头的0x19、0x88和包尾的0x11.如果想要设定电机1的速度为200,只需发送0x4D0x000x000x000xC8其中0x4D(‘M’)为命令类型。0x000000C8为命令数据,为long类型的200.当然,发送这些数据要遵从基本的I2C通讯规范。写操作命令时,I2C总线上的数据如下:上图中的模块地址是0x50,最后一个0是指写操作,这也是I2C协议的规范。START和STOP命令也是要外部的单片机发起的。读数据时,I2C总线上的数据如下:在整个过程中,外部单片机需要发送两次START命令和设备地址。第一次设备地址时,读写标志位需设为0,表示是一笔写操作。将命令写入之后,再发送START命令和设备地址,这时读写标志位需设为1,表示将要进行读操作。读出两个字节数值之后,外部单片机需发送STOP命令表示本次通信结束。5.上位机软件的使用方法上位机通过RS232和模块通信。给模块上电之后,板上的黄灯处于常亮状态,这表示没有收到任何串口数据。(此时模块收到的第一个byte数据必须是0x55,这是因为模块靠这个byte来确定当前的波特率。如果误发了其他数据就必须给模块重新上点或者按下板上的复位按键。)1.先选择串口和波特率:如果看不到任何串口则说明电脑目前没有任何可用串口。有可能是别的程序(如串口助手)占用了程序。如果是USB转串口工具的有可能是驱动安装不正确。2.点击Connect按钮,此时上位机会发送一个0x55,并发送‘u’模块版本‘N’+‘M’+‘0’+‘1’这个指令,如果通信成功,模块会返回‘N’+‘M’+‘0’+‘1’四个byte.在上位机程序中就可以看到:如果通讯不成功则会看到:这可能是串口线连接不正确引起的3.设置参数如果您买的是模块+电机则可以使用默认参数,当然也可以自己调节,一般来说默认参数可以使用。下图是faulhaber2342电机的调速模式的默认参数。这些参数都必须是正值。1)P、I、D参数对应相应模式的闭环调节参数。Limit指的是积分项的最大值。Interia只在PrecisePosition模式有用,建议默认为0,如果电机驱动的负载较大可以试着调大这个参数。Increase、Maxspeed、Decrease是梯形图参数,详见“常见问题”章节。2)NormalMode和Low-definitionencoder都是调速模式。PrecisePosition是位置模式。NormalMode是针对码盘分辨率较高的电机,如果线数高于24一圈,建议选择这个模式。Low-definitionencoder是针对码盘分辨率较低的电机,如果线数低于24一圈,建议选择这个模式。选择模式之后上位机程序会向下发送一条指令(8个byte串口数据)‘U’设定速度测量模式:0:四分频测速模式(normal)1:四分频+定时器测速模式(low-definitionencoder)2:位置模式(preciseposition)因为是上位机向模块发送指令,所以必须是模块连接好之后选择模式才有效。如果想将电机参数和工作模式烧写进模块中,则可以在设定好之后点击program按钮,这样即使重新上电之后模块也会使用这些电机参数和工作模式。3)如果您想观察电机的速度的1曲线,点击Speed1旁边的圆点即可,不过不想观察,只需再次点击。其他的信息同理。Target是电机的目标速度。Position是电机转动的位置。上图中速度设定为-300保持恒定(左侧Y轴),电机的位置不断向负方向变化(右侧Y轴)。4.设定速度(Normal/low-definitionencoder模式)在speed1或者speed2旁边的文本框输入想要设定的速度点击Set即可旁边的Both按键指的是同时设定两个电机的速度。设定行进距离(梯形图功能)上图中电机1的速度先增大然后保持一定速度,最后减小。这个速度梯形和红框中的参数有关,Increase指的是速度增加400/s,MaxSpeed指的是速度最大值为400,Decrease指的是速度减小400/s.6.常见问题1.速度的单位1)在Normal模式下:速度指的是10ms内的脉冲数*4。这个*4是因为进行了四倍频例如这个电机它的编码器P/R为512线,也就是说码盘上有512个栅格。如果按下图设定,它的速度为1000.1000是10ms内的脉冲数*4.那么10ms内的脉冲就是250.1s内的脉冲数就是250*100=25000个。25000对应25000/512=48.8圈。一分钟就是接近2930圈。但是别忘了,它前面还有19:1的减速器。这样1000的速度对应实际的154圈/分钟.2)Low-definitionencoder模式这个模式是专门针对编码器分辨率较低的电机设计的。这个模式下速度指的是10ms内的脉冲数*40。这个*40是由模块内部换算得到的。例如这个电机它的编码器只有12线。如果使用Normalmode的时候速度的分辨率较低。而使用Low-definitionencoder模式的话可以使分辨率提高10倍。图中的速度是400。也就是说10ms内的脉冲数是400/40=10个.1s内的脉冲数是10*100=1000个,相当于1000/12=83.3圈每秒,也就是5000圈每分钟。当然电机前面还有个64:1的减速箱,减速后的速度就是78圈/分钟.如果简单记的话,是速度307=1圈/秒.2.是不是需要设定每圈的脉冲数?答案是不需要。因为驱动器在调速和速度设定的时候,都不是以圈数为单位的,而是以脉冲为单位。而且在设定目标位置的时候也是以脉冲为单位的。
本文标题:Neurons智能PID电机驱动模块使用手册
链接地址:https://www.777doc.com/doc-3365371 .html