久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: PID熱電偶溫控器制作 Arduino源程序(最終版) [打印本頁]

作者: fbn20050523    時間: 2021-3-21 18:04
標題: PID熱電偶溫控器制作 Arduino源程序(最終版)
引腳對應       avr            arduino

加熱器1       PB4            10                        只能使用PB_XX端口
加熱器2       PH5            8                          只能使用PH_XX端口, 詳細見TIMER.h     #define

熱電偶MAX6675   硬件spi
CS                PB0               53                     詳細見SPIMAX6675.h,只能使用PB_XX端口

SCk              PB1               52                     不要改

S0                PB3(MISO)     50                     不要改
加熱棒       12v   40W (3d打印機噴頭)

PID的3個參數如果加熱器相同基本不需要修改,我的參數,謙虛的說只能保持+-3度左右的一個誤差,細心的網友可以繼續調一調。

程序多使用寄存器操作,具體詳見手冊。使用arduino框架。
程序里面包括了NTC熱敏電阻的ADC,軟件濾波,二分查表的內容,因為那個表格兼容性不好,所以這次只使用熱電偶。
有能力的網友可以更改并使用,請閱讀NTC.h     #define TABLE_LONG  (列表長度)


這個程序已經連續更改3次了,點開主頁看以前的。









紅      pid輸出
藍      當前溫度
綠      目標溫度

Arduino源程序如下:
  1. #include "Arduino.h"
  2. #include "NTC.h"
  3. #include "PID.h"
  4. #include "TIMER.h"
  5. #include "DELAY.h"
  6. #include "SPI_MAX6675.h"

  7. TEMP_PID heart(7.19, 0.40, 32.4, 1, 2048);
  8. TEMP_PID bed(10, 0.023, 305.4, 0.95, 2048);

  9. NTC NTC_1(A13);
  10. NTC NTC_2(A14);
  11. float MAX;

  12. void setup(void)
  13. {
  14.   
  15.   Serial.begin(115200);
  16.   spi_init();
  17.   heart.temp_pid_change_target(200);
  18.   bed.temp_pid_change_target(0);
  19.   temp_timer_port_init();
  20.   temp_timer_on();

  21. }

  22. void loop(){
  23. MAX=spi_read_temp();
  24. delay_nms(1000);
  25.   //NTC_1.temp_ntc_read();
  26.   //NTC_2.temp_ntc_read();
  27.   /*
  28. if(Serial2.available()>6){
  29. float a=Serial2.parseFloat();
  30. float b=Serial2.parseFloat();
  31. float c=Serial2.parseFloat();

  32. heart.temp_pid_change_kp(a);
  33. heart.temp_pid_change_ki(b);
  34. heart.temp_pid_change_kd(c);
  35. Serial2.println("***********************");
  36. Serial2.println(a);
  37. Serial2.println(b);
  38. Serial2.println(c);
  39. Serial2.println("***********************");
  40.   }
  41.   */
  42. }
復制代碼

所有資料51hei提供下載:
2020_2_27 PID temperature.zip (921.48 KB, 下載次數: 191)

作者: 1051798957    時間: 2021-3-28 16:07
建議采集ADC不要用開發板自帶的因為精度不高,您可以加個其他的ADS采集精度高的。可能會降低誤差
作者: redtxd    時間: 2021-4-8 21:24
謝謝樓主分享,這個可以用來做電烙鐵嗎?
作者: fbn20050523    時間: 2021-4-11 14:11
redtxd 發表于 2021-4-8 21:24
謝謝樓主分享,這個可以用來做電烙鐵嗎?

可以的。不過加熱器需要更換,升溫,恒溫。降溫再調,非常耗費時間,需要耐心。如果改端口需要注意下,如#define SPI-CS-PIN。  DDRB/=(1<<SPI-CS-PIN);。這端口也僅僅限制于PBxx了。改成PAxx就需要DDRB用DDRA替換。也就是說你需要一張芯片端口圖和arduino端口圖,在proteus中可以找到。理論上除了硬件spi,其他端口都可以更改。
作者: dxxiaoyun    時間: 2021-4-21 09:23
本帖最后由 dxxiaoyun 于 2021-4-21 15:30 編輯

下載下來的庫文件頭文件放怎么放到arduino IDE目錄里?
我用的是繼電器,不用PDI 直接溫度到了動作差+0~6度。


作者: dxxiaoyun    時間: 2021-4-21 09:24
我用的是繼電器,不用PDI 直接溫度到了動作差+0~6度。
作者: fbn20050523    時間: 2021-4-24 00:17
dxxiaoyun 發表于 2021-4-21 09:23
下載下來的庫文件頭文件放怎么放到arduino IDE目錄里?

您好,arduino ide。點擊項目,添加文件(有的版本不能一次添加,需要操作數次)繼電器根場效應管控制的最大區別就是pwm頻率。單片機自帶的硬件pwm頻率很顯然不適用,因為他頻率太高了,會降低加熱棒壽命。我采用ctc中斷模式進行軟件pwm大約7.68hz,更改中斷頻率就可以降低pwm頻率,OCR0A寄存器和CS20/21/22。可以調整你想要的頻率。

作者: fbn20050523    時間: 2021-4-24 00:31
標題: RE: PID熱電偶溫控器制作 Arduino源程序(最終版)
dxxiaoyun 發表于 2021-4-21 09:23
下載下來的庫文件頭文件放怎么放到arduino IDE目錄里?

我用的定時器0所以是OCR0A,CS02,CS01,CS00。你如果要是新手的話先示波器看一遍波形。proteus仿真一下加熱器大概了解一下,心里有底再買些材料再回來實驗。
作者: fbn20050523    時間: 2021-4-28 20:17
有部分網友反應不會添加項目文件到IDE,這里我直接分享一個全部添加好了的


PID_TEMP_2021_4_24.zip (7.78 KB, 下載次數: 46)

如果哪位網友想想學習PIO開發環境的可以參考以下鏈接
https://blog.csdn.net/qq_39080978/article/details/114879766
https://blog.csdn.net/acktomas/article/details/115393834


作者: liu97    時間: 2021-6-8 13:59
您好,想問問如果測溫熱電偶要從max6675改到ntc100k需要改哪些參數,以及使用ramps時需要怎么接線(有沒有實際接線引腳圖或說明)?非常感謝!
作者: fbn20050523    時間: 2021-6-9 00:00
liu97 發表于 2021-6-8 13:59
您好,想問問如果測溫熱電偶要從max6675改到ntc100k需要改哪些參數,以及使用ramps時需要怎么接線(有沒有 ...



這里加熱器1(加熱棒)應該連接的是第10引腳也就是PB4,熱敏電阻A13,A14.目前就兩個加熱器,理論上你可以擴展n個
NTC.h,#define TABLE_LONG  (列表長度)更改你自己的
列表展示了ADC 0~1024,對應的溫度值(攝氏度)請依據實驗和上拉電阻的大小靈活調整。相鄰兩數據進行線性插補,二分法進行快速查表。
TIMER.cpp 第77行更改如下;

   77    PWM.temp_soft_pwm1_duty=(int) heart.temp_pid_manger(NTC_1.temp_ntc_now());
   78    PWM.temp_soft_pwm2_duty=(int) bed.temp_pid_manger( NTC_2.temp_ntc_now());





main.cpp  更改成這個樣子


28 //MAX=spi_read_temp();
29  delay_nms(500);




30  NTC_1.temp_ntc_read();
31  NTC_2.temp_ntc_read();











RAMPS_1.4_PIN.jpg (237.26 KB, 下載次數: 230)

RAMPS_1.4_PIN.jpg

作者: Beautful    時間: 2021-6-29 09:34
感謝樓主分享,正好在做一個需要PID溫度控制的課題,參考一下
作者: woyaodwn    時間: 2021-12-28 10:12
能改成51的嗎?
作者: mick32    時間: 2022-4-9 01:11
"Can it be changed to 51?"
For 51 it is quite different  but possible..

Maybe it is time to switch to
MAX31855
K-, J-, N-, T-, S-, R-, or E-type thermocouple. The data is output in a signed 14-bit, SPI...
Thanks for code..
作者: fbn20050523    時間: 2022-4-9 20:06
mick32 發表于 2022-4-9 01:11
"Can it be changed to 51?"
For 51 it is quite different  but possible..

首先謝謝你的建議。細心看這個程序是由許多不足的。首先這里spi通訊是針對寄存器和儀表轉換芯片寫的驅動,兼容性就差了許多,此外還缺少一個觀察器來檢測系統運行狀態。遺憾的是我手頭沒有51系列開發板也沒有這方面的編程經驗,這個項目下一步會有一個自動pid校準器與可調溫度曲線類似回流焊。并使用32位芯片來接替。

以下建議希望對你有幫助max31855可以使用軟件spi進行通訊。你可以直接下載開源庫進行通訊,然后xxx.temp_pid_manger(”A::這里直接輸入一個攝氏溫度即可“)計算參數后注入軟件pwm占空比;。要注意的是A段程序是刷新溫度.而不是!發送測量質量等待然后返回!。測量指令要在loop里面執行。
作者: leichangrun    時間: 2022-4-11 15:24
謝謝樓主,最近折騰PT100
作者: zjs500217    時間: 2022-10-8 09:48
下載了,學習一下PID.
作者: 小黑黑2333    時間: 2022-11-17 16:24
為啥庫文件導不進去呀
作者: fbn20050523    時間: 2022-11-21 21:36
小黑黑2333 發表于 2022-11-17 16:24
為啥庫文件導不進去呀

是不是因為文件名稱大寫,或者你直接下載IDE版本的.沒刷出來手動弄一下
作者: sophiajee    時間: 2023-2-20 18:11
最近在學習溫控,學習下
作者: xzsre    時間: 2023-7-3 14:51
最近在學習溫控,學習學習
作者: Yale666    時間: 2023-7-19 09:01
最近在學習PID溫控,感謝分享




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美人人 | 国产激情精品一区二区三区 | 日韩欧美精品在线 | 欧美国产日韩精品 | 欧美日韩久久精品 | 午夜精品一区二区三区在线观看 | 国产精品久久久久久吹潮日韩动画 | 91精品无人区卡一卡二卡三 | 羞羞视频网站免费观看 | 精品一区二区三区在线观看国产 | 国产成人精品区一区二区不卡 | 久久久久黑人 | 欧美日韩精品影院 | 91精品国产一区二区三区 | 欧美日韩精品国产 | 成人国产在线视频 | 夜夜草 | 色播av| 韩日一区二区三区 | 日韩在线第一 | 亚洲精品一区二区三区蜜桃久 | 成人午夜在线 | 欧美性视频在线播放 | 久久久久久久久久久久久九 | 日韩精品一区二 | 伊人艹 | 国产成人综合一区二区三区 | 99精品亚洲国产精品久久不卡 | 日韩美香港a一级毛片免费 国产综合av | 国产精品一区二区日韩 | 一区二区三区免费 | 美女操网站 | 在线观看毛片网站 | 黄色大全免费看 | 国产精品免费在线 | 久久久国产视频 | 激情av免费看 | 国产精品国产精品 | 国产在线资源 | 久久av网 | 国产精品国产三级国产aⅴ中文 |