一、功能描述
完成funpack第七期的任务二:
选择从Digi-Key购买mikroBUS扩展模块,插在本期板卡上完成任意一个项目。
具体功能:购买了一个MIKROE-4114模块,该模块可驱动电机正反转和调速。
每按下S1按键,电机可以在停止、低速正转、高速正转、停止、低速反转、高速反转等6种状态依次切换。
软件:MPLAB X IDE v5.45
硬件:DM164137开发板(核心芯片PIC16F18446)
MIKROE-4114电机驱动模块(核心芯片TB67H451FNG)
小直流电机 1个
充电宝1个
图1 系统连接图
二、具体实现
2.1 MCC配置
TMR4和PWM6设为一组,TMR6和PWM7设为一组,两组配置相同。
图2 PWM配置
图3 定时器配置
图4 Pin Module配置
2.2主要代码
本次代码参考了github的pic16f18446-curiosity-lpc-demo-code工程。
将原demo按下S1切换不同demo程序段,改成切换电机控制PWM值。
PWM6_LoadDutyValue(0)设置占空比。
函数参数和占空比的关系,可结合MCC中PWM设置查看(图2)。
参数值 PWMDC Value |
占空比% Duty Cycle |
0 |
0 |
5 |
20 |
12 |
40 |
18 |
60 |
25 |
80 |
31 |
100 |
表1 PWM函数参数值和输出占空比关系
void main(void) {
SYSTEM_Initialize();
// Disable the pre-enabled interrupts of the MCC
INTERRUPT_TMR0InterruptDisable();
while (1) {
checkButtonS1();
switch (labNumber) {
case 1: PWM6_LoadDutyValue(0);//停止
PWM7_LoadDutyValue(0);
LED_D5_SetHigh();
break;
case 2: PWM6_LoadDutyValue(18);//低速正转占空比60%
PWM7_LoadDutyValue(0);
LED_D5_SetLow();
break;
case 3: PWM6_LoadDutyValue(25);//高速正转占空比80%
PWM7_LoadDutyValue(0);
LED_D5_SetLow();
break;
case 4: PWM6_LoadDutyValue(0);//停止
PWM7_LoadDutyValue(0);
LED_D5_SetHigh();
break;
case 5: PWM6_LoadDutyValue(0);
PWM7_LoadDutyValue(18); // 低速反转占空比60%
LED_D5_SetLow();
break;
case 6: PWM6_LoadDutyValue(0);//
PWM7_LoadDutyValue(25); // 高速反转占空比80%
LED_D5_SetLow();
break;
}
if (switchEvent) {
nextLab();
}
}
}
三、心得体会
这期开发难度不大,MCC配置和第一期stm32cubeIDE使用非常相似的,主程序代码也比较简单。
后续计划将此次试验应用在智能小车控制上。
第一,准备把DM164137开发板加上遥控功能,计划结合funpack第4期的BLE蓝牙板使用。也可能单独用BLE蓝牙板控制电机驱动板。
第二,因本期电机驱动板TB67H451FNG只有1路输出,只能控制小车的前进后退。若需在无舵机的情况下,实现差速转向,至少需要电机驱动板有2路输出。目前选型是TB6612FNG。
待完成后分享。