单片机控制直流电机文档格式.docx

上传人:b****0 文档编号:13271267 上传时间:2022-10-09 格式:DOCX 页数:34 大小:221.41KB
下载 相关 举报
单片机控制直流电机文档格式.docx_第1页
第1页 / 共34页
单片机控制直流电机文档格式.docx_第2页
第2页 / 共34页
单片机控制直流电机文档格式.docx_第3页
第3页 / 共34页
单片机控制直流电机文档格式.docx_第4页
第4页 / 共34页
单片机控制直流电机文档格式.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

单片机控制直流电机文档格式.docx

《单片机控制直流电机文档格式.docx》由会员分享,可在线阅读,更多相关《单片机控制直流电机文档格式.docx(34页珍藏版)》请在冰豆网上搜索。

单片机控制直流电机文档格式.docx

采用单片机设计一个控制直流电机并测量转速的装置。

单片机扩展有A/D转换芯片ADC0809和D/A转换芯片DAC0832。

(1)通过改变A/D输入端可变电阻来改变A/D的输入电压,D/A输入检测量大小,进而改变直流电机的转速。

(2)手动控制。

在键盘上设置两个按键—直流电动机加速键和直流电机减速键。

在手动状态下,每按一次键,电机的转速按照约定的速率改变。

(3)键盘列扫描(4 

⨯ 

6)。

实验原理

与步进电机类似,直流电机也可精确地控制旋转速度或转矩。

直流电机是通过两个磁场的互作用产生旋转。

其结构如下页图所示,固定部分(定子)上,装设了一对直流励磁的静止的主磁极N和S,在旋转部分(转子)上装设电枢铁心。

定子与转子之间有一气隙。

在电枢铁心上放置了由A和X两根导体连成的电枢线圈,线圈的首端和末端分别连到两个圆弧形的铜片上,此铜片称为换向片。

直流电机的速度与施加的电压成正比,输出转矩则与电流成正比。

利用直流电机的速度与施加电压成正比的原理,通过滑动变阻器向ADC0809输入控制电压信号,经AD后,输入到AT89C51中,AT89C51将此信号转发给DAC0832,通过功放电路放大后,驱动直流电机。

设计方案

1.系统控制电路

采用STC89C52单片机由软件产生脉冲调制信号,来对直流电机进行控制。

2.电机控制电路

采用由三极管搭成的H型桥电路来控制电机的转动。

3.键盘电路

采用行式键盘实现电机转速的加速减速以及正反转的控制,在手动状态下,每按一次,其转速相应发生改变。

4.显示电路

采用LM016L对电机运动状态进行显示。

系统组成框图

系统总组成框图以STC89C52为主控芯片,采用桥式电路对直流电机驱动,如下所示:

 

硬件电路设计

1.键盘控制电路

按下DEC按钮,电机转速降低;

按下INC按钮,电机转速增加。

2.单片机主控电路图

该部分电路主要由STC89C52主控芯片和晶振组成。

STC89C52芯片是低功耗8位CMOS微处理器,提供串口程序下载口。

它主要有以下几个特点:

256字节的RAM;

4KB的ROM;

32个通用I/O口线,为用户提供了丰富的I/O口资源;

32个通用工作寄存器;

2个定时器/计数器;

具有6个中断源;

4.0~5.5V的工作电压等。

晶振给单片机正常工作提供稳定的信号。

3.H型桥式电机驱动电路

H桥式电机驱动电路包括4个三极管和一个电机。

要使电机运转,只须导通对角线上的一对三极管。

在此设计中用到的完整的驱动电路如下:

主控程序

程序流程

总仿真电路图

程序清单

1.主程序

#include"

AT89X51.h"

#include<

intrins.h>

stdio.h>

led.h"

uart.h"

timer0.h"

timer1.h"

common.h"

ADC0831.h"

lcd1602.h"

keyboard.h"

ISR.h"

DaType_Change.h"

#defineDcMotor_Direction_P

uChar8code*String1="

DCMotorControl"

;

uChar8code*String2="

pwm:

/100"

uChar8PWM_buff[3];

voidmain(void)

{

LCD_Init();

timer0_Init();

timer1_Init();

#ifdefDcMotor_Direction_P

Der1=0;

#elseDer1=1;

#endif

LED_Run_EN();

WrStrLCD(0,0,String1);

WrStrLCD(1,0,String2);

while

(1)

{

key_Process();

//按键处理子程序

Char_To_Str(PWM_duty,&

PWM_buff[0]);

//液晶显示子程序

WrStrLCD(1,4,&

}

}

2.子程序

………………………………………………………………………………………………………………………………………………………

ADC.h>

unsignedcharvalue_converted=0x00;

unsignedcharvalue_AN6=0x00;

unsignedcharvalue_AN7=0x00;

bitend_of_convertion=0;

voidADC_Config(void)

ADCF=0xC0;

ADCLK=0x06;

ADCON=0x20;

EA=1;

EADC=1;

ADCON&

=~0x07;

ADCON|=0x06;

=~0x40;

ADCON|=0x08;

while(!

end_of_convertion);

end_of_convertion=0;

value_AN6=value_converted;

ADCON|=0x07;

value_AN7=value_converted;

}

voidit_Adc(void)interrupt8

ADCON&

=~0x10;

value_converted=ADDH;

end_of_convertion=1;

……………………………………………………………………………………………………………………………………………………..

adc0831.h"

voidADC_CLK(void)

{

adcclk=1;

_nop_();

adcclk=0;

uChar8Read_ADC(void)

uChar8i;

bittemp=ADC_Val^0;

adccs=0;

ADC_CLK();

while(adcdo);

for(i=0;

i<

8;

i++)

{

ADC_CLK();

ADC_Val=(ADC_Val<

<

1)|adcdo;

adccs=1;

return(ADC_Val);

voidIntToStr(uInt16t,uChar8*str,uChar8n)

uChar8a[5];

chari,j;

a[0]=(t/10000)%10;

//取得整数值到数组

a[1]=(t/1000)%10;

a[2]=(t/100)%10;

a[3]=(t/10)%10;

a[4]=(t/1)%10;

for(i=0;

5;

i++)//转成ASCII码

a[i]=a[i]+'

0'

a[i]=='

&

&

=3;

i++);

//计算空格(0)数量

for(j=5-n;

j<

i;

j++)//填充空格

{*str='

'

str++;

}

for(;

i++)

{*str=a[i];

}//加入有效的数字

*str='

\0'

}

…………………………………………………………………………………………………………………………………………………......

beep.h"

sbitbeep=P1^4;

voidBeepRing(void)

beep=0;

DelayMS(100);

beep=1;

voidChar_To_Str(uChar8Data,uChar8*str)

uChar8a[4];

uChar8i,j;

a[0]=(Data/100)%10;

a[1]=(Data/10)%10;

a[2]=(Data/1)%10;

3;

for(j=0;

#include"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1