help! thiết kế mạch DC-DC (buck)

nguyenquoctrung-hhk

Thành Viên PIF
tình hình là em học môn điện tử công suất thầy có cho làm các đề tài, em chọn đề tài thiết kế mạch DC-DC giảm áp. em dự định làm đầu vào 12V đầu ra 5V, mạch dùng PIC16f887 để thiết kế bộ PWM, nhưng em đang gặp khó khăn:
_chưa biết cách tính toán thông số các linh kiện trong mạch như tụ,, transistor, cuộn cảm, didode,..
_lập trình PWM trên con pic, để điều khiện cho con transitor hoặc fet để đóng ngắt.
_giảm được độ gơn sóng ở điện áp ngõ ra 1 cách tối ưu.
_ tài liệu về tính toán các thông số của ngõ ra dòng, áp, công suất, hiệu suất làm việc của mạch.
mong các anh chị giúp đỡ cho em, để em hoàn thành đề tài tốt. em xin cám ơn
 

40701002

Thành Viên PIF
tình hình là em học môn điện tử công suất thầy có cho làm các đề tài, em chọn đề tài thiết kế mạch DC-DC giảm áp. em dự định làm đầu vào 12V đầu ra 5V, mạch dùng PIC16f887 để thiết kế bộ PWM, nhưng em đang gặp khó khăn:
_chưa biết cách tính toán thông số các linh kiện trong mạch như tụ,, transistor, cuộn cảm, didode,..
_lập trình PWM trên con pic, để điều khiện cho con transitor hoặc fet để đóng ngắt.
_giảm được độ gơn sóng ở điện áp ngõ ra 1 cách tối ưu.
_ tài liệu về tính toán các thông số của ngõ ra dòng, áp, công suất, hiệu suất làm việc của mạch.
mong các anh chị giúp đỡ cho em, để em hoàn thành đề tài tốt. em xin cám ơn
"chưa biết cách tính toán thông số các linh kiện trong mạch như tụ,, transistor, cuộn cảm, didode,.." em vào link này http://www.daycounter.com/Calculators/Switching-Converter-Calculator.phtml nhập thông số của bộ buck (áp vào ra ,tần số đóng cắt ,độ gợn ,....) nó sẽ tính giúp em chọn tụ ,cuộn dây,....còn về nguyên lí của mạch này thì lí thuyết người ta viết nhiều lắm em tìm đọc nha.Quan trọng là em quấn cuộn dây cho tốt,nếu mạch buck của em công suất thấp thì cũng không lo lắm (làm đại cũng ra hì hì )tuy nhiên khi mạch công suất lớn , cần chú ý về thời gian phục hồi của diode ,áp ngược đặt lên nó ,trùng dẫn ,....quấn cuộn dây thì phải chọn cỡ dây tùy công suất ,tần số đóng ngắt cao thì phải quan tâm đến hiệu ứng da hoặc quấn bằng dây liz (dây bện từ những dây nhỏ),sách dụng cụ linh kiện của thầy Mỹ cho công thức tính L tỉ lệ với N^2 (N là số vòng ),mua cái lõi feralit ngoài nhật tảo.diode nhanh http://www.st.com/internet/analog/subclass/4.jsp em tìm thêm nha .fet thì có con to Irf 450N,con nhỏ irf 540n,đồ cũ cũng ra nhật tảo luôn ,chỗ mua thì hỏi anh huy.
"_lập trình PWM trên con pic, để điều khiện cho con transitor hoặc fet để đóng ngắt." cái này thì em làm được rồi ,mạch em có hồi tiếp không ? (ổn áp đầu ra )
"_giảm được độ gơn sóng ở điện áp ngõ ra 1 cách tối ưu." hic cái này thì không hiểu sao nữa ,chắc làm rồi mới biết,chắc là có mấy cái gai do nhiễu từ đóng cắt.
 

nguyenquoctrung-hhk

Thành Viên PIF
cám ơn anh! mạch của em dự kiến là như sau:
_khối điều khiển
_khối cách ly
_khối hồi tiếp
_khối chuyển mạch công suất
hic!! trong đó khối điều khiển là quan trọng, bên cạnh đó khối hồi tiếp là đánh giá chất lượng của mạch, khó khăn là em chưa học ADC và TIMER2, vào năm học tiếp, mà bây giờ tình hình là CLB đang bị trỉ hoãn chưa biết ngày nào học,hic!! em tìm hiểu trên mạng là khâu hồi tiếp sẽ hồi tiếp về 1 phần điện áp, ADC sẽ đọc giá trị của điện áp đó và so sánh với 1 điện áp chuẩn đã lập trình trong PIC, sau đó sẽ chuyển qua PWM để điều chỉnh độ rộng xung, yêu cầu là áp đầu ra có mức sai số nhỏ quanh giá trị danh định của nó hic,!
em định làm mạch công suất nhỏ thôi, cỡ tầm 7W, hiệu suất cỡ 80%, thì tần số chuyển mạch là tầm bao nhiêu anh!! em tìm trên mạng có mấy công thức tính mà chăng hiểu nó từ đâu ra, mà tại sao tự nhiên nó chọn tần số luôn, em cũng bó tạy!!, nếu em cho các thông số này trước, sau đó em tính ngược lại thì có vấn đề gì không anh!!
em coi con fet IRF540 thì nó không có điện áp rơi chĩ có điện áp cực đại, dòng cực đại, mà khi tính mình cũng phải tính điện áp rơi trên nó nữa. tìm trên mạng thì kiếm được điện áp bảo hoà cũa nó là 0.44 ở 10A em cũng không rõ là đúng hay sai nữa!!
nếu làm mạch công suất lớn cỡ bao niêu là đủ với mức khả năng của em không anh, mức đó có khó hơn không, nhiều khi em cũng chưa làm bao giờ, nếu được thì có thể em thử!!
 

40701002

Thành Viên PIF
giờ em làm phần cứng trước đi.

- mạch kích fet (sách dtcs 2a có ) ,cấp xung vào xem đáp ứng tần số thế nào.Cái mạch kích tốt cái đã mới làm ăn được.
-cho chạy vòng hở trước xem nó có buck được không đã .Người ta bảo mình tính nhiều nhưng anh nghĩ không cần đâu.E cứ lấy công thức người ta cho tính L và quấn cho ra cuộn cảm có L gần đó.Cách quấn anh nói rồi,chưa cần quan tâm công thức từ đâu ra.
Sau khi em làm được vòng hở rồi tính tiếp chuyện hồi tiếp.Việc chọn tần số đóng cắt căn cứ vào mạch kích của em ,cuộn dây,fet.khi anh làm thì thấy nếu em hạ tần số đóng cắt xuống thì cuộn dây rất nóng(cái này em tìm hiểu thêm khi quấn cuộn dây,vì anh cũng quấn lụi thôi).Còn hiệu suất của mấy mạch này thường rất cao, khoảng 98%.em chọn xung kích từ 5k đến 20k xem sao.
Em cứ làm đi.có làm rồi nó phát sinh ra nhiều thứ rồi đọc tài liệu tìm hiểu tiếp.
 

nguyenquoctrung-hhk

Thành Viên PIF
_các anh chị có slide bài giảng về timer2 đặc biệt là phần PWM cho em xin, tại em đọc trong datasheet thì có 2 thanh ghi CCPLx gì đó em cũng chẳng hiểu nữa, bây giờ em đang cần để lập trình, em tìm trong TUT thì không thấy, mong các anh chị gởi cho em, em xin cám ơn!
_em coi trong datasheet con PIC16f887 thì chỉ ghi dòng ở 2V có vài uA, cho em hỏi ở 5v thì dòng bao nhiêu mA, và công suất tiêu thụ của nó cỡ bao nhiêu?
_ em coi ADC thì ở chổ chọn điện áp nội hay điện áp ngoại, nếu bây giờ mình hồi tiếp 1 điện áp vào chân AN3 thì mình phải chọn điện áp nội để so sánh nó, em coi trong đoạn code chị phương giảng lúc so sánh điện áp em cũng chưa hiểu lắm, so sánh 2.5V tương ứng với giá trị 512 em chưa rõ nữa, nếu bây giờ 0.1 V thì tương ứng với mức nào
_em không hiểu tại sao dòng vào con PIC rất nhỏ, khi cắm cục sạc 5V-350mA thì nó vẫn chạy?

mong các anh chị giải đáp!
 

tungbk

Cố Vấn CLB
Staff member
_các anh chị có slide bài giảng về timer2 đặc biệt là phần PWM cho em xin, tại em đọc trong datasheet thì có 2 thanh ghi CCPLx gì đó em cũng chẳng hiểu nữa, bây giờ em đang cần để lập trình,
Tài liệu hoàn chỉnh chưa có bạn xem tạm slide PWM này và code ví dụ kết hợp ADC và PWM here

_em coi trong datasheet con PIC16f887 thì chỉ ghi dòng ở 2V có vài uA, cho em hỏi ở 5v thì dòng bao nhiêu mA, và công suất tiêu thụ của nó cỡ bao nhiêu?
Cái này xem trang "17.0 Electrical Specifications" có mô tả chi tiết
VD: Supply Current dùng thạch anh ngoài Fosc=4MHz ,Vdd = 5V là 0.8-1.4mA

_ em coi ADC thì ở chổ chọn điện áp nội hay điện áp ngoại, nếu bây giờ mình hồi tiếp 1 điện áp vào chân AN3 thì mình phải chọn điện áp nội để so sánh nó, em coi trong đoạn code chị phương giảng lúc so sánh điện áp em cũng chưa hiểu lắm, so sánh 2.5V tương ứng với giá trị 512 em chưa rõ nữa, nếu bây giờ 0.1 V thì tương ứng với mức nào
Bộ ADC(analog to digital converter) của PIC16F887 có 10 bit tức là ứng với mỗi áp(giá trị analog bất kì 0,1.5,2.9,3V...) bạn có thể biểu diễn thành số (dạng digital 10 bit từ 0b0000000000 đến 0b1111111111 hay từ 0 đến 1023) từ đó tính toán trên giá trị số này . Bộ ADC sẽ lấy áp vào so sánh với áp chuẩn (tương ứng 1024) từ đó quy thành số tương ứng.
VD: áp chuẩn 5V tương ứng 1023 ==> 2.5V tương ứng 1023*2.5/5 = 512 =>0.1V ứng với 1023*0.1/5
Các trường hợp áp lớn hơn 5V đều cho là 1023.
Ta có thể áp chuẩn khác vào 2 chân Vref+ và Vref- khi đó sẽ tính theo áp chuẩn này
VD : 3.3V ứng với 1023 => các áp khác tính như trên
Còn về cơ chế tìm ra số này trong VXL sẽ giới thiệu trên lớp sau bạn nắm đại ý như vậy.

_em không hiểu tại sao dòng vào con PIC rất nhỏ, khi cắm cục sạc 5V-350mA thì nó vẫn chạy?!
Xem trang "17.0 Electrical Specifications" .
Chú ý dòng tiêu thụ bởi PIC16F887 như trong datasheet là 1mA/4MHz (VDD = 5V) hay 250mA/1MHz là rất "LỚN" so với ARM LPC111x do NXP giới thiệu 150uA/MHz ( VDD = 3.3V) hay một vài con MSP430 của TI mình vừa tra trên trang của TI khoảng 200uA/MHz( VDD = 3.3V)

Còn về dòng sink tức là khả năng chịu dòng đi vào từng chân và source là khả năng cấp dòng ra tải ngoài của chân PIC16F887 khoảng 25mA
 

40701002

Thành Viên PIF
e nên làm 1 cái mạch gia công để chia lại điện áp hồi tiếp về trong tầm 0 đến 3.3V hoặc nhỏ hơn.Rồi config Vref của ADC là 3.3V.
đây là đoạn code đọc adc với vref = 3,3v.
void setup_adc(void)
{
ADCON0=0x01; //control operation of A/D module
// AN0-GO_DONE=0:IDLE-ADON=1:enable AN0
ADCON1=0x0E;// ,Vref=3.3v,AN0 IS ANALOG,AN1=> AN10 ARE DIGITAL--configure function of port pin(PIN24-PORTA)
ADCON2=0xA4;// SELECT CLOCK TO......--configure clock source of A/D--FOSC/4
}
long read_adc(void)
{
long adc_value=0;
TRISA=0xFF;
ADCON0bits.GO_DONE=1;
while(ADCON0bits.GO_DONE);
adc_value=ADRESH*256+ADRESL;
return adc_value;
}
 

nguyenquoctrung-hhk

Thành Viên PIF
cám ơn hai anh rất nhiều! bây giờ bước đầu em lập trình mô phỏng trên protues coi nó có buck không đã, chưa dám làm phần cứng. hai anh có thể dành một ít thời gian trao đổi riêng qua email với em được không?hic, nhiều khi em lập trình sai chỗ nào có gì hướng dẫn giùm cho em. Nếu được cho em xin email, hi!
_mà em chưa hiểu cái chỗ 1mA/4MH với 250mA/1MH, mình đang sử dụng thạch anh 4MH là dòng tiêu thụ của nó 1mA như vậy dòng lớn hơn là con PIC tiêu hả anh Tùng! trong khi em dùng cục sạc 350mA không thấy gì hết, hic! nói chung em còn bị rối cái chổ này lắm!!
_ tại vì là em thiết kế mạch nguồn công suất cấp cho tải, mà tải ở đây là 1 con pic và 1 module led, nên em phải tìm hiểu các thông số kỹ thuật về dòng , áp của con pic và led để dựa theo đó mà thiết kế mạch nguồn cấp dòng và áp cho đúng. bên cạnh đó em cũng phải làm báo cáo ghi các thông số kỹ thuật của tải, vì đó là căn cứ để mình làm mạch nguồn!
_ còn cái ADC nếu mình tính toán giá trị áp vào là số lẻ thì sao anh, ví dụ 0.1*1023/5 = 20.46 ?, trong khi mình khai báo kiểu int cho giá trị đọc ADC!!!
 

tungbk

Cố Vấn CLB
Staff member
Mạch công suất làm sao mô phỏng bằng Proteus được nhỉ !!! :) ( Proteus chỉ thích hợp mô phỏng số thôi phần analog ít người dùng ). Bạn có thể tìm hiểu phần mềm PSIM thường dùng cho mạch công suất hoặc ORCAD phần mô phỏng.
Email thì bạn có thể gửi qua mail lớp hoặc mail mình anhtunghcmut08@gmail.com .Nhưng khuyến khích bạn post trực tiếp bài trên này để các bạn khác có thể theo dõi và mọi người trên 4rum có thể giúp bạn nhanh hơn.
Còn về vụ dòng PIC mình nhầm từ 1mA/1Mhz ước lượng 250uA/1Mhz :) như cái tên của nó là dòng tiêu thụ tức là dòng tối thiểu mà nuôi được con PIC chứ k phải dòng tối đa cho phép vào pic.Dòng tối đa cho phép vào các chân PIC là sink/source curent khoảng 25mV .
VD bạn tính cắm dòng trực tiếp 350mA vào chân của PIC thì sẽ có chuyện đó :)
Bạn trình bày rõ ràng ý tưởng muốn làm của mình : sơ đồ nguyên lí , phương pháp , nguồn nuôi...để dễ giúp hơn .Vì thấy bạn chưa rõ ràng lắm với vai trò con PIC trong mạch. Nếu bạn dùng PIC để điều khiển buck thì phải cấp cho nó nguồn ổn định riêng để hoạt động không nên lấy nguồn buck được (có thể chưa ổn định).

(Note : có mấy anh K07 rất pro về mảng này bạn nên tận dụng diễn đàn nhé :) )
 

nguyenquoctrung-hhk

Thành Viên PIF
_em gửi bài báo cáo các anh xem qua để hình dung.View attachment Ð_ tài DC-DC.rar
_thực chất là em dùng 2 con pic, 1 con là điều khiển(mượn của bạn, :))hihi), 1 con + module led là tải (thực chất là cái mạch main pic của em:p), cho nên em sẽ cấp thẳng nguồn 1 chiều 12V (dùng Adapter), chia làm 2 đường:
_1 đường thì vào mạch công suất giảm áp xuống 5V cấp cho PIC(tải)
_1 đường qua 7805 rồi đi vào con PIC (điều khiển)
có các anh chuyên về lĩnh vực này cũng may mắn cho em, mong các anh giúp đỡ, hiện giờ em đang làm song song 2 đề tài, 1 là đồ án môn học'+_+, 2 là cái này '+_+'. hic, mặc dù rất vui:o, vì được làm nhìu đề tài, nhưng cũng rất phê:p. kaka:p
 

nguyenquoctrung-hhk

Thành Viên PIF
các anh xem qua đoạn code, em mới viết thử, rồi góp ý sửa lỗi giùm em! PWM có độ rộng xung không thay đổi, tần số 50kHz.

void SET_TMR2(void)
{
T2CKPS0 = 0; T2CKPS1 = 0; // Prescale = 1
TMR2ON = 1; // enable timer 2
}

void SET_PWM(void)
{
CCP1CON = 0x0C; // enable CCP1
TRISC2 = 0; // chân CCP1 là output
PR2=19; // tan so Pwm la 50Khz, T(chu ki)= PWM Period = [(PR2) + 1] • 1US •(Prescale Value = 1)
}

void main(void)
{
ANSEL=0X00;
ANSELH=0X00;
SET_TMR2();
SET_PWM();
while(1)
{
CCPR1L = a; // a là gia tri duty cycle
}
}

_em đọc một số tài liệu, khi sử dụng PWM là không quan tâm tới bộ postscale, vậy khi timer2 đếm tới PR2 nó có set cờ tràn flag lên hong, nếu không dùng bộ postscale hay nó chỉ reset rồi đếm lại từ đầu không cần báo cờ tràn?
_có tài liệu nói rằng: "Để đảm bảo hoạt động của PWM, ta chỉ cho phép xuất PWM (clear bit TRIS của chân CPP tương ứng) sau khi timer2 tràn (bit ngắt TMR2IF được set), chu kỳ mới vừa mới bắt đầu", em vẫn chưa hiểu lắm, mong anh chị giải đáp giùm em.:(
_opto cách ly quang mình nên dùng loại nào là thích hợp với vi điều khiển, vì sẽ nối chân RC2 con PIC vào chân in của opto, có cần dùng trở để bảo vệ led trong opto, hay transistor kích dòng lên hong mấy anh? em cũng mới biết về nó thui, các anh cho em xin vài mã số tiêu biểu, hihi!!
_ theo suy nghĩ của em thì bộ ADC và PWM là độc lập và làm việc song song với nhau, có đúng như vậy không?
 
theo anh thi code của em đã sử dụng ngắt ADC thi trong hàm interrup không cần lệnh while(GODONE);
và không biết em đã học thuật toán PID chưa. nếu em dùng thuật toán đó để điều khiển thì tốt hơn.
 

nguyenquoctrung-hhk

Thành Viên PIF
em cũng tự đọc tài liệu rồi làm theo, cứ cũng chưa có hiểu hết về chức năng PWM, cái ADC chẳng qua là em hồi tiếp điện áp về rồi so sánh với điện áp mẫu trong con PIC, dùng phương pháp dò chừng nào giá trị điện áp hồi tiếp gần bằng điện áp mẫu, thì sẽ có 2 giá trị CCPRxL tăng lên, rồi giảm xuống, làm cho điện áp ra của mạch công suất xoay quanh 5V. Anh thấy có khả thi lắm không? em không biết nó có ảnh hưởng như thế nào trong lúc con PIC hoạt động, hic!!
 
thực ra PWM chẳng qua là điều độ rộng xung thôi. tức là em tạo ra một tín hiệu xung có chu kỳ cố định sau đó thay đổi thời gian on và off của xung mà thôi. ở đây anh chỉ sợ là em chỉ làm hai công việc lấy mẫu (đọc ADC ) với điều độ rộng xung quá nhanh trong lúc mạch của em chưa đáp ứng kịp. sẽ là điều không tốt. em nên cho delay một khoảng thời gian rồi vào lấy mẫu một lần.
 

nguyenquoctrung-hhk

Thành Viên PIF
em ráp mạch thử òi, thấy đầu vào cục sạc 18V, mà đầu ra 15V, em quên là đang hồi tiếp nữa, giờ chắc con pic die quá, mỗi lần nó hoạt động thì nóng dần lên. mà em thấy không có vi vi điều khiển nó cũng ra 15V nữa, em không biết mắc con fet sai, hay opto bị sai nữa, hey là lập trình có vấn đề hic! anh chị có sợ đồ mạch kích fet IRF540 dùng opto PC817, cho em them khảo coi em mắc đúng chưa nữa, hic! mà em nghi con pic em die thật rồi!!
 

nguyenquoctrung-hhk

Thành Viên PIF
em lắp cái mạch, có một điều là không buck gì hết, em thấy có hiện tượng sau:

_ đo áp ra co 2-3V rồi giảm từ từ, mới biết đó là điện áp của tụ nạp vào rồi xả, em nghĩ có thể con mostfet không kích gì hết, hoặc có thể là cuộn dây

_ cuộn dây em thấy trên mạng thường là tự quấn, nhưng em đi mua cái cuộn dây giống cái điện trở(vì em tính trên lý thuyết cuộn dây có vài mH thôi, dòng ra của mạch cũng nhỏ cỡ 350mA), em không biết cuộn dây mình quấn có cái lõi với cuộn dây đi mua (giống cái điện trở), nó có ảnh hưởng gì không, hay chính vì vậy mà mạch không buck

vì theo em nghĩ cuộn dây là tích năng lượng khi mostfet đóng, và xả ra khi mostfet ngắt vì vậy thời gian xả của nó ngắn hơn thời gian ngắt của mostfet,nên mạch không buck???
 
Top