obniz 電子工作 電気の話

obnizでサーボモータを動かそう!【obniz講座第8回】

サンダー
今回はobnizでサーボモータを動かします。
サーボモータって何?どこで使われるの?
かみなりん
サンダー
サーボモータは角度を指定出来るモータで、ロボットの関節などに使用されています。

 

これまでのobniz講座はコチラからどうぞ。

記事内容
obnizでIoT電子工作を始めよう!【obniz講座第1回】obnizのディスプレイに文字を表示させます
obnizでLEDを光らせよう!【obniz講座第2回】obnizにLEDと抵抗を接続してLEDを光らせます
ソフトウェアボタンでLEDをON/OFFしよう【obniz講座第3回】HTMLで作成したボタンを押して、LEDをON/OFFさせます
obnizのPWM制御でLED調光しよう【obniz講座第4回】obnizのPWM機能を使ってLEDを調光させます
obnizでフルカラーLEDをグラデーション点灯しよう【obniz講座第5回】obnizでフルカラーLEDをグラデーション点灯させます
obnizで圧電ブザーを鳴らそう!【obniz講座第6回】obnizで圧電ブザーを鳴らします
obnizでミニ四駆をラジコン化しよう!【obniz講座第7回】obnizでタミヤのミニ四駆をコントロールします

 

また、Facebookグループ「obnizファン」主催のmeetup vol.1に参加したレポートも宜しければご覧ください。

obnizファンmeetup vol.1 参加レポートアイキャッチ
obnizファンmeetup vol.1参加レポート【ロボットからHMDまで】

サンダー先日、2019年3月20日(水)に「obnizファンmeetup vol.1」に参加させて頂きました。 面白そうだね!どんな内容か教えて!かみなりん サンダーはい、とても参考になりましたので簡 ...

続きを見る

 

準備する物

obniz&サーボモータ

 

準備するもの

    • obniz本体 ×1個
    • マイクロUSBケーブル ×1本
    • サーボモータ ×1個
    • ピンヘッダ(モータコネクタとobnizのポートを接続)
マイクロUSBケーブル
created by Rinker
¥44 (2024/11/30 16:48:22時点 楽天市場調べ-詳細)

 

マイクロサーボSG92R(秋月電子通商)

マイクロサーボSG90(秋月電子通商)

 

サーボモータとobnizを接続

サーボモータとobnizを接続します。

今回、サーボモータはTowerPro(http://www.towerpro.com.tw/)社の「SG90」を使用します。

 

SG90のデータシート

SG90のスペックは下記の通りです。

重量9g
サイズ23mm×12.2mm×29mm
トルク1.8 kgf・cm (4.8V)
動作電圧4.8V(~5V)
デューティサイクル0.5ms~2.4ms(適切値は0.6ms~2.3ms)

重量、サイズ、動作電圧はなんとなくお分かり頂けるかと思いますが、トルクやデューティサイクルは聞き馴染みがないかもしれません。

トルクやデューディーサイクルについては、のちほど説明いたします。

 

SG90の配線

SG90の信号線は下記の通りです。

アサインワイヤーカラー
信号線
電源
GND

 

信号線はモーターを制御するためで、サーボモータはPWMという機能を使ってコントロールします。

PWMのパルス幅に応じて、サーボモーターの角度が決まります。

PWMについてはこちらで説明しているので、こちらも合わせてご覧ください。

PWMってなに?PWMで何ができる?

デジタルとアナログについて 電気の世界では基本的に「1」か「0」、つまり「ON」か「OFF」かで表現されます。 このように「0」か「1」かで表されることを「デジタル」と呼びます。   それに ...

続きを見る

 

電源線はモーターへ電力を供給するためで、今回は5V、GND線は電圧が0Vとなる基準の位置です。

 

「obniz.js」で使用する関数では、下記のようになります。

obniz.wired("ServoMotor", {signal:0, vcc:1, gnd:2});

それぞれの後の数字はobnizのポート番号になります。

 

モーターのトルクって?

トルクの説明

 

今回使用するサーボモーター「sg90」のトルクは、「1.8kgf・cm」です。

トルクの単位は「kgf・m(キログラムメートル)」や「N・m(ニュートンメートル)」で表します

1993年までは「kgf・m」が扱われていましたが、1993年に「新計量法」によって「N・m」へ移行されています。

 

N(ニュートン)の定義は、質量1kgに1m/s2の加速度を生じさせる力です。

地球には重力がありますが、その重力加速度は9.8m/s2です。

1993年まで使用されていた「1kgf・m」はこの重力加速度をかけた値となり、1kgf・m ≈ 9.8N・mです。

 

トルクは、「トルク = 力×回転半径」で表されます。

今回使用するサーボモータ「sg90」のトルクは「1.8kgf・cm」なので、モーターの軸から半径1cmの位置にある1.8kgfの重りを動かせるという事になります。

ちなみに1kgf・cmは0.098 N・mなので、「sg90」のトルクは、1.8kgf・cm ≈ 0.176 N・mになります。

$$ 1kgf \cdot cm = 0.01 kgf \cdot m \approx 0.098 N \cdot m $$

$$ 1.8kgf \cdot cm = 0.018 kgf \cdot m \approx 0.176 N \cdot m $$

 

デューティーサイクル

サーボモータにおけるPWMデューティーサイクルの関係

sg90のデータシートを見ると、デューティーサイクルは0.5ms~2.4msとなっています。

これは何を表しているかというと、PWMのパルス幅の適正な値を示しています。

「sg90」の可動域は180度ですが、パルス幅が0.5msのときが-90度、2.4msのときが+90度、中間の1.45msのときに0度となります。

これを適切な範囲で使用しない場合、モーターはこれ以上移動できない方向へ移動しようとするので、最悪の場合破損してしまいます

使用する際は使用するサーボモータのデータシートを読み、適切な範囲で使用する事を心がけてください。

 

サンプルプログラム

サンプルプログラムはこちらになります。

onbiz.jsは常に最新にしてください

下記のoniz.jsを読み込む際のバージョンは常に最新バージョンへ書き換えてください

<script src="https://unpkg.com/obniz@【ここの部分】/obniz.js" crossorigin="anonymous"></script>

<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://code.jquery.com/jquery-3.3.1.js" 
            integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" 
            crossorigin="anonymous">
    </script>
    <script src="https://unpkg.com/obniz@2.0.2/obniz.js" crossorigin="anonymous"></script>
</head>
<body>

    <div id="obniz-debug"></div>
    <table>
        <tr>
            <td><input type="range" id="angle" min="0" max="180" value="90"></td>
            <td>サーボ角度:<span id="angleText">90</span>度</td>
        </tr>
    </table>

<script>
  
var obniz = new Obniz("OBNIZ_ID_HERE");
 
    obniz.onconnect = async function () 
    {
      
          var servoMotor = obniz.wired("ServoMotor", {signal:0,vcc:1,gnd:2});
          servoMotor.range = {min: 0.6,max: 2.3}
          var angle = $("#angle").val();
          servoMotor.angle(angle);
      

        $("#angle").on("change", function(){
            angle = $("#angle").val();
            servoMotor.angle(angle);
            $("#angleText").text(angle);
        });
    }
</script>
</body>
</html>

 

画面インターフェース

サーボサンプルの画面インターフェース

今回作成するインターフェースは上記のようにシンプルです。

サーボモータの角度を0°~180°の範囲で指定し、スライダーに連動させてサーボモータの角度を指定します。

これは「obnizのPWM制御でLEDを調光しよう【obniz講座第4回】」の会で行ったLEDをPWM制御させたときの手段と同じで、スライダーで値を変更し、その値に応じて数字を書き換える処理をさせます。

 

既存部分の概略

これまでの講座で既出の部分については、過去の該当講座を紹介し、新たな部分のみ説明致します。

 

コード説明参照講座
<meta charset="utf-8">文字コード(UTF-8)の設定obnizでLEDを光らせよう!【第2回】
<meta name ~(省略)>横幅を端末に合わせ、表示倍率を1倍に設定obnizでLEDを光らせよう!【第2回】
<script src="https://code.jquery.com~(省略)jQueryをCDNから読み込んで利用obnizのPWM制御でLEDを調光しよう【obniz講座第4回】
<script src="https://unpkg.com/obniz@2.0.2/obniz.js"~(省略)obnizを制御するための関数などを利用obnizでIoT電子工作を始めよう!【obniz講座第1回】
<div id="obniz-debug"></div>obnizのデバッグ表示obnizでIoT電子工作を始めよう!【obniz講座第1回】
<input type="range" ~(省略)>inputのrangeタイプを使用obnizのPWM制御でLEDを調光しよう【obniz講座第4回】
<span id="angleText">~</span>spanタグでかこった数字を書き換えobnizのPWM制御でLEDを調光しよう【obniz講座第4回】
var obniz = new Obniz("OBNIZ_ID_HERE");設定したobnizのIDを「obniz」変数として宣言obnizでIoT電子工作を始めよう!【obniz講座第1回】
var angle = $("#angle").val();IDが「angle」の値を取得obnizのPWM制御でLEDを調光しよう【obniz講座第4回】
$("#angle").on("change",function() {(省略)}IDが「angle」が変化したときの処理obnizのPWM制御でLEDを調光しよう【obniz講座第4回】

 

<table><tr><td></td><td></td></tr></table>(14行目)

テーブルで囲って整形

今回、サーボモータの角度を変更するスライダー(inputタグ)と、サーボモータの角度を表示する値を1つのテーブルの中に収め、レイアウトを整形しています。

<table></table>がテーブルである事を表します。

<tr></tr>は「table row」の略で、テーブルの行部分(横方向)を指定するタグです。

<td></td>は「table data」の略で、テーブルセルの内容を指定するタグです。

スライダー(inputタグ)と、サーボモータの角度を表示する部分を1つのテーブルで囲み、2つの要素が横並びになるようにしています。

 

var servoMotor = obniz.wired("ServoMotor", {signal:0,vcc:1,gnd:2});はサーボモータのポート指定

obnizでサーボモータを制御するための設定です。

「obniz.wired("ServoMotor", {signal:0,vcc:1,gnd:2});」はヘッダー部で読み込んだ「obniz.js」で定義されている関数1つです。

obniz.wiredの最初の引数として"ServoMotor"、次はどのポートを使用するか宣言しています。

 

obniz&サーボモータ

 

アサインワイヤーカラーobnizポート番号
信号線0
電源1
GND2

図のように信号線(黄)を0番ポート、電源線(赤)を1番ポート、GND線(茶)を2番ポートと接続しました。

購入したサーボモータがコネクタタイプの場合には、下記のようなピンヘッダを中継として挿入する事で、onizのポートと接続します。

created by Rinker
¥44 (2024/11/30 16:48:22時点 楽天市場調べ-詳細)

 

servoMotor.range = {min: 0.6,max: 2.3}はデューティーサイクルの設定

サーボモータにおけるPWMデューティーサイクルの関係

「servoMotor.range」は、パルス幅の最小値と最大値を設定しています。

「sg90」のデューティーサイクルは0.5ms~2.4msですが、この値に設定すると範囲を超えてしまうようだったので、調整して0.6ms~2.3msの範囲で動作させるようにしました。

 

servoMotor.angle(angle);は0°~180°の角度を指定して動作させる

servoMotor.angle(degree);の「degree」に角度を代入します。

その角度に応じて、サーボモータが動作します。

今回のサンプルプログラムではスライダー(id名【angle】)から取得した値を「angle」という変数に格納し、その「angle」をサーボモータの角度として代入しています。

 

動作確認

スライダーを動かして、サーボモータが左右に動作すれば成功です。

うまく動作しない場合は、配線ミスがないか、スペルミスがないかなど確認してください。

 

【前回の講座】

第7回
obnizでミニ四駆をラジコン化しよう
obnizでミニ4駆をラジコン化しよう!【obniz講座第7回】

今回は下の動画のように、タミヤの4輪駆動車工作基本セット(以下、ミニ四駆と呼びます)をobnizでコントロールしてラジコンにする説明をします。   obnizを使った電子工作をYoutube ...

続きを見る

 

【講座のまとめ】

記事内容
obnizでIoT電子工作を始めよう!【obnizでIoT電子工作を始めよう!【obniz講座第1回】obnizのディスプレイに文字を表示させます
obnizでLEDを光らせよう!【obniz講座第2回】obnizにLEDと抵抗を接続してLEDを光らせます
ソフトウェアボタンでLEDをON/OFFしよう!【obniz講座第3回】HTMLで作成したボタンを押して、LEDをON/OFFさせます
obnizのPWM制御でLEDを調光しよう【obniz講座第4回】obnizのPWM機能を使ってLEDを調光させます
obnizでフルカラーLEDをグラデーション点灯しよう【obniz講座第5回】obnizでフルカラーLEDをグラデーション点灯させます
obnizで圧電ブザーを鳴らそう!【obniz講座第6回】obnizで圧電ブザーを鳴らします
obnizでミニ4駆をラジコン化しよう!【obniz講座第7回】obnizでタミヤのミニ四駆をコントロールします
obnizでサーボモータを動かそう!【obniz講座第8回】obnizでサーボモータを動かします







人気の記事

1

サンダー直流(DC)と交流(AC)の違いって分かりますか? かみなりん家庭用のコンセントは交流(AC)だよね。乾電池はなんとなくDC(直流)というイメージです。 サンダー改めて聞かれると、交流と直流の ...

【オペアンプ】 反転増幅回路の回路図アイキャッチ 2

かみなりんオペアンプの反転増幅回路ってどういう特徴があるの? サンダー反転増幅回路は文字通り、入力電圧の符号を反転、増幅する回路になります。 かみなりん反転して、増幅するから反転増幅回路なんだね。じゃ ...

アノードコモンとカソードコモン 3

サンダー「アノードコモン」と「カソードコモン」の違い分かりますか? かみなりんえーっと、アノードがプラス側、カソードがマイナス側で・・・コモンってなんだっけ? サンダー改めて聞かれると、どっちがどうだ ...

4

かみなりんアフィリエイトで成果が発生しない!? という問題が起きているようですね。 アフィリエイトが発生しないというのは死活問題ですね。   原因はどうやら、アンカーリンク内のtarget= ...

旅行やアルバイト等の 紹介にバリューコマースの『MyLinkBox』が超便利!! 5

サンダーバリューコマースから2019年6月5日に『MyLinkBox』がリリースされました! かみなりんその『MyLinkBox』ってなに? サンダー『カエレバ』や『Rinker』はご存知でしょうか? ...

miMind使いかたアイキャッチ 6

サンダーマインドマップはご存知ですか?   放射状に枝が伸びていくアレですよね?   頭の整理をするのに良く使います   私もよく情報を整理するためにマインドマップを作成 ...

Web(ウェブ)開発の学習にオススメなUdemyコース3選 7

サンダー世界最大級のオンライン学習プラットフォームの【Udemy】はご存知ですか? アメリカのシリコンバレー発のオンライン学習サイトで、日本ではベネッセが運営しています。 私自身もWeb開発やPyth ...

ブレッドボード の使い方のアイキャッチ 8

サンダーブレッドボードって知ってる? かみなりん電子工作でハンダ付けせずに、手軽に電子回路が組めるボードだよね? サンダーそう、今回はそのブレッドボードの使い方を紹介します。ブレッドボードを使ってLE ...

箇条書きタグ自動追加ツール 9

【このツールの目的】 箇条書きタグ(ulタグもしくはolタグ)を自動で追加するツールです。 listタグも自動で追加します。 【箇条書きの種類選択】 数字無し箇条書き(ul) ・箇条書き数字有り箇条書 ...

LED抵抗計算機 10

LED抵抗自動計算機 下図のように、LED1個をつなぐとき、LEDに流したい電流から抵抗値を求める計算機です。   LED抵抗計算機 ↓電源電圧【例】5(V) ↓LEDの電圧降下【例】2(V ...

-obniz, 電子工作, 電気の話
-, , , , , , ,