找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1615|回复: 0
打印 上一主题 下一主题
收起左侧

电机调唆程序

[复制链接]
跳转到指定楼层
楼主
ID:137588 发表于 2016-8-25 17:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于labviewPWM电机调速
一、简介:
    此设计模拟工业控制现场,通过调节Labview界面中的模拟仪表,通过RS232串口通信,把转速控制信息通过串口传送到单片机中,进而利用单片机控制电动机的转速。
二、Labview前面板设计:
1.左部分为通讯端口、波特率、数据位、奇偶校验位、停止位、延时等选择端口。
2.中间为所调电压的PWM波形,图中蓝绿色所示。
3.右部分显示的是等效电压的大小,图中所示为2.35V。
4.下半部分为调节电压的仪表和确定按钮,当调节好电压,按下确定键后方能调节电机转速。
三、Labview程序框图:
1.     串口通讯部分:
2.PWM电压波形显示部分:
四、硬件设计:
单片机IO端口的电流太小,不足以驱动直流电机;本设计通过I0端口外接ULN2003AN驱动直流电动机。
五、单片机部分程序:
/*********************************************关于频率和占空比的确定,对于12M晶振,假定PWM输出频率为1KHZ,这样定时中断次数 *
*设定为C=10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样*
*可以设定占空比可从1-100变化。即0.01ms*100=1ms                              
******************************************************************************/
#include<reg52.h>  //52单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int    //宏定义
#define uchar unsigned char  //宏定义
#define V_TH0  0XFF                  
#define V_TL0  0XF6
uchar ZKB1;
sbit P1_2=P1^2;
void init_sys(void);            /*系统初始化函数*/   
void main()             //主函数
{
        init_sys();
         while(1)
      {
       /*对占空比值限定范围*/
       if (ZKB1>99) ZKB1=1;
       if (ZKB1<1) ZKB1=99;
      }
}
void timer0(void) interrupt 1 using 2
{
       static uchar click=0;                  /*中断次数计数器变量*/
       TH0=V_TH0;                                    /*恢复定时器初始值*/
       TL0=V_TL0;
       ++click;
       if (click>=100) click=0;
       if (click<=ZKB1)      /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
            P1_2=1;
     else
            P1_2=0;
}
void ser() interrupt 4
{
       RI=0;
       ZKB1=SBUF;
}
     /*系统初始化函数*/
void init_sys()
{
       ZKB1=40;
       TMOD=0x21;//设置定时器0工作方式1,定时器1为工作方式2      
    TH0=V_TH0; //定时0.01s
    TL0=V_TL0;   
       TH1=0xF3; //波特率2400
       TL1=0xF3;
    REN=1; //允许串口接收数据
       SM0=0;//串口工作方式1,8位数据传送
       SM1=1;
       EA=1;//开总中断     
       ES=1; //串口中断开
       PS=1;    //串口中断优先级最高
       ET0=1;//开定时器0中断            
       TR1=1; //开波特率
       TR0=1;//启动定时器0   
}
基于labview的PWM电机调速
一、简介:
    此设计模拟工业控制现场,通过调节Labview界面中的模拟仪表,通过RS232串口通信,把转速控制信息通过串口传送到单片机中,进而利用单片机控制电动机的转速。
二、Labview前面板设计:
1.左部分为通讯端口、波特率、数据位、奇偶校验位、停止位、延时等选择端口。
2.中间为所调电压的PWM波形,图中蓝绿色所示。
3.右部分显示的是等效电压的大小,图中所示为2.35V。
4.下半部分为调节电压的仪表和确定按钮,当调节好电压,按下确定键后方能调节电机转速。
三、Labview程序框图:
1.     串口通讯部分:
2.PWM电压波形显示部分:
四、硬件设计:
单片机IO端口的电流太小,不足以驱动直流电机;本设计通过I0端口外接ULN2003AN驱动直流电动机。
五、单片机部分程序:
/*********************************************关于频率和占空比的确定,对于12M晶振,假定PWM输出频率为1KHZ,这样定时中断次数 *
*设定为C=10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样*
*可以设定占空比可从1-100变化。即0.01ms*100=1ms                              
******************************************************************************/
#include<reg52.h>  //52单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int    //宏定义
#define uchar unsigned char  //宏定义
#define V_TH0  0XFF                  
#define V_TL0  0XF6
uchar ZKB1;
sbit P1_2=P1^2;
void init_sys(void);            /*系统初始化函数*/   
void main()             //主函数
{
        init_sys();
         while(1)
      {
       /*对占空比值限定范围*/
       if (ZKB1>99) ZKB1=1;
       if (ZKB1<1) ZKB1=99;
      }
}
void timer0(void) interrupt 1 using 2
{
       static uchar click=0;                  /*中断次数计数器变量*/
       TH0=V_TH0;                                    /*恢复定时器初始值*/
       TL0=V_TL0;
       ++click;
       if (click>=100) click=0;
       if (click<=ZKB1)      /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
            P1_2=1;
     else
            P1_2=0;
}
void ser() interrupt 4
{
       RI=0;
       ZKB1=SBUF;
}
     /*系统初始化函数*/
void init_sys()
{
       ZKB1=40;
       TMOD=0x21;//设置定时器0工作方式1,定时器1为工作方式2      
    TH0=V_TH0; //定时0.01s
    TL0=V_TL0;   
       TH1=0xF3; //波特率2400
       TL1=0xF3;
    REN=1; //允许串口接收数据
       SM0=0;//串口工作方式1,8位数据传送
       SM1=1;
       EA=1;//开总中断     
       ES=1; //串口中断开
       PS=1;    //串口中断优先级最高
       ET0=1;//开定时器0中断            
       TR1=1; //开波特率
       TR0=1;//启动定时器0   
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表