- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
L298N驱动步进电机发热的问题探讨
L298N是ST公司生产的一种高电压、大电流电机驱动芯片。主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载,是很多爱好者喜欢使用的一个驱动电路。
但是,L298N在实际使用中很多人反映发热现象严重,经常烧管子。通过分析原因并多次试验,初步得出了L298N发热原因,并给出解决方案。
一、L298N发热原因
首先,L298N瞬间峰值电流可达3A,持续工作电流为2A,压降可达1V,本身消耗的功率就很大,其散热片普遍比较小,易造成发热现象。驱动小电机或者电流较小的步进电机,尚不明显;而满电流驱动就会造成发热。
其次,一些步进电机直流内阻很低,甚至可以低到零点几欧姆,好多L298N板子没有恒流控制,易造成超负载现象。我直接用来驱动23KM-K383-G2V步进电机,即便5V供电,十几秒钟就感觉L298N很热了,一直很苦恼。
二、解决办法
必要的办法当然是增加降温风扇了,这个不多叙。无意之中看到步进电机斩波恒流驱动原理斩波恒流OCR2B改变占空比,数字3口接L298N的使能端,见图。
程序参考有关同学作品,多谢,具体如下。另说明一下:PWM频率、占空比的参数需要自行调整,以适应步进电机的转速和力矩,占空比小电机力矩小,带不动设备;占空比太大电流控制不住,L298n继续发烧。这个参数与电压、驱动电流、电机内阻等都有关系,此方法仅供参考。
int Pin0 = 8;
int Pin1 = 9;
int Pin2 = 10;
int Pin3 = 12;
int _step =0 ;
boolean dir = false;//正反转
int stepperSpeed = 5;//电机转速,5ms一步
void setup()
{
pinMode(Pin0, OUTPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(11, OUTPUT);
pinMode(3, OUTPUT);
TCCR2A = _BV(COM2A0) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
TCCR2B = _BV(WGM22) | _BV(CS22) | _BV(CS20);
OCR2A = 22;//about 5khz
OCR2B = 14;
}
void loop()
{
switch(_step){
case 0:
// stepperSpeed++;
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);//32A
break;
case 1:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);//10B
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
break;
case 2:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 3:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 4:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 5:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digita
文档评论(0)