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

東邪獨孤發表於2021-03-17

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

現在的小風扇在供電方式上多了兩種:一種是USB風扇,另一種是插在手機上供電的,說實話,風力不怎麼樣,而且也比較危險。

於是,你可能會想,這種小風扇直接上電源就行了,還用得著微控制器和樹莓派?確實,不過,搭配 L9110 驅動晶片,再用微控制器發出指令,這樣可以讓風扇正轉、反轉,也可以用PWM來調節轉速。

老周推薦這種小風扇模組。

 

 或者這種。

 

 又或者這種也行。

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

 

 

這類模組的好處在於:整合了驅動晶片,我們不必分開購買馬達、扇葉和L9110模組。在查詢時,可以搜“風扇模組”、“小風扇模組”,或者搜“滅火機器人”。這滅火機器人也是說得好聽,改為“助燃機器人”估計也可以。產品描述中稱可以輕鬆吹滅 20 cm 外的打火機火焰。根據老周親測,不但沒滅火,反而燒得更旺盛。

反正就是做做實驗,就不追究這些了。這些模組你在購入時不用看什麼價效比的,反正哪最便宜就買那兒就是了,都一樣的,估計都是一個廠子出來的。

買回來後,你需要做簡單的安裝工作,沒事,這操作三歲小女孩都能完成的。就是把扇葉套在馬達的轉子上,這裡要注意一點,按壓時手指要頂住馬達底部,不然,你一用力,直接把馬達都頂出來了。

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

至於扇葉,參考電風扇的結構,應該是有凹面的向外,裝好之後就是這樣子。

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

如果馬達鬆動,可以把那兩顆螺絲擰緊一些。扇葉上有個帽子,很容易掉,可以用膠水粘住,當然扔了也無所謂。

 

===================================================

好了,上面說的都是無關緊要的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就能讓風扇以不同方向轉動。一定要小心,手指不要碰到扇葉,以防刮傷;如果旁邊有小孩,請用兩顆薄荷糖把小孩打發走,以免小朋友好奇用手觸控扇葉。

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

 

 

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

 

相關文章