冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 679|回覆: 0
打印 上一主題 下一主題

[討論] PIC32MX250F128B

[複製鏈接]

2609

主題

0

好友

993

積分

高級會員

Rank: 4

UID
373967
帖子
8806
主題
2609
精華
0
積分
993
楓幣
4418
威望
970
存款
30000
贊助金額
0
推廣
0
GP
1205
閱讀權限
50
在線時間
452 小時
註冊時間
2023-1-12
最後登入
2024-11-9

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-4-24 19:34:02 |只看該作者 |倒序瀏覽
製作數控可調直流穩壓電源需要以下零件:

PIC32MX250F128B 微控制器
電位器
電容
二極體
MOS管
電感
輸出端子
電源轉換器

以下是這些零件的連結腳位:

PIC32MX250F128B 微控制器:

腳位1:MCLR/VPP/RE3
腳位2:VDD
腳位3:VSS
腳位4:RB0/AN2/CN19/PGD2
腳位5:RB1/AN3/CN20/PGC2
腳位6:RB2/AN4/CN21/TCK2
腳位7:RB3/AN5/CN22/TMS2
腳位8:RB4/AN6/CN23/PMD0
腳位9:RB5/AN7/CN24/PMD1
腳位10:VSS
腳位11:RB6/AN8/CN25/PGC3
腳位12:RB7/AN9/CN26/PGD3
腳位13:RB8/AN10/CN27/CTED2
腳位14:RB9/AN11/CN28/CTED1
腳位15:VDD
腳位16:VSS
腳位17:RA0/AN0/CN2/U1RX
腳位18:RA1/AN1/CN3/U1TX
腳位19:RA2/AN12/CN4/OCFB/CTED9
腳位20:RA3/AN13/CN5/OCFA/CTED8
腳位21:RA4/TMS1/CTED7
腳位22:VDD
腳位23:VSS
腳位24:RA5/TCK1/CTED6
腳位25:RA6/OSC1/CLKI/CTED5
腳位26:RA7/OSC2/CLKO/CTED4
腳位27:VDD
腳位28:VSS
腳位29:RB10/CN29/PMD2
腳位30:RB11/CN30/PMD3
腳位31:RB12/CN31/PMRD
腳位32:RB13/CN32/PMWR
腳位33:RB14/INT0/CN33/PMCS1
腳位34:RB15/INT1/CN34/PMCS2
腳位35:VDD
腳位36:VSS
腳位37:AVDD
腳位38:AVSS
腳位39:AN14/CVREF/RA9/CN6/OCFB/CTED10
腳位40

電位器:

電位器需要連接到微控制器的模擬輸入腳位,以調節電源輸出的電壓。

電容:

電容用於穩定電源輸出,並降低輸出中的噪聲。

二極體:

二極體用於防止輸出電壓回流到電源。

MOS管:

MOS管用於控制輸出電壓的大小。

電感:

電感用於穩定輸出電壓,並減少輸出中的漣波。

輸出端子:

輸出端子用於輸出電源電壓。

電源轉換器:

電源轉換器將輸入電壓轉換為所需的輸出電壓,並提供所需的電流。

以下是一些可能有用的程式碼:

初始化設置:

#include <p32mx250f128b.h>
#pragma config FPLLODIV = DIV_1, FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FWDTEN = OFF, FCKSM = CSDCMD, FPBDIV = DIV_1, POSCMOD = XT

void init(void) {
    OSCCONbits.SOSCEN = 0;    //關閉二級晶體振盪器
    OSCCONbits.CLKLOCK = 0;   //解鎖時鐘配置
    OSCCONbits.FRCDIV = 0;    //選擇PLL頻率合成器作為主時鐘源
    CLKDIVbits.RCDIV = 0;     //時鐘分頻器,設置為1
    PB1DIVbits.ON = 1;        //設置PBCLK1頻率為SYSCLK/1
}
電位器讀取:

unsigned int readPotentiometer(void) {
    AD1CHSbits.CH0SA = 2;    //選擇AN2通道為模擬輸入
    AD1CON1bits.SAMP = 1;    //啟動模擬採樣
    while (!AD1CON1bits.DONE);    //等待轉換完成
    return ADC1BUF0;        //返回轉換結果
}
MOS管控制:

void setOutputVoltage(float voltage) {
    if (voltage > 5.0) voltage = 5.0;   //設置最大輸出電壓
    if (voltage < 0.0) voltage = 0.0;   //設置最小輸出電壓

    //計算PWM值

unsigned int pwm = (unsigned int)(voltage / 5.0 * PR2);

//設置PWM
OC1RS = pwm;
}

4. 主函數:

int main(void) {
init(); //初始化設置

//設置PWM模塊
T2CONbits.ON = 0;        //停止計時器2
T2CONbits.TCKPS = 0b000; //時鐘分頻器,設置為1
T2CONbits.T32 = 0;       //16位計時器模式
T2CONbits.TCS = 0;       //選擇內部時鐘源
PR2 = 3999;              //計算PWM週期
OC1CONbits.ON = 0;       //停止輸出比較模塊1
OC1CONbits.OCM = 0b110;  //設置PWM模式
OC1R = 0;                //設置PWM初始值
OC1RS = 0;               //設置PWM脈寬值
OC1CONbits.ON = 1;       //啟動輸出比較模塊1
T2CONbits.ON = 1;        //啟動計時器2

while (1) {
    unsigned int potValue = readPotentiometer();    //讀取電位器值
    float voltage = potValue / 1023.0 * 5.0;         //計算電位器輸入電壓
    setOutputVoltage(voltage);                      //設置輸出電壓
}

return 0;
}



這是程式碼示例,可用於控制PIC32MX250F128B的數控可調直流穩壓電源。

具體的電路和程式碼可能會因應您的實際應用而有所不同。

為了確保電路和程式碼的正確性和安全性,建議在進行任何實際操作之前進行更詳細的研究和測試。
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1彩票
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-11-9 15:22

回頂部