1.一種3D打印機溫度控制系統(tǒng),其特征在于,包括依次連接的總線接口模塊、寄存器文件、PID運算模塊及溫度采集模塊,PID運算模塊還連接加熱模塊,溫度采集模塊判斷采集到的溫度,若沒有超出預(yù)設(shè)范圍,則將溫度數(shù)據(jù)發(fā)送給PID運算模塊,PID運算模塊計算完成后,輸出有效信號和PID控制量給加熱模塊,加熱模塊采用PWM方式加熱,根據(jù)PID控制量的大小通過PWM方法來控制加熱的時間,PID運算模塊分比例運算、積分運算、微分運算和PID結(jié)果運算四個部分通過硬件實現(xiàn)完成PID運算結(jié)果。
2.根據(jù)權(quán)利要求1所述的溫度控制系統(tǒng),其特征在于,PID運算模塊包括打印頭PID運算模塊和熱床PID運算模塊,加熱模塊包括打印頭加熱模塊和熱床加熱模塊,打印頭PID運算模塊和熱床PID運算模塊分別連接打印頭加熱模塊和熱床加熱模塊。
3.根據(jù)權(quán)利要求1所述的溫度控制系統(tǒng),其特征在于,PID運算模塊結(jié)合Bang-Bang控制來計算控制量,即目標溫度與實時溫度做差,如果差值較大且超過閾值則采用Bang-Bang控制,不然則進行PID運算計算控制量。
4.根據(jù)權(quán)利要求1所述的溫度控制系統(tǒng),其特征在于,PID運算模塊設(shè)置溫度差約束,如果目標溫度和實時溫度差值大于溫度差約束則全功率加熱,如果目標溫度和實際溫度小于0,則輸出0,即停止加熱。
5.根據(jù)權(quán)利要求1所述的溫度控制系統(tǒng),其特征在于,PID運算模塊的運算步驟具體為:
1)第一個周期所完成的運算:
(1)將總線輸入的差值參數(shù)neg_pid_functional_range取反加1,判斷偏差是否小于0,即判斷其最高位是否為0,如果為0則是正數(shù),如果為1則是負數(shù),差值參數(shù)的作用在于如果實時溫度和設(shè)定溫度之間的差值如果大于它,則輸出全功率加熱,相反如果小于則輸出0,將PID運算控制在5度以內(nèi)的精度,其中neg_pid_functional_range為32位數(shù)據(jù);
(2)計算差值error_reg,溫度采集模塊輸出的溫度實時數(shù)據(jù)i_current_temp與總線輸入的目標溫度i_target_temp進行差值計算;
(3)計算當(dāng)前溫度與前一次采集溫度的偏差變化值,即error_ctemp_dState,在PID運算中會涉及到當(dāng)前溫度與前一次采集溫度的偏差值參與微分運算,error_ctemp_dState由當(dāng)前溫度i_current_temp減去前一個運算結(jié)果完成后所采集的溫度i_temp_dState_ex,i_temp_dState_ex則是每一次PID運算模塊輸出后,鎖存在加熱模塊中,等待PID再一次運算時候返回該值;
(4)將當(dāng)前溫度i_current_temp存入寄存器current_temp_1_reg,表示第一周期,將當(dāng)前溫度跟隨寄存器一直保持到第五個周期整體PID運算結(jié)束后再將溫度輸出給加熱模塊,作為下一次實時溫度偏差值的輸入;
(5)輸入有效信號i_valid保存到寄存器valid1_reg中,表示第一周期;
2)第二個周期所完成的運算:
(1)將第一周期寄存器數(shù)據(jù)current_temp_1_reg保存到寄存器current_temp_2_reg中;將第一個周期寄存器數(shù)據(jù)valid1_reg保存到寄存器valid2_reg,表示第二周期;
(2)完成比例運算乘積項pTerm,將PID參數(shù)kp與差值項error_reg相乘,因為kp與error_reg都是32位數(shù)據(jù),相乘則造成數(shù)據(jù)溢出,所以采用截位的方法保留乘積結(jié)果的16位,即pTerm_tmp[47:16],然后保存到寄存器pTerm_reg中,完成微分項計算;
(3)i_kd與error_ctemp_dState進行乘法運算,截位后得運算結(jié)果dTerm_tmp_0[47:16],存入寄存器dTerm_tmp_0_reg;
(4)計算積分項中間變量temp_iState存入寄存器temp_iState_reg,由當(dāng)前差值項error_reg與前一次積分中間變量i_temp_iState_reg_ex相加得出;
(5)判斷信號min_pid_out_reg,max_pid_out_reg,在比較差值參數(shù)pid_functional_range后,如果滿足在差值參數(shù)范圍內(nèi),則繼續(xù)進行PID運算,如果不滿足,則將判斷信號置1,信號min_pid_out_reg置1,則PID運算五個周期后輸出最小值,信號max_pid_out_reg置1,則PID運算五個周期后輸出最大值;
3)第三個周期所完成的運算:
(1)將第二周期寄存器數(shù)據(jù)current_temp_2_reg保存到寄存器current_temp_3_reg中;將第二周期寄存器數(shù)據(jù)max_pid_out_reg和min_pid_out_reg分別保存到寄存器max_pid_out_3_reg和min_pid_out_3_reg;將第二周期寄存器數(shù)據(jù)pTerm_reg保存到寄存器pTerm_3_reg,將第二個周期寄存器數(shù)據(jù)valid2_reg保存到寄存器valid3_reg,表示第三周期;
(2)計算積分累加項temp_iState_constrain,判斷temp_iState_reg是否何在約束范圍內(nèi),如果超過i_temp_iState_max,則賦值i_temp_iState_max,如果小于0,則賦值0,如果在約束范圍內(nèi),則賦值數(shù)據(jù)temp_iState_reg;
(3)計算積分項iTerm,Ki與temp_iState_constrain相乘,截位的結(jié)果保存到寄存器iTerm_reg;
(4)微分項dTerm保存到寄存器dTerm_reg;
4)第四個周期所完成的運算:
(1)將第三周期寄存器數(shù)據(jù)current_temp_3_reg保存到寄存器current_temp_4_reg中;將第三周期寄存器數(shù)據(jù)max_pid_out_3_reg和min_pid_out_3_reg分別保存到寄存器max_pid_out_4_reg和min_pid_out_4_reg;將第三周期寄存器數(shù)據(jù)temp_iState_constrain_reg保存到寄存器temp_iState_constrain_4_reg;將第三周期寄存器數(shù)據(jù)dTerm_reg保存到寄存器dTerm_4_reg,將第三個周期寄存器數(shù)據(jù)valid3_reg保存到寄存器valid4_reg,表示第四周期;
(2)計算PID輸出結(jié)果的加法項,因為PID運算輸出結(jié)果是由pTerm+iTerm–dTerm計算而來,然后為了獲得更快的處理速度,一般將較長的公式拆分,進行分開計算可以增加處理速度,所以,先將pTerm_3_reg和iTerm_reg相加,將結(jié)果保存到寄存器pid_out_4_reg中;
5)第五個周期所完成的運算:
(1)將第四周期寄存器數(shù)據(jù)current_temp_4_reg保存到寄存器current_temp_5_reg中;將第四周期寄存器數(shù)據(jù)temp_iState_constrain_4_reg保存到寄存器temp_iState_constrain_5_reg;將第四周期寄存器數(shù)據(jù)dTerm_reg保存到寄存器dTerm_4_reg,將第四個周期寄存器數(shù)據(jù)valid4_reg保存到寄存器valid5_reg,表示第五周期;
(2)計算PID運算結(jié)果pid_out_tmp,pid_out_4_reg和dTerm_4_reg做差得出結(jié)果項pid_out_5,在PID運算中,設(shè)置了約束范圍,即小于PID_MAX,大于0,如果超出約束范圍,超過則輸出最大PID_MAX,小于則輸出最小值0;
(3)判斷PID運算模塊得出運算結(jié)果o_pid_out,根據(jù)min_pid_out_4_reg,max_pid_out_4_reg信號,來判斷PID的最終輸出結(jié)果,如果兩個信號皆是低電平,則輸出pid_out_tmp/2,否則,min_pid_out_4_reg高電平,輸出0;max_pid_out_4_reg,高電平輸出PID_MAX;
6)第六個周期所完成的運算:
(1)輸出o_valid有效信號,表示PID運算計算完成;
(2)輸出PID運算結(jié)果,輸出當(dāng)前積分累加值o_temp_iState_constrain_ex和當(dāng)前溫度值o_current_temp_ex到加熱模塊作為暫存數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的溫度控制系統(tǒng),其特征在于,加熱模塊包括上次采集溫度寄存器、偏差寄存器以及控制量寄存器,控制量寄存器連接計數(shù)器和邏輯判斷電路;上次采集溫度寄存器與偏差寄存器用于分別儲存上次采集溫度數(shù)據(jù)和偏差數(shù)據(jù),并返回PID模塊參數(shù),計數(shù)器用來控制加熱端口高電平還是電平,以此來控制加熱時間;溫度和偏差數(shù)據(jù)通過判斷PID有效信號和控制量是否為0來控制是否鎖存信號;當(dāng)一次PID運算完畢,輸出有效信號和控制量,則開始一次加熱周期;PID控制量鎖存到控制量寄存器中;計數(shù)器工作期間判斷加熱端口是否加熱,如果加熱則持續(xù)計數(shù),當(dāng)計數(shù)時序滿足一毫秒時,計數(shù)器清零;在計數(shù)器工作時,通過邏輯判斷電路進行邏輯判斷PWM和控制量之間的大小,輸出加熱信號,以此驅(qū)動加熱端口。