单片机驱动直流电动机

我想用单片机去驱动小功率无刷电动机,只要求可以正反转即可,不要调速的,我在网上搜了好多关于H驱动电路的电路图,都不行,我自己制作电路,最好有参数的,尽量简单;
下面是别人给我回答的电路图,自己制作时根本不行,我用的是12v电源,电阻加不加都无法驱动,哪位自己做过的?发一张管用的电路图,谢谢!
为什么要加那两个电阻啊,加电阻单片机中的电流不是更小了?能不能不加啊?

你用的是12V电源,也就应该使用这个电路了。

问题是单片机输出高电平,提供的电流有限,虽经过8050放大,也难以达到使电机转动的需求。

可以再加一级放大,用8550即可,见图。

原来的1K电阻可以适当的减小,680~470欧姆左右即可。

此时,单片机输出低电平时,电机转动。

--------------------------

加那两个电阻,是进行电流限制,以免烧坏三极管和单片机引脚。

3.3K电阻,是控制8550的基极电流,在1mA左右就基本够用;

减小到1K也可,这时,电流将近5mA了,还可以的。

1K电阻,是控制8050的基极电流的,减小到470欧姆,基极电流就能达到8~10mA,电流再增大,8050有危险。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-17
你的电机是多大功率的?额定电压、电流时多少?你的三极管的驱动能力是多少?Beta是多少?
有两种可能,
1.三极管驱动能力较差,电机需要的电流较高,这时候相当于电机直接短路,三极管直接烧毁。
2.三极管工作在线性区,电流上不去。你可以量一下正常工作时三极管ce两端的电压电流,如果电压很大,电流很小的话,说明三极管还在线性区工作。

这个问题首先要搞清楚驱动这个电机需要多大的电流。你的电机的额定功率除以额定电压,得到你的额定电流。也就是说,驱动你这个电机需要的电流,然后根据这个电流选择一个合适的三极管。

然后,选择你的三极管和电阻。这种情况,要选择开关管,管子允许的电流最好大于电机额定电流的1.5倍。如果需要带载启动的话,最好在3倍以上。

最后,再说说你的电阻选择。假设你用的是5V的单片机,输出5V高电平,再减去0.3-0.7V的基极压降,除以1K的电阻,也就是4.3-4.7mA的基极电流,一般三极管的Beta大概50左右,那这个时候你的电流只有两百多个毫安,远远没有达到三极管的饱和状态。

现在按照最最极限的情况来计算,假设你的基极电流最大承受20mA,那就干脆给基极电阻取成300欧,这样基极电流有十几mA,乘以四五十倍的Beta值,就达到三极管的饱和电流了。再不够的话,就要用这个三极管驱动继电器,再用继电器来带电机了。

BTW:你的电源能带动你的电动机不???

补充一下,基极电阻是限流用的,如果没有那个电阻的话,你的5V电压直接加在三极管的be之间,这时候,be压降0.7V,剩下4.3V加在导线理论电流无穷大,实际上就看你的单片机和be结谁的电流小了,谁的电流小烧谁。
第2个回答  2009-10-17

//用PWM波控制直流电机的转速,按键123控制它的正反转以及停止.具体电路图在相册里00模拟管用,不知道实际电路中效果咋样.

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

sbit K1=P3^0;

sbit K2=P3^1;

sbit K3=P3^2;

sbit LED1=P0^0;

sbit LED2=P0^1;

sbit LED3=P0^2;

sbit PWM=P2^0;

sbit MB=P2^1;

sbit CLK=P2^4;

sbit ST=P2^5;

sbit EOC=P2^6;

sbit OE=P2^7;

// 延时

void Delay(uchar x)

{

uchar i;

while(x--)for(i=0;i<40;i++);

}

//子程序

PWM00()

{

uchar Val;

TMOD=0x02;

TH0=0x14;

TL0=0x00;

IE=0x82;

TR0=1;

while(1)

{

ST=0;ST=1;ST=0;

while(!EOC);

OE=1;

Val=P1;

OE=0;

if(Val==0)

{

PWM=0;

Delay(0xFF);

continue;

}

if(Val==0xff) //满

{

PWM=1;Delay(0xff);

continue;

}

PWM=1;

Delay(Val);

PWM=0;

Delay(0xff-Val);

}

return PWM;

}

void Timer0_INT()interrupt 1

{

CLK=!CLK;

}

void main(void)

{

LED1=1;LED2=1;LED3=0;

while(1)

{

if(K1==0)

{while(K1==0);

LED1=0;LED2=1;LED3=1;PWM=0;MB=1;

}

if(K2==0)

{

while(K2==0);

LED1=1;LED2=0;LED3=1;PWM00();

MB=0;

}

if(K3==0)

{

while(K3==0);

LED1=1;LED2=1;LED3=0;PWM00();MB=0;

}

}

}

第3个回答  2019-06-21
1、不用单片机,你直接加电,电机是否运行正常?并测驱动电流是否小于1a。
2、如果正常,建议两级8050放大以达到第二极最大300ma基极,1.5a发射极的效果。
第4个回答  2019-04-05
驱动电压是不会影响到程序的执行的,只能说电压和你的电路上用的器件匹配不?10护揣篙废蕻肚戈莎恭极V的电压直接加到单片机上是不可以的。
相似回答