目录
介绍
直流电机
直流电动机以直流电的形式将电能转换成电动机轴的旋转运动形式的机械能。
可以通过施加变化的DC电压来控制DC电动机速度; 而电动机的旋转方向可以通过反转通过它的电流方向来改变。
为了施加变化的电压,我们可以使用PWM技术。
为了反转电流,我们可以使用采用H桥技术的H桥电路或电机驱动器IC。
电路连接图
连接直流电机和MSP-EXP430G2 TI启动板
示例
在此,我们将使用MSP-EXP430G2 TI Launchpad控制直流电机的速度和旋转方向。
这里,电位计用作速度控制的装置,触摸开关的输入用于改变电动机的方向。
L293D电机驱动器IC用于控制电机的方向。
MSP-EXP430G2 TI Launchpad上产生的PWM波用于通过L293D为电机提供可变电压。在Energia中,analogWrite函数用于生成PWM波。
注意: MSP-EXP430G2 TI Launchpad主板具有512字节的RAM,可轻松上传,尤其是在使用不同库时。有时您需要串行缓冲区足够大以包含所需的数据,并且您必须修改串行库的缓冲区大小。在做这些事情时,我们必须确保代码不会使用超过70%的RAM。这可能导致代码以不稳定的方式工作,有时运行良好并且在其他方面失败。
有些时候RAM使用率可能会超过70%并且代码将完全正常工作,并且即使RAM使用率为65%,代码也无法工作。
在这种情况下,可能需要对缓冲区大小和/或变量进行一些试验和错误。
直流电动机方向和速度控制程序
const int pot_input = A4;
bool d1 = HIGH;
bool d2 = LOW;
void setup() {
pinMode(12, OUTPUT); /* Motor control pin 1 */
pinMode(13, OUTPUT); /* Motor control pin 2 */
pinMode(14, OUTPUT); /* PWM pin for Speed Control */
pinMode(5, INPUT_PULLUP); /* Interrupt pin for direction control */
attachInterrupt(5, motor, FALLING); /* Interrupt on falling edge on pin 5 */
}
void loop() {
int pwm_adc;
pwm_adc = analogRead(pot_input); /* Input from Potentiometer for speed control */
digitalWrite(12,d1);
digitalWrite(13,d2);
analogWrite(14, pwm_adc / 4);
}
余下程序:
使用的功能
1. attachInterrupt(pin, ISR, mode)
- 此函数用于配置中断事件的模式并声明该中断的ISR。中断事件和ISR用于函数中声明的中断引脚。
- 此函数中的ISR是将用于此中断的ISR的名称。
- mode定义何时触发中断。有四种模式可供选择:
- – LOW:引脚为低电平时触发中断。
- – CHANGE:每当引脚改变值时触发中断。
- – RISING:引脚从低电平变为高电平时触发。
- – FALLING:引脚从高电平变为低电平时触发。
- 例如,attachInterrupt(2, motor, FALLING)将数字引脚2配置为ISR命名电机的中断引脚,并为引脚2上的每个下降沿事件产生中断。