【C51自学笔记】ULN2003+蜂鸣器+继电器+步进电机

ULN2003:

  • ULN2003 是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成。 ​​​​​大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载 。

【C51自学笔记】ULN2003+蜂鸣器+继电器+步进电机_第1张图片

看成开关,共七路;
左方高电平:导通,可以过大电流
左方低电平:断开,不可以过大电流

【C51自学笔记】ULN2003+蜂鸣器+继电器+步进电机_第2张图片【C51自学笔记】ULN2003+蜂鸣器+继电器+步进电机_第3张图片

OUT1:接入继电器

OUT2:接入蜂鸣器

OUT3 - OUT7 + CLAMP :接入步进电机

 

 

蜂鸣器:

自激蜂鸣器是直流电压驱动的,只需对驱动口输出驱动电平并通过放大电路放大驱动电流就能使蜂鸣器发出声音,非常简单。

v改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。​​​​​​

v 改变输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小。

【C51自学笔记】ULN2003+蜂鸣器+继电器+步进电机_第4张图片

针脚3从ULN2003引入,针脚14接入蜂鸣器(SWDIP-8是一个拨码开关,也叫DIP开关

#include 
sbit beep=P0^1;
void main()
{
	beep=1;//其实默认情况输出就是1
}

继电器

v  需通过控制I/O口的高低电平,就可以实现继电器的通断​​​​​。

v  51单片机不能直接驱动,需要对驱动电平进行一个放大。

【C51自学笔记】ULN2003+蜂鸣器+继电器+步进电机_第5张图片

#include 
sbit relay=P0^0;

void delay(void)
{
	unsigned int a = 80000;
	while(a--);
}

void main()
{
	while(1)
	{
		relay=1;
		delay();
		relay=0;
		delay();
	}
}

步进电机:

步进电机是一步一步地转动,故称之为步进电机,每次能转动的最小角度称为步距角

每当步进电机的驱动器接收到一个驱动脉冲信号后,步进电机将会按照设定的方向转动一个固定的角度(有的步进电机可以直接输出线位移,称为直线电动机)。

对于角位移步进电机,可以通过控制脉冲的个数来控制角位移量,从而达到准确定位的目的。

可以通过控制脉冲频率来控制步进电机的转动的速度和加速度,从而达到调速的目的。

相数可分为:单相,双相和多相三种。

 

步距角:

1相励磁方式:30°

1—2相励磁方式15° 

【C51自学笔记】ULN2003+蜂鸣器+继电器+步进电机_第6张图片

减速比:内电机转64圈,外转一圈

步进角度: 内部步距角的角度*减速比

想让步进电机转一圈:360/步进角

【C51自学笔记】ULN2003+蜂鸣器+继电器+步进电机_第7张图片

 

【C51自学笔记】ULN2003+蜂鸣器+继电器+步进电机_第8张图片

6:VCC

5:A相

4:B相

3:C

2:D相

1:空

#include 
#define uchar unsigned char
#define uint unsigned int

uchar Step_table[]={0x40,0x20,0x10,0x08};//01000000 

void delay(uint a)
{
	while(a--);
}

void main(void)
{
	uchar i;
	uint j;
	j=512;//360/步进角度
	while(j--)
	{
		for(i=0;i<4;i++)//循环励磁 1000 0100 0010 0001
		{
			P0=Step_table[i];
			delay(800);//实现延迟是因为,步进电机无法及时完成单向励磁之间的快速变换
		}
	}
	while(1);//与开发环境有关,有可能会一直循环此程序,导致无法停止。
}

 

 

 

你可能感兴趣的:(C51)