• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::

論壇索引


Board index » All Posts (cheece1123)




Re: 請問PID程式問題
#31
中級會員
中級會員


請問各位 我的命令與回授訊號 做相減的時候

出來的誤差值為有小數點的數,不過我再定義的時候都是使用

unsigned char 這樣只能判別整數

我試過用float 可是以pic16f917 來做float pid控制

可以跑的起來嗎??

我有看施慶隆老師的pic16f87x裡面的pid控制

我是看他裡面的控制流程寫的程式

不過他裡面用到16位元的整數對整數的乘法

不知道有沒有人也看這本

因為我看組合語言不太懂

不過我看他書上寫的意思是使用整數做運算 而不是浮點數

不知道有沒有人有相關經驗

小弟pid程式搞很久了還沒突破

希望有人指導

謝謝

發表於: 2008/11/4 11:35
頂部


請問PID程式問題
#32
中級會員
中級會員


以下是我寫的PID程式
void kp_set(void)
{

error = CCPR1L - feedback;

if(error<0)
{
sign = 1;
error_temp = -error; //command - feedback 為負

}
else
{
sign = 0;
error_temp = error; //command - feedback 為正

}
kp_temp = kp*error_temp;



}


void ki_set(void)
{

error_integral = error_integral + error;


if(error_integral<0)
{
signki = 1;
error_integral_temp = -error_integral; //error_difference = error - last_error 為負

}
else
{
signki = 0;
error_integral_temp = error_integral; //error_difference = error - last_error 為正

}
ki_temp = ki*error_integral_temp;

if(signki==1)
{
ki_temp = -ki_temp;
}
else
{
ki_temp = ki_temp;
}

}


void kd_set(void)
{
last_error = error;
error_difference = error - last_error;//這週期的error減上週期的error


if(error_difference<0)
{
signkd = 1;
error_difference_temp = -error_difference; //error_difference = error - last_error 為負

}
else
{
signkd = 0;
error_difference_temp = error_difference; //error_difference = error - last_error 為正

}
kd_temp = kd*error_difference_temp;

if(signkd==1)
{
kd_temp = -kd_temp;
}
else
{
kd_temp = kd_temp;
}

}

在P的部分我用CCPR1L當作設定值 feedback當作回授值

在P的部分運算實驗過沒問題

問題在於說

D部分的last_error = error;
error_difference = error - last_error;//這週期的error減上週期的error
這邊我這樣寫就變成每次怎麼減都為0了
這樣好像就沒有D運算值
可是這樣寫不是等於這次的ERROR減去上一次的ERROR
還是我有寫錯??


另外I部分
error_integral的值是怎麼取的??
程式部分如下
error_integral = error_integral + error;

不過error_integral似乎不知道是怎樣的值

還是我觀念有錯

謝謝大家指教

發表於: 2008/11/3 15:26
頂部


Re: POWER DRIVER 與 MOSFET選擇
#33
中級會員
中級會員


電路圖檔 修正


謝謝

Attach file:



jpg  (0.00 KB)


發表於: 2008/10/18 15:21
頂部


POWER DRIVER 與 MOSFET選擇
#34
中級會員
中級會員


如圖所示

PIC送出PWM訊號給TC4627的POWER DRIVE

在給IRF530的MOSFET

我要問的是說 TC4627的OUT腳位的輸出

如果PIC送出的PWM訊號做DUTY的變換


是否說TC4627的OUT那邊就會從0~15V的變化??

題外話: 將直流無刷馬達正端接於IRF530的D端

D端上面的48V是怎麼來的??

謝謝

Attach file:


Link only for registered users

發表於: 2008/10/17 15:57
頂部


Re: 關於PWM周期算法
#35
中級會員
中級會員


對了 就是那邊設錯

謝謝版大

發表於: 2008/10/16 9:54
頂部


關於PWM周期算法
#36
中級會員
中級會員


我使用PIC16F917

我設定內部震盪頻率4MHZ 定時器分頻值為1

PR2為FFH TMR2為0

套用資料手冊的PWM周期算法為

PWM週期 = (255+1)*4*(1/4MHZ) = 2.56*10e-4

所以pwm頻率為39khz

可是我從pwm腳位量測到的頻率卻為1Khz

這是為什麼呢??

因為我要利用這個頻率設計 RC值

使PWM波輸出變為直流電

感謝回覆

發表於: 2008/10/15 19:35
頂部


Re: PIC16F917 耐壓耐流
#37
中級會員
中級會員


我要控制的單相直流馬達規格為 DC12 V 1A


請問有可能設計一個驅動器 讓我的PIC的PWM輸出經由驅動器

後的電流可以不超過1A 否則驅動器又要燒毀了

發表於: 2008/10/9 20:23
頂部


Re: PIC16F917 耐壓耐流
#38
中級會員
中級會員


不好意思 整體架構的敘述 太過於簡單


我是用PIC16F917的 AN0做一個參考電壓輸入

然後經由AN0 做AD轉換後 把值丟到PWM腳位去輸出

電壓給那台驅動器 而驅動器的電路由於是前人所設計

所以電路圖已經不在 只能確定驅動器可以提升兩倍電壓

因為我要控制DC12伏的直流馬達 PIC輸出電壓不夠

所以須放大來控制 我後來有想到為什麼會把驅動器

燒掉的原因 , 是否是因為我PWM輸出端拉到驅動器的

時候沒有將PWM再用RC低通濾波器將訊號變成直流

再給驅動器 所以導致電流過大而燒毀?? 是否直接用PWM

訊號給驅動器時造成訊號high low的情況所以導致驅動器燒掉

因為我在跑matlab 也適用這塊驅動器 來控制這個直流馬達

就沒有出現燒毀驅動器的問題,改用PIC控制就把驅動器燒毀

目前在想是否是這樣的問題。

發表於: 2008/10/9 0:58
頂部


PIC16F917 耐壓耐流
#39
中級會員
中級會員


這顆IC的耐壓耐流 我查DATASHEET 電壓在5.5V

電流約uA等級 我拿這顆IC來做 單相直流馬達控制

目前有一個驅動器 可以將電壓放大兩倍

結果最近在做實驗 居然把驅動器燒了 我看電流大概有3A

請問可能的原因是不是 我的驅動器有問題??

PIC的電流不是不大嗎??


另外請問有沒有什麼驅動器的電路可以搭配來使用的呢??

發表於: 2008/10/8 16:30

Edited by cheece1123 on 2008年10月08日 16:52:16
頂部


Re: 利用PIC16F917 做風扇板角度控制
#40
中級會員
中級會員


不好意思 再請問

如果我的直流馬達轉移函數為2.6978/1+1.9437s

而我設計出來的kp ki值 各為0.5441與0.22314

請問說在程式的pi控制中 是否就是將AN0 AN1輸出的

誤差值做PI控制,代入PI控制的方程式將Kp Ki值

代入我的0.5441與0.22314後 去驅動直流馬達就行了


而不用程式在去寫相關於直流馬達轉移函數

2.6978/1+1.9437s


就可以達到 pi控制呢??

謝謝

發表於: 2008/9/18 14:40
頂部



« 1 2 3 (4) 5 6 7 »



:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------