qixiyi

【PSoC4】滑条电机调速控制系统

0
阅读(2905)

滑条电机调速控制系统

一、原理概述

电机在各行各业发挥着重要的作用,而电机转速是电机重要的性能指标之一,因而控制电机的转速,使它满足人们的各种需要,显得尤为重要;随着技术的发展,PWM调速已经成为电机调速的成熟方式。

脉宽调制(PWM)是一种对模拟信号电平进行数字编码的方法,它不仅容易由软件来实现,而且从处理器到被控制信号都是数字形式无需数模转化,加上PWM对噪声的抵抗能力强,使得PWM成为目前电机调速的主要方法。

二、PSOC4系统结构图


原理图


引脚配置

三、功能介绍及实现步骤

本文实现基于PSOC4开发套件+L298模块组成系统对直流电机进行调速,通过串口返回PWM占空比,进而了解电机空载的大致转速。

具体的实现步骤为:

(1)打开原理图设计界面,添加PWM模块(TCPWM mode



双击进入属性配置



禁止中断和所有输入信号,设置period值为65535compare值为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(分辨率)参数用于定义定时器的位宽。可根据最大计数值25565535167772154294967295,分别将此值设置为8162432

Period(周期)参数用于定义计数器的周期。定时器组件的最大计数值(或翻转点)等于Period减去1Period减去1是加载到周期寄存器中的初始值。软件可随时使用Timer_WritePeriod() API更改周期寄存器。要使用此API获取等同的结果,必须将定制器中的周期值减去1用作为此函数中的参数。

Trigger Mode(触发模式)参数用于配置触发输入的实现。

Enable Mode(使能模式)参数用于配置定时器的使能条件。

Run Mode(运行模式)参数用于将定时器组件配置为连续运行模式或单次触发模式。

Interrupt(中断) 参数用于配置初始中断源。当发生以下所选的一个或多个事件时,会生成中断。软件可随时重新配置此模式;此参数用于定义初始配置。

(5)添加中断模块(v1.70


本文选择使用上升沿中断。

InterruptType(中断类型)

该参数具有以下三个可能的值:

RISING_EDGE(上升沿)在源信号的上升沿上触发中断。

LEVEL(电平)选择通过DSI以电平敏感类型连接至中断的源。

DERIVED(派生)这是默认设置。中断组件连接到固定功能块(I2CUSBCAN等)时,它会检查“int_signal”的驱动,然后根据所连接的对象派生出相应的中断类型。此自动分配是根据器件的数据手册中的信息进行的。

(6)添加CapSense模块(v1.11


双击进入属性配置





(7)在引脚配置界面中,选择对应引脚。

四、程序解析

intmain()

{

/* 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();

/* Start scanning 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;

}

}

}

五、演示效果图



串口调试助手接收到的信息,PWM的占空比,从而大致了解电机的空载转速。




旋转的车轮。

Baidu
map