View Single Post
Old 31-08-2016, 11:43 AM   #1
chaukyo
Nhập môn đệ tử
 
Tham gia ngày: Nov 2015
Bài gửi: 4
:
Hỏi về PID cho mạch nghịch lưu 1 pha dùng PIC8F2431

Chào các anh,
Em đang làm một mạch nghịch lưu 1 pha dùng PIC18F2431 để lái cầu H.
Em đã tạo ra được 4 xung PWM sử dụng modul PCPWM của 18f2431. Băm xung 320 bậc cho toàn chu kỳ và sóng sin thu được khá đẹp (qua mô phỏng).
Hiện tại các anh cho em hỏi:
Em muốn dùng PID để ổn định điện áp sau nghịch lưu thì em phải làm sao?
Các anh ai rành vấn đề này chỉ em với hoặc có tài liệu liên quan thì cho em xin để tham khảo.
Em cảm ơn nhiều!
Code của em viết:
Code:
#include <stdio.h>
#include <stdlib.h>

#include <p18f2431.h>


#pragma config OSC = HS
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config PWRTEN = OFF
#pragma config BOREN = ON
#pragma config BORV = 27
#pragma config WDTEN = OFF
#pragma config WDPS = 32768
#pragma config WINEN = OFF
#pragma config PWMPIN = OFF
#pragma config LPOL = HIGH
#pragma config HPOL = HIGH
#pragma config T1OSCMX = ON
#pragma config MCLRE = ON
#pragma config STVREN = ON
#pragma config LVP = ON
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CP2 = OFF
#pragma config CP3 = OFF
#pragma config CPB = OFF
#pragma config CPD = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRT2 = OFF
#pragma config WRT3 = OFF
#pragma config WRTC = OFF
#pragma config WRTB = OFF
#pragma config WRTD = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTR2 = OFF
#pragma config EBTR3 = OFF
#pragma config EBTRB = OFF

#define _PTIF PIR3bits.PTIF
unsigned int index = 0;
const rom unsigned int sine[320]=
{475, 484, 494, 503, 512, 522, 531, 540, 549, 559, 568, 577, 586, 595, 604, 613,
622, 631, 639, 648, 657, 665, 674, 682, 691, 699, 707, 715, 723, 731, 739, 747,
754, 762, 769, 776, 783, 791, 797, 804, 811, 817, 824, 830, 836, 842, 848, 854,
859, 865, 870, 875, 880, 885, 889, 894, 898, 902, 906, 910, 914, 917, 921, 924,
927, 930, 932, 935, 937, 939, 941, 943, 944, 946, 947, 948, 949, 949, 950, 950,
950, 950, 950, 949, 949, 948, 947, 946, 944, 943, 941, 939, 937, 935, 932, 930,
927, 924, 921, 917, 914, 910, 906, 902, 898, 894, 889, 885, 880, 875, 870, 865,
859, 854, 848, 842, 836, 830, 824, 817, 811, 804, 797, 791, 783, 776, 769, 762,
754, 747, 739, 731, 723, 715, 707, 699, 691, 682, 674, 665, 657, 648, 639, 631,
622, 613, 604, 595, 586, 577, 568, 559, 549, 540, 531, 522, 512, 503, 494, 484,
475, 466, 456, 447, 438, 428, 419, 410, 401, 391, 382, 373, 364, 355, 346, 337,
328, 319, 311, 302, 293, 285, 276, 268, 259, 251, 243, 235, 227, 219, 211, 203,
196, 188, 181, 174, 167, 159, 153, 146, 139, 133, 126, 120, 114, 108, 102, 96,
91, 85, 80, 75, 70, 65, 61, 56, 52, 48, 44, 40, 36, 33, 29, 26, 23, 20, 18, 15,
13, 11, 9, 7, 6, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 6, 7, 9, 11, 13,
15, 18, 20, 23, 26, 29, 33, 36, 40, 44, 48, 52, 56, 61, 65, 70, 75, 80, 85, 91,
96, 102, 108, 114, 120, 126, 133, 139, 146, 153, 159, 167, 174, 181, 188, 196,
203, 211, 219, 227, 235, 243, 251, 259, 268, 276, 285, 293, 302, 311, 319, 328,
337, 346, 355, 364, 373, 382, 391, 401, 410, 419, 428, 438, 447, 456, 466};

void Init_PCPWM();
void set_duty(unsigned int duty);

void main()
{
Init_PCPWM();
while(1)
        {
            if(_PTIF == 1&&PTMRL >=10)
            {
                set_duty(sine[index]);
                index ++;
                _PTIF = 0;
                if(index >=320) index = 0;
            }


        }
}

void Init_PCPWM()
{
PTCON0 = 0x00; //Postscale 1:1, Prescale 1:1, Free Running
PTCON1 = 0x80; //PWM time base is on, count up!
PWMCON0 = 0x30; //Enable PWM0-3, Complementary
PWMCON1 = 0x40;
DTCON = 0x0A; //1.25uS dead-time

PTMRH=0;
PTMRL=0;

PTPERH = 0;
PTPERL = 249; // 16KHz PWM

PDC0H = 0;
PDC0L = 0; //0% duty
PDC1H = 0;
PDC1L = 0;




OVDCOND = 0xFF; //Override disabled
OVDCONS = 0;
FLTCONFIG = 0; //Fault condition disabled
SEVTCMPH = 0;
SEVTCMPL = 0;
}

void set_duty(unsigned int duty)
{
PDC0H = duty>>8;
PDC0L = duty&0xFF;
PDC1H = duty>>8;
PDC1L = duty&0xFF;
}

thay đổi nội dung bởi: chaukyo, 31-08-2016 lúc 11:54 AM.
chaukyo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn