当前位置: 首页 > article >正文

基于STM32的智能灯控系统(光敏传感器+WS2812/LED)涉及PWM/DMA/ADC

一、前言这是实验室项目要求实现的一个小功能自己又想试一下写博客都说有帮助所以打算试一下如有错误请指正谢谢大家并且我发现CSDN的各种标题都长得差不多可能看着会很混乱强烈推荐配合目录食用实现的功能亮度或光照变暗时WS2812或者LED自动变亮其中LED可以实现随光照强度自动调整亮度。二、使用到的核心模块STM32F103C8T6、WS2812、LED、光敏传感器。光敏传感器检测环境亮暗光越强电阻越小输出电压变化。有AO 模拟量测亮度和DO 数字量亮 / 暗开关用来做光控灯、亮度检测。配合LED时使用四引脚光敏传感器VCC与GND正常接入面包板AO模拟输出配合ADC使用接入ADC指定的IO引脚引脚持续获取光敏传感器输出的ADC值达到自己设置的阈值触发代码对LED进行点亮并根据光敏传感器输出的ADC时时调整亮度。WS2812模块WS2812 就是自带驱动芯片的 RGB 灯珠。一根信号线就能串很多个发不同数据就能亮任意颜色时序要求很严一般用PWMDMA驱动。若是多个WS2812级联上一个WS2812的DO接入下一个WS2812的DI。三、开发环境STM32cubeMXkeil5使用HAL库开发下载工具为ST-Link。四、实验1原理WS2812光敏传感器光敏传感器WS2812实现天暗自动开灯光敏传感器作用及其运作原理使用四引脚光敏传感器VCC与GND正常接入面包板DO数字输出可通过电位器调节阈值接入设定IO引脚引脚检测到电平变化后触发相应代码则对WS2812进行点亮或者实现其他功能。WS2812作用及其运作原理VCC接5V但是我自己实测接3.3V也没问题GND接GNDDIN接设定的IO引脚。使用TIM生成PWMDMA的形式对WS2812实现控制。并且WS2812有0码、1码和reset三种输入信号的概念可以理解为专属于WS2812的低电平0和高电平1以此来对WS2812模块进行编程可以通过特殊方式下面的原理讲给WS2812生成0码和1码和reset。WS2812原理在指定计数周期下1.25us不同的高电平信号时长能输出0码、1码和reset信号。简单记短高电平 0长高电平 1长低电平 复位。WS2812运作原理每颗灯珠能按照G, R, B绿红蓝三种颜色组合实现炫彩的灯光效果。而要修改其色彩需要对其输入24个bit长度的0码/1码信号进行调整。严格按照G, R, B绿红蓝顺序每种颜色需8个字节长度的0码/1码信号作为颜色数据3种颜色即需要24位。例如红色1111 1111绿色0000 0000蓝色0000 0000红色255,0,0红色1111 1111绿色1111 1111蓝色1111 1111白色255,255,255关于如何调整颜色数据因为涉及到一个计数周期内的高电平时长0码/1码的设置我们考虑使用PWM波通过调节PWM波的占空比实现调整一个时钟周期内的高电平时长从而实现输出0码/1码/reset信号的目的。至于使用DMA是因为WS2812对时序要求十分严格cpu手动控制时可能一个小小的中断甚至可能是因为cpu慢了一点就会导致时序错误其次不使用DMA对cpu占用严重cpu就得一直盯着翻转电平严重干扰cpu执行其他任务。用了 DMACPU 把 “发灯珠数据” 这个活交给 DMA 后自己就能去处理其他任务直接提高效率。一段话总结本项目通过四引脚光敏传感器检测环境亮度光敏电阻随光线强弱改变阻值经模块比较器从 DO 引脚输出高低电平来判断天黑或天亮电平变化触发单片机动作单片机利用定时器 PWMDMA驱动 WS2812 灯珠通过调整 PWM 占空比生成符合时序要求的 0 码、1 码和复位信号按 GRB 顺序控制灯光颜色DMA 保证时序精准且不占用 CPU最终实现环境变暗时自动点亮 WS2812 灯光的完整流程。实验1STM32cubeMX配置流程引脚配置使用到的引脚如下图串口引脚可用来调试打印电压用不冲突光敏传感器引脚选择接入PA0任意的可输入的引脚配置为默认上拉Pull-up。WS2812引脚由于要使用到PWM我们选择TIM1的PWM通道1。引脚为PA8。PWM参数配置PWM参数配置基于我的时钟主频为8MHz如图折叠起来的使用默认参数分频系数不选择分频。计数模式向上计数。自动重装载值9。不使用影子寄存器。计算是否符合WS2812的计数周期1.25us8MHz周期为125ns因为自动重装载值为9则计数器需计数91次则125ns计算10次的时间1.25us符合WS2812严格的时序要求。DMA参数配置模式为正常模式。为TIM1_CH1添加DMA数据搬运方向为内存到外设对应代码中存有WS2812颜色数据的数组到TIM1_CH1通道的寄存器。设置外设地址不自增内存地址自增。设置数据长度为半字。实验1核心代码解读其余配置类代码由STM32cubeMX生成这里不做展示只展示核心代码重要的宏定义与变量#define WS2812_NUM 16 //灯珠数量我买的模块直接集成了16个灯珠 #define WS2812_BITS 24 //每个灯珠的24bit颜色数据位 #define TIM1_ARR 9 //PWM的ARR值能直接修改方便适应其他的主频 //结合主频8MHz、ARR9高电平持续时间 (CCR1) * 时钟周期。要达成0码高电平约0.4us需要CCR31码高电平约0.8us需要CCR6。 #define CODE0_HIGH 3 //根据1.25us的周期我计算出来的0码所需要设置的高电平的占空比 #define CODE1_HIGH 6 //根据1.25us的周期我计算出来的1码所需要设置的高电平的占空比 uint32_t WS2812_buf[WS2812_NUM*WS2812_BITS];//存取WS2812颜色数据WS2812设置颜色函数/** * brief 设置WS2812灯带的颜色 * param r 红色分量 (0-255) * param g 绿色分量 (0-255) * param b 蓝色分量 (0-255) * retval 无 */ void WS2812_SetColor(uint8_t r, uint8_t g, uint8_t b) { // 循环计数器 int8_t i 0, j 0; // 将RGB三色合并为32位数据(格式: GRB) uint32_t color ((uint32_t)g 16) | ((uint32_t)r 8) | (uint32_t)b; // 缓冲区索引记录当前写入位置 uint16_t idx 0; // 双重循环为每一颗LED生成对应的颜色数据 for(j 0; j WS2812_NUM; j) // 遍历所有LED { for(i WS2812_BITS - 1; i 0; i--) // 从高位到低位处理24位颜色数据 { // 检查当前位是否为1 if(color (1 i)) // 如果该位为1 { WS2812_buf[idx] CODE1_HIGH; // 存储表示1的时序数据 } else // 如果该位为0 { WS2812_buf[idx] CODE0_HIGH; // 存储表示0的时序数据 } } } }写入颜色数组函数/** * brief 发送WS2812颜色数据到灯带 * note 通过TIM1的PWMDMA方式发送数据实现精确时序控制 * retval 无 */ void WS2812_SendData(void) { // 停止之前的DMA传输确保通道空闲 HAL_TIM_PWM_Stop_DMA(htim1, TIM_CHANNEL_1); // 启动PWM DMA传输 // 参数1: 定时器句柄 htim1 // 参数2: 定时器通道 TIM_CHANNEL_1 // 参数3: 要发送的数据缓冲区指针 WS2812_buf // 参数4: 数据长度 WS2812_NUM * WS2812_BITS // 说明: DMA会自动将缓冲区中的数据按顺序发送每个数据决定PWM的高电平时间 HAL_TIM_PWM_Start_DMA(htim1, TIM_CHANNEL_1, (uint32_t*)WS2812_buf, WS2812_NUM * WS2812_BITS); // 延时1ms等待DMA传输完成 // 注意: 此延时时间需要根据实际数据量调整 // 如果延时太短可能导致数据未发送完太长会影响响应速度 HAL_Delay(1); }main函数int main(void) { /* 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 */ /* 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_DMA_Init(); MX_TIM1_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ // 初始状态点亮所有LED为白色(200,200,200) WS2812_SetColor(200, 200, 200); WS2812_SendData(); // 发送数据到LED灯带 while (1) { //读取光敏传感器的信号 if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) GPIO_PIN_RESET) { //低于阈值点亮WS2812为白色可自己调整颜色 WS2812_SetColor(200,200,200); WS2812_SendData(); } else { //高于阈值关灯 WS2812_SetColor(0,0,0); WS2812_SendData(); } HAL_Delay(50); //延时用于防止DMA在前一次传输未完成时又被启动导致数据错乱 } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ /* USER CODE END 3 */ }效果演示请关注dy或者b站无敌贵点大王五、实验2原理普通LED光敏传感器光敏传感器LED实现天暗自动开灯并且自调亮度光敏传感器作用及其运作原理使用四引脚光敏传感器VCC与GND正常接入面包板AO模拟输出接入设定IO引脚引脚实时监测光敏传感器的模拟输出触发相应代码对LED进行点亮并调节亮度。LED作用及其运作原理具象体现ADC值对电压的影响。一段话总结通过光敏传感器的模拟输出AO持续获得因光照变化的ADC值再通过实时变化的ADC值实时修改PWM波的占空比从而实现实时修改LED引脚的电压值实现控制LED的开关和亮暗调节。实验2STM32cubeMX配置流程引脚配置使用到的引脚如下图串口引脚可用来打印电压调试用不冲突光敏传感器引脚选择接入PA0任意的可输入的引脚配置为默认上拉Pull-up。LED引脚由于要使用到PWM我们选择TIM1的PWM通道1。引脚为PA8。PWM参数配置PWM参数配置基于我的时钟主频为8MHz如图折叠起来的使用默认参数分频系数7使得频率变成1MHz。计数模式向上计数。自动重装载值999使得周期变成1ms。使用影子寄存器防止PWM波形突变。ADC参数配置使用ADC1通道0独立模式不打开扫描不打开连续转换转换通道数量为1。实验2核心代码解读重要的宏定义和变量/* ADC采样值范围定义 */ #define ADC_MAX 4096 /* ADC最大采样值12位ADC理论最大值4095这里用4096便于计算*/ #define ADC_MIN 1000 /* ADC最小有效采样值用来控制触发LED点亮的阈值值越大点亮LED的亮度越大*/ /* PWM比较值范围定义便于适应不同时钟频率下的PWM值*/ #define PWM_CCR_MAX 999 /* PWM最大比较值对应100%占空比TIM1周期设为999*/ #define PWM_CCR_MIN 0 /* PWM最小比较值对应0%占空比输出低电平*/获取ADC值函数/** * brief 获取ADC采样值8次采样取平均软件滤波 * param void * return uint32_t 返回8次采样的平均值范围0-4095 * note 此函数会阻塞运行直到完成8次采样 * 每次采样间隔取决于ADC转换时间约几微秒 */ uint32_t Get_ADCValue() { uint32_t ADC_Value 0; /* 最终返回的平均值 */ uint32_t sum 0; /* 8次采样的累加和 */ uint32_t count 0; /* 循环计数器 */ /* 1. 启动ADC转换 */ HAL_ADC_Start(hadc1); /* 连续采样8次用于软件滤波 */ for(count 0; count 8; count) { /* 2. 等待转换完成 * HAL_MAX_DELAY无限等待直到转换完成 * 函数会在转换完成后返回 */ HAL_ADC_PollForConversion(hadc1, HAL_MAX_DELAY); /* 3. 读取转换结果并累加 * HAL_ADC_GetValue() 返回12位ADC值0-4095 */ sum HAL_ADC_GetValue(hadc1); /* 注意这里没有停止ADC下次循环继续启动 * 每次循环都 等待-读取确保每次采样独立 */ } /* 4. 计算8次采样的算术平均值 * count8sum是8次总和 * 平均值 总和 / 8 */ ADC_Value sum / count; /* 整数除法自动取整 */ /* 5. 停止ADC降低功耗 * 采样完成后关闭ADC直到下次需要采样再开启 */ HAL_ADC_Stop(hadc1); /* 6. 返回滤波后的ADC值 */ return ADC_Value; }计算并调整CCR的函数/** * brief 将ADC采样值映射到PWM比较值CCR * param ADC_Value 获取的ADC采样值0-4095 * return uint16_t 映射后的PWM比较值0-999 * note 实现ADC值到PWM占空比的线性映射 */ uint16_t Get_CCR(uint32_t ADC_Value) { uint16_t CCR; /* 存储计算得到的PWM比较值 */ /* 映射关系 ADC_MIN (1000) → 0 (LED熄灭) ADC_MAX (4096) → 999 (LED最亮) */ if(ADC_Value ADC_MIN) ADC_Value ADC_MIN; /* 低于下限则取下限最暗 */ if(ADC_Value ADC_MAX) ADC_Value ADC_MAX; /* 高于上限则取上限 最亮*/ /* 线性映射公式 * 公式CCR 999 * (ADC - 1000) / (4096 - 1000) * 将[ADC_MIN, ADC_MAX]区间线性映射到[PWM_CCR_MIN, PWM_CCR_MAX]区间 */ CCR (PWM_CCR_MAX * (ADC_Value - ADC_MIN) / (ADC_MAX - ADC_MIN)); return CCR; /* 返回计算得到的PWM比较值 */ }main函数int main(void) { /* 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 */ /* 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_ADC1_Init(); MX_TIM1_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ //提前打开PWM通道1 HAL_TIM_PWM_Start(htim1, TIM_CHANNEL_1); /* USER CODE END 2 */ /* Infinite loop */ while (1) { //调用函数先获取ADC值在通过ADC值转换成CCR值 uint32_t ADC_ValueGet_ADCValue(); uint16_t dutyGet_CCR(ADC_Value); //设置转换好的CCR值实现控灯效果 __HAL_TIM_SET_COMPARE(htim1, TIM_CHANNEL_1, duty); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }效果演示请关注dy或者b站无敌贵点大王

相关文章:

基于STM32的智能灯控系统(光敏传感器+WS2812/LED)涉及PWM/DMA/ADC

一、前言这是实验室项目要求实现的一个小功能,自己又想试一下写博客,都说有帮助,所以打算试一下,如有错误请指正!谢谢大家!并且我发现CSDN的各种标题都长得差不多,可能看着会很混乱,…...

二十一、图片懒加载指令

目录 一、解释 二、懒加载指令 一、解释 在获取数据,然后渲染过程中,在没显示到屏幕视口中的内容可以先不加载,提升性能;因为可能要加载的图片非常多,用组件包裹不太合适,所以用指令的形式 二、懒加载指…...

攻防世界 misc题如来十三掌

1.工具:CTF-Tools2.解题:下载附件,我们发现如下语句: 夜哆悉諳多苦奢陀奢諦冥神哆盧穆皤三侄三即諸諳即冥迦冥隸數顛耶迦奢若吉怯陀諳怖奢智侄諸若奢數菩奢集遠俱老竟寫明奢若梵等盧皤豆蒙密離怯婆皤礙他哆提哆多缽以南哆心曰姪罰…...

从零拆解ByteTracker:代码逐行解析与实战调优指南

1. 为什么你需要关注ByteTracker? 如果你正在捣鼓视频分析、自动驾驶感知,或者任何需要“盯住”画面里移动物体的项目,那你大概率绕不开多目标跟踪(MOT) 这个技术。简单说,就是让电脑不仅能在每一帧图片里找…...

Flutter Web跨域图片加载的3种实战方案:从CORS配置到性能优化

Flutter Web跨域图片加载的3种实战方案:从CORS配置到性能优化 最近在重构一个面向设计师社区的Flutter Web项目时,我遇到了一个棘手的问题:用户上传到第三方图床的作品集图片,在Web端死活加载不出来,控制台一片鲜红的C…...

Android系统服务揭秘:从system_server到Watchdog的完整生命周期

Android系统服务深度解析:从system_server诞生到Watchdog守护的完整生命旅程 如果你曾经好奇过,当你按下Android设备的电源键,那块冰冷的硬件是如何一步步苏醒,变成一个能响应触摸、运行应用、连接网络的智能伙伴,那么…...

Casdoor SQL注入漏洞(CVE-2022-24124)修复指南:从漏洞分析到安全加固

从CVE-2022-24124看现代身份认证平台的安全纵深防御 最近在梳理团队内部开源组件资产时,一个名为Casdoor的身份认证平台进入了我的视野。作为Casbin生态中的重要一员,它旨在为各类应用提供“开箱即用”的单点登录和用户管理能力。然而,安全领…...

cv_unet_image-colorization教育场景应用:中学历史课AI还原民国课本插图彩色版本

cv_unet_image-colorization教育场景应用:中学历史课AI还原民国课本插图彩色版本 1. 项目背景与教育价值 历史课本中的黑白插图往往是学生理解历史的重要窗口,但单调的黑白色调难以激发学生的学习兴趣。特别是民国时期的课本插图,由于年代久…...

Vue集成photo-sphere-viewer全景插件:打造沉浸式VR看房体验与动态场景切换

1. 从零开始:为什么选择Vue photo-sphere-viewer? 如果你最近看过一些房产App或者装修网站,一定会对那个可以360度无死角“逛”房子的功能印象深刻。手指一划,客厅、卧室、厨房尽收眼底,仿佛真的置身其中。这种沉浸式…...

Unity集成sherpa-onnx实现实时流式语音合成与优化实践

1. 为什么要在Unity里搞离线语音合成? 如果你正在开发一款需要语音交互的Unity应用,比如游戏里的NPC对话、教育软件里的语音讲解,或者任何需要即时语音反馈的交互式应用,那你肯定遇到过一个问题:延迟。传统的云端TTS&a…...

【智能车心得】独轮车平衡控制:从倒立摆模型到串级PID实践

1. 从“独轮杂技”到智能车:平衡控制的魅力与挑战 大家好,我是老张,一个在智能车和机器人领域摸爬滚打了十多年的工程师。今天想和大家聊聊一个特别有意思的话题——独轮车的平衡控制。很多朋友第一次看到智能车竞赛里的独轮车,都…...

Ubuntu 22.04内网环境SSH离线安装全攻略(附常见报错解决方案)

Ubuntu 22.04内网环境SSH离线安装全攻略(附常见报错解决方案) 在企业的数据中心、研发实验室或是某些对网络安全有严格要求的隔离环境中,服务器往往部署在物理隔绝的内网。这种环境下,我们无法像在公有云上那样,简单地…...

飞牛fnOS实战:如何用旧笔记本搭建家庭NAS(Debian内核+VMware详细配置)

飞牛fnOS实战:如何用旧笔记本搭建家庭NAS(Debian内核VMware详细配置) 手边那台退役的旧笔记本,除了积灰和偶尔的怀念,还能做什么?卖掉不值钱,扔掉又可惜。如果你也和我一样,对数据有…...

避开Dify模型配置的3个大坑:Ollama本地部署与Docker网络联调实战

避开Dify模型配置的3个大坑:Ollama本地部署与Docker网络联调实战 最近在帮几个团队搭建基于Dify的AI应用工作流时,发现一个挺有意思的现象:大家都能很快把Dify和Ollama分别跑起来,但一到让它们俩“握手”联调,各种稀奇…...

Windows下用Anaconda一键搞定LabelImg安装(附Python3.8兼容方案)

Windows下用Anaconda一键搞定LabelImg安装(附Python3.8兼容方案) 最近在带几个刚入门计算机视觉的朋友做项目,发现他们第一步就卡在了数据标注工具的安装上。特别是Windows用户,面对各种Python版本冲突、依赖报错,一个…...

UCIe开源生态全景图:从伯克利研究到企业级解决方案(2023最新)

UCIe开源生态全景图:从伯克利研究到企业级解决方案(2023最新) 在芯片设计领域,异构集成正从一种前沿概念,迅速演变为应对摩尔定律放缓的核心策略。对于技术决策者和行业观察者而言,理解支撑这一变革的底层技…...

Pico UnityXR中的手柄射线交互优化与事件封装

1. 从“指哪打哪”到“丝滑切割”:为什么你的VR交互需要优化? 大家好,我是老张,在VR开发这个坑里摸爬滚打快十年了。从最早的Oculus DK1到现在的Pico 4,我经手过的VR项目少说也有几十个。今天想和大家聊聊一个看似基础…...

Pi0机器人控制中心多机协同:ROS分布式系统搭建教程

Pi0机器人控制中心多机协同:ROS分布式系统搭建教程 本文介绍了如何使用ROS搭建Pi0机器人控制中心的多机协同系统,包括主从配置、话题通信、协同算法等核心内容。 1. 引言 多机器人协同系统正在成为机器人领域的重要发展方向。无论是工业生产线上的协作机…...

基于Containerd与Kubernetes 1.28构建生产就绪型AI推理集群

1. 从单节点到生产集群:思路与架构升级 上次我们聊了怎么用一台机器快速搭个Kubernetes单节点集群,跑个AI模型试试水。说实话,那更像是个“玩具”或者开发测试环境,真要把这套东西搬到线上,去服务真实的用户请求&#…...

Ollama + OpenClaw 本地AI助手实战:无需API Key的完全离线解决方案

构建完全离线的AI助手:Ollama与OpenClaw深度整合实战指南 在AI技术快速发展的今天,数据隐私和成本控制成为许多用户关注的焦点。云端AI服务虽然便捷,但存在数据外泄风险、持续付费压力以及网络依赖等问题。有没有一种方案,既能享受…...

YOLO26镜像开箱即用:预装完整依赖,避免环境配置烦恼

YOLO26镜像开箱即用:预装完整依赖,避免环境配置烦恼 你是不是也遇到过这种情况?好不容易找到一个最新的YOLO模型,兴冲冲地准备跑起来试试,结果第一步就被环境配置给卡住了。PyTorch版本不对、CUDA不兼容、依赖包冲突……...

SmallThinker-3B实战教程:用LlamaIndex构建支持COT的私有知识图谱问答

SmallThinker-3B实战教程:用LlamaIndex构建支持COT的私有知识图谱问答 1. 环境准备与快速部署 在开始构建私有知识图谱问答系统之前,我们需要先准备好运行环境。SmallThinker-3B-Preview是一个轻量级但功能强大的模型,特别适合在资源受限的…...

Modbus协议核心功能码0x03与0x10实战解析:从报文结构到工业场景应用

1. 从零开始:为什么0x03和0x10是工业通信的“黄金搭档” 如果你刚开始接触工业自动化,或者在做一些物联网数据采集的项目,Modbus协议这个名字你肯定绕不过去。它就像工业设备之间说的一种“普通话”,简单、通用、老牌。而在Modbus…...

Qwen-Image-2512-SDNQ作品集:看看这个轻量模型能画出多美的图

Qwen-Image-2512-SDNQ作品集:看看这个轻量模型能画出多美的图 想用AI画画,但一听到“模型部署”、“GPU要求”、“代码配置”就头疼?别担心,今天给你介绍一个完全不同的体验。我最近深度测试了一个名为“基于Qwen-Image-2512-SDN…...

海景美女图-FLUX.1镜像免配置部署:开箱即用,无需conda/pip环境搭建

海景美女图-FLUX.1镜像免配置部署:开箱即用,无需conda/pip环境搭建 1. 前言:告别繁琐,拥抱简单 如果你曾经尝试过部署一个AI图像生成模型,大概率经历过这样的痛苦:安装Python、配置conda环境、处理各种依…...

探索分布式鲁棒优化:应对风光不确定性的最优潮流方案

分布式鲁棒优化 关键词:分布式鲁棒优化 风光不确定性 最优潮流 Wasserstein距离 仿真软件:matlabyalmipcplex 参考文档:《多源动态最优潮流的分布鲁棒优化方法》 主要内容:针对大规模清洁能源接入电网引起的系统鲁棒性和经济性协调…...

表贴式永磁同步电机参数辨识:基于MRAS模型自适应的探索

表贴式永磁同步电机的基于MRAS模型自适应的在线电阻,磁链参数辨识模型。 辨识效果较好,仿真时间为10s(因为电机长时间运行对于电机电阻参数影响较大,长时间才能看出算法的有效性),电阻参数辨识误差在小数点后4位,磁链参…...

星甘 V3.2 版本更新:助力项目排期精准化与个性化

人员工作量视图:让项目排期有理有据星甘 V3.2 版本重磅推出了 人员工作量视图。在以往的项目排期里,常出现计划与执行脱节的问题,比如未考虑员工承受能力,导致核心骨干任务过多,部分组员却闲置。而这个新视图能直观展示…...

取证复制避坑指南:FTK+X-Ways在Windows 10虚拟机中的常见错误与解决方案

在虚拟环境中驾驭取证工具:一份来自实战的深度排错手册 如果你最近在Windows 10的虚拟机里折腾FTK Imager和X-Ways Forensics,试图完成一次“教科书般”的取证复制实验,却频频在分区、镜像创建或校验环节卡壳,那么这篇文章就是为你…...

计算机网络知识应用:优化国风模型API服务的网络传输与负载均衡

计算机网络知识应用:优化国风模型API服务的网络传输与负载均衡 1. 引言:当国风AI遇上网络瓶颈 最近在帮一个朋友优化他们团队开发的国风图像生成模型API服务。这个模型挺有意思,叫LiuJuan20260223Zimage,能根据文字描述生成各种…...