我想用单片机去驱动小功率无刷电动机,只要求可以正反转即可,不要调速的,我在网上搜了好多关于H驱动电路的电路图,都不行,我自己制作电路,最好有参数的,尽量简单;
下面是别人给我回答的电路图,自己制作时根本不行,我用的是12v电源,电阻加不加都无法驱动,哪位自己做过的?发一张管用的电路图,谢谢!
为什么要加那两个电阻啊,加电阻单片机中的电流不是更小了?能不能不加啊?
你用的是12V电源,也就应该使用这个电路了。
问题是单片机输出高电平,提供的电流有限,虽经过8050放大,也难以达到使电机转动的需求。
可以再加一级放大,用8550即可,见图。
原来的1K电阻可以适当的减小,680~470欧姆左右即可。
此时,单片机输出低电平时,电机转动。
--------------------------
加那两个电阻,是进行电流限制,以免烧坏三极管和单片机引脚。
3.3K电阻,是控制8550的基极电流,在1mA左右就基本够用;
减小到1K也可,这时,电流将近5mA了,还可以的。
1K电阻,是控制8050的基极电流的,减小到470欧姆,基极电流就能达到8~10mA,电流再增大,8050有危险。
//用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;
}
}
}