UMEHOSHI ITA TOP PAGE COMPUTER SHIEN LAB
「UMEHOSHI ITA」にESP32-WROOM-32E-N16を、「UMEHOSHI ITA」へ取り付ける例で、
このページの続きの内容です。
(「UMEHOSHI ITA」は一部の端子だけをCN11とCN12を介して引き出し、
そこに別途の自作基板を取り付けて、少しだけ利用することを想定しています。)
UMEHOSHI ITA基板は、次のHブリッジ制御がある。U09とU10はTPC8408(MOSFETシリコンP/NチャネルMOS)です。
これでモータを正・逆転を可能にしているが、パターンカットの改変で、正転だけの2つモータを制御します。
MOSFET(金属酸化膜半導体電界効果トランジスタ)の使い方のおさらい。
ゲート電圧を下げるとONするPチャネルと、ゲート電圧を上がるとONするNチャネルがあります。
これらはゲート電圧が0Vの時にOFFになり、エンハンスメント型と呼ばれ、現在の主流素子です。
逆に0Vの時にONになる方がディプレッション型と呼ばれます。
なお、NチャンネルMOSFETの方が、同じサイズ(チップ面積)であればより多くの電流を流すことができます。
| ハイサイドスイッチ | ローサイドスイッチ |
|---|---|
| ハイサイドスイッチは、正電源(プラス)と負荷の間にMOSFETを配置して 電流の供給経路を制御する方法です。 | ローサイドスイッチは、負荷とグランド(GND)の間にMOSFETを配置して戻り経路を制御する方法です。 |
|
●メリット: 負荷のグランド側が常にGNDに直結されているため、負荷から見て安全(オフ時に負荷に電圧がかからない)。PチャネルMOSFETであれば回路構成がシンプルで使われることが多い。 ●デメリット: NチャネルMOSFETを使う場合、ゲートに電源電圧よりも高い電圧をかける必要があるため、チャージポンプ回路や専用のゲートドライバICが必要になり、回路が複雑になる。 |
●メリット: MOSFETのソース側がGNDに落ちているため、マイコンなどの制御信号(3.3Vや5V)で
NチャネルMOSFETを使えば直接・簡単に駆動できる。 ●デメリット:スイッチをオフにしても負荷のプラス側には電源電圧がかかりっぱなしになるため、安全面や誤動作防止の配慮が必要になる場合がある。PチャネルMOSFETを使うと複雑になる。 |
| |





#include <xc.h>
#include "common.h"
#define AdrStart 0x80005000 //下記start関数の起動アドレス
#define ON_1 0x80005100 # 関数エントリアドレス
#define OFF1 0x80005150
#define ON_2 0x80005200
#define OFF2 0x80005250
__attribute__((address( ON_1 ))) void on1 (void);
__attribute__((address( OFF1 ))) void off1 (void);
__attribute__((address( ON_2 ))) void on2 (void);
__attribute__((address( OFF2 ))) void off2 (void);
__attribute__((address( AdrStart ))) void start (void);
void start()
{
_clear_beep_code(); // ビープ処理を初期化
_UM_PTR_GOTO_BEEP = NULL;// ループをしない設定
PORTBCLR = 0b0000000000001100;//RB2,3 をOFF
_core_wait(10000); // 約11秒待つ
on1();// CN6-2モータ(RB2)をON
_core_wait(1000); // 約1秒待つ
off1();// CN6-2モータ(RB2)をOFF
on2();// CN6-4モータ(RB3)をON
_core_wait(1000); // 約1秒待つ
off2();// CN6-4モータ(RB3)をOFF
PORTBCLR = 0b0000000000001100; //RB2,3 をOFF
_debug_hex4(1,0x55,1);// 実行終了確認ブザー
}
void on1()// CN6-2モータ(RB2)をON
{
PORTBSET = 0b0000000000000100;
}
void off1()// CN6-4モータ(RB3)をON
{
PORTBCLR = 0b0000000000000100;
}
void on2()// CN6-4モータ(RB3)をOFF
{
PORTBSET = 0b0000000000001000;
}
void off2()// CN6-4モータ(RB3)をOFF
{
PORTBCLR = 0b0000000000001000;
}