Giter Site home page Giter Site logo

national_diansai_project's Introduction

National_Diansai_Project

2023年国赛电源组项目

本代码适用芯片

TI C2000系列 DSP28379
只要符合思路中所述的标准,并且芯片运算速度足够(能够在一个采样周期内完成所有所需计算),那么无所谓用什么芯片。本项目中的代码修改后可以迁移到其他平台。 在本项目中,我将DSP28379的系统时钟频率从默认的200MHz降到了100MHz(节省功耗),PWM模块的频率为100MHz(需要设置从系统时钟频率到PWM模块频率的分频为1/1)。

控制策略

见Simulink文件

控制算法实现思路

先用Simulink搭仿真,然后照着仿真模型的控制部分进行编写。 基本思路:

  1. 对现实系统的状态变量(电压,电流等)进行ADC采样
  2. 基于采样结果进行控制相关的计算(所有计算都必须在下一次采样之前全部完成
  3. 根据计算结果,通过PWM模块输出到现实系统
  4. 跳转到第1步

ADC与PWM的配置:

  • PWM的载波设置为三角波(UPDOWN),载波周期为50us(20kHz),同一对PWM输出互补,两对PWM之间为单极性调制。
  • 每到PWM的载波峰值时,触发ADC(SOC),接着ADC触发中断。这样,ADC的采样周期、单个开关管的开关周期和其中断函数的执行周期与PWM一致,都为Ts=50us,Ts是各个控制算法所必须的关键。Ts在代码中可调,在硬件允许的情况下尽量小。
  • ADC的中断服务函数便是整个控制的关键了,一切控制相关的计算都放在这里进行

关键在于PI控制器、PR控制器、SOGI以及PLL等算法如何实现:

  • PI控制器:不说了,这个很简单,值得一提的是积分方式有两种可选,一是矩形积分,二是梯形积分。我选的是矩形积分,这其实完全够了。
  • PR控制器:关键的传递函数G(s)不好拆分,我采取的方案是直接用MATLAB的c2d函数将连续形式G(s)暴力转成G(z),离散化方法用Tustin(双线性变换法)。当然也可以根据G(s)手算精确的G(z),参见自控原理的离散部分。
  • SOGI:属于PLL的一部分。根据Simulink搭的模型写就行。
  • PLL:这算是交流电题目都需要涉及到的关键,不仅需要根据Simulink搭的模型,还需要考虑到离散系统的特点。如果只是严格按照模型搭,会发现实际运行出来的结果居然超前所需跟踪的波两个采样周期Ts(在最终版本,采样周期为50us)。我就用了个“笨办法”(延迟队列)将SOGI的输出强行延迟了两个采样周期,这样最后输出的时候刚好抵消。后来发现超前问题其实是正常现象,也是符合理论和逻辑的(采样与PLL的输出之间有延迟),就连MATLAB自带的单相锁相环(虽然实现方式并不同)也用了同样的办法来解决这个问题。
  • 以上所有涉及积分器的部分,都一定要注意积分初值和积分上限。这在实际运行中非常关键。

按键输入与OLED显示

采用DSP28379中的XBar模块进行外部中断的输入(按键)。 OLED屏用两个GPIO实现IIC通信。用OLED卖家提供的代码稍加修改即可使用。

心得

多读芯片的英文数据手册,多和硬件交流。

national_diansai_project's People

Contributors

douvahkiin avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.