你用的是12V电源,也就应该使用这个电路了。
问题是单片机输出高电平,提供的电流有限,虽经过8050放大,也难以达到使电机转动的需求。
可以再加一级放大,用8550即可,见图。
原来的1K电阻可以适当的减小,680~470欧姆左右即可。
此时,单片机输出低电平时,电机转动。
--------------------------
加那两个电阻,是进行电流限制,以免烧坏三极管和单片机引脚。
3.3K电阻,是控制8550的基极电流,在1mA左右就基本够用;
减小到1K也可,这时,电流将近5mA了,还可以的。
1K电阻,是控制8050的基极电流的,减小到470欧姆,基极电流就能达到8~10mA,电流再增大,8050有危险。
你的电机是多大功率的?额定电压、电流时多少?你的三极管的驱动能力是多少?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结谁的电流小了,谁的电流小烧谁。
//用PWM波控制直流电机的转速,按键123控制它的正反转以及停止.具体电路图在相册里00模拟管用,不知道实际电路中效果咋样.
#include
#include
#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;
}
}
}
1、不用单片机,你直接加电,电机是否运行正常?并测驱动电流是否小于1a。
2、如果正常,建议两级8050放大以达到第二极最大300ma基极,1.5a发射极的效果。
驱动电压是不会影响到程序的执行的,只能说电压和你的电路上用的器件匹配不?10护揣篙废蕻肚戈莎恭极V的电压直接加到单片机上是不可以的。