第1部分 硬件介绍
1.1 硬件清单
序号 | 品名 | 数量 |
---|---|---|
1 | ODRIVE主板 | 1 |
2 | Arduino UNO主板 | 1 |
3 | MKS X2212电机 | 1 |
4 | USB数据线 | 1 |
5 | 12V 2.0A电源适配器 | 1 |
6 | 杜邦线 | 2 |
7 | 编码器连接线 | 1 |
8 | 50W 2欧 耗散电阻 | 1 |
9 | micro USB 线 | 1 |
硬件清单如下图所示。
标题1.2 硬件连接
电机与ODrive主板接线参考之前课程,这次需要介绍的是Arduino UNO主板与ODrive主板的PWM连接。
-
ODrive主板的GPIO4为PWM功能,Arduino UNO主板引脚3作为PWM输出。
功能 ODrive主板 Arduino UNO主板 PWM GPIO4 3 -
两主板连线,一共连接2根线:
GPIO4----3,
GND----GND。如下图所示。
-
用USB数据线将Arduino UNO主板与PC连接。
-
micro USB 线一端连接oDrive主板,另一端连接PC。
-
硬件连接如下图所示:
第2部分 下载文件
-
本次测试源代码可通过Q群(732557609)下载,如下图所示。
-
解压后源代码文件如下图所示。
第3部分 PWM配置
3.1 ODrive PWM引脚配置
如果GPIO引脚未分配给其他功能,则它们可用于PWM输入。
比如,如果你要用GPIO1,2,就必须禁用UART。
本次我们使用GPIO4。
-
打开odrivetool命令窗口。
-
配置PWM输入映射最小值,如下图1所示。
odrv0.config.gpio4_pwm_mapping.min = -200
-
配置PWM输入映射最大值,如下图2所示。
odrv0.config.gpio4_pwm_mapping.max = 200
-
配置PWM映射值的属性,将PWM映射到电机位置,如下图3所示。
odrv0.config.gpio4_pwm_mapping.endpoint = odrv0.axis0.controller._remote_attributes['input_pos']
-
保存配置。
odrv0.save_configuration()
-
重新启动。
odrv0.reboot()
3.2 Arduino PWM引脚配置
将引脚3定义为PWM脉冲输出端口,如下图1所示。。
将引脚3配置为输出模式,如下图2所示。
第4部分 PWM占空比逐渐增大
PWM占空比逐渐增大,测试PWM映射电机位置的关系。
源代码在下载文件中,如下图所示。
4.1 设置占空比
- PWM初始占空比为60,如下图1所示。
- PWM占空比设置为从125→255每2秒增加1,如图2所示。
- 上传程序,上传成功后观察电机。
4.2 观察电机
-
打开电源ODrive主板电源电机会正转一圈,反转一圈进行校准,查询校准位置如下图所示。
查询位置指令如下。odrv0.axis0.encoder.pos_estimate
2. 当占空比<25%时,初始PWM=60(<25%)电机位置不改变。查询位置如下图所示。
-
当25%≤占空比<50%时,设定PWM从125(<50%)开始变化电机会快速转至设定的最小值(min=-200),查询位置如下图所示。
-
当50%≤占空比<100%时。
电机位置会从min→max每2秒正转一次,直到转至设定的最大值(max=200)。
查询位置如下图所示:
电机转至最大值(max=200)后停止,查询位置如下图所示:
第5部分 PWM占空比逐渐减小
PWM占空比逐渐减小,测试PWM映射电机位置的关系。
源代码在下载文件中,如下图所示。
5.1 设置占空比
1.将PWM占空比设置为从254→0每2秒减1,如图4所示。
- 上传程序,上传成功后观察电机。
5.2 观察电机
-
若重启ODrive主板,则电机初始位置为0。
-
电机会快速转至设定的最大值(max=200),查询位置如下图所示。
-
当50%≤占空比<100%时,电机位置会从max→min每2秒反转一次,直到转至设定的最小值(min=-200)。
位置逐渐减小,查询位置如下图所示:
电机转至最小值(min=-200)后停止,查询位置如下图所示。
-
当25%≤占空比<50%时,电机位置处于设定的最小值(min=-200),查询位置如下图所示。
-
当0%≤占空比<25%时,电机位置不改变。
至此, ODrive PWM测试完成。
创客基地oDrive第八课 ODrive PWM测试 到此结束。
欢迎加入 创客基地 电机控制Q群 讨论电机控制相关问题:732557609