mbedでソレノイド制御
1.本日の内容
(1) mbed(nucleof401RE)を使用し、ソレノイドをON/OFFする回路を作成する。
(2) mbedでソレノイドをON/OFFするプログラムを作成する。
・目次
2.内容
(1) やる内容の詳細
・mbedでソレノイドを制御する為の回路を設計する。
・mbedのスイッチを押した時にソレノイドがON
・mbedのスイッチを離している時はソレノイドがOFF
するプログラムを作成する。
(2) 使用部品
個数 | 部品名 | 型番 |
---|---|---|
2 | ワニ口クリップコード付き(電源接続用) | GBseries |
1 | mbed(nucleof401RE) | nucleof401 |
複数 | ブレッドボード・ジャンパーワイヤ(オス-オス) | R1702-007 |
1 | ブレッドボード | LEOBROJP043 |
1 | 抵抗1k | CF25J1KB |
1 | トランジスタ | 2SC2655 |
1 | ツェナーダイオード | 1S10 |
※電源は9Vの手持ちの電源を使用した。
(3) ソレノイド回路図
(4) 回路設計内容
(a) mbedとトランジスタの接続
・mbedのポートの出力可能電流は、50mA程度の為、トランジスタを用いる。
トランジスタによって、必要な電流を供給する。
(b) ソレノイドにダイオードを接続
・ソレノイドを動作させた後、電源をOFFにすると、
ソレノイドはそのまま電流を流そうとする。
これにより、逆起電力が発生する。
逆起電力は、トランジスタを破壊してしまったり、他の回路への悪影響を及ぼす。
この悪影響防止の為に、ソレノイドと並列にダイオードを接続する。
参考:逆起電力の発生原理と対策をわかりやすく解説 【Analogista】
(c) 仕様
今回は、目的としてソレノイドにペンを付けて、文字が書けるようにする。
ソレノイドは、「CBS08300120」を使用する。
駆動時間としては10秒かからない程度。
遮断時間も同じく10秒として設計する。
ある程度力が必要な可能性を考慮し、12Vで使用できるようにしておく。
(d) 必要な電流計算:
・ソレノイドの抵抗12Ω
・使用する電圧(最大) 12V
・流れる電流 = 使用する電圧(12V) / ソレノイドの抵抗(12Ω)
= 1A
通電時間は、10秒も使用しないため、十分許容範囲と考える。
実際の計算方法は下記サイトを参照
(e) 使用するダイオードの選定
使用するダイオードは、
・順方向電流が1A以上(余裕を見たら1.5A以上)
・逆耐圧が12V以上
のものを使用する。
基本的に使用するダイオードの種類は、
・整流用のシリコンダイオード
など。
私の場合は、ショットキーバリアダイオードを使用する場合が多い。
このダイオードは、耐圧が高く、スイッチング特性が良いという特徴がある。
参考:ショットキーバリアダイオード | ダイオードとは? | エレクトロニクス豆知識 | ローム株式会社 - ROHM Semiconductor
以上の条件から今回は、下記ダイオードを使用。
(f) トランジスタの選定と計算
mbedでソレノイドをON/OFFするために、トランジスタを利用する。
今回はNPNトランジスタを使用する。
トランジスタは、電流増幅として使われる。
今回は、トランジスタをスイッチの役割として使用する。
使用するのは直流の為、直流の計算を行う。
通常トランジスタは、ベースに流れる電流に、
電流増幅率をかけた値を、コレクタ電流として、計算していく。
ベースに電流が流れると、その電流によって、
コレクタからエミッタに電流が流れる。
(トランジスタの種類によって異なる。)
コレクタ電流を1Aとして、十分流れるベース電流を流し、それに耐えうる
部品を選定すればよい。
トランジスタのベースに抵抗を入れる。
この抵抗により、ベースにかかる電圧と流れる電流を制限する。
計算:
Vcc - IbRb = Vb
Vcc:mbedのピン出力3.3V
Ib:ベースに流れる電流
Rb:ベースに接続する抵抗
Vb:トランジスタのベース電圧(ベースエミッタ間電圧)0.6V
トランジスタの増幅率100以上のものを使用すると想定する。
Ib*hfb = Ic
hfb:DC電流ゲイン(増幅)
Ic:コレクタ電流 今回は1A
よって、
Ib = Ic/hfb = 1/100 = 10mA以上必要
Rb = (Vcc - Vc)/Ib
= (3.3 - 0.7 )/10m
=2.6KΩ
よって、2.6Ω以下の抵抗をRbに接続する。
以上から、下記仕様を満たすトランジスタを選定する。
・コレクタ電流Ic = 1A以上流れる
・耐電圧がVce、Vcbが12V以上
・増幅hfbが100以上
これを元にトランジスタ
を選定した。
これ以上は長くなる為、この部品で良いかの確認を次回記載する。
詳しいトランジスタの計算、設計については別途記載するかも・・・
参考:
・ソレノイドをArduinoで制御しよう【付録編②】 - メカパラ
・トランジスタにベース抵抗がついている理由 | アナデジ太郎の回路設計
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11151589661
(5) mbedプログラムの作成
/* 2023/02/11 mbed nucleo STM32F401 mbedの青ボタンが押された時に、ソレノイドをONするプログラム 入力 SW1 :PC13(青ボタン) L:ON、H:OFF 出力 ソレノイド :PC0 */ #include "mbed.h" //ソレノイド出力設定 //PC_0をGPIOの出力に設定 DigitalOut solenoid1(PC_0); //スイッチ入力設定 //PC_13をGPIOの入力に設定 DigitalIn sw1(PC_13); int main(){ while(1) { if(sw1 == 0 ){ //スイッチが押された時 //ソレノイドON solenoid1 = 1; }else { //スイッチが押されてない時 //ソレノイドOFF solenoid1 = 0; } } }
(6) プログラムの説明
3.関連記事
・STM32マイコン_2(UART通信:TeraTermにHellow表示) - Project_OKI’s diary
・STM32マイコン_3(UART通信:複数文字送信) - Project_OKI’s diary
・STM32マイコン_4(NVICの設定内容) - Project_OKI’s diary
・STM32マイコン_5(スイッチ入力とLED点灯、消灯) - Project_OKI’s diary
その他:
・CubeIDEの使い方(起動~デバック実行) - Project_OKI’s diary
C言語:
・組み込みの為のC言語基礎知識1(printf) - Project_OKI’s diary
・C言語基礎知識2(for分で処理を繰り返す) - Project_OKI’s diary
・C言語基礎知識3(配列) - Project_OKI’s diary