【单片机毕业设计选题25032】-基于STM32的污水处理系统

基于STM32的污水处理系统设计

演示视频:

【单片机毕业设计选题25032】-基于stm32的污水处理系统

系统上电后显示“欢迎使用污水处理系统请稍后”两秒后进入正常显示页面。

第一行显示检测到的PH值

第二行显示PH值对应的PWM值

第三行显示检测到的浑浊度值

第四行显示浑浊度值对应的PWM值

主要功能模块原理图:

电源时钟烧录接口:

单片机和按键输入电路:

PWM控制电路:

资料获取地址

初始化代码:

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */

  HAL_Init();

  /* USER CODE BEGIN Init */

    InitVar();

  /* USER CODE END Init */

  /* Configure the system clock */

  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */

  MX_GPIO_Init();

  MX_USART1_UART_Init();

  MX_ADC1_Init();

  MX_TIM3_Init();

  /* USER CODE BEGIN 2 */

//在HAL库初始化串口1后调用

    HAL_Delay(100);

    SetUart1RxToInput();

    HAL_Delay(50);

//LED调光初始化

    HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);  

    HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);  

//uart1打开接收中断

    HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart1RecBuff, 1);

    InitOled();

    InitOledDisp();

  /* USER CODE END 2 */

//系统控制及显示

void SystemControl(void)

{

    char textBuf[20];

    uint16_t tempAD = 0;

    float tempVol = 0;

//计算PH值

//此模块输出电压范围调整为0~3V3,调整方法如下

//需要在PH计放在9.18标准缓冲液里,调节旋转电位器,将输出调整为1.3V

//需要在PH计放在6.86标准缓冲液里,调节旋转电位器,将输出调整为1.7V

//需要在PH计放在PH4.0标准缓冲液里,调节旋转电位器,将输出调整为2.2V

    tempAD = ReadADCChannel(ADC_CHANNEL_0);

    tempVol = tempAD*3.3/4096.0;

    getPhVal = -5.7541*tempVol + 16.654;   //输出电压范围0~3V3   

//led亮度调节

    if(getPhVal<=6.1)

    {

        phDuty = 1000;

    }

    else if(getPhVal<=6.4)

    {

        phDuty = 880;

    }

    else if(getPhVal<=6.6)

    {

        phDuty = 600;

    }

    else if(getPhVal<=6.8)

    {

        phDuty = 450;

    }

    else

    {

        phDuty = 100;

    }

    __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, phDuty);  

//显示PH值  

    sprintf(textBuf,"PH:%3.1f", getPhVal);

    OledShowString(0, 0, (uint8_t*)textBuf, OLED_FONT_8X16); //测试8*16字符

    sprintf(textBuf,"Duty:%3d%%", phDuty/10);

    OledShowString(0, 2, (uint8_t*)textBuf, OLED_FONT_8X16); //测试8*16字符

//计算浑浊度

    tempAD = ReadADCChannel(ADC_CHANNEL_2);

//分压

    tempVol = tempAD*3.3/4096.0;

    getThickVal = -865.68*tempVol + 3291.3;

    if(getThickVal>3000)

    {

        getThickVal = 3000;

    }

//led亮度调节

    if(getThickVal<=300)

    {

        thickDuty = 100;

    }

    else if(getThickVal<=400)

    {

        thickDuty = 300;

    }

    else if(getThickVal<=500)

    {

        thickDuty = 500;

    }

    else if(getThickVal<=600)

    {

        thickDuty = 700;

    }

    else

    {

        thickDuty = 900;

    }

    __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_2, thickDuty);    

//显示水质混浊度

    sprintf(textBuf,"Thick:%4d", getThickVal);

    OledShowString(0, 4, (uint8_t*)textBuf, OLED_FONT_8X16); //测试8*16字符

    sprintf(textBuf,"Duty:%3d%%", thickDuty/10);

    OledShowString(0, 6, (uint8_t*)textBuf, OLED_FONT_8X16); //测试8*16字符

}

此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机毕业设计-远望创客学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值