TOPに戻る

Raspberry Pi PicoとMOSFET ⑨ HブリッジをPicoからドライブ<その1>

 前回まで、ハーフブリッジ回路のドライブを実験しました。同じPチャネルとNチャネルのペアの回路をもう1組用意します。Hブリッジ回路になります。追加した下のブロックを回路図の右側に配置すれば、一般的はHブリッジ回路になります。

モータに電流を流す

 上のブロックのPチャネルMOSFETをONに、下のブロックのNチャネルMOSFETをONにすると、モータに電流が流れます。

 入力の状態と出力のドレイン端子は、次の関係になります。

信号 状態  ドレイン
INa 0 PチャネルMOSFET ON
INb 0 NチャネルMOSFET OFF
INc 1 PチャネルMOSFET OFF
INd 1 NチャネルMOSFET ON

 プログラムです。デューティ比

float duty_factor = 0.8;

によって回転数が変わります。


#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);
    const uint GP4 = 4;
    const uint GP5 = 5;
    gpio_init(GP4);
    gpio_init(GP5);
    gpio_set_dir(GP4, GPIO_OUT);
    gpio_set_dir(GP5, GPIO_OUT);
    gpio_put(GP4, 0);
    gpio_put(GP5, 1);

    uint slice_num  = pwm_gpio_to_slice_num(2);

    uint16_t divCounter = 12500; // max 2^16 = 65536
    pwm_set_wrap(slice_num, divCounter-1);  // 10kHz
    uint8_t div = 10;
    uint8_t fract = 0;
    pwm_set_clkdiv_int_frac(slice_num, div, fract); // 1kHz
    // duty 
    float duty_factor = 0.8;
    // GP2
    pwm_set_chan_level(slice_num, PWM_CHAN_A, (int)divCounter * duty_factor);
    // GP3
    pwm_set_chan_level(slice_num, PWM_CHAN_B, (int)divCounter * duty_factor);
    // phase
    pwm_set_output_polarity(slice_num, true, false);  // A B

    // Set the PWM running
    pwm_set_enabled(slice_num, true);
    return 0;
}

 上のブロックのPチャネルMOSFETのゲート(上)とドレイン(下)の波形を見ます。

  Vsは9.25V、Vsは10.5Vです。きれいにOFFする電圧が見つかりません。ほとんどON状態です。

  Vsは7.36V、Vsは10.5Vの波形です。ほとんどOFFにはなりません。

 

 下のブロックのNチャネルMOSFETのゲート(上)とドレイン(下)の波形です。Vsは7.36V、Vsは10.5Vです。

デューティ比20%

 上のブロックのPチャネルMOSFETのゲート(上)とドレイン(下)の波形です。

 Vsを下げていって、7.56Vになると回転し始めました。

 下のブロックのNチャネルMOSFETのゲート(上)とドレイン(下)の波形です。Vsは7.76V、Vsは10.5Vです。

  PチャネルMOSFETのゲート電圧がクリティカルな印象があります。

4チャネルを同時に観測

 ONする条件は上記の実験と同じです。デューティ比は80%です。オシロスコープはAnalog Discover PRO ADP3450 に変更しました。

 Vdは10.4VVsは9.0Vです。

 オレンジ色はONするPチャネルMOSFETのゲート、青色は、モータに電流を流れ出しているドレインの波形です。

 茶色はOFFするNチャネルMOSFETのゲート、緑色は、モータに電流を吸い込んでいるドレインの波形です。

 Vsは7.5Vです。モータの回転が遅くなりました。PチャネルMOSFETがONしたままです。

 Vsは10.78Vです。NチャネルMOSFETがほぼOFFのままです。

 一連の実験では、PチャネルMOSFETの扱いがクリティカルという印象がありました。NとPチャネルは特性はまったく異なるので、品種を変えると、また別の結果が得られるかもしれません。

 Hブリッジ回路は、すべてNチャネルMOSFETで構成する方法があります。

連載 Raspberry Pi PicoとMOSFET

(1) MOSFETの特徴

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

(3) PWMのAPI

(4) PWM 分周

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

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

(7) P/NチャネルMOSFETをPicoからドライブ<その1>

(8) P/NチャネルMOSFETをPicoからドライブ<その2>

(9) HブリッジをPicoからドライブ<その1>


連載 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