【.NET 與樹莓派】小風扇模塊

小風扇,其實就是一個電機(馬達),然後軸子上套一個扇葉。扇葉有兩葉的,也有三葉的。這種我們小時候沒少玩,太陽能帽子上就有一個小風扇,騎着單車上學,路上只要有太陽光照射到,小風扇就會轉。當然還有裝乾電池的,天氣熱的時候,買一把放在課桌上,聲音很小,所以老師也不會管。

現在的小風扇在供電方式上多了兩種:一種是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();
        }
    }

全部代碼都在上面了,故為了節省博客的存儲空間,這個示例老周不上傳壓縮包了。

這個示例是這樣的:你可以通過鍵盤輸入「A」或者「B」來控制風扇的轉動方向。這裡我沒有做大小寫字母的兼容處理,如果你輸入了小寫A和B,是無效果的(注意用的是ConsoleKey枚舉類型)。

當按下的鍵是【A】時:INA 輸出高電平,INB 輸出低電平;

當按下的鍵是【B】時,INA 輸出低電平,INB 輸出高電平。

當按下其他鍵時,跳出循環。

最後,編譯,發佈,上傳到樹莓派,運行,就能看到效果了。

注意安全,注意安全,注意安全!!!!!!!在接好線後,一定要把風扇固定好,可以用東西(如手機、磚頭等)壓在桌子邊沿,或者用主板固定柱粘好。運行程序後,輸入A或B就能讓風扇以不同方向轉動。一定要小心,手指不要碰到扇葉,以防刮傷;如果旁邊有小孩,請用兩顆薄荷糖把小孩打發走,以免小朋友好奇用手觸摸扇葉。

 

 

好了,本文內容到此完結。