产品选型

stc单片机输出pwm 基于STC8G1K17的信号转换方案

小编 2024-10-23 产品选型 23 0

基于STC8G1K17的信号转换方案

在昨天的博文

「信号转换问题 | 模拟电路解决方式」 [1] 中对于前天的

「信号转换的解题思路」 进行了实物仿真。尽快其中做了些改进,但是在控制二倍频的三角波的频率、幅值、占空比方面还是有很多的问题。主要表现在:

控制量之间的耦合,特别是频率,占空比对输出信号幅值的影响;频率对于占空比的影响虽然经过改进之后,还是会有部分的影响;输出心慌可失真,这主要是最后一级从方波到三角波转换的过程中,对于信号的直流分量的变化与波形失真之间的关系;最后一点,也是最重要的一点,就是电路非常复杂。

那么,通过一个单片机是否可以完成同样的功能呢。

下面是选用的STC单片机来实现相同的功能。

01设计电路[2]

1.实验电路设计

▲ 实验原理图

▲ 实验电路板

2.单片机固件设置

使用STC的ISP软件对单片机进行硬件设置,设置IRC频率为35MHz。

▲ STC8G1K08单片机硬件设置

下载基础程序之后的单片机开始能够工作。

▲ 下载固件之后的单片机

02单片机程序设计[3]

1.设置PWM输出

STC8G1K 单片机的PWM输出可以有6,7,8,.10等不同的位数。在同样的系统时钟下,不同的位数对应的输出PWM的频率以及精度各不相同。

特别注意:需要在主程序中将PWM输出端口设置为推挽输出模式。

在35MHz下,6bit的PWM频率大约为540kHz。下面是通过510欧姆和0.1uF的电容对输出的PWM波形进行滤波,可以得到比较平滑的直流分量。

▲ 设置PWM输出6BIT

如果设置为8Bit,则输出PWM的波形的频率降低4倍,大约137kHz。通过10k欧姆、0.1uF的阻容滤波,所得到的直流分量可以看到有一些比较明显的波动了。

▲ PWM输出以及滤波后的直流信号 8BIT

2.设置比较器

设置比较器,比较器结果通过CMPOE输出。

特别注意的是,需要明确在主程序中,将比较器的输出通过 PM_PP设置为推挽输出。

#if CMP_ENvoid SetCMPPort(unsigned char ucPort) { if(ucPort * CMP_P3) { ACC = P_SW2; ACC &= ~CMPO_S; P_SW2 = ACC; } else if(ucPort * CMP_P4) { ACC = P_SW2; ACC &= ~CMPO_S; ACC |= CMPO_S; P_SW2 = ACC; }}void CMPInit(void) { CMPCR1 = 0x84; // CMPEN CMPIF PIE NIE PIS NIS CMPOE CMPRFESS // CMPEN:0: Disable Comparator; 1:Enable // CMPIF : Interrupt flag of comparator // PIE : 1 Enable Up edge interrupt // NIE : 1 Enable Down edge interrupt // PIS : 0 : +=P3.7; 1:=ADC_CHS CMPCR1 |= 0x2; // NIS : 0 : -=BandGap; 1 : P3.6 // COMPOE : 1 : Result =P3.4,P4.1 // Compare result. CMPCR1 |= 0x30; // Enable Up and Down Interrupt. CMPCR2 = 0x0; // INVCOMPO: 0 : Positive; 1 : Inverse output // DISFLT: 0 : Enable 0.1us analog filter // LCDTY: Digital Filter}

▲ 比较器输出

在比较器中断中,测量半周期:

3. :初始化TImer0输出

▲ 测试输出波形

▲ 占空比的改变

▲ 改变幅值

03极限测试

三角波的占空比可以从0~100%,分成100个等级进行调节;三角波的幅值从0~256,分成256个等级进行调剂三角波的频率:5.556Hz

这是由于在单片机中进行波形数据区间长度为:buffer =9000 PWM DA输出是Timer0的中断,时间间隔为 ts=200us。 那么,三角波的周期最长为: buffer * ts = 0.18s。对应的频率为5.556Hz

▲ 频率过低的时候出现的波形断续

三角波的最大频率: 250Hz

由于PWM DA输出的时间间隔为0.2ms,所以按照它它的20倍来估计三角波的最短周期为4ms,对应的频率为250Hz。

下面是对应的三角波的频率在300Hz是的波形,可以明显看出三角波的台阶。

▲ 三角波在300Hz是的波形

04结论

通过前面的实验,可以验证,通过一个简单的单片机的电路,便可以完成对应的波形转换的功能。不仅简化了设计,同时也提高的波形转换的性能。

本文中所涉及到的硬软件文件可以从以下链接下载:

「实验AD设计文件和C51程序」 [4]

Reference

[1] 「信号转换问题 | 模拟电路解决方式」 : https://zhuoqing.blog.csdn.net/article/details/106304909

[2] 说明: 「AD工程文件」 :AD\Teaching\2020\SignalChange\Ver8G1K08.SchDoc

[3] 说明: 「单片机软件」 :C51\STC\Test\2020\Teach\Sin2Tri\Sin2TriSTC8G1K.uvproj

[4] 「实验AD设计文件和C51程序」 : https://download.csdn.net/download/zhuoqingjoking97298/12453886

基于STC单片机的角度控制

宁红英,李学平,卢秀,刘芳园

(西安理工大学 信息技术与装备工程学院,陕西 西安 710048)

:利用STC12系列单片机作为控制核心,减速电机作为执行机构,以单圈电位器作为检测元件,在有限范围内实现了角度的精确控制。经过实验测试,在0°~235°的控制范围内,最大误差控制在±1°,保证了控制精度和控制速率;经过实际使用验证了该方案安全、可靠。

:TP215文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.07.010

引用格式 :宁红英,李学平,卢秀,等.基于STC单片机的角度控制[J].微型机与应用,2017,36(7):32-34,38.

0引言

*基金项目:西安理工大学教学研究重点项目(xjy1670)现代工业控制中控制对象的多样性及复杂性,控制系统中各环节的控制精度、控制速度的要求不断提高,对控制系统的性能提出了更高的要求。随着计算机技术的不断发展,信号处理精度已经普遍能够满足要求,所以衡量系统性能的优劣取决于系统中的检测环节及执行机构。执行机构从所用能源进行分类,可分为电动执行机构、气动执行机构以及液压执行机构[1]。控制系统中,角度对应执行机构的典型输出,本文对电动执行机构进行分析,以通用STC系列单片机为控制核心,以单圈电位器作为检测元件,采用PID算法,对执行机构减速电机进行控制,实现角度的精确控制[24]。

1控制系统设计思想

控制系统结构如图1所示,系统结构为典型的单值闭环控制系统,主要由单片机主控系统、驱动系统、执行机构、角度检测及显示等环节构成。

主控系统主要完成信息处理、电机驱动信号输出、驱动显示器件等功能,采用主控芯片STC12C5A60S2单片机,此芯片具有高速、低功耗、超强抗干扰等性能[5]。驱动系统主要根据主控系统的输出信号进行功率放大,驱动后级执行机构,此环节采用专用驱动模块L298N来完成。执行机构采用减速电机,完成被控对象角度的定位。角度检测采用变阻式角度传感器实现,主要完成减速电机转动角度的准确判断,并将角度转换成电压输出,角度调整范围为0~270°,输出电压在一定范围内与角度线性对应,其输出接入到主控系统的A/D转换接口。显示模块采用LCD1602液晶显示器件,主要完成设定值以及实时测量角度的显示。

图2负反馈控制结构系统工作过程形成典型的负反馈控制系统,结构如图2所示。角度传感器与执行机构中的减速电机同轴相连,当减速电机旋转时,角度传感器随之一起旋转,将减速电机的旋转角度转换成电压输出,作为反馈信号,送入到主控系统的A/D转换入口。主控系统接收到此信号之后,与设定值进行比较,得到偏差信号,控制系统一方面根据两者偏差调整PWM输出占空比,控制减速电机的转速,当偏差较大时,减速电机快速转动,随着偏差的不断减小,电机旋转速度趋于平缓,既保证了系统调整速度,又可以减小执行机构定位时旋转角度的超调;另一方面,主控系统根据偏差信号的状态,调整减速电机的旋转方向,最后使系统稳定在设定值上。

2实现方案

2.1硬件电路设计

(1)电机驱动电路

控制信号由STC12C5A16S2单片机输出。由于单片机的直流输出电流非常微弱,不能直接用来驱动电机,必须将输出的控制信号输入到电机驱动电路,进行功率放大,再驱动电机工作。本文中采用驱动芯片L298N构造驱动电路,如图3所示。驱动芯片中ENA、ENB为使能控制端,控制电机的停转,高电平有效;根据设计结构,将单片机的PWM输出端接驱动芯片的使能端ENA,单片机输出端P1.4、P1.5接驱动芯片的输入端,控制电机的正转、反转、停止等状态。

(2)电机旋转角度检测

对于电机角度检测,采用高精度的单圈电位器。减速直流电机转轴与电位器同轴相连,电机旋转带动传感器旋转轴的旋转,传感器产生一个与角度依次对应的输出电压,此电压接入单片机A/D采样端口,作为电机的位置反馈信号,软件处理过程中对所采集的信号进行非线性修正,以提高控制精度。

(3)人机接口

人机接口资源分配如图4所示。本系统中,人机接口主要涉及两个问题,一是参考值的设定,另一个是参考值以及反馈值的实时显示。参数设定采用键盘输入,设置3个按键,对角度进行“加”、“减”、“确定”功能设定;数据显示采用LCD1602液晶显示器件,完成对参考值以及反馈值的实时显示。图5电机驱动软件设计流程

2.2主要模块软件设计

(1)减速电机驱动

电机驱动软件设计流程如图5所示。通过将角度传感器输出信号与设定值进行比较,获得一个偏差信号,首先根据偏差信号的状态确定电机的运行状态,当偏差信号小于0时,控制电机正转;偏差信号大于0时,电机反转;偏差信号等于0时,电机固定在设定位置。其次在控制算法中对此偏差信号进行PID运算,控制PWM输出占空比,调整电机转速[6],实现速度的两级控制,以提高整机的调整效率,减小控制过程中角度的超调量。

(2)A/D转换

STC12C5A60S2系列单片机自带A/D转换接口,分布在P1口,图6为单片器A/D转换流程图。图6(a)为A/D转换主流程图,图6(b)为ADC数据处理过程。数据处理采用求取平均值的方法[7],数据处理过程中多次采样,剔除采样结果中最大及最小值,再求取平均值,以保证采样结果的精确度。

3测量数据及分析

系统搭建并调试完成之后,在0°~235°范围内,每隔5°改变一次设定值,对控制结果进行测试,测试误差在±1°范围内;在数据测试过程中,每改变一次设定值,系统能够非常迅速地达到新的平衡状态且超调量较小,误差曲线如图7所示。

4结论

本文主要论述了控制系统中对过程变量角度的控制,依次映射执行机构的控制过程。系统采用单片机作为主控芯片,结构紧凑、体积小、集成度高、速度快、抗干扰能力强、故障率低、操作方便;软件部分采用结构化设计,只要对程序参数稍加改动就可以很快适应新的环境,系统易维护,集成了数据采集、数据处理、控制电机运行状态等功能,同时也体现了经典控制理论在控制过程中良好的控制效果。经过实际测试,角度在0°~235°时,最大误差可控制在±1°范围。

参考文献

[1] 李开元,刘洪运,王卫东,等.基于STC单片机的温控热计费采暖阀门的设计[J].电子技术应用,2011,37(5):56-59,63.

[2] 郭天祥.51 单片机C语言教程 [M]. 北京 : 电子工业出版社 ,2009.

[3] 赵新.基于PID算法的PWM单片机的帆板控制[J].信息与电脑,2016(7):33-34.

[4] 赫建立,朱龙英,成磊,等.串联机器人轨迹跟踪控制模糊自适应PID算法的误差修正[J].电子技术应用,2015,41(1):60-63,67.

[5] 余松科,方方,李婷,等.PWM调速对直流电机运行特性的影响研究[J].微型机与应用,2015,34(13):28-30,34.

[6] 史敬灼,刘玉.超声电机简单专家PID速度控制[J].中国电机工程学报,2013,33(36):120-125.

[7] 刘春辉,张颖超,许超,等.自动气象站数据采集器的设计[J].电子技术应用,2014,40(6):36-38.

相关问答

STC单片机 直流电机中 PWM 具体怎么使用?

一般用单片机控制直流电机运转的控制方法有两种,一种为电平控制(可能不准确),另一种为PWM控制。如果你选用第一种,你需要为你的直流电机设计一个驱动控制模...

stc单片机 pca做 pwm输出 时怎么把频率降低12分频还是高?

CMOD=0X02;//使用定时器0溢出率作为PWM时钟设置定时器0工作方式2(8位自动重装载)设置定时器0初值,就是溢出率,改变这个值就可以改变PWM输出频率其他的就...

STC单片机PWM输出 最大可以达到多少频率?

STC1T单片机理论上是最高工作频率35MHZ;其最高时钟频率没那么高,不过20多MH应该没问题的,定时器最高频率应该就是20/256MHZ左右了,不需要定时器直接在主循环...

求51 单片机 控制 输出 pwm 波频率范围?

不同的单片机是不同的,拿STC15系列单片机来说:PWM的频率=PCA时钟输入频率/256PCA的时钟源有以下几种:sysclk,sysclk/2,sysclk/4,sysclk/6,sysclk/8...

stc 12c5a60s2 单片机 DAC?

STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度...

单片机PWM 程序是肿么编写的啊,能给一个简单的例子吗?-ZOL问答

有PWM功能的单片机入STC12系列单片机,直接给专用寄存器赋值开启相应定时器就可以了。普通单单片机,PWM需要用自己来调配。比如:#includeunsigne...

STC 15W408AS如何 输出 一段1.5V左右的电压?

STC15W408AS单片机,在有PWM功能的端口输出,设置PWM(如电源5V、30%的PWM设置),需要滤波后得到1.5V直流(可以用LC电路)。STC15W408AS单片机,在有PWM功能...

谁给一个51 单片机 用一个定时器可以 输出 频率一定,占空比可调的 PWM 脉冲例子给我参考一下啊?

一.51没有这样的功能,STC12单片机才有这样的功能,不过你可以用延时函数来产生PWM波形,但比较浪费CPU时间。二.还有一种方法可以用51来实现,但要消耗两个定时...

STC 12C5A60S2 单片机 频率是怎么计算出来的,或者怎么改?

频率计算系统时钟/分频系数/256系统时钟不一定等于晶振频率但对于STC12C5A60S2不专门设置的话系统时钟是等于晶振频率CMOD=0X02分频系数是2PWM频率=...

单片机STC 12c5A60s2自带的 pwm输出 两路 pwm 信号,但是用数字示波器测该引脚时,显示的不是方波?

输出地是像锯齿状有周期但参差不齐的波形,频率十多兆,标准的波形应该是方波吧。我猜测会不会是数字示波器的频率跟不上,还是i/o没加限流电阻原因(该单片机pwm为强推挽/强上拉输出)跪求大侠指点。

猜你喜欢