以降压控制器XL1509芯片为核心器件,设计并制作一个降压型直流开关稳压电源。额定输入直流电压为12V时,额定输出直流电压为5V,输出电流最大值为2.0A 。具有过流保护功能,动作电流1.5A±0.1;输出电压程控可调,调节范围:3-7V。 要求: (1)额定输入电压12V下,输出电压偏差<100mV; (2)额定输入电压12V下,最大输出电流:>2.0A; (3)具有过流保护功能,动作电流1.5A±0.1; (4)实现输出电压程控可调,调节范围3-7V,步进0.1V
电路原理图如下:
R3是DA,R4过流保护,R5是采样电阻,接AD
单片机源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "lcd.h"
- #include "adc.h"
- #include "dac.h"
- #include "key.h"
- int main(void)
- {
- u16 adcx;
- float temp;
- u8 t=0;
- u16 dacval=3300;
- u8 key;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
- delay_init(168); //初始化延时函数
- uart_init(115200); //初始化串口波特率为115200
-
- LED_Init(); //初始化LED PD.12
- Adc_Init(); //adc初始化 PA.5
- KEY_Init(); //按键初始化
- Dac1_Init(); //DAC通道1初始化 PA.4
- DAC_SetChannel1Data(DAC_Align_12b_R,dacval);//初始值为0
-
- while(1)
- {
- //GPIO_SetBits(GPIOD,GPIO_Pin_2);
- //程控输出
- if(KEY==1)
- {
- //LED=!LED;
- if(dacval>1500)
- dacval-=200;
- else if(dacval==1500)
- dacval=3300;
- delay_ms(500);
- }
- Dac1_Set_Vol(dacval);
- adcx=Get_Adc_Average(ADC_Channel_5,10); //得到ADC转换值
- temp=(float)adcx*(3.3/4095); //得到ADC电压值*/
- if (temp >= 0.75)
- {
- GPIO_ResetBits(GPIOD,GPIO_Pin_2);
- }
- else
- {
- GPIO_SetBits(GPIOD,GPIO_Pin_2);
- }
- }
- }
- /*ADC用法
- adcx=Get_Adc_Average(ADC_Channel_5,10); //得到ADC转换值
- temp=(float)adcx*(3.3/4096); //得到ADC电压值*/
- /*DAC用法
- DAC_SetChannel1Data(DAC_Align_12b_R, dacval);//设置DAC值
复制代码
所有资料51hei提供下载:
DC POWER_guo.7z
(304.6 KB, 下载次数: 124)
|