3183|2

198

帖子

3

TA的资源

一粒金砂(中级)

楼主
 

【PSoC4】滑条电机调速控制系统 [复制链接]

滑条电机调速控制系统
一、            原理概述
电机在各行各业发挥着重要的作用,而电机转速是电机重要的性能指标之一,因而控制电机的转速,使它满足人们的各种需要,显得尤为重要;随着技术的发展,PWM调速已经成为电机调速的成熟方式。
脉宽调制(PWM)是一种对模拟信号电平进行数字编码的方法,它不仅容易由软件来实现,而且从处理器到被控制信号都是数字形式无需数模转化,加上PWM对噪声的抵抗能力强,使得PWM成为目前电机调速的主要方法。
二、            PSOC4系统结构图

file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002.jpg
原理图
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image004.jpg


引脚配置
三、            功能介绍及实现步骤
本文实现基于PSOC4开发套件+L298模块组成系统对直流电机进行调速,通过串口返回PWM占空比,进而了解电机空载的大致转速。
具体的实现步骤为:
(1)    打开原理图设计界面,添加PWM模块(TCPWM mode)
双击进入属性配置
禁止中断和所有输入信号,设置period 值为65535, compare 值为1。这将产生一个0%占空比的PWM。点击Apply 或者OK 以保存设置。
(2)    添加UART模块(SCB mode)
双击进入属性配置
SCB配置为UART标准模式,波特率9600,数据格式8N1。
(3)    添加PORT引脚(Digital Output Pin)
(4)    添加Timer模块(v2.50)
双击进入属性配置
         本文配置Timer定时周期为1s,每间隔1s都会进入一次中断(发送PWM占空比)。
Resolution(分辨率)参数用于定义定时器的位宽。可根据最大计数值255、65535、16777215和4294967295,分别将此值设置为8、16、24或32。
Period(周期)参数用于定义计数器的周期。定时器组件的最大计数值(或翻转点)等于Period减去1。Period减去1是加载到周期寄存器中的初始值。软件可随时使用Timer_WritePeriod() API更改周期寄存器。要使用此API获取等同的结果,必须将定制器中的周期值减去1用作为此函数中的参数。
Trigger Mode(触发模式)参数用于配置触发输入的实现。
Enable Mode (使能模式)参数用于配置定时器的使能条件。
Run Mode(运行模式)参数用于将定时器组件配置为连续运行模式或单次触发模式。
Interrupt(中断) 参数用于配置初始中断源。当发生以下所选的一个或多个事件时,会生成中断。软件可随时重新配置此模式;此参数用于定义初始配置。
(5)    添加中断模块(v1.70)
         本文选择使用上升沿中断。
InterruptType(中断类型)
该参数具有以下三个可能的值:
RISING_EDGE(上升沿) — 在源信号的上升沿上触发中断。
LEVEL(电平) — 选择通过DSI 以电平敏感类型连接至中断的源。
DERIVED(派生) — 这是默认设置。中断组件连接到固定功能块(I2C、USB、CAN 等)时,它会检查“int_signal”的驱动,然后根据所连接的对象派生出相应的中断类型。此自动分配是根据器件的数据手册中的信息进行的。
(6)    添加CapSense模块(v1.11)
双击进入属性配置
(7)在引脚配置界面中,选择对应引脚。
四、            程序解析
int main()
{
    /* Enable global interrupts */
   CyGlobalIntEnable;
   isr_StartEx(InterruptHandler);
   
    /* Start PWM UART Timer and CapSense components */
    UART_1_Start();
   Timer_1_Start();
   MOTOR_CONTROL_Start();
   CapSense_CSD_Start();
    /* Initialize baselines */
   CapSense_CSD_InitializeAllBaselines();
   
    while(1u)
    {
        /* Update all baselines */
       CapSense_CSD_UpdateEnabledBaselines();
        
        /* Startscanning all enabled sensors */
     CapSense_CSD_ScanEnabledWidgets();
   
        /* Wait for scanning to complete */
       while(CapSense_CSD_IsBusy()!= 0);
       /* Display CapSense state using LEDs */
       CapSense_DisplayState();
    }
}
voidCapSense_DisplayState(void)
{
    /* Find Slider Position */
    curPos =CapSense_CSD_GetCentroidPos(CapSense_CSD_LINEARSLIDER0__LS);   
   
    /* Reset position */
    if(curPos == 0xFFFFu)
    {
        curPos =0u;
    }
               
    /* Move bargraph */
    if (curPos != oldPos)
    {
        oldPos =curPos;
        /* Display Slider bargraph */
        if (curPos != 0u)
        {
           MOTOR_CONTROL_WriteCompare((uint32)curPos << SLIDER_POS_TO_COMPARE_SHIFT);
            duty =(((uint32)curPos << SLIDER_POS_TO_COMPARE_SHIFT)*100)/65536;
        }        
    }
}
五、            演示效果图

file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image029.jpg
串口调试助手接收到的信息,PWM的占空比,从而大致了解电机的空载转速。





file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image030.jpg
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image031.jpg
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image032.jpg
旋转的车轮。
此帖出自单片机论坛

最新回复

楼主,你图中的小车多少钱?  详情 回复 发表于 2013-11-30 13:10
点赞 关注
 

回复
举报

2781

帖子

417

TA的资源

五彩晶圆(中级)

沙发
 
楼主,你图中的小车多少钱?
此帖出自单片机论坛

点评

就是玩具车拆的  详情 回复 发表于 2013-12-2 09:35
 
个人签名
 

回复

198

帖子

3

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发qinkaiabc 的帖子

就是玩具车拆的
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表