N76E003at20 XY-LPWM3 -> 3 phase sine generator
本帖最后由 izhadapter 于 2020-1-9 17:12 编辑_mcu.goodboard.ru/viewtopic.php?id=116#p2024
Данный кусок кодапредназначен дляпеределкиготового продукта (XY-LPWM3) который показан на картинке.
Это обычныйгенератор прямоугольных импульсов на три канала.
из него можносделать трехфазный генератор синуса.
....
Это не полный код но основная заготовка с настройками и чтениемтаблицы значений синуса.
Значения таблицысинуса можно сгенерироватьздесь: _daycounter.com/Calculators/Sine-Generator-Calculator2.phtml
Sine Look Up Table Generator Calculator:
второй и третий массив надо просто сместить первый на 1\3 (120 градусов)
_s.taobao.com/search?q=3%E8%B7%AFPWM%E8%84%89&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20200109&ie=utf8
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"
/************************************************************************************************************
* Main function
************************************************************************************************************/
void main(void)
{
P12_PushPull_Mode; // Cofigure pin to PP mode
P10_PushPull_Mode;
P11_PushPull_Mode;
/**********************************************************************
PWM frequency = Fpwm/((PWMPH,PWMPL) + 1) <Fpwm = Fsys/PWM_CLOCK_DIV>
PWM frequency =16MHz/256=62,5KHz
***********************************************************************/
PWM0_P12_OUTPUT_ENABLE; // Enable PWM outputs channel
PWM1_P11_OUTPUT_ENABLE;
PWM2_P10_OUTPUT_ENABLE;
PWM_INT_PWM0; // Inerrupts from 0 channel
PWM_FALLING_INT; //Setting Interrupt happen when PWM0 falling signal
PWMPH = 0x00; //Setting PWM period
PWMPL = 0xff;
PWM0H = 0x00; //Setting PWM duty for 0,1,2 channel
PWM0L = 0x01;
PWM1H = 0x00;
PWM1L = 0x01;
PWM2H = 0x00;
PWM2L = 0x01;
set_EPWM; //Enable PWM interrupt
set_EA; //Enable interrupts
set_LOAD; // Load value from buffers to duty register
set_PWMRUN; // Run PWM
while(1);
}
/************************************************************************************************************
* PWM interrupt subroutine
************************************************************************************************************/
void PWM_ISR (void) interrupt 13
{
static volatile uint8_tcounter;
uint16_t temp;
clr_PWMF; // clear PWM interrupt flag
set_LOAD; //Update duty register from buffers
temp=counter*3;
PWM0L = sine_wave; // Load sine_wave value from table to buffers
PWM1L = sine_wave;
PWM2L = sine_wave;
counter++;
}
好像某宝买过的单独PWM的,也是你设计的吗? 老哥是外国友人吗? PCBBOY1991 发表于 2020-1-9 16:55
老哥是外国友人吗?
俄文不是外国有人是啥呢 хорошая работа, Этот чип действительно очень дешевый. Если вы можете, вы можете попробовать сделать простой VFD с ним.
good job man, this chip is very cheap. You can try make a simple VFD with it.
点赞,这个芯片真的很便宜。如果可以,你可以试着用它做一个简单的变频器。 机翻了一下
这段代码旨在重制图片中所示的成品(XY-LPWM3)。
这是常见的三通道方波发生器。
从中可以制成一个三相正弦波发生器。
....
这不是完整的代码,而是带有设置和读取正弦值表的主要工件。
可在此处生成
正弦表值:_daycounter.com/Calculators/Sine-Generator-Calculator2.phtml 正弦查找表生成器计算器:
您只需要将第二个和第三个数组移动1 \ 3(120度) 也没有电路图
页:
[1]