A. 基於單片機的可調直流電源設計
我給你一個0~10可調的吧。我剛做的 圖貌似出不來了 北京交通大學 思源0702 設計要求及技術指標 數控直流穩壓電源 (2)輸出電壓Vo=±12V,最大輸出電流Iomax=1A (3)輸出紋波電壓ΔVop-p≤5mV 可控部分: • 1)輸出電壓:0~9.9V步進可調,調整步距0.1V。 • 2)輸出電流:≤500mA。 • 3)精度:靜態誤差≤1%FSR,紋波≤10mV。 • 4)顯示:輸出電壓用LED數碼管顯示。 • 5)電壓調整:由「+」、「-」兩鍵分別控制輸出電壓步進增減。 數顯、控制部分: 查閱網上的數顯可控直流穩壓電源資料,得到以下電路圖: 這種方案不僅對變壓器要求高,而且使用了7塊晶元,連接復雜,其中參數選擇有多處錯誤。我們決定應用其原理,從新設計一套方案。 電路圖如下: 此電路由6部分組成: (1) 正負12V直流穩壓輸出 (2) 數字電路供電電源 (3) 單片機控制系統 (4) D/A轉換及其輸出 (5) 數字顯示 (6) 負反饋可控直流輸出 一、正負12V直流穩壓輸出 電路圖及模擬結果如下:(帶1千歐負載) 交流信號: 二、數字電路供電電源 通過正12V直流穩壓電源與兩個大電阻分壓,得到4V參考電壓,在通過電壓跟隨器為數字電路供電。 其中所選電阻為 電壓跟隨器為LM324 三、單片機控制系統 包括最小系統及各引腳引線。單片機:STC12C4051AD,20引腳DIP封裝,與AT89C2051通用。11.059MHz晶體振盪。 程序原理:設置電壓初始值為5.1V,由P1口的低7位輸出,連接到DAC0832的高8位地址,最低位接電源。然後連接DAC0832的選片線到單片機P3.7口,由P3.7口輸出負跳變,實現DAC的數據鎖存。由於單片機指令周期過短,小於DAC0832的最小負跳變時間間隔。加入de1延時,使晶元輸出正確的模擬電壓。 按加號鍵加0.1V,按減號鍵減0.1V,按鍵掃描時間間隔0.2秒。 完成DA轉換後輸出BCD碼,輸入數顯部分。 程序原碼: org 0000h st: mov r0,#33h ;初始電壓為參考電壓的一半 ljmp st1 ss: call de ;掃描,等待按鍵 jnb p3.4,i0 jnb p3.5,i1 sjmp ss i0:inc r0 ;r0加一,並調用st1 cjne r0,#100,st1 dec r0 ljmp st1 i1:cjne r0,#0,i11 ;r0減一,並調用st1 ljmp st1 i11: djnz r0,st1 ljmp ss st1:mov a,r0 ;輸出的函數 mov p1,r0 clr p3.7 call de1 ;等待晶元接受數據 setb p3.7 mov b,#10 div ab mov r1,b rl a rl a rl a rl a add a,r1 mov p1,a ljmp ss de: mov r7,#200 a3: mov r1,#250 a2: mov r2,#2 a1: djnz r2,a1 djnz r1,a2
B. 基於單片機的數控直流穩壓電源設計 翻譯成英文是什麼
Design of CNC DC power supply based on singlechip .
自我感覺非常標准,呵呵!
C. 基於8051單片機和DAC0832的可調直流穩壓電源設計的匯編語言
51單片機數控直流電源的設計2:
#include <REG52.H>
#include <STDIO.H>
#include <INTRINS.H>
#include <MATH.H>
#define uchar unsigned char
#define uint unsigned int
#define _Nop() _nop_()
#define DAT P0
uchar go;
sbit K1=P3^1;//
第一個鍵
sbit K2=P3^2;//
第二個鍵
sbit K3=P3^3;//
第三個鍵
sbit WR2 = P3^0; //DAC
的控制端
//
位定義
#define Lcd_Data P0 //
定義數據埠
sbit RS = P2 ^ 0; //
定義連接埠
sbit RW = P2 ^ 1;
sbit E = P2 ^ 2;
sbit Busy = P0 ^ 7;
bit hold=0;
bit _Int=0;
bit k =0;
bit m=0; 惠州學院畢業論文bit fushu=0;
bit q=0;
//
全局變數定義
uint DAdat;//
存放送到
DA
的數據 32uint x;
//uchar ADdat;//
存放從
ADC
讀出的數據
uchar vol; //
存放輸入電壓值
uchar keynum;
uchar kyreg;
uchar temp;//
存放功能狀態
uchar hh;
///
數組定義
static code uchar Disp[]="0123456789-";
static code uchar Disp2[]="Error! ";
static code uchar Disp3[]="Vol is:";
//
函數聲明
uchar keyread(void); //
讀鍵函數
uchar keyread2(void); //
讀鍵函數
2
uchar keyread3(void); //
讀鍵函數
3
void reADC(void); //AD
反饋讀數函數
uchar cmp(uchar ADdat,uchar DAdat); //
反饋比較函數基於51單片機數控直流電源的設計void lcdinit(); // LCD
初始化函數
void lcdcmd(uchar cmd); //LCD
寫控制字函數
void lcddata(uchar dat); //LCD
寫數據函數
void seDAC(uchar DAdata);// DAC
送數函數
void delay(uchar t); //
延時函數
void extint(void);
void volchange(); //
輸出電壓自增自減函數
/***********************DAC
送數
*********************/
main() //
主程序
{
unsigned int vol;
uchar i,j,l=0,a=0,b=0,e=0; 33 bit dian=0;
bit o=0,p=0;//
負數標志位、確認標志位
delay(255);
EA=1;
EX0=1;
PX0=1;
IT0=1;
//EX1=1;
//IT1=1;
pp:
a=b=0;dian=0;o=p=0,x=0;
P1=0;
lcdinit();
lcdcmd(0x80);
for(j=0;j<7;j++) //
開機送
0V
並顯示到
LCD
{
lcddata(Disp3[j]);
}
seDAC(128);
DAdat=128;
lcddata('0');
lcddata('0');
lcddata('.');
lcddata('0');
lcddata('V');
while(1)
{
while(!k)
{ delay(200); 34 i=keyread();
if(!m)
{
lcdcmd(0x1);
for(j=0;j<7;j++)
lcddata(Disp3[j]);
m=1;
}
else if(i==11){m=0;goto pp;} //
復位
D. 基於單片機的數控直流穩壓電源
看來有些復雜呀,不過我的思路是,通過變壓器,濾波電路將交流變為一個電壓寬度很大的者流電壓,然後通過改變電位器的位置改變輸出電壓,電位器可以用步進電機控制,單片機控制步進電機的正轉反轉來控制電位器的位置,從而改變電壓,至於精度就得慢慢調節參數改變到合適的。我能想到的是這些了,希望對你有幫助。
E. 我用單片機設計數控直流穩壓電源需要買那些器件啊
最簡單的是變壓器+LM317+DA+AD,就是效率低,網上有這種Proteus的模擬
復雜點的可以把LM317換成集成的DCDC晶元,比如常見的LM2596adj,輸出更穩定的可以用ST的L5972或者TI的STP5430等等都可以做到,當然用分離元件也是可以的,
再難點的可以做隔離式開關電源,沒有基礎還是建議別做這種隔離的。
F. 基於單片機的pi控制直流穩壓電源設計
用單片機,確實可以控制電壓,但是速度很低。
當電壓有所波動的時候,由單片機把它調整回來,就慢的太多了。
那麼,就是:電壓不穩。
因此,不適合作為「穩壓電源」。
G. 單片機做數控直流穩壓電源
http://v.youku.com/v_show/id_XMzg3ODIzNTAw.html,借鑒這個視頻,是0-9.9v的,0.1步進,1v步進的也有,先看看吧
H. 單片機的數控直流穩壓電源最好學哪種單片機啊能不能發個參考數據啊
最簡單的是用最普通的51,足夠了。
1、輸出電壓范圍很大,需要使用大功率三極體來做,場效應管也可以。
2、步進0.1V,這個很容易,程序設計問題。
3、最大電流3A,這個要求很高,決定了大功率晶體管的選型,估計得用金屬封裝的才好(比如TO3封裝的2N3055)。場效應管需要注意工作點的狀態(TO247封裝的,IRFP150這類的)。
4、紋波電壓10mV,這個決定了必須考慮線性電源的方法來做。
5、可預置輸出電壓,這個是程序的問題。
器件:AD可以考慮10位或12位AD,前者是TLC1549,後者是TLC2543。用16位AD,比如AD7705有點浪費。不建議使用單片機自帶AD,精度比較差。
還需要用到DA,可以考慮TLC5615,10位DA。
做這個題目,對於剛剛學完單片機,沒有太多基礎和經驗的人來說,保守一點估計,需要1-2個月。單片機沒有基礎的,就不好說了。以上都是沒有高手指導的狀態。
I. 基於單片機的可調直流電源設計
我給你一個0~10可調的吧。我剛做的
圖貌似出不來了
北京交通大學
思源0702
設計要求及技術指標
數控直流穩壓電源
(2)輸出電壓Vo=±12V,最大輸出電流Iomax=1A
(3)輸出紋波電壓ΔVop-p≤5mV
可控部分:
• 1)輸出電壓:0~9.9V步進可調,調整步距0.1V。
• 2)輸出電流:≤500mA。
• 3)精度:靜態誤差≤1%FSR,紋波≤10mV。
• 4)顯示:輸出電壓用LED數碼管顯示。
• 5)電壓調整:由「+」、「-」兩鍵分別控制輸出電壓步進增減。
數顯、控制部分:
查閱網上的數顯可控直流穩壓電源資料,得到以下電路圖:
這種方案不僅對變壓器要求高,而且使用了7塊晶元,連接復雜,其中參數選擇有多處錯誤。我們決定應用其原理,從新設計一套方案。
電路圖如下:
此電路由6部分組成:
(1) 正負12V直流穩壓輸出
(2) 數字電路供電電源
(3) 單片機控制系統
(4) D/A轉換及其輸出
(5) 數字顯示
(6) 負反饋可控直流輸出
一、正負12V直流穩壓輸出
電路圖及模擬結果如下:(帶1千歐負載)
交流信號:
二、數字電路供電電源
通過正12V直流穩壓電源與兩個大電阻分壓,得到4V參考電壓,在通過電壓跟隨器為數字電路供電。
其中所選電阻為
電壓跟隨器為LM324
三、單片機控制系統
包括最小系統及各引腳引線。單片機:STC12C4051AD,20引腳DIP封裝,與AT89C2051通用。11.059MHz晶體振盪。
程序原理:設置電壓初始值為5.1V,由P1口的低7位輸出,連接到DAC0832的高8位地址,最低位接電源。然後連接DAC0832的選片線到單片機P3.7口,由P3.7口輸出負跳變,實現DAC的數據鎖存。由於單片機指令周期過短,小於DAC0832的最小負跳變時間間隔。加入de1延時,使晶元輸出正確的模擬電壓。
按加號鍵加0.1V,按減號鍵減0.1V,按鍵掃描時間間隔0.2秒。
完成DA轉換後輸出BCD碼,輸入數顯部分。
程序原碼:
org 0000h
st: mov r0,#33h ;初始電壓為參考電壓的一半
ljmp st1
ss: call de ;掃描,等待按鍵
jnb p3.4,i0
jnb p3.5,i1
sjmp ss
i0:inc r0 ;r0加一,並調用st1
cjne r0,#100,st1
dec r0
ljmp st1
i1:cjne r0,#0,i11 ;r0減一,並調用st1
ljmp st1
i11: djnz r0,st1
ljmp ss
st1:mov a,r0 ;輸出的函數
mov p1,r0
clr p3.7
call de1 ;等待晶元接受數據
setb p3.7
mov b,#10
div ab
mov r1,b
rl a
rl a
rl a
rl a
add a,r1
mov p1,a
ljmp ss
de: mov r7,#200
a3: mov r1,#250
a2: mov r2,#2
a1: djnz r2,a1
djnz r1,a2
djnz r7,a3
ret
de1:mov r1,#200
b1: mov r2,#50
b2: djnz r2,b2
djnz r1,b1
ret
end
四、D/A轉換及其輸出
DA轉換晶元的輸出只能為負,所以經過反向比例放大,輸出正向控制電壓。
五、數字顯示
使用了兩塊BCD七段數碼管驅動晶元,分別驅動兩個八段數碼管。(使用A型數碼管,即共陰極)其中第一個數碼管的小數點接電源。
六、負反饋可控直流輸出
採用大功率三極體的共集極組態作為輸出,由LM324進行控制。由DA轉換所得的電壓作為LM324的參考電壓,通過調節反饋電阻來使輸出電壓與數字顯示的電壓一致。
實際電路中,由於三極體選購失誤,暫時不能獲得大功率三極體。我們用一個普通的NPN型三極體來代替,調節反饋電阻的值,實現了功能,誤差在0.05伏特以內,通過四捨五入,可認為數顯電壓值就是實際電壓值。若與實際有偏差,還可以現場調節反饋電阻,校準數顯。
改進:
(1)為使結構緊湊合理、美觀大方,我們准備重新設計電路結構,新的電路板將吸取這次的教訓,提高穩定性和健壯性。
(2)為提高電源的效率,我們准備使用開關型直流電源,降低對功率的要求,提高對效率的要求。
(3)為減少晶元數量,降低成本,降低焊接難度,我們決定使用單片機直接驅動數顯,使用動態顯示。程序如下:(未進行模擬,准備進行硬體模擬。)
org 0000h
bcd:mov a,#12 ;BCD轉換
mov b,#10
div ab
mov r0,a
add a,r0
add a,r0
call dis
mov r4,a
mov a,b
add a,b
add a,b
call dis
mov r5,a
call de
ajmp bcd
dis:mov dptr,#tab
jmp @a+dptr
tab:mov a,#01111110b
ret
mov a,#00110000b
ret
mov a,#01101101b
ret
mov a,#01111001b
ret
mov a,#00110011b
ret
mov a,#01011011b
ret
mov a,#01011111b
ret
mov a,#01110000b
ret
mov a,#01111111b
ret
mov a,#01111011b
ret
de: clr p3.0
setb p3.1
mov p1,r4
call de1
setb p3.0
clr p3.1
mov p1,r5
call de1
ret
de1:mov r1,#200
b1: mov r2,#50
b2: djnz r2,b2
djnz r1,b1
ret
end