正式论文(4)

2019-04-17 00:16

表2 串行数据格式

D15~D12 D11~D18 D7~D0

? ? ? ?4位寄存器地址 8位控制命令或待显示数据

MAX7219的控制字寄存器

功 能

D15~D12

?地 址

D11 0 0 0 0 0 0 0 0 1 1 1 1 1 1

D10 0 0 0 0 1 1 1 1 0 0 0 0 1 1

D9 0 0 1 1 0 0 1 1 0 0 1 1 0 1

D8 0 1 0 1 0 1 0 1 0 1 0 1 0 1

16进制码

空操作 位0 位1 位2 位3 位4 位5 位6 位7 译码模式 显示亮度 扫表界限 停机 显示测试

?0 1 2 3 4 5 6 7 8 9 A B C F

??????????????????????? ?

?? 16

3.7系统电路总设计

本文直流调速采用定频调宽法:T1+T2保持一定(即保持周期固定),使T1在0~T范围内变化来改变a的值从而达到调控电压的目的。以89S51单片机系统和7812、7805稳压电源系统以及组L298功率放大驱动器构成直流电机占空比控制部分。由键盘key1和key2指令控制,单片机处理后发出矩形波,通过占空比的调节达到电机调速的目的。当按下key1按键时,占空比增大,电枢电压增大,电机转速增大;当按下key2按键时,占空比减小,电枢电压减小,电机转速减小。从而通过单片机达到简单调速的目的。

图11为系统的总电路设计图。

图11 总体电路原理图

4 直流调速系统程序设计 程序设计思想:

当按key1键时,电压升高,转速上升,当按key2键时,电压下降,转速下降;定时器1中断用来产生周期为1ms的脉宽信号,定时器每次中断后改变下一次的定时设置,设置值由按键决定,按key1,高脉宽定时时间加大,按key2,低脉宽定时时间增大,每次变化10us。

下图为电机调速(在附录详细介绍程序)、MAX7219控制子程序和PID数字控制流程图。

17

开始 初始化,周期T=20ms,高电平T0=10ms N 判断是否有按 键 按 下 Y T0增加或减少10us,改变占空比 图12 电机调速流程图

电机PWM调速和键盘扫描程序

main( ) {sbit speed; sbit speed1; display[3]=spead/1000; spead1=[spead/1000]; spead=spead1; display[2]=spead/100; spead=spead2; display[1]=spead/10; spead=spead3;

sbit P0^0=key1; //加速 sbit P0^1=key2; //减速 key() {

if(key1==1) //加速 {

while (key1==1); t++; } if(t>=5) t=5;

if(key2==1) //减速

18

开 始 定义变量 初 始 化 设置显示区首址 传送数据 显 示 返 回 13 MAX7219控制子程序流程图

图 }

{

while(key2==1); t--; } if(t<1) t=1;

}

for(i=0;i<4;i++)

{ Write_Max7219(i,1); delay(1000); } }

控制MAX7219子程序

#define DECODE_MODE 0x09 #define INTENSITY 0x0A #define SCAN_LIMIT 0x0B #define SHUT_DOWN 0x0C #define DISPLAY_TEST 0x0F //pin defined

/***********************************************************************/ //change this part at different board

sbit LOAD=P1^7; //MAX7219 Load-Data Input: rising edge pin 12 sbit DIN=P1^6; //MAX7219 Serial-Data Input: rising edge pin 1

sbit CLK=P1^5; //MAX7219 Serial-Clock Input: maximum 10MHz pin 13 //function define

void delay(unsigned int time) {

while(time--); }

/***********************************************************************/ void Write_Max7219_byte(unsigned char temp)//write max7219 a byte {

unsigned char i;

for (i=0;i<8;i++) { CLK=0; DIN=(bit)(temp&0x80); delay(200); temp<<=1; CLK=1; } }

19

始化kp,ki,kd, e(k-1)=0,e(k-2)=0 本次采样输入c(k),k 本次偏差e(k)=r(k)-c(k) 对e(k)判断分段 kp,ki,kd比例项u(p)=k(p)*[e(k)-c(k-1)] 积分项u(i)=k(i)* 微分项u(d)=k(d)*[e(k)-2e(k-1)+e(k-2)] 无刷电机 输出控制量为PWM u(k)=[u(p)+u(i)+u(d)]+u(k-1) e(k-2)=e(k-1),e(k-1)=e(k-2) u(k-1)=u(k) PWM 采样时间?定时中断 中 断 返 回 图14 PID数字控制流程图 PID计算部分

Main Program 主程序

/***********************************************************************/ double sensor (void) // Dummy Sensor Function { return 100; }

void actuator(double rDelta) // Dummy Actuator Function {}

void main(void) {

PID sPID; // PID Control Structure double rOut; // PID Response (Output) double rIn; // PID Feedback (Input) PIDInit ( &sPID ); // Initialize Structure

20


正式论文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:海特涵洞设计教程 看了包你会

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: