Project_OKI’s diary

エンジニアの勉強ブログ

mbedでソレノイド制御

 

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

 

  以上の条件から今回は、下記ダイオードを使用。

  ・整流用ショットキーダイオード 100V1A 1S10

 

 (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以上

 

 これを元にトランジスタ

 ・2SC2655L-Y-T9N-B 50V2A

 を選定した。

 これ以上は長くなる為、この部品で良いかの確認を次回記載する。

 

 詳しいトランジスタの計算、設計については別途記載するかも・・・  

 参考:

 ・ソレノイドをArduinoで制御しよう【付録編②】 - メカパラ

 ・トランジスタにベース抵抗がついている理由 | アナデジ太郎の回路設計

 ・My Tube Amp Manual

 

 

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) プログラムの説明
 (a) DigitalOut solenoid1(PC_0);
  PC_0ポートをデジタルOUTに設定している。
  solenoid1という名前で使用する。
  solenoid1が
   ・0の時0V
   ・1の時3.3V
  出力される。
 
 (b) DigitalIn sw1(PC_13);
  PC_13ポート(青ボタン)をデジタルINに設定している。
  sw1という名前で使用する。
  nucleof401はPC_13は内部でプルアップされており、押されるとGNDに落ちる。
  そのため、sw1が
   ・0の時スイッチが押された状態
   ・1の時スイッチが離された状態
  となる。
  通常3.3Vを1、0Vを0として入力される。
 
トランジスタに関するお勧め動画
 
 

3.関連記事

関連記事一覧:
 
組み込みC言語