TOPに戻る

Raspberry Pi PicoとMOSFET ⑤ NチャネルMOSFETをPicoからドライブ

 PicoのPWM波形の作成方法がわかったので、最初に、発振器のときと同じく10kHzのPWMを作成します。

プログラム

 wrapだけで10kHzを得ました。


#include "pico/stdlib.h"
#include <stdio.h>
#include "hardware/pwm.h"

int main() {
    stdio_init_all();
    printf("\nHello, PWM GP2/3,GP4/5\n");

    gpio_set_function(2, GPIO_FUNC_PWM);
    gpio_set_function(3, GPIO_FUNC_PWM);
    gpio_set_function(4, GPIO_FUNC_PWM);
    gpio_set_function(5, GPIO_FUNC_PWM);

    uint slice_num  = pwm_gpio_to_slice_num(2);
    uint slice_num2 = pwm_gpio_to_slice_num(4);

    uint16_t divCounter = 12500; // max 2^16 = 65536
    pwm_set_wrap(slice_num, divCounter-1);  // 10kHz
    // duty 10%
    pwm_set_chan_level(slice_num, PWM_CHAN_A, (int)divCounter*0.1);  
    // duty 20%
    pwm_set_chan_level(slice_num, PWM_CHAN_B, (int)divCounter*0.2);  

    pwm_set_wrap(slice_num2, 1249);
    pwm_set_chan_level(slice_num2, PWM_CHAN_A, 256);
    pwm_set_chan_level(slice_num2, PWM_CHAN_B, 256);

    // Set the PWM running
    //pwm_set_enabled(slice_num, true);
    //pwm_set_enabled(slice_num2, true);
    pwm_set_mask_enabled(0b00000110);

    return 0;
}

実行結果

 上の黄色がGP2、下の緑色がGP3の出力です。周波数は10kHzで、デューティ比はそれぞれ10%と20%です。

回路図

PicoのGP2端子を回路につなぐ

 上の黄色がGP2、下の緑色がゲート・ドライバIR4427の出力(FETのゲート入力)です。ゲートに電圧は加えていません。Vsは7Vです。

 ドレインに12Vの電圧を加えました。

 上の黄色がゲート、下の緑色がドレインの波形です。ゲートの立ち上がりが2段になっているのは、ゲートの容量をチャージするため時間です。

連載 Raspberry Pi PicoとMOSFET

(1) MOSFETの特徴

(2) MOSFETを発振器でドライブ

(3) PWMのAPI

(4) PWM 分周

(5) NチャネルMOSFETをPicoからドライブ

(6) PチャネルMOSFETをPicoからドライブ


連載 Raspberry Pi Picoでプログラミング

(1) ラズパイ4の準備(1) USBブートの設定

(2) ラズパイ4の準備(2) 標準入出力の用意

(3) ラズパイ4の準備(3) LチカとHello, world!の実行

(4) ラズパイ4の準備(4) リモート環境の設定

(5) プログラミングの環境整備とLチカ

(6) Hello, World!

(7) 使用するピンと機能

(8) クロックの値の表示

(9) i2cscanner

(10) i2c APIと気圧センサLPS25

(11) i2c 温度センサTMP117

(12) i2c 湿度センサAHT20

(13) spi APIとA-DコンバータMCP3008

(14) spi A-DコンバータMCP3208

(15) gpioファンクション

(16) gpio スイッチを押すとLEDが点灯する STEP2

(17) gpioファンクション MASK