void main(void) { //各类初始化; while(1) { adc = Get_ADC10bitResult(1); //读取霍尔传感器值 adc = adc/2; //10位ADC,因4V的ADC值为800,转换成实际电流值 if(set_current > adc) //如果设定值大于反馈值? { fb++;if(fb > 1000)fb=1023;WriteTLC5615(fb);//增加占空比,最高加到5V } if(set_current < adc) //如果设定值小于反馈值? { fb--;if(fb < 200)fb=200;WriteTLC5615(fb);//增小占空比,最低减到1V } } } /*整流控制过程如上可实现,但有以下不足, 当设置值与反馈值相差较大时,占空比是逐个增加或减小, 反映时间太慢(>100ms),,,现需要加入PID控制, 当设置值与反馈值相差较大时,大幅度增加或增小占空比, 当设置值与反馈逐渐接近时,再小幅度整占空比, 那样速度会快很多,请问如何实现(<1ms)? 如有方案可私聊我,如果问题解决,必定红包重谢*/ |
评分
查看全部评分
实际应用比这要复杂,
还要考虑关断尖峰,
还是PID为好。。。
不用PID如何实现?
设定值与反馈值相差>300,一次+100?
设定值与反馈值相差100~200,一次+50?
2,不用DAC 直接数字PWM
评分
查看全部评分
评分
查看全部评分
主电路只是简单画草图,
实际是H桥,能明白意思就行,
因为怕单片机会失效造成灾难性后果,
所在加了模拟PWM芯片(可硬件截流),
即使单片机跑飞或死机,可保证初级IGBT不会过流,
主电路已有成熟的方案,
本贴目的是,PID怎么编写?
能够快速响应?
加模拟的PWM怕单片机会失效,
现在模拟电流型PWM芯片有硬件截流功能,
反映速快,
这么大功率的机器,
首先要保证主电路稳定,
再谈后面的控制。。。
楼上有人貌似连控制方式与信号调制方式都搞不清楚混为一谈
你要做PID 主电路建模算出开环传递函数 再设计补偿器 算闭环传递函数 输出电压与占空比之间的关系求出来后 离散化PID参数去编程就行了
评分
查看全部评分
主回用的是模拟PWM芯片,
只接收0-5V电平,所以用了DAC,
上面说的开环传递数,闭环传递数,离散化,
都快把我把蒙了,
主贴写fb++;if(fb > 1000)fb=1000;WriteTLC5615(fb)也能实现,
只是逐个增加占空比,太慢了,怎么加快反映速度?