小风扇,其实就是一个电机(马达),然后轴子上套一个扇叶。扇叶有两叶的,也有三叶的。这种我们小时候没少玩,太阳能帽子上就有一个小风扇,骑着自行车上学,路上只要有太阳光照射到,小风扇就会转。当然还有装干电池的,天气热的时候,买一把放在课桌上,声音很小,所以老师也不会管。
现在的小风扇在供电方式上多了两种:一种是USB风扇,另一种是插在手机上供电的,说实话,风力不怎么样,而且也比较危险。
于是,你可能会想,这种小风扇直接上电源就行了,还用得着单片机和树莓派?确实,不过,搭配 L9110 驱动芯片,再用单片机发出指令,这样可以让风扇正转、反转,也可以用PWM来调节转速。
老周推荐这种小风扇模块。
或者这种。
又或者这种也行。
这类模块的好处在于:集成了驱动芯片,我们不必分开购买马达、扇叶和L9110模块。在查找时,可以搜“风扇模块”、“小风扇模块”,或者搜“灭火机器人”。这灭火机器人也是说得好听,改为“助燃机器人”估计也可以。产品描述中称可以轻松吹灭 20 cm 外的打火机火焰。根据老周亲测,不但没灭火,反而烧得更旺盛。
反正就是做做实验,就不追究这些了。这些模块你在购入时不用看什么性价比的,反正哪最便宜就买那儿就是了,都一样的,估计都是一个厂子出来的。
买回来后,你需要做简单的安装工作,没事,这操作三岁小女孩都能完成的。就是把扇叶套在马达的转子上,这里要注意一点,按压时手指要顶住马达底部,不然,你一用力,直接把马达都顶出来了。
至于扇叶,参考电风扇的结构,应该是有凹面的向外,装好之后就是这样子。
如果马达松动,可以把那两颗螺丝拧紧一些。扇叶上有个帽子,很容易掉,可以用胶水粘住,当然扔了也无所谓。
===================================================
好了,上面说的都是无关紧要的F话,下面咱们重点看看用树莓派如何驱动小风扇。
首先,你会看到,模块上有四个引脚:
VCC:电源正极,接树莓派的 5V 接口。
GND:电源负极,接树莓派任意一个 GND 口。
INA 和 INB :两个控制口。
所以,驱动的核心就落在两个输入引脚上。
INA 为高电平,INB 为低电平时——正转;
INA 为低电平,INB 为高电平时——反转。
但是,这个“正”与“反”是相对的,不同的模块可能方向不同,马达(电机)的正负极是可以反过来接的,接反了转动方向就反了,因此,到底哪边是正转,哪边是反转,很难说清楚,总之就是两个不同的转动方向。
INA 和 INB 不要设置相同的电平(制动,马达不转),这是无意义的控制输入(当然你也可以试试,自然不能达到预期结果的)。
嗯,所以你发现这厮驱动起来是挺简单的,所以老周直接上一个示例。
class Program { // 使用的两个接口 const int IN_A = 20; const int IN_B = 21; static void Main(string[] args) { GpioController controller = new(); // 打开接口 controller.OpenPin(IN_A, PinMode.Output); controller.OpenPin(IN_B, PinMode.Output); // 进入循环 bool looping = true; while (looping) { Console.WriteLine("\n请输入A或B,按其他键退出"); ConsoleKey pressed = Console.ReadKey().Key; switch (pressed) { case ConsoleKey.A: // A - 高电平 // B - 低电平 controller.Write(IN_A, 1); controller.Write(IN_B, 0); break; case ConsoleKey.B: // A - 低电平 // B - 高电平 controller.Write(IN_A, 0); controller.Write(IN_B, 1); break; default: looping = false; break; } } // 关闭接口 controller.ClosePin(IN_A); controller.ClosePin(IN_B); controller.Dispose(); } }