打印

【PSoC 4试用】滑条电机调速控制系统

[复制链接]
2701|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
reayfei|  楼主 | 2013-11-30 12:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 reayfei 于 2013-11-30 13:00 编辑

滑条电机调速控制系统
一、    原理概述

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

二、    PSOC4系统结构图

file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002.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_image032.jpg
旋转的车轮。

沙发
wangjinlili| | 2013-11-30 19:09 | 只看该作者
很详细 楼主辛苦了

使用特权

评论回复
板凳
meishizhaoshi| | 2013-11-30 19:16 | 只看该作者
正在研究这里 转走了

使用特权

评论回复
地板
shibalihuandao| | 2013-11-30 19:19 | 只看该作者
随着技术的发展,PWM调速已经成为电机调速的成熟方式,顶一个

使用特权

评论回复
5
zgsxhzac| | 2013-11-30 19:24 | 只看该作者
学习一下怎么发试用的贴子

使用特权

评论回复
6
sishangcine| | 2013-11-30 19:27 | 只看该作者
试用贴好多 羡慕嫉妒恨啊

使用特权

评论回复
7
heibaiyinjiag| | 2013-11-30 19:33 | 只看该作者
楼主的签名在打广告啊

使用特权

评论回复
8
taihezhibanh| | 2013-11-30 19:37 | 只看该作者
这么详细啊 学习了 给楼主赞

使用特权

评论回复
9
beiwaroad| | 2013-11-30 19:39 | 只看该作者
这个系统没有漏洞吗

使用特权

评论回复
10
xichengmadia| | 2013-11-30 19:44 | 只看该作者
效果挺好的 借鉴借鉴

使用特权

评论回复
11
engtafanzhuan| | 2013-11-30 19:48 | 只看该作者
随着技术的发展,PWM调速已经成为电机调速的成熟方式

使用特权

评论回复
12
chao11yue| | 2013-11-30 19:53 | 只看该作者
楼主还有其他关于滑条机的资料吗

使用特权

评论回复
13
haidixibahe| | 2013-11-30 19:56 | 只看该作者
不错 下次自己研究研究

使用特权

评论回复
14
Veiko| | 2014-1-17 15:06 | 只看该作者
楼主你好,我想请问如何设置SPI的中断及编写中断服务函数,还请楼主赐教……

使用特权

评论回复
15
Veiko| | 2014-1-17 15:12 | 只看该作者
isr_StartEx(InterruptHandler);这个是怎么用的呢,我的程序中没有找到……

使用特权

评论回复
16
reayfei|  楼主 | 2014-1-20 08:33 | 只看该作者
Veiko 发表于 2014-1-17 15:06
楼主你好,我想请问如何设置SPI的中断及编写中断服务函数,还请楼主赐教…… ...

中断.pdf (512 KB)
请看一下这个文档吧,相信对你有帮助。

使用特权

评论回复
17
Veiko| | 2014-1-26 01:16 | 只看该作者
reayfei 发表于 2014-1-20 08:33
请看一下这个文档吧,相信对你有帮助。

谢谢,已经自已找到默认的中断服务函数搞定了,呵呵

使用特权

评论回复
18
happygirlwz| | 2014-1-26 12:27 | 只看该作者
lz做的还是挺不错的……

使用特权

评论回复
19
xiaoxiaoemo99| | 2014-3-31 09:57 | 只看该作者
请问SLIDER_POS_TO_COMPARE_SHIFT这个值是怎么得到的

使用特权

评论回复
20
jiaoyong110| | 2014-3-31 21:33 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:WiFi包邮:http://item.taobao.com/item.htm?id=19254130983

15

主题

395

帖子

2

粉丝