PSOC直流电机控制设计实验指导.docx
- 文档编号:17810169
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:23
- 大小:1.78MB
PSOC直流电机控制设计实验指导.docx
《PSOC直流电机控制设计实验指导.docx》由会员分享,可在线阅读,更多相关《PSOC直流电机控制设计实验指导.docx(23页珍藏版)》请在冰点文库上搜索。
PSOC直流电机控制设计实验指导
实验六直流电机控制设计实验
一、实验目的:
1、学习直流电机的工作原理。
2、学习采用PSOC单片机进行直流电机控制的编程设计。
二、实验原理:
(一)直流电机工作原理
直流电机有定子和转子两大部分组成,定子上有磁极(绕组式或永磁式),转子有绕组,通电后,转子上也形成磁场(磁极),定子和转子的磁极之间有一个夹角,在定转子磁场(N极和S极之间)的相互吸引下,是电机旋转。
改变电刷的位子,就可以改变定转子磁极夹角(假设以定子的磁极为夹角起始边,转子的磁极为另一边,由转子的磁极指向定子的磁极的方向就是电机的旋转方向)的方向,从而改变电机的旋转方向。
(二)直流电动机的PWM调压调速
直流电动机转速n的表达式为:
式中U为电枢端电压;I为电枢电流;R为电枢电路总电阻;
为每相磁通量;K为电机参
数。
由直流电动机的控制原理知,绝大多数直流电动机采用开关驱动对电机电枢电压
的控制。
PWM波是一种脉宽可控制波,通过调整脉宽的大小来控制电机电枢电压,实
现电机调速。
定频调宽是一种最常见的脉宽调制方式,它使脉冲波的频率(或周期)保
持不变,只调整脉冲宽度。
PWM的调压调速原理如图所示:
图11-1PWM调速原理和电压波形
当开关管MOSFET的栅极输入高电平时,开关管导通,直流电动机电枢绕组两端有
电压
;
秒后,栅极输入变为低电平,开关管截止,电机电枢两端电压为0。
秒后栅极输入重新变为高电平,开关管的动作重复前面的过程。
电机的电枢绕组两端的电压平均值为
:
式中
为占空比,
,占空比
表示了一个周期T里,开关管导通时
间与周期的比值。
A的变化范围为
。
由此式可知,当电源电压
不变的情况下,电枢的端电压的平均值取决于占空比
的大小,改变
值就可以改变端电压的平均值,从而达到调速目的。
三、实验器材:
序号
名称
型号与规格
数量
备注
1
PSOC开发板
CY8CKIT-030
1
2
电脑
1
四、实验内容:
1.连接直流电机的实验电路
2.编程设计实现直流电机的调速控制
五、实验步骤
步骤一:
新建一个工程,命名为DC_Motor
步骤二:
绘制原理图
1.配置PWM模块
(1)拖动并在工作窗口放置PWM器件(ComponentCatalog->Digital->Functions->PWM)。
(2)双击原理图的器件PWM_1,打开配置窗口。
(3)按如下方式配置PWM;
如下图,在Advanced标签下,进行如下配置:
点击“OK”按扭,退出属性设置界面。
2.配置数字输入端口
(1)拖动并将数字端口的器件放到工作窗口(ComponentCatalog->PortsandPins->Digital
InputPin)。
(2).双击原理图中的Pin_1打开配置窗口
如下图所示,在Type标签下,进行如下参数配置
如此配置另外4个输入SW2,SW3,SW4,SW5。
3.配置数字输出端口
(1)拖动并将数字端口的器件放到工作窗口(ComponentCatalog->PortsandPins->Digital
OutputPin)。
(2)双击,打开配置窗口,按照如下方式配置数字端口
如此配置另外1个输出PWM2
4.配置时钟模块
(1)从元件库选择时钟模块(ComponentCatalog->System->Clock),将其拖到原理图工作
窗口界面中。
(2)如下图所示,双击Clock_1按如下方式进行配置:
其余均为默认值。
(3)点击“OK”按扭,退出配置界面。
5.配置LCD模块
(1)从元件库选择时钟模块(ComponentCatalog->Display->CharacterLCD[V1.90]),将其拖到原理图工作窗口界面中
(2)如下图所示,双击该模块修改名称为LCD
6、添加一个clock模块跟一个Timer模块,按下图配置clock模块及Timer模块
7、放置一个counter模块,按下图配置counter模块
8、放置一个inputpin模块,按下图进行配置
9.配置逻辑高低控制端口
(1)从元件库选择逻辑低模块(ComponentCatalog->Digital->Logic->LogicLow‘0’),将其
拖到原理图工作窗口界面中。
(2)从元件库选择逻辑低模块(ComponentCatalog–>Digital->Logic->LogicHigh‘1’),将
其拖到原理图工作窗口界面中。
最终原理图如下
10.分配引脚
(1)在WorkspaceExplorer窗口,双击DC_Motor.cydwr。
(2)如下图所示,点击选项Port。
(3)分配引脚。
11、搭建硬件
外接驱动电路原理图如下:
实物图如下:
电机红线接5V电压,黑线接地,绿线跟白线分别为A与B的输出,分别将他们与P1[6]连接则可分别读出各端口输出的转速即LCD上的Speed的值。
步骤三:
编写软件程序
给出main.c主程序代码,并对代码进行了分析:
#include
intmain()
{
uint8PWMCompare;
uint16a;
uint8bSwitchState1=0;
uint8bSwitchState2=0;
uint8bSwitchState3=0;
uint8bSwitchState4=0;
uint8bSwitchState5=0;
PWM_Start();
Timer_Start();
Counter_Start();
LCD_Start();
LCD_Init();
LCD_Position(0,0);
LCD_PrintString("PWMCompare:
");
LCD_Position(1,0);
LCD_PrintString("Speed:
");
LCD_Position(1,11);
LCD_PrintString("r/min");
PWM_WriteCompare(50);
LCD_Position(0,13);
LCD_PrintNumber(PWM_ReadCompare());
for(;;)
{
/*占空比增大*/
bSwitchState1<<=1;
bSwitchState1&=0xFE;
bSwitchState1|=((SW1_Read())^0x01);
if(bSwitchState1==0xFE)
{
。
。
。
。
。
。
。
。
。
。
。
。
。
}
/*占空比减小*/
bSwitchState2<<=1;
bSwitchState2&=0xFE;
bSwitchState2|=((SW2_Read())^0x01);
if(bSwitchState2==0xFE)
{
while(!
SW2_Read());
PWMCompare=PWM_ReadCompare();
if(PWMCompare>0)
PWMCompare=PWMCompare-1;
else
PWMCompare=0;
PWM_WriteCompare(PWMCompare);
LCD_Position(0,13);
LCD_PrintNumber(PWMCompare);
if(PWMCompare==9)
{
LCD_Position(0,14);
LCD_PrintString("");
}
if(PWMCompare==99)
{
LCD_Position(0,15);
LCD_PrintString("");
}
}
/*跳到全速正转*/
bSwitchState3<<=1;
bSwitchState3&=0xFE;
bSwitchState3|=((SW3_Read())^0x01);
if(bSwitchState3==0xFE)
{
while(!
SW3_Read());
PWM_WriteCompare(79);
PWMCompare=PWM_ReadCompare();
LCD_Position(0,13);
LCD_PrintNumber(PWMCompare);
LCD_Position(0,15);
LCD_PrintString("");
}
/*跳到全速反转*/
bSwitchState4<<=1;
bSwitchState4&=0xFE;
bSwitchState4|=((SW4_Read())^0x01);
if(bSwitchState4==0xFE)
{
while(!
SW4_Read());
PWM_WriteCompare(21);
PWMCompare=PWM_ReadCompare();
LCD_Position(0,13);
LCD_PrintNumber(PWMCompare);
LCD_Position(0,15);
LCD_PrintString("");
}
/*停止*/
bSwitchState5<<=1;
bSwitchState5&=0xFE;
bSwitchState5|=((SW5_Read())^0x01);
if(bSwitchState5==0xFE)
{
while(!
SW5_Read());
PWM_WriteCompare(50);
PWMCompare=PWM_ReadCompare();
LCD_Position(0,13);
LCD_PrintNumber(PWMCompare);
LCD_Position(0,15);
LCD_PrintString("");
}
/*测速*/
if(Timer_ReadCounter()==0)
{
a=(Counter_ReadCounter()*120)/448;
LCD_Position(1,7);
LCD_PrintNumber(a);
Counter_WriteCounter(0);
if(PWMCompare>=50)
{
LCD_Position(1,6);
LCD_PrintString("");
}
else
{
LCD_Position(1,6);
LCD_PrintString("-");
}
if(a==0)
{
LCD_Position(1,6);
LCD_PrintString("");
LCD_Position(1,8);
LCD_PrintString("");
}
}
}
}
在(。
。
。
。
。
。
。
)处添加占空比增大及增大后液晶上如何变化的代码
no
yes
在主界面下选择Build菜单,点击DC_Motor,编译软件
步骤四:
运行调试
(1)下载程序到开发板并运行
(3)按开关,改变占空比比较值来改变转速;按开关,控制电机正反转和停止。
六、实验注意事项及规范
1.实验开始前检查并关闭电源,检查实验器材是否齐全。
2.实验过程中,接线时注意安全,严格按照接线规则接线,避免造成设备的损坏。
3.实验结束后,关闭设备电源,整理好实验桌后即可离去。
七、实验报告要求
1.根据标准实验报告要求完整说明实验内容、实验步骤,实验器材等相关内容。
2.正确说明实验原理:
3.实验结果及结果分析要求:
(1)编制程序并加以必要的注释
(2)程序执行结果
4.实验思考题
①根据程序解释一下五个按键的功能分别是什么?
从上到下依次为:
增加占空比;减小占空比;全速正转;全速反转;关闭。
②请阐述一下测速那段程序中LCD是如何显示的,与你所观察的一样吗?
占空比越大转速越大,一致。
③在下面表格中记录电机的转速
PWMCompare
0
10
15
85
100
A口
-670
-419
-288
252
653
B口
-677
-416
-272
364
659
注:
若调到有些值时电机不转且转速仍为零,则是因为占空比不够无法启动电机,那么需要继续调整直到电机转动了再调到该值去读取数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PSOC 直流电机 控制 设计 实验 指导
![提示](https://static.bingdoc.com/images/bang_tan.gif)