AVR与L298进行直流电机控制
时间:11-26
来源:互联网
点击:
软件环境:icc+avrstudio
打开motor.h更改以下内容即可。
//PD4,PD5 电机方向控制
#define moto_en1 PORTD |= 0x10
#define moto_en2 PORTD |= 0x20
#define moto_uen1 PORTD &=~ 0x10
#define moto_uen2 PORTD &=~ 0x20
软件核心介绍:
通过控制电机的IN1和IN2改变方向, pwm控制速度。
IN1和IN2不同时,电机转动;
IN1和IN2相同时,电机急停。
硬件连接电路图
avr+N298控制电机输入信号与电机工作方式
N298电机控制芯片引脚图
电机控制资料包括 所有电机控制例子源程序,L298数据手册,连接电路图。
今天有人反映,程序有点小问题
程序中这里的IO初始化
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0x00;
// DDRD = 0x80; // D7 PWM //参考芯片手册
//这里修改
DDRD =0xB0; //PD4 PD5 PD7 OUT
}
另外注意如果,启动时的PWM占空比太低 电机是转不起来的,
void main(void)
{
//初始工作
init_devices();
while(1)
{
for_ward(0); //默认速度运转 正
Delay1s(5); //延时5s
motor_stop(); //停止
Delay1s(5); //延时5s
back_ward(0); //默认速度运转 反
Delay1s(5); //延时5s
speed_add(20); //加速
Delay1s(5); //延时5s
speed_subtract(20); //减速
Delay1s(5); //延时5s
}
}
及这里的for_ward(0); //默认速度运转 正
如果改为for_ward(5);电机转不起来
打开motor.h更改以下内容即可。
//PD4,PD5 电机方向控制
#define moto_en1 PORTD |= 0x10
#define moto_en2 PORTD |= 0x20
#define moto_uen1 PORTD &=~ 0x10
#define moto_uen2 PORTD &=~ 0x20
软件核心介绍:
通过控制电机的IN1和IN2改变方向,
IN1和IN2不同时,电机转动;
IN1和IN2相同时,电机急停。
硬件连接电路图
avr+N298控制电机输入信号与电机工作方式
N298电机控制芯片引脚图
电机控制资料包括 所有电机控制例子源程序,L298数据手册,连接电路图。
今天有人反映,程序有点小问题
程序中这里的IO初始化
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0x00;
// DDRD = 0x80; // D7 PWM
//这里修改
DDRD =0xB0; //PD4 PD5 PD7 OUT
}
另外注意如果,启动时的PWM占空比太低 电机是转不起来的,
void main(void)
{
//初始工作
init_devices();
while(1)
{
}
}
及这里的for_ward(0);
如果改为for_ward(5);电机转不起来
AVRL298直流电机控 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)