2020年2月28日金曜日

blender 2.8 操作 Tips

概要

操作や昨日など Tips をまとめて紹介します
ここで紹介する以外にもたくさんの機能やショートカットがあるので詳細は公式のドキュメントを御覧ください

環境

  • macOS 10.15.3
  • blender 2.82

Bevel がおかしい場合は

  • オブジェクトモード
  • Ctrl + a
  • Scale

Warp ツールを使えばオブジェクトを指定の角度に曲げることができる

  • Z 軸方向から見る
  • オブジェクトを Y 軸と垂直になるように回転させる
  • X 軸は 0 にする
  • Edit Mode
  • Mesh -> Tranform -> Warp
  • 好きな角度を指定する

ミラーモディファイアは Origin を中心に反転する

Origin の位置を調整すること

スクリューで作成したネジをドリルみたいに選択を補足する

Simple Deform Modifier を使います

  • ネジの穴を X 軸方向に向ける
  • Add Modifier -> Simple Deform
  • Taper を選択
  • Fact で調整

ネジのようなスクリューを作成する

2.82 からは Modifier を使いましょう
ツールから行いたい場合はスピンツールを使うようです

  • Add -> Mesh -> Circle
  • X 軸方向に移動
  • コンテキストメニュー -> Set Origin -> Origin to 3D Cursor
  • Add Modifier -> Screw
  • Axis -> Y
  • Screw -> 3m
  • Iterations -> 5

元になる Mesh を Circle ではなく四角や複雑なカーブにするとより複雑なスクリューが作成できます

Ctrl + i

選択した部分の逆を選択する
選択 -> インバート -> 複製 (Shift +d) -> Selection (p) -> エンターで反転した部分を別オブジェクトに切り出す流れはよく使う

Shift + d

選択した部分を複製するショートカット

Shift + w

選択している輪郭を現在のカーソルを中心に曲げるショートカット
覚えておいて損はない
曲げたいオブジェクトを 0,0 にセットしてカーソルを曲げたいオブジェクトの中心に合わせてから Shift + w を押すこと

星を作成する

  • Add -> Mesh -> Circle
  • Vertices を 10 にする
  • 頂点を 1 つおきに選択する
  • 選択した頂点をスケールし小さくする

上からや横からの視点に切り替える

テンキーがない場合にはボタンをポチポチすることで切り替えられます
3D Viewport の場合には右上の方にある軸の矢印を選択することでその軸の正面から見た視点に切り替えられます

オブジェクトを削る (Boolean modifier)

削りたいサイズのオブジェクトを先に作成しておきます
そして削る対象のオブジェクトに重ねて modifier から Boolean を選択します
Operation は「Difference」を選択します
あとは Apply を選択すれば OK です
Boolean を使うときは削る側のオブジェクトと削られる側のオブジェクトの座標がぴったり重なっているとうまく削れないので少しずらしてあげるのがポイントです

メジャーを削除する

左メニューに「Measure」という項目がありこれを使うとドラッグした長さを測ることができます
ただこのメジャーが消せなくて困っていたのですがやり方がわかったので紹介します
削除したいメジャーを選択した状態で「x (エックス)」キーを押せば消えました

単位を切り替える

例えばミリ単位のモデリングがしたい場合は単位をミリセンチメートルにしたい場合があると思います
デフォルトだとメートルになっておりミリ単位の調整が面倒なのでその場合は基準の単位をミリセンチメートルに変更しましょう

右下にあるシーンプロパティを選択し「Units」の「Length」を「Millimeters」にすれば OK です

グリッドの表示単位をミリセンチメートルに合わせる

先程紹介したようにオブジェクトの基準サイズをミリセンチメートルにした場合は 3D Viewport で見ているメモリの単位もミリセンチメートルにしたいです
そんな場合は「Viewport Overlays」を使います

右側のプルダウンにあります
「Viewport Overlays」という項目があるのでそこから「Scale」の値を「0.001」にすれば OK です
ちなみにこの値は 0.001 以下にはできないようです

オブジェクトのサイズを表示する

2.82 だと右側のオブジェクトプロパティになぜか表示されていません
「Object Mode」で右側にある「Item」プロパティを表示するとオブジェクトのサイズが表示されます
またここで直接入力してサイズ変更することも可能です
このプロパティはキーボードの「n」ボタンを押しても表示することができます

オブジェクトモードとエディトモードの切替

左上のプルダウンから選択するかショートカットキーとして「TAB ボタン」を押すことで切り替えできます

フェイスを結合する

結合したいフェイスを選択して「f」キーを押しましょう
またモードは「Edit Mode」にし面選択にするのを忘れないようにしましょう

gif だとわかりづらいですが選択してオレンジになったあとに f キーを押しています

既存の四角のオブジェクトを曲げる

これがかなり複雑です
いろいろなやり方があるようですが今回は modifier を使います

  • Object Mode で曲げたいオブジェクトを選択
  • TAB で Edit Mode に切り替え
  • Loop Cut を選択
  • 輪切りになるようにしたら分割する数を選択する (今回は 19)
  • TAB で Object Mode に戻る
  • Add -> Empty -> Plain Axes を追加する
  • Plain Axes のオブジェクトのプロパティから Rotations を選択し X, Y を 90 にする
  • 曲げたい中心に配置する
  • Modifier プロパティを選択して Add Modifier する
  • Simple Deform を選択する
  • Bend を選択
  • Axis Origin に先程作成した Plain Axes を選択する
  • Angle を好きな角度にすれば OK

どうやら Plain Axes を X, Y で 90 度回転させないといけないのは 2.8 系かららしいです

参考: https://www.youtube.com/watch?v=wVwlNB0RrU0

Extrude Region で作成された face をすべて結合する方法

オブジェクトを選択して Edit Mode になります
そして全選択「a」で削除プロパティ「x」を押して「Limited Dissolve」を選択します

またこのあとでだいたいオブジェクトの原点を中心に戻したいと思いますがその場合は Object Mode にして右クリックで「Set Origin」->「Origin to Center of Mass (Volume)」で OK です

Boolean でうまくいかないときは

自分の経験上ですがうまく削れない場合は削る対象のオブジェクトを移動するようにしましょう
削ったあと (Apply したあと) に削る形のオブジェクトを移動するとなぜか削れていないことがあり、削る対象のオブジェクトを Apply 後移動するとうまく削れていることがありました

あとは削除する方のオブジェクトの位置をいろいろと調整するとうまく削れる場合があります

複数の Cube をまとめて曲げる方法

基本は先程紹介した「Loop Cut」+「Axis Plain」+「Simple Deform」を使います
曲げる前に複数の Cube をジョインさせておくことがポイントです

面を追加する

Boolean などを使うとたまに面まで持っていかれます
そんな場合には面を追加してあげます

  • Object Mode -> Edit Mode
  • 頂点編集モード
  • 面を張る頂点を Cmd を使って複数選択
  • 「f」キーを押す

なぞにできてしまった頂点や辺を削除する

  • Edit Mode にして頂点モードにする
  • 削除したい頂点を選択し「x」キー
  • 「Dissolve Vertices」or 「Only Edges & Faces」など選択する

選択によって隣接している面なども削除されてしまうので注意してください
試しながら適切な Dissolve を選択すれば OK です

カーソルの中心を面や辺や頂点にする方法

  • Edit Mode
  • 面選択
  • Mesh -> Snap -> Cursor to Selected

オブジェクトを円にする方法

  • 四角オブジェクトを追加
  • オブジェクトの長さを伸ばす
  • Loop Cut で 100 等分にする
  • 「a」キーですべて選択
  • 3D カーソルの位置をずらす
  • Edit Mode にする
  • 視点を Z 方向から見た視点にする
  • Mesh -> Transform -> Wrap

なめらかなドーナッツを作成する

  • Add -> Mesh -> Torus
  • 設定オプションで Major Segments や Minor Segments を変更する
  • 設定オプションで Major Radius や Minor Radius を変更する
  • 右クリックから「Shade Smooth」を選択する

1 つのオブジェクトを分割する方法

例えば Extrude した部分だけを別オブジェクトとして扱いたい場合に使えます

  • Edit Mode -> X-Ray モードにする
  • Extrude した部分のみを選択
  • 「p」キーを選択
  • Selection

分割した場合分割した面がなくなっているので必要であれば追加しましょう

ズームが遅くなる/できなくなる場合の対処方法

Auto Depth という機能をオンにしましょう
「Edit」->「Preferences」->「Navigation」->「Auto Depth」でオンにします

円柱を中空にする

トンネル的なのを作ります

  • Add -> Cylinder
  • 円を正面から見える軸からの視点にする
  • Edit Mode
  • X-Ray モードをオンにする
  • 円の部分を選択する
  • Inset Faces を使って両面に同じサイズの新しい円を作成する
  • Edge -> Bridge Edge Loops

ナイフ投影を使って貫通した穴を作成する方法

ブーリアンを使ってもできるのですがブーリアンは安定しません
なのでナイフ投影を使っても同じようなことができかつこちらのほうが安定するケースが多いです

  • Edit Mode
  • ナイフ投影する対象の面と投影するオブジェクトの面を選択する
  • 視点を投影する方向からみた視点にする
  • Mesh -> Knife Project
  • 反対側にも同じようにナイフ投影する
  • ナイフ投影によって作成された 2 つの面を Shift を押しながら複数選択する
  • Edge -> Bridge Edge Loops を選択

MacBook のトラックパッドでビューを動かすテクニック

  • Ctrl + 二本指スクロール -> ズーム
  • Shift + 二本指スクロール -> ビューの移動
  • 二本指スクロール -> 回転

ループしている頂点だけを選択しそれ以外を消す方法

  • Alt + 頂点選択
  • Ctrl + i
  • h

消した部分を再表示する場合は「Alt + h」

選択している辺や面の長さを表示する方法

Viewport Overlays から「Edge Length」や「Face Area」のチェックをオンにするだけです

またトランスフォーム機能を使ってサイズ変更した場合はプロパティからグローバル座標系でのサイズ表示に変更しましょう
座標系があっていないとトランスフォーム後のサイズが変更前の値のままになってしまいます

周りの面も持ち上げたい場合は Extrude ではなく Move を使おう

Extrude は選択した面や辺を持ち上げますが周りには影響をあたえません
もし周りのオブジェクトも同時に持ち上げたい場合は Move を使いましょう

半径を表示する方法

MeasureIt というアドオンを使います
デフォルトでは有効になっていないので Preferences から有効にします

あとは半径となる 2 点の頂点を選択した状態で「Segment」を選択します
あとは「Show」を選択すれば 2 点間の距離が表示されます

2020年2月27日木曜日

Blender 2.82 超入門

概要

過去にオンラインで 3Dモデリングできる TinkerCAD というサービスを使って簡単な 3Dモデリングをやりました
blender はフリーで使える高機能な 3Dモデリングツールです
今回はインストールから簡単なモデリングの作成のチュートリアルを紹介します

概要

  • macOS 10.15.3
  • blender 2.82

インストール

Homebrew でインストールできます

  • brew cask install blender

blender を開く

インストールが完了するとアプリケーションの一覧に表示されます
アプリの一覧や Spotlight を使ってインストールした blender を開きましょう

開くとウィザードが表示されます
公式のオンラインのドキュメントを確認したり新規ファイルの作成モードを選択することができます
今回は「General」を選択しましょう

新規で 3Dモデリングファイルが作成されました
デフォルトでは「カメラ」「四角」「光源」の 3 つが配置されているようです
選択モードになっているので四角のオブジェクトを選択すると右上に選択したオブジェクトとそれに関連するカメラや光源の一覧が表示されます

Mac の場合指 2 本でスクロールすることでオブジェクトの見える方向を回転することができます
またピンチインすることでズームすることもできます

左上にあるモードの一覧から「Transform」を選択しましょう
これを選択することで四角のオブジェクトを変形することできます

オブジェクトの形を変えてみる

各軸ごとに 2 つの印が表示されます
矢印は「その軸に対してオブジェクトの移動」ができます
四角の印は「その軸に対してオブジェクトのサイズ変更」ができます

赤色の軸 (X) と青色の軸 (Y) 方向に少しオブジェクトを変形してみました
変形後は以下のようになりました

ちなみに Transform の上にある「Scale」を選択すると移動する矢印が表示されず変形する四角の印だけが表示されます

オブジェクトを回転させる

左メニューから「Rotate」を選択しましょう
オブジェクトの中央に回転させるためのコントローラが表示されるのでそれを選択しながらスクロールすれば回転することができます

オブジェクトを追加する

新しく四角オブジェクトを追加してみましょう
上のメニューから「Modeling」を選択します
そしてプルダウンから「Object Mode」を選択し「Add」を選択しましょう
すると追加するオブジェクトのタイプが表示されるされるので「Mesh」->「Cube」を選択します

中央の座標に重ね合わせて追加されるので Transform モードにして追加したオブジェクトを移動してみるとわかりやすいと思います
右上のオブジェクト一覧にも追加された四角オブジェクトが存在することが確認できると思います

オブジェクト同士を結合する

まず 2 つのオブジェクトを選択しましょう
選択モードでドラッグして直接オブジェクトを複数選択しても OK ですし右上のオブジェクト一覧から結合したいオブジェクトを複数選択しても OK です

その状態で右クリックでコンテキストメニューを表示し「Join」を選択します
右クリックする際は何もオブジェクトがないところで行いましょう

すると 2 つオブジェクト結合し 1 つオブジェクトになります
Tranform モードにし形を変形すると 2 つ同時に変更されることが確認できると思います

オブジェクトの形を複雑に変形する

Tranform モードは各軸にそってオブジェクトの形を変形する方法です
Blender では更に複雑にオブジェクトの形を変形することができます
例えば四角形の面を増やす感じで変形してみます

まず「Modeling」->「Extrude Region」を選択します
そして「Edit Mode」の「Face select」を選択します
Face Select を面を編集するためのモードでデフォルトは一番左の「Vertex select」になっておりこれは頂点を編集するためのモードです

編集したい面を選択し「+」の方向にドラッグすれば新たに面が追加されます

これを繰り返すことで以下のような階段の形の四角が作れます
逆の方向にドラッグすれば中をくり抜くこともできます

「Inset Faces」という面の中に新たに面を作成するモードと組み合わせるとこんな感じである面から小さな面だけ変形することもできます

.stl ファイルを作成する

モデリングしたデータを 3Dプリンタに渡す場合には STL ファイルなどに書き出す必要があります
「File」->「Export」で好きなタイプが選択できるので 3Dプリンタに合わせて出力しましょう

日本語化する

「Edit」->「Preferences」
「Interface」->「Translation」
で Japanese を選択すれば OK です

メニュー名などは変わらないようですが説明などは日本語になりました

最後に

Mac に Blender をインストールして使ってみました
四角や丸のオブジェクト追加して形が変更できるようになるのが第一歩だと思います
細かい Tips などまた別途記事を書きたいと思います

参考サイト

2020年2月19日水曜日

Jenkins のパラメータ付きビルドを簡単に確認する方法

概要

パラメータ付きビルドを API で試したい場合に docker を使ってサクっと確認、試せる方法を紹介します

環境

  • macOS 10.15.2
  • docker 19.03.5
  • Jenkins 2.60.3

Jenkins 起動

  • docker run -p 8080:8080 -p 50000:50000 jenkins

設定から CSRF を無効にしておきます

確認用ジョブ作成

面倒ですが UI をポチポチします

パラメータで渡した値とファイルの内容を表示するだけです

curl でパラメータ付きジョブを登録

GET でもできますが今回は POST を使います

普通のパラメータ

curl -X POST localhost:8080/job/test/build \
  --user root:xxxxxxxxxxxxxxxxx \
  --form json='{"parameter":[{"name":"p1","value":"hoge"}]}'

ファイル

curl -X POST localhost:8080/job/test/build \
  --user root:xxxxxxxxxxxxxxxxx \
  --form "file1=@./test.txt" \
  --form json='{"parameter": [{"name":"p1","value":"hoge"}, {"name":"f1","file":"file1"}]}'

JSON ファイルを外だし

curl -X POST localhost:8080/job/test/build \
  --user root:xxxxxxxxxxxxxxxxx \
  --form "file1=@./test.txt" \
  --form json="@./data.json"
  • cat data.json
{
  "parameter": [{
    "name": "p1",
    "value": "hoge"
  }, {
    "name": "f1",
    "file": "file1"
  }]
}

最後に

パラメータがちゃんと送信できているか確認する際に使えると思います

2020年2月18日火曜日

どんなときもWifi の D1 ルータを修理に出してみた

とりあえず時系列と結果

発送から修理完了後の到着までだいたい 2 週間は見たほうがよさそうです、、

  • 2020/02/07 ルータの調子が悪い
  • 2020/02/08 故障サポートにルータを送付する
  • 2020/02/11 故障サポートから修理受付開始のメールあり
  • 2020/02/18 いきなり佐川からの配達通知が来る
  • 2020/02/18 受け取り

修理費用: 0 円

概要

なぜか D1 が電波を掴まなくなり再起動の無限ループを繰り返すようになってしまったので仕方なく修理センターに出してみました
やり方や結果などを紹介します
ポイントは 18,000 円の修理費用が掛かるかどうかです

梱包する

写真がないのですが送られてきたときの箱をプチプチで包んで紙袋に入れて梱包しました

修理センターに出す

着払いで以下に送ります

〒141-0022
東京都品川区東五反田1丁目2-33
白雉ビル7階
『グッド・ラックサポートセンター宛』

自分はヤマトさんの宅急便をスマホで送るサービスを使いました
これなら家で送り状の情報を登録して近くのコンビニでバーコードを見せるだけなので簡単です

一応サポート窓口にも連絡する

ルータの修理依頼という感じの内容をメールで送りました
フォームの URL は https://support.donnatokimo-wifi.jp/form-inquiry/ になります
一応ルータの状態や使用状況などを記載しておきました

本日、端末の修理/調査依頼を出しましたので到着したらご確認お願いします。特に外出で使ったことはなく常に室内で同じ場所で使って今回の状況になったので自然故障かと思います。よろしくお願いします。

ひたすら待つ

あとはどんなときもWifi からの連絡をひたすら待ちます
最終的には発送から到着まで 11 日かかりました

結果

端末修理ではなく交換になりました
品質不良と記載がありました

費用

先程紹介した紙には特に修理に関する費用は記載してありませんでした
なので問い合わせてみました

可能性としては交換修理なので 18,000 円取られる気がしたのですが問い合わせたところ今回は発生しないとのことでした
品質不良なのでこちらが壊したわけではないのでそうなったのかもしれません
またネットが使えなかった 11 日間に関して日割りなどが発生するのかも確認してみたのですが特に日割りなどはないようです
交換修理費用がかからなかっただけ良しとする感じでしょうか

おまけ: 自宅にネットのない生活を送ってみて

ルータを修理に出している間は自宅に回線がない状態が続きます
Wifi のレンタルサービスもあるので 1 ヶ月くらい借りてもよかったのですがたまにはネットのない生活もいいかなと思ってやってみました

Bad

  • FireTV や Chromecast, Alfred camera や各種 IoT デバイスが使えない
  • 4G LTE しかないのでギガを気にしながら生活しなければいけない
  • テザリング時のバッテリーの消耗がえぐい
  • Wifi が必須な作業ができない (iOS のアップデートなど)
  • 地上波を見るかなーと思ったけど全く見なかった

Good

  • オフラインでできる作業をやろうと頑張る

2020年2月17日月曜日

redis でリストからインデックスを指定して値を削除する方法

概要

redis ではリストから値を削除するのにインデックスを指定して削除する方法が直接的にはありません
少し工夫することで可能なので紹介します

環境

  • macOS 10.15.2
  • redis 5.0.5

コマンド

  • INDEX=0 && redis-cli lrem hoge 1 "$(redis-cli lindex hoge $INDEX)"

INDEX に削除したいインデックスを指定します
hoge というキーのリストから値を削除します
lindex というインデックスを取得できるコマンドがあるのでそれを使って値を取得することで lrem しています

参考サイト

2020年2月13日木曜日

go-workers のカスタムロギングで標準出力と標準エラーを分けるコツ

概要

過去に go-workers でライブラリ自体のロギングをカスタムする方法を紹介しました
基本的には標準出力に出力されるようで標準エラーにエラーの内容を分けたい場合は少しコツがいるようです

環境

  • macOS 10.15.2
  • golang 1.12.9
  • go-workers dbf81d0b75bbe2fd90ef66a07643dd70cb42a88a

サンプルコード

全体のコードは過去の記事を参考にしてください
ポイントとなる Println の部分だけ紹介します

func (l *MyLogger) Println(kv ...interface{}) {
    msg := ""
    elog := false
    for _, v := range kv {
        switch v.(type) {
        case string:
            msg += v.(string) + " "
        case int:
            msg += strconv.Itoa((v.(int))) + " "
        case error:
            elog = true
            msg += v.(error).Error() + " "
        }
    }
    if elog {
        log.SetOutput(ioutil.Discard)
        log.SetOutput(os.Stderr)
        log.Println(msg)
    } else {
        log.SetOutput(os.Stdout)
        log.Println(msg)
    }
}

どうやら標準エラーのみ出力したいログの場合には直前に log.SetOutput(ioutil.Discard) を実行する必要がありそうです
もじ log.SetOutput(ioutil.Discard) していないと elog に入った場合でも標準出力にログが出力されてしまいます

2020年2月12日水曜日

VMware PowerCLI で nfs のマウント操作をしてみた

概要

VMware.PowerCLI で nfs のデータストアをマウントする操作をしてみました
サンプルのコマンドレットを紹介します

環境

  • CentOS 7.7.1908
  • .NET SDK 3.1
  • PowerShell 6.2.3
  • VMware.PowerCLI 11.5.0.14912921

データストアを追加する (マウント)

  • Connect-VIServer -Server 192.168.100.10 -User administrator@vsphere.local -Password xxxxxxxx
  • $host1 = Get-VMhost -Name 192.168.100.11
  • New-Datastore -Name nfs_test -Nfs -NfsHost 192.168.100.20 -Path /opt/nfs -VMHost $host1

データストアを削除する (アンマウント)

  • Remove-Datastore -Datastore nfs_test -VMHost $host1 -Confirm:$false

データストアの一覧を表示する

  • Get-Datastore

参考サイト

2020年2月11日火曜日

CentOS7 に VMware vCLI をインストールする方法

環境

  • CentOS 7.7.1908
  • VMware vSphere Command Line Interface 6.7

ダウンロード

VMware の公式から gz 形式のファイルをダウンロードしましょう

インストール

  • tar zvxf VMware-vSphere-CLI-6.7.0-8156551.x86_64.tar.gz
  • cd vmware-vsphere-cli-distrib/
  • ./vmware-install.pl

cpan から必要なモジュールのダウンロードとインストールが開始されます
必要なモジュールが揃えば vCLI をインストールするパスを聞いてくるのでパスを指定して完了です

cpan から特定のモジュールがインストールできなかった場合

自分は UUID がインストールできませんでした
以下のようなメッセージが表示されます

CPAN not able to install following Perl modules on the system. These must be
installed manually for use by vSphere CLI:

UUID 0.27 or newer

cpan コマンドで直接インストールしてみると状況がわかると思います

  • cpan install UUID

これで出てきたエラーに対して対処すれば OK です
自分の場合は libuuid-devel がなかったのでインストールしました

  • yum -y install libuuid-devel
  • cpan install UUID

このあとで再度 ./vmware-install.pl を実行すれば OK です

動作確認

  • esxcfg-vswitch --server 192.168.100.10 --list
  • esxcli --version
  • esxcli --thumbprint 45:D3:5E:D1:1A:E7:CB:2C:E5:A5:79:4B:F3:C1:29:DD:C4:39:9C:9E --server
    192.168i.100.10 network vswitch standard list

esxcfg-hoge コマンドは非推奨なので esxcli コマンドを使いましょう
実際に実行すると警告が表示されるのが確認できると思います

2020年2月10日月曜日

VMware PowerCLI でポートグループを操作するサンプル

概要

VMware.PowerCLI でポートグループを操作してみました
サンプルのコマンドレットを紹介します

環境

  • CentOS 7.7.1908
  • .NET SDK 3.1
  • PowerShell 6.2.3
  • VMware.PowerCLI 11.5.0.14912921

指定の vDS 配下にポートグループを作成する

  • New-VDPortgroup -VDSwitch vds -name pg -NumPorts 123 -VlanId 456

ポートグループを削除する

  • Get-VDPortGroup -Name pg | Remove-VDPortGroup

ポートグループのセキュリティポリシーを変更する

  • $pg = New-VDPortgroup -VDSwitch vds -name pg -NumPorts 123 -VlanId 456
  • $pg | Get-VDSecurityPolicy | Set-VDSecurityPolicy -AllowPromiscuous $true -MacChanges $true -ForgedTransmits $true

その他関連操作

  • Set-VDPortgroup
  • Export-VDPortgroup
  • Set-VDSecurityPolicy

参考サイト

2020年2月5日水曜日

Lチカでトランジスタの使い方を学ぼう

概要

トランジスタの使い方を簡単に学ぶために Lチカ回路にトランジスタを組み合わせて動作させてみました
負荷の高い抵抗を使って小さな電流を作りそこからトランジスタを使って電流を増幅し LED を点灯させてみます

環境

  • トランジスタ 2N5088
  • 抵抗 (47, 330, 470, 1k, 330k)
  • 赤色LED

実験で使う回路

電源は単三電池 2 本 (約 1.5v + 1.5v = 3V) を使用します
単純な Lチカの回路になります

電流の計測が必要になるので以下のような感じで LED に流れる電流を測れるようにしておきます
電流計は直列に接続する必要があるのでご注意を

電流を計測する

まずは抵抗の値を変えて LED に流れる電流を計測していきます

47オーム

30mA
やはり抵抗が小さいと流れる電流も大きくなるので LED もだいぶ明るくなります

330オーム

7mA
写真でもわかるくらい明るさがなくなったと思います

470オーム

5mA
330 オームとそこまで変わらない感じでしたが電流は少し少なくなっています

1kオーム

2mA
明るさもだいぶなくなりました

330kオーム

?
自分の電流計だとほとんど針が振れなかったので計測不能でした
写真だと全くわかりませんがすごい小さい明かりが点灯しています

トランジスタあり

今回は 330k オームを使った場合に LED を点灯させようと思います
トランジスタを使うことで電流を増幅させ点灯させる感じです

使用するトランジスタ

手元にあるトランジスタが 2N5088 しかないので今回はこれを使います
そもそもトランジスタを電流増幅部品として使っていますがトランジスタ自体は増幅というよりも電流の値を調整するための部品かなと思います

データシートを見ると増幅率は 300 倍ほどあるようです
頑張れば 900 倍くらいはいけるそうです
今回は電圧も低めなので 300 倍あれば十分です
写真左から「エミッタ」「ベース」「コレクタ」になります

回路作成

トランジスタを使った回路を作成します
2N5088 は NPN トランジスタなのでベースにプラスエミッタ、コミッタにマイナス側の端子を接続します
またベースに 330k オームの抵抗を挟んで先程計測した超微量な電流を流します
そうすることでエミッタとコミッタ間に増幅した電流が流れるようになります

回路図的には以下のような感じです

電流の計測

下の写真のコレクタと LED のカソード部分にある緑の配線部分を電流計に変えて計測しました
結果は「8mA」ほど流れました
だいたい 330 オームを使っている場合と同じくらいの明るさになりました

300 倍の増幅率だとすると 8mA / 300 = 0.027mA がもともとの L チカ回路で流れていた電流かなと予測できます

おまけ: 10kオーム

もう少し小さい抵抗があったのでやってみました
これだと増幅後は 50mA も流れたので明るさもかなり変わったので実験の変化としてはわかりやすかったです
ただ 50mA も LED に流すのはあまり意味がないし壊れる可能性があるので実際の回路では 20mA 程度が流れるようにしましょう

最後に

トランジスタの使い方の基本を学ぶために Lチカ回路でトランジスタを使ってみました
簡単な回路を使って変化を確認することで使い方の理解がより深まると思います

今回は LED で試しましたが少し大きめの電流が必要なアクチュエータなどでよく使われるイメージがあります
なのでトランジスタを使えるようになると大きな電力が必要な部品や回路を動作させることもできるようになるので覚えておいて損はないかなと思います
ただ大きな電流を流せば流すほど電源の電圧降下が早まりバッテリーなどの消耗も早くなるのでそこは電源の容量とも相談しながら回路を作成すると良いかなと思います