
【不敲一行代码】豆包+arduino的直流风扇调速板
简介
【不敲一行代码】豆包+arduino的直流风扇调速板
简介:【不敲一行代码】豆包+arduino的直流风扇调速板开源协议
:Public Domain
描述
【不敲一行代码】豆包+arduino的直流风扇调速板
*本工程仅0标题部分为手写,下方图片为手动拍摄,原理图pcb手绘,其他内容均为AI生成
0.AI教程
视频
https://www.bilibili.com/video/BV13NN3z7Efj/
使用豆包对话式AI+arduino形式生成的代码
对话:
https://www.doubao.com/thread/w59fa4306eb904aba
向AI描述硬件的具体步骤
1.描述使用的平台,例如:arduino,VS CODE,KEIL等
2.描述使用的主控芯片品牌和具体型号,例如:STM32F103C8T6,ESP32C3等
3.需要做什么产品,例如:本次工程的调速风扇
4.产品功能描述,以本工程举例:扭动电位器到最大,风扇转速最大,扭动电位器到最小,风扇转速最小,对应LED灯指示也随之变化,有正反开关,拨到一边是正转,另一边是反转。
5.需要特别注意的点让AI知道并特别注意,例如本工程的:正反转开关切换需要1秒停止两个输出脚PWM以免烧坏电机
6.描述输入口定义(IO脚,输入输出状态,上下拉,频率,协议等)。需要用户输入的传感器,按键,旋钮,编码器,摄像头,音频等对应到MCU的引脚上。例如本工程:旋钮控制快慢,旋钮输入ADC值;开关切换旋转方向,输入IO电平。
7.描述输出口定义(IO脚,输入输出状态,上下拉,频率,协议等)。需要输出给用户的LED灯,屏幕,数码管,提示音,又或者输出给其他器件的信号,IIC控制信号,IIS控制信号,SPI信息,PWM信息等。例如本工程:输出PWM给电机驱动芯片,电机就能旋转快慢,输入给电机驱动芯片不同的引脚就能进行正传反转。这一步对整个项目的架构和理解要求较高。
8.代码需要注意的事项或需要特别的代码架构,本工程AI提示需要注意LED闪烁快慢时间要使用非阻塞式闪烁,避免使用软件delay带来阻塞调速 / 开关检测
9.要求代码清晰备注。
编译烧录:
描述写的差不多以后即可生成第一次代码,生成出来可以不看AI的思考提示,先可以直接复制到开发工具里直接编译,可能会出现编译问题,也可能直接编译通过。
1.编译出问题可以告诉AI进行反馈debug,如果自己有经验也可以自行排除,本工程使用arduino平台较少遇到该问题,后续有其他AI工程使用KEIL的遇到该问题会教大家如何排除。
2.编译没有问题可以直接烧录进MCU看现象。
软件DEBUG:
1.烧录后仔细观察现象。
2.将现象描述清晰并且反馈给AI,AI会根据你的描述现象先排查软件问题,自己有经验也可以自行进行排查。
3.若多次反馈给AI后仍然有错误,则需要考虑是否是硬件问题
4.如果是硬件问题可以考虑软件使用其他方法代替,如果是硬伤没法代替则只能进行硬件飞线,拆换器件等操作
5.重新进行硬件描述的具体步骤、编译烧录、软件DEBUG迭代
1.CH552G 调速风扇控制器
功能特性
- 转速调节:10KΩ 电位器无级调速,最小档位电机停转,最大档位转速最快
- 正反转切换:拨动开关实现风扇正反转切换,切换时自动停止输出 1 秒,保护电机和驱动芯片
- 转速指示:LED 灯以闪烁频率指示转速(无硬件 PWM 适配方案),转速越快闪烁频率越高,停转时 LED 常灭
- 硬件保护:换向时强制停止电机输出 1 秒,避免瞬间换向导致的电机 / 驱动芯片损坏

2.硬件清单
| 器件名称 | 规格 / 参数 | 数量 | 备注 |
|---|---|---|---|
| CH552G 开发板 | - | 1 | 核心控制单元 |
| 直流电机 + 驱动模块 | L9110/L298N(推荐 L9110) | 1 | CH552G IO 口不可直接驱动电机 |
| 10KΩ 线性电位器 | 直插 / 贴片均可 | 1 | ADC 输入调速 |
| 拨动开关 | 2 档拨动开关 | 1 | 正反转切换 |
| LED 灯 | 任意颜色 | 1 | 转速指示 |
| 限流电阻 | 220Ω | 1 | LED 串联限流 |
| 杜邦线 / 面包板 | - | 若干 |
电路连 接 |
3.引脚接线定义
| CH552G 引脚 | 连接器件 | 功能说明 |
|---|---|---|
| P32 | 电位器信号端 | ADC 输入(电位器反接:最大转速 AD=0,停转 AD=255) |
| P14 | 拨动开关 | 正反转切换(高电平 = 正转,低电平 = 反转) |
| P31 | 电机驱动模块 IN1 | 正转 PWM 输出 / 反转低电平 |
| P30 | 电机驱动模块 IN2 | 反转 PWM 输出 / 正转低电平 |
| P11 | LED 灯(串联 220Ω 电阻) | 转速指示(闪烁频率随转速变化) |
| GND/VCC | 电位器 / 开关 / LED | 公共地 / 5V 供电 |
接线注意事项
- 电位器需反接:拧到风速最大时 AD 值为 0,最小风速时 AD 值为 255
- 电机必须通过驱动模块连接,禁止直接接 CH552G IO 口
- LED 需串联 220Ω 限流电阻后再连接 P11 引脚
- 拨动开关未按下时为低电平(反转),按下时为高电平(正转)
4.软件环境
开发工具
- Arduino IDE 1.8.x 或更高版本
- CH55xDuino 核心库(安装教程:https://github.com/DeqingSun/ch55xduino)
编译配置
- 打开 Arduino IDE,安装 CH55xDuino 核心库
- 选择开发板:
工具 > 开发板 > CH55xDuino > CH552 Board - 配置参数:
- 时钟:
24MHz (internal) - USB 设置:
USB-CDC - 上传方式:
USB
- 时钟:
- 上传代码到 CH552G 开发板
代码结构说明
├── fan.ino # 主程序文件
│ ├── setup() # 初始化引脚模式、变量
│ ├── loop() # 主循环(ADC采样、转向检测、电机控制、LED指示)
│ ├── setMotorSpeed() # 电机转速/方向控制函数
│ └── updateLedIndicator() # LED转速指示(闪烁频率控制)
核心逻辑
- ADC 采样:读取 P32 引脚电位器值,反转后转换为 PWM 占空比(0-255)
- 转向检测:实时读取 P14 开关状态,检测到切换时停止电机输出 1 秒
- 电机控制:根据占空比和转向,控制 P31/P30 的 PWM 输出
- LED 指示:将转速值映射为闪烁间隔(20ms~500ms),非阻塞延时实现闪烁
5.许可证
6.免责声明
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程工程成员
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论