直流电机驱动

除直流电机外,还有步进电机,舵机,无刷电机,空心杯电机。

f2c43ff4d405439091d6c30c9bb98f78.png

续流二极管保护电路。

     频率 = 1 / TS            占空比 = TON / TS           精度 = 占空比变化步距

92d6a2b1e5b1493bba55aa51ba951472.pngc69b35c7d5444fe985ecf74419f81c76.png

频率过低可能导致抖动(Ts过大)

LED呼吸灯

#include <REGX52.H>
sbit LED=P2^0;
void Delay(unsigned int i)
{
	while(i--);
}

void main()
{
	unsigned char Time,time;
	while(1)
   {
	   //逐渐亮起
	   for(Time=0;Time<100;Time++)
	   {
			for(time=0;time<20;time++)
			{
			   LED=0;
			   Delay(Time);
			   LED=1; 
			   Delay(100-Time);
			}		     
	   }
	   //逐渐熄灭
	   for(Time=100;Time>0;Time--)
	   {	  
	       for(time=0;time<20;time++)
			{
			   LED=0;
			   Delay(Time);
			   LED=1; 
			   Delay(100-Time);
			}		     
	   }
   }
}

直流电机调速

#include <REGX52.H>
#include "Delay.h"
#include "Key.h"
#include "Nixie.h"
#include "Timer.h"
sbit Motor=P1^0;
unsigned char Counter,Compare;
unsigned char KeyNum,Speed;
void main()
{
	Timer0_Init();
	//Compare=5;//暗
	while(1)
   {
	   KeyNum=Key();
	   if(KeyNum==1)
	   {
		   Speed++;
		   Speed%=4;
		   if(Speed==0)Compare=0;
		   if(Speed==1)Compare=50;
		   if(Speed==2)Compare=75;
		   if(Speed==3)Compare=100;
	   }
	   Nixie(1,Speed);
   }
}
void Timer0_Routine() interrupt 1
{
	TL0 = 0x9C;		//设置定时初值
	TH0 = 0xFF;		//设置定时初值
	Counter++;
	Counter%=100;
	if(Counter>Compare)
	{
		Motor=0;
	}
	else
	{
		Motor=1;
	}
}

0b9a282ce8b64d0b81b53476f7ac3ee3.jpg

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顺顺心心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值