本文提供马格努斯效应垂直轴风车实验装置的 Arduino 程式原始码与使用说明,与之前公开的 电路图,机械零件表,3D 列印 STL档搭配,就可以轻易完成这个有趣的实验,有兴趣的人可以下载来玩玩看!本实验装置的动态展示如以下影片所示:
Arduino 程式码下载 => iCloud
本专案其他资源 => 电路图,机械零件表,3D 列印 STL档
本程式提供许多命令码,可经由 Arduino 序列埠沟通以控制本程式的行为。命令码列出如下:大小写无区别,(*)为预设值
命令码 | 功能 | 格式/说明 |
M |
讯息显示 On/Off |
M0:讯息不显示 M1:讯息显示 (*) |
T |
Test mode 测试模式 /正常模式 |
T0:正常模式 (*), 根据相位角度对每一电机输出正弦波命令. T1:<保留> T2:测试模式2,每一电机顺时针旋转且速度皆相同。 电机的速度大小由 VR(可变电阻) 和 H指令控制。 |
D |
Phase offset (in degree) 相位偏移(度) 用于对准风向 |
Dnnn:-360 <= nnn <= 360 nnn 表示偏移角度.将电机正弦命令加上nnn以对准风向.使迎风面的转子与背风面的转子旋转方向相反。当迎风面的转子顺时针转动,背风面的转子逆时针转动时,风车顺时针旋转。 范例: D90:命令加 90 度 D180:命令加 180 度 D-55:命令减 -55 度 D0:命令无偏移 (*) |
E |
Enable control 电机个别使能 |
En:电机个别使能控制,n的每一位元(bit)对应一个电机 范例: E0:所有电机禁用 E1:仅启用电机 #1 E2:仅启用电机 #2 E4:仅启用电机 #3 E7:所有电机启用 (*) E3:#1、#2 电机启用 |
H |
High value of motor command 电机命令最大值 |
Hnnn:0 <= nnn <= 100 nnn 表示电机正弦指令的振幅值。 范例: H0:电机停止 H50:50% 电机命令 H100:100% 电机命令 (*) |
L |
Low value of motor command 电机命令最小值 |
Lnnn:0 <= nnn <= 100 nnn 表示电机正弦指令的最小值对最大值的比例。 范例: L0:正常的正弦波,指令的最小值为0。 L30:正弦波为 0 时会映射为 30% 的正弦波振幅 (*) 目的为让电机在改变方向时可以更快速,减少停顿 |
C |
回授方向 顺时针/逆时针 |
CW:顺时针运转 (*) CCW:逆时针运转 由于此编码器无法侦测方向,此命令用于指定回授方向,顺时针时数值为(+),逆时针时数值为(-)。当改变此命令并不表示风车会立即逆转,除非用D指令把相位也偏移180度。尚未熟悉本系统时请勿更改为 CCW。 |
本专案程式码使用步骤说明:
- 将本专案的程式码编译并下载到 Arduino UNO 控制板。
- 开启Arduino 的序列埠监控视窗,Baud Rate设定9600,应该可以观察到数据持续列出。视窗上方为命令码输入处。
- 手动使风车顺时针持续旋转,观察 ABS PLS 的数值由 0,1,2 …20,21 …持续递增,超过 79 后归0,持续反復。若不正确请检查光电感测器接线以及顺序(上/中/下)是否错误。
- 转动 VR 可变电阻使电机开始转动,速度勿太快。
- 输入命令码 “T2“,以切换到 测试模式#2,此时3颗电机应该都要顺时针旋转才正确。
- 如果有电机不旋转请检查接线,或再调大VR。如果电机是逆时针旋转则对调电机接线。
- 输入命令码 “E1“,确认只有 电机#1 会转动。
- 输入命令码 “E2“,确认只有 电机#2 会转动。
- 输入命令码 “E4“,确认只有 电机#3 会转动。
- 确认电机的排列顺序如下图所示:即电机 1->2->3为逆时针排列,若不正确则将任意2颗电机对调。
- 以上步骤都正确表示所有接线与排列顺序都正确了。
- 接着输入命令码 “T0“, 切回正常模式。
- 手动使风车顺时针转动,观察每一电机是否在迎风面为顺时针旋转,背风面为逆时针旋转。
- 若角度有偏差则使用 D 指令修正之,直到满足步骤 13 的状态。
- 修正完成则可开启风扇,风车便可顺时针持续旋转。
注意事项
-
- 风扇吹风需均匀复盖风车,勿只吹一侧,风勿太强,距离勿太远。
- 风车开始转动后,由于转子惯量使相位开始落后,导致对风向偏差,可再动态以 D指令修正之,可使转速继续提升
Ref. 马格努斯效应 与 垂直轴风车。
Ref. 达里厄(Darrieus)垂直轴风车 3D列印档案大公开。