分享

AVR与L298进行直流电机控制(转载)

 LC书房斋 2014-05-19
软件环境: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与L298进行直流电机控制 <wbr>(转载)

avr+N298控制电机输入信号与电机工作方式
AVR与L298进行直流电机控制 <wbr>(转载)

N298电机控制芯片引脚图
AVR与L298进行直流电机控制 <wbr>(转载)

电机控制资料包括 所有电机控制例子源程序,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);电机转不起来

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多