技術科教育におけるステッピングモーター教材の開発
15
0
0
全文
(2) 北海道教育大学紀要(自然科学編)第71巻 第2号 Journal of Hokkaido University of Education(Natural Sciences)Vol. 71, No.2. 令 和 3 年 2 月 February, 2021. 技術科教育におけるステッピングモーター教材の開発 秋 葉 治 克 北海道教育大学旭川校電気研究室. Development of the Stepping Motor Teaching Materials in Technology Education AKIBA Haruyoshi Electric Laboratory, Asahikawa Campus, Hokkaido University of Education, Asahikawa 070-8621. 概 要 In this paper, the stepping motor teaching materials which united the electric region and the information domain for the student of the department of technology were developed. Software used the Stepper library attached to Arduino IDE. In the electric region, the unipolar and bipolar stepping motor driver circuits for controlling by Arduino was manufactured. In the information domain, the programming education using serial communication, an analog input, a photosensor and an arm robot was developed. Thereby, in both sides of hardware and software, I think that students can understand the feature of a stepping motor.. 本研究では,技術科の学生を対象として電気領. 1.まえがき. 域と情報領域を融合した,Arduinoで制御するス. ステッピングモーターは中学校技術・家庭科の 1). テッピングモーター教材を開発した。Arduinoで. 教科書 でも取り上げられており,利用機器の例. ステッピングモーターを回す事例は数多くあ. と特徴および構造について簡単に説明がなされて. る4),. 2), 3). 5), 6), 7). 。しかし,これらの事例ではAllegro社. は,一般にステッ. のステッピングモータードライバー A4988を搭. パーまたはパルスモーターと呼ばれているが,こ. 載したモジュールを使用しており,その内部の回. のモーターの最大の特徴はパルスによってディジ. 路動作を理解することは難しい。そこで筆者は,. タ ル 的 に 制 御 で き る と い う 点 に あ る。 こ れ は. ユニポーラおよびバイポーラステッピングモー. フィードバックなしで決められた角度で回転し,. タードライバーを自作することにより電気回路づ. 高精度で停止することができる。また,停止時に. くりを学び,ソフトウェアとして Arduino IDE. おいても他のモーターとは異なり,大きな静止ト. を使用することによりプログラミングを学ぶこと. ルクを持っている。. を目的とし,授業例としてシリアル通信,アナロ. いる。ステッピングモータ. 23.
(3) 秋 葉 治 克 ステッピングモーター ST-42BYG0506H 5V、200ステップ. トランジスタは ダーリントンダンパ内蔵 しか使用できません。. Arduino uno. 2SD1195. D8. X. 赤. 3.3k JU41. 白 2SD1195. X. 3.3k. Y. 3.3k. D11 Y. 3.3k. D9. 緑. 2SD1195. D10. 黄. 黒. 青. 2SD1195 ACアダプタ 6V、2.8A +. GND. GND. -. 図1 図ユニポーラステッピングモータードライバー 1 ユニポーラステッピングモーター の回路図 ドライバーの回路図. 図 ユニポーラステッピングモーター 図2 2 ユニポーラステッピングモータードライバー の外観 ドライバーの外観. グ入力,光センサー,アームロボを使ったプログ ることによりプログラミングを学ぶことを目的と ラミング学習の導入を試みた。 し,授業例としてシリアル通信,アナログ入力,. ターミナルブロック2個を基板にはんだ付 ③④ ニッパを使って分割ロングピンソケットを. 光センサー,アームロボを使ったプログラミング. 5けする。 極にカットし,基板にはんだ付けする。 ④⑤ トランジスタ4個を基板にはんだ付けする。 ターミナルブロック 2 個を基板にはんだ付. 学習の導入を試みた。. 2.ステッピングモータードライバーの製作. ⑥ カーボン抵抗4個を基板にはんだ付けする。 けする。. 2図1および図2にユニポーラステッピングモー . ステッピングモータードライバーの製作. ⑤⑦ ダイオード4個を基板にはんだ付けする。 トランジスタ 4 個を基板にはんだ付けする。. タードライバーの回路図および外観を示す。 図1および図2にユニポーラステッピングモ 製作に使用した部品および道具はダーリントン. ⑥⑧ カーボン抵抗 4 個を基板にはんだ付けする。 はんだごてを使って, 基板裏面を配線する。 ⑦ ダイオード 4 個を基板にはんだ付けする。 分割ロングピンソケットに至る電線は潤フロ ⑧ はんだごてを使って,基板裏面を配線す ンETFE電線を使用し,その他はAWG24を. ータードライバーの回路図および外観を示す。 トランジスタ2SD1195(5A,100V) ,ファスト 製作に使用した部品および道具はダーリント リカバリダイオード1JU41(600V,1A) ,カー. る。分割ロングピンソケットに至る電線は 使用する。 潤フロン ETFE 電線を使用し,その他は ⑨ 基板に金属製スペーサ4個をなべ小ねじ4 AWG24 を使用する。 個でねじ止めする。 ⑨ 基板に金属製スペーサ 4 個をなべ小ねじ 4 ⑩ プリンターを使ってラベルシールに「赤白 個でねじ止めする。 緑黄黒青」と「GND/Y Y/X X」と印刷し ⑩ プリンターを使ってラベルシールに「赤白 た後,基板に貼る。 緑黄黒青」と「GND /Y Y /X X」と印刷し 励磁方式として2相励磁方式8)を採用した。こ た後,基板に貼る。 の方式は2相を同時に励磁し,消費電力は大きい 励磁方式として 2 相励磁方式 8)を採用した。こ が,大きなトルクが得られる。図3にディジタル の方式は 2 相を同時に励磁し,消費電力は大きい オシロスコープを使用して観測した,Arduino が,大きなトルクが得られる。図 3 にディジタル. ントランジスタ 2SD1195(5A,100V),ファストリカ ボン抵抗(3.3kΩ,1/4W),2.1mm標準DCジャッ バリダイオード 1JU41(600V,1A),カーボン抵抗 ク(4A,基板取付用),分割ロングピンソケッ (3.3kΩ,1/4W),2.1mm 標準 DC ジャック(4A,基板 ト(2.54mmピッチ,42P,3A),ターミナルブ 取付用),分割ロングピンソケット(2.54mm ピッ ロック(3ピン,青,縦,小,15A/300VAC), チ,42P,3A),ターミナルブロック(3 ピン,青,縦, 片面ガラスコンポジットユニバーサル基板めっき 小,15A/300VAC),片面ガラスコンポジットユニバ 仕上Cタイプ(72×47mm,秋月電子通商),電 ーサル基板めっき仕上 C タイプ(72×47mm,秋月電 線AWG24( 梅 澤 無 線 ), 潤 フ ロ ンETFE電 線 子通商),電線 AWG24(梅澤無線),潤フロン ETFE 電 (CSMW用0.32mm) ,10mm金属製スペーサ,φ 線(CSMW 用 0.32mm),10mm 金属製スペーサ,φ3×. 3×5mmなべ小ねじ,卓上ボール盤,はんだご 5mm なべ小ねじ,卓上ボール盤,はんだごて,ハ て,ハンダ,はんだこて台,ニッパ(ミニ) ,ラ ンダ,はんだこて台,ニッパ(ミニ),ラジオペン. から出力される2相励磁信号波形X(D8),/X オシロスコープを使用して観測した,Arduino か (D9) ,Y(D10) ,/Y(D11)を示す。振幅 ら出力される 2 相励磁信号波形 X(D8),/X(D9),. ジオペンチ(ミニ) ,ドライバ(+)である。 チ(ミニ),ドライバ(+)である。 製作手順は以下の①~⑩に従う。 製作手順は以下の①~⑩に従う。. 5V,周波数25Hz,デユーティー比50%である。 Y(D10),/Y(D11)を示す。振幅 5V,周波数 25Hz,. ① 卓上ボール盤を使って,基板にDCジャッ ① 卓上ボール盤を使って, 基板に DC ジャック. Xと/X,Yと/Yはそれぞれ論理反転で,XとY デユーティー比 50%である。X と/X,Y と/Y はそ. を取り付けるための穴(φ3mm)を 3 か所あ クを取り付けるための穴(φ3mm)を3か. れぞれ論理反転で, X と Y の位相差は 90°である。 の位相差は90°である。なお,2相励磁停止中は. ける。 所あける。. なお, 2 相励磁停止中は X と Y は 5V 一定に,/X と XとYは5V一定に,/Xと/Yは0V一定になる。. ② DC ジャックを穴に挿入しホットグールボン ② DCジャックを穴に挿入しホットグールボ ドで接着する。 ンドで接着する。. /Y は 0V 一定になる。. 3.ソフトウェア. ③ ニッパを使って分割ロングピンソケットを 5極にカットし,基板にはんだ付けする。. 24. 2. インターネットブラウザを立ち上げ,下記にア.
(4) 技術科教育におけるステッピングモーター教材の開発. してもステッピングモーターは回転しない。 step(steps) この命令はsetSpeed命令で設定した速さで,指 定したステップ数(steps)だけステッピングモー ターを回転させる。逆回転させるにはステップ数 を負の値にする。この命令を実行するとステッピ ングモーターは回転する。そして,止まるまで次 の命令を実行せずに待ち続ける。 図3 2相励磁信号波形. クセスしてフリーソフトであるArduino IDEをダ ウンロードする。 http://arduino.cc/en/Main/Software. 4.ステッピングモーター 図4および図5に今回使用したユニポーラステッ ピングモーター ST-42BYG0506HとST-42BYG020 の外観を示す。. Arduino IDEにはユニポーラおよびバイポーラ. ST-42BYG0506Hは 相 数 4, 基 本 ス テ ッ プ 角. ステッピングモーターをコントロールするための. 1.8°±5%,1回転ステップ数200,コイル抵抗. 9). ライブラリ が用意されている。 #include〈Stepper.h〉. 10±10 % Ω/相, 入 力 定 格 電 圧 5 V, 定 格 電 流 0.5A/相,静止トルク0.83kgf・cm,重量0.22kgで. ステッピングモーターをコントロールしようと. ある。使用に際しての注意は,感電するので手で. する場合は,この命令により最初にStepperライ. 軸を回してはならない。なお,このままでは回転. ブラリをインクルードする必要がある。. のようすがわからないので,ホットグールボンド. Stepper(steps, pin1, pin2, pin3, pin4). を使ってステッピングモーターの回転軸にレゴブ. この命令はArduinoに接続するステッピング. ロック(Technic Brick 1×8)を,ステッピン. モーターのステップ数(steps)と接続ピン(pin1,. グ モ ー タ ー の ボ デ ィ に レ ゴ ブ ロ ッ ク(4-Stud. pin2, pin3, pin4)を割り当てる。. Cross Axle)を接着した。. setSpeed(rpms). ST-42BYG020は相数4,基本ステップ角1.8°. この命令はステッピングモーターの速さを毎分. ±5%,1回転ステップ数200,コイル抵抗20±. の回転数(rpms)で設定する。この命令を実行. 10%Ω/相,入力定格電圧12V,定格電流0.6A/相,. 図4 ST-42BYG0506H. 図5 ST-42BYG020. 25.
(5) 秋 葉 治 克. 静止トルク1.6kgf・cm,重量0.21kgである。使用. 次に,Arduino IDEを立ち上げてスケッチを作. に際しての注意は,感電するので手で軸を回して. 成する。このステッピングモーターのステップ数. はならないのと,ハイパワー(高出力)仕様のた. は200である。つまり,200ステップすると1回転. め,DC12Vで使うと20分程度で触れられなくな. す る。 図10に ス テ ッ プ 数 を200一 定 に し,set. るほど熱くなる。連続使用を想定する場合は,. Speed(rpms)命令で回転の速さを変化させた. 9V程度で使うことが推奨されている。なお,ス. 場合の回転のようすを観察するスケッチ1を示. テッピングモーターの回転軸には物を載せて回転. す。スケッチ1の1行目はStepperライブラリを. できるように5mmモーターシャフト用ハブ(秋. インクルードする。2行目はStepper型の変数を. 月電子通商)を取り付けた。. stepperと し て 宣 言 し,Arduinoに 接 続 す る ス テッピングモーターのステップ数を200,接続ピ. 5.授業例 5-1.動かしてみる. ンとして8,9,10,11番ピンを割り当てる。ス ケッチ1の4行目でrpmsを1とするとステッピ ングモーターは1分かけて1回転する。同様に2. まず,接続を行う。図6に示すように,Arduino. とすると30秒かけて1回転,3とすると20秒かけ. のディジタル8番(D8) ,9番(D9) ,10番. て1回転,4とすると15秒かけて1回転,6とす. (D10) ,11番(D11),GNDピン(GND)とステッ. ると10秒かけて1回転,12とすると5秒かけて1. ピングモータードライバーのX,/X,Y,/Y,. 回転,30とすると2秒かけて1回転,60とすると. GNDを ブ レ ッ ト ボ ー ド・ ジ ャ ン パ ー ワ イ ヤ ー. 1秒かけて1回転する。5行目はステップ数を. (オス―オス)で接続する。図7に示すように,. 200に設定する。. ステッピングモーター ST-42BYG0506Hのコイル. 図11に回転の速さを30一定にし,step(steps). をステッピングモータードドライバーのターミナ. 命令でステップ数を変化させた場合の回転のよう. ルブロックにねじ止めする。図8に示すように,. すを観察するスケッチ2を示す。スケッチ2の5. ステッピングモータードライバーのDCジャック. 行目でstepsを200とすると1回転,400とすると. にスイッチングACアダプター(NP12-1S0523,. 2回転,600とすると3回転,100とすると1/2回. 5V,2.3A,100~120V,秋月電子通商)を接. 転,50とすると1/4回転する。逆回転させるには,. 続し,その電源プラグをコンセントに差し込む。. それぞれ-200,-400,-600,-100,-50とす. 図 9 に 示 す よ う に,Arduinoと パ ソ コ ン をUSB. ればよい。. ケーブルで接続する。. 図6 Arduinoとドライバーの接続. 26. 図12に正転・逆転を繰り返すスケッチ3を示. 図7 ドライバーとステッピングモーターの接続.
(6) 技術科教育におけるステッピングモーター教材の開発. #include <Stepper.h> Stepper stepper = Stepper(200,8,9,10,11); #include <Stepper.h> #include <Stepper.h> Stepper stepper = Stepper(200,8,9,10,11); Stepper stepper = Stepper(200,8,9,10,11); void setup() { stepper.setSpeed(1); void setup() { void setup() { stepper.step(200); stepper.setSpeed(1); stepper.setSpeed(1); } stepper.step(200); stepper.step(200); } } void loop() { void loop() { void loop() { } } } 図 10 スケッチ 1 図10 スケッチ1 図 10 スケッチ 1 (ステップ数を一定、回転の速さを可変) 図 10 スケッチ 1 (ステップ数を一定,回転の速さを可変) (ステップ数を一定、回転の速さを可変) (ステップ数を一定、回転の速さを可変). 図8 ドライバーと AC アダプターの接続 図8 ドライバーとACアダプターの接続 図8 ドライバーと AC アダプターの接続 図8 ドライバーと AC アダプターの接続. #include <Stepper.h> Stepper stepper = Stepper(200,8,9,10,11); #include <Stepper.h> #include <Stepper.h> Stepper stepper = Stepper(200,8,9,10,11); Stepper stepper = Stepper(200,8,9,10,11); void setup() { stepper.setSpeed(30); void setup() { void setup() { stepper.step(200); stepper.setSpeed(30); stepper.setSpeed(30); } stepper.step(200); stepper.step(200); } } void loop() { void loop() { void loop() { } } } 図 11 スケッチ 2 図 11 スケッチ 2 (ステップ数を可変、回転の速さを一定) 図 11 スケッチ 2 図11 スケッチ2 (ステップ数を可変、回転の速さを一定) (ステップ数を可変、回転の速さを一定) (ステップ数を可変,回転の速さを一定). 図9 Arduino とパソコンの接続 図9 Arduinoとパソコンの接続 図9 Arduino とパソコンの接続 図9 Arduino とパソコンの接続 ばよい。 す。void setup()関数はスケッチの実行開始時, ばよい。 図 12 に正転・逆転を繰り返すスケッチ 3 を示 ばよい。 すなわち電源を入れた直後またはボードをリセッ 図 12 に正転・逆転を繰り返すスケッチ 3 を示 す。void setup()関数はスケッチの実行開始時, 図 12 に正転・逆転を繰り返すスケッチ 3 を示 トした後に一度だけ呼び出される。void loop() す。void setup()関数はスケッチの実行開始時, すなわち電源を入れた直後またはボードをリセッ す。void setup()関数はスケッチの実行開始時, 関数はvoid setup()関数が呼ばれた後に,繰り すなわち電源を入れた直後またはボードをリセッ トした後に一度だけ呼び出される。void loop() すなわち電源を入れた直後またはボードをリセッ 返し呼び出される。このため正転・逆転を繰り返 トした後に一度だけ呼び出される。void loop() 関数は void setup()関数が呼ばれた後に,繰り返 トした後に一度だけ呼び出される。void loop() すことになる。8行目と10行目のdelay(1000) 関数は void setup()関数が呼ばれた後に,繰り返 し呼び出される。このため正転・逆転を繰り返す 関数は void setup()関数が呼ばれた後に,繰り返 はプログラムを1000ms,つまり1秒だけ止める し呼び出される。このため正転・逆転を繰り返す ことになる。8 行目と 10 行目の delay(1000)はプ し呼び出される。このため正転・逆転を繰り返す 命令である。 ことになる。8 行目と 10 行目の delay(1000)はプ ログラムを 1000ms, つまり1秒だけ止める命令で ことになる。8 行目と 10 行目の delay(1000)はプ ログラムを 1000ms,つまり1秒だけ止める命令で ある。 ログラムを 1000ms,つまり1秒だけ止める命令で ある。 5-2.シリアル通信機能を使う ある。 図13にシリアルモニタからfを送信するとス 5-2.シリアル通信機能を使う 5- 2 .にシリアルモニタから シリアル通信機能を使う 図2 13. f を送信するとス テッピングモーターを1回転,bを送信すると逆 5- シリアル通信機能を使う 図 13 にシリアルモニタから f を送信するとス テッピングモーターを 1 回転,b を送信すると逆 図 13 にシリアルモニタから f を送信するとス 1回転,hを送信すると1/2回転,qを送信する テッピングモーターを 1 回転,b を送信すると逆 1 回転,h を送信すると11/2 回転,q を送信すると テッピングモーターを 回転,b を送信すると逆 と1/4回転,1を送信すると1ステップ回転,- 11/4 回転,h を送信すると 1/2 回転,q を送信すると 回転,を送信すると 1 を送信すると1ステップ回転, -を送 1 回転,h 1/2 回転,q を送信すると を送信すると逆1ステップ回転するスケッチ4を 1/4 回転,1 を送信すると1ステップ回転,-を送 1/4 回転,1 を送信すると1ステップ回転,-を送 示す。スケッチ4の3行目は文字型の変数nを宣. 言する。. #include <Stepper.h> Stepper stepper = Stepper(200,8,9,10,11); #include <Stepper.h> #include <Stepper.h> Stepper stepper = Stepper(200,8,9,10,11); Stepper stepper = Stepper(200,8,9,10,11); void setup() { stepper.setSpeed(30); void setup() { void setup() { } stepper.setSpeed(30); stepper.setSpeed(30); } } void loop() { stepper.step(200); void loop() { void loop() { delay(1000); stepper.step(200); stepper.step(200); stepper.step(-200); delay(1000); delay(1000); delay(1000); stepper.step(-200); stepper.step(-200); } delay(1000); delay(1000); } } 図 12 スケッチ 3(正転・逆転を繰り返す) 図 12 スケッチ 3(正転・逆転を繰り返す) 図12 スケッチ3(正転・逆転を繰り返す) 図 12 スケッチ 3(正転・逆転を繰り返す). 信すると逆1ステップ回転するスケッチ 4 を示す。 信すると逆1ステップ回転するスケッチ 4 を示す。 スケッチ 4 の 3 行目は文字型の変数 n を宣言する。 信すると逆1ステップ回転するスケッチ 4 を示す。 6行目のSerial.begin(9600)はシリアル通信 スケッチ 4 の 3 行目は文字型の変数 n を宣言する。 6 行目の Serial.begin(9600)はシリアル通信のデ スケッチ 4 の 3 行目は文字型の変数 n を宣言する。 のデータ転送レートを9600bps(ビット/秒)に 6 行目の Serial.begin(9600)はシリアル通信のデ 6 行目の Serial.begin(9600)はシリアル通信のデ 設定する。9行目のSerial.read()は受信データ 5 5 5. を読み込み変数nに代入する。10行目以降はif文. 27.
(7) 秋 葉 治 克. #include <Stepper.h> #include <Stepper.h> Stepper stepper = Stepper(200,8,9,10,11); Stepper stepper = Stepper(200,8,9,10,11); char n; char n; void setup() { void setup() { stepper.setSpeed(10); stepper.setSpeed(10); Serial.begin(9600); Serial.begin(9600); } } void loop() { void loop() { n=Serial.read(); n=Serial.read(); if(n=='f') { if(n=='f') { Serial.println("FORWARD"); Serial.println("FORWARD"); stepper.step(200); stepper.step(200); } } if(n=='b') { if(n=='b') { Serial.println("BACKWARD"); Serial.println("BACKWARD"); stepper.step(-200); stepper.step(-200); } } if(n=='h') { if(n=='h') { Serial.println("1/2"); Serial.println("1/2"); stepper.step(100); stepper.step(100); } } if(n=='q') { if(n=='q') { Serial.println("1/4"); Serial.println("1/4"); stepper.step(50); stepper.step(50); } } if(n=='1') { if(n=='1') { Serial.println("1"); Serial.println("1"); stepper.step(1); stepper.step(1); } } if(n=='-') { if(n=='-') { Serial.println("-1"); Serial.println("-1"); stepper.step(-1); stepper.step(-1); } } } }. 図14 シリアルモニタの起動. 図 14. 図 14 シリアルモニタの起動 シリアルモニタの起動. 図 15 シリアルモニタ画面 図図15 シリアルモニタ画面 15 シリアルモニタ画面 1,-のいずれかの小文字を一つずつキー入力して 1, -のいずれかの小文字を一つずつキー入力して テッピングモーターが回転する。逆にArduinoか 送信ボタンをクリックし,パソコンから Arduino 送信ボタンをクリックし,パソコンから Arduino らパソコンにfを受信するとFORWARD,bを に送信すると指定したステップ数でステッピング に送信すると指定したステップ数でステッピング 受信するとBACKWARD,hを受信すると1/2, モーターが回転する。逆に Arduino からパソコン モーターが回転する。逆に Arduino からパソコン qを受信すると1/4,1を受信すると1,-を受 に f を 受 信 す る と FORWARD , b を 受 信 す る と に信すると-1というメッセージが送信される。 f を 受 信 す る と FORWARD , b を 受 信 す る と BACKWARD,h を受信すると 1/2,q を受信すると BACKWARD,h を受信すると 1/2,q を受信すると 1/4,1 を受信すると 1,-を受信すると-1 という 1/4,1 を受信すると 1,-を受信すると-1 という 5-3.アナログ入力を使う メッセージが送信される。 メッセージが送信される。 アナログピンの入力値をもとにステッピング. 13 スケッチ 4(シリアル通信) 図 13 図スケッチ 4(シリアル通信) 図13 スケッチ4(シリアル通信). モーターを回転させる。これまでの回路に図16に 5-35 .- ア3 ナ. ロア グナ 入ロ 力グ を入 使力 うを 使 う 示す回路を追加する。半固定抵抗器(10kΩ)を アナログピンの入力値をもとにステッピングモ ータ転送レートを 9600bps(ビット/秒)に設定す アナログピンの入力値をもとにステッピングモ ータ転送レートを 9600bps(ビット/秒)に設定す を使って受信した文字を判別し,Serial.println ブレットボード(6穴版,EIC-3901,秋月電子 ーターを回転させる。これまでの回路に図 る。9 行目の Serial.read()は受信データを読み込 ーターを回転させる。これまでの回路に図 16 に 16 に る。9 行目の Serial.read()は受信データを読み込 (データ)でデータの末尾にキャリッジリターン 通商)上に配置し,ジャンパーワイヤーを使って 示す回路を追加する。 半固定抵抗器(10kΩ)をブレ n に代入する。10 行目以降は if 文を使っ 示す回路を追加する。 半固定抵抗器(10kΩ)をブレ み変数み変数 n に代入する。10 行目以降は if 文を使っ とニューラインを付けてメッセージをシリアルモ Arduinoの5V,アナログピン(A0),GNDに ットボード(6 穴版,EIC-3901,秋月電子通商)上に て受信した文字を判別し,Serial.println(デー ットボード(6 穴版,EIC-3901,秋月電子通商)上に て受信した文字を判別し,Serial.println(デー ニタに送信した後,指定したステップ数でステッ 接続する。 配置し,ジャンパーワイヤーを使って の タ)でデータの末尾にキャリッジリターンとニュ 配置し,ジャンパーワイヤーを使って ArduinoArduino の タ)でデータの末尾にキャリッジリターンとニュ ピングモーターを回転させる。 図17にスケッチ5を示す。スケッチ5の3~4 5V,アナログピン(A0),GND に接続する。 ーラインを付けてメッセージをシリアルモニタに 5V,アナログピン(A0),GND に接続する。 ーラインを付けてメッセージをシリアルモニタに 図14に示すように「ツール」→「シリアルモニ 行目は整数型の変数valおよびpreviousを宣言す 図 17 にスケッチ 5 を示す。スケッチ 5 の 3~4 送信した後,指定したステップ数でステッピング 図 17 にスケッチ 5 を示す。スケッチ 5 の 3~4 送信した後,指定したステップ数でステッピング タ」の順にクリックしてシリアルモニタを起動す る。 9 行 目 のanalogRead(0) は ア ナ ロ グ ピ ン 行目は整数型の変数 val および previous モーターを回転させる。 行目は整数型の変数 val および previous を宣言 を宣言 モーターを回転させる。 る。図15に示すように入力エリアにf,b,h, (A0)から半固定抵抗器の出力電圧0V~5V 9 行目の analogRead(0)はアナログピン(A0) 図 14 に示すように「ツール」→「シリアルモニ する。9する。 行目の analogRead(0)はアナログピン(A0) 図 14 に示すように「ツール」→「シリアルモニ q,1,-のいずれかの小文字を一つずつキー入 の電圧を読み取り,0~1023の数値に変換した後, から半固定抵抗器の出力電圧 の電圧を読 タ」の順にクリックしてシリアルモニタを起動す から半固定抵抗器の出力電圧 0V~5V 0V~5V の電圧を読 タ」の順にクリックしてシリアルモニタを起動す 力して送信ボタンをクリックし,パソコンから 変 数valに 代 入 す る。10行 目 はval-previousを 計 み取り, 0~1023 の数値に変換した後, 変数 15 に示すように入力エリアに f,b,h,q, み取り, 0~1023 の数値に変換した後, 変数 val に val に る。図る。図 15 に示すように入力エリアに f,b,h,q, Arduinoに送信すると指定したステップ数でス 算してステップ数とし,ステッピングモーターを. 28. 6. 6.
(8) 技術科教育におけるステッピングモーター教材の開発. 5V5V. 半固定抵抗器 半固定抵抗器5V 半固定抵抗器. GND GND GND A0A0 A0. A0 A0 A0 5V 5V 5V. CdSCdS CdS 図図16 1616 追加した回路(アナログ入力) 追加した回路(アナログ入力) 図16 追加した回路(アナログ入力) 追加した回路(アナログ入力) 図. GNDGND GND. 10kΩ 10kΩ 10kΩ. A5 A5 A5. CdSCdS CdS. 図 18 18 追加した回路(光センサー) 図18 追加した回路(光センサー) 図 18追加した回路(光センサー) 追加した回路(光センサー) 図. ーボン抵抗の接続部をジャンパーワイヤーを使っ の光センサーとカーボン抵抗の接続部をアナログ ーボン抵抗の接続部をジャンパーワイヤーを使っ ーボン抵抗の接続部をジャンパーワイヤーを使っ て Arduino のアナログピン(A0)に,右側の光セン のアナログピン(A0)に,右側の光セン ピン(A5)に接続する。光センサーのカーボン て Arduino て Arduino のアナログピン(A0)に,右側の光セン サーとカーボン抵抗の接続部をアナログピン(A5) 抵抗と接続されていない側は2組ともArduinoの サーとカーボン抵抗の接続部をアナログピン(A5) サーとカーボン抵抗の接続部をアナログピン(A5) に接続する。光センサーのカーボン抵抗と接続さ 5Vに,カーボン抵抗の光センサーと接続されて に接続する。光センサーのカーボン抵抗と接続さ に接続する。光センサーのカーボン抵抗と接続さ void setup() { れていない側は 組とも Arduino Arduino の の 5V 5V に,カー に,カー void いない側は2組ともGNDに接続する。 れていない側は 22 組とも voidsetup() setup(){ { れていない側は 2 組とも Arduino の 5V に,カー stepper.setSpeed(30); stepper.setSpeed(30); ボン抵抗の光センサーと接続されていない側は stepper.setSpeed(30); ボン抵抗の光センサーと接続されていない側は 22 2 図19にスケッチ6を示す。スケッチ6の3~4 ボン抵抗の光センサーと接続されていない側は }}} 組とも GND に接続する。 に接続する。 組とも GND 行目はアナログピンの番号0および5を整数型の 組とも GND に接続する。 void loop() { void loop() { { 図 19 にスケッチ 66 を示す。スケッチ を示す。スケッチ 66 の の 3~4 3~4 void 図 19 変数left_cdsおよびright_cdsとして宣言する。5 val = = loop() analogRead(0); 図 にスケッチ 19 にスケッチ 6 を示す。スケッチ 6 の 3~4 val analogRead(0); val = analogRead(0); 行目はアナログピンの番号 および 55 を整数型の を整数型の stepper.step(val previous); 行目はアナログピンの番号 00 および ~7行目は整数型の変数nL,nRおよび文字型の stepper.step(val -- previous); 行目はアナログピンの番号 0 および 5 を整数型の stepper.step(val - previous); previous = val; 変数 left_cds left_cds および および right_cds right_cds として宣言する。 として宣言する。 previous = val; 変数 変数frgを宣言する。11行目は変数frgに空白を代 previous = val; 変数 left_cds および right_cds として宣言する。 }} 5~7 行目は整数型の変数 行目は整数型の変数 nL,nR nL,nR および文字型の および文字型の } 5~7 入し初期化する。14~15行目は左側の光センサー 5~7 行目は整数型の変数 nL,nR および文字型の 変数 frg frg を宣言する。 を宣言する。11 11 行目は変数 行目は変数 frg frg に空白を に空白を 図 17 17 スケッチ スケッチ 5(アナログ入力) 5(アナログ入力) 変数 図 から読み取った値を変数nLに, 右側の光センサー 図17 スケッチ5(アナログ入力) 変数 frg を宣言する。11 行目は変数 frg に空白を 図 17 スケッチ 5(アナログ入力) 代入し初期化する。14~15 14~15 行目は左側の光センサ 行目は左側の光センサ 代入し初期化する。 から読み取った値を変数nRに代入する。16~19 代入し初期化する。14~15 行目は左側の光センサ ーから読み取った値を変数 nL nL に,右側の光セン に,右側の光セン 代入する。10 10 行目は 行目は val-previous val-previous を計算してス を計算してス ーから読み取った値を変数 代入する。 回転させる。11行目は変数valの値を以前のアナ 行目は変数nLおよびnRの値にメッセージを付け ーから読み取った値を変数 nL に,右側の光セン 代入する。10 行目は val-previous を計算してス サーから読み取った値を変数 nR nR に代入する。16 に代入する。16 テップ数とし,ステッピングモーターを回転させ サーから読み取った値を変数 テップ数とし,ステッピングモーターを回転させ ログピンの入力値として変数previousに代入して てシリアルモニタに送信する。20~29行目はif文 サーから読み取った値を変数 nR に代入する。16 テップ数とし,ステッピングモーターを回転させ ~19行目は変数 行目は変数nL nLおよび およびnR nRの値にメッセージを の値にメッセージを る。11 11 行目は変数 行目は変数 val val の値を以前のアナログピン の値を以前のアナログピン ~19 る。 保存する。これにより,半固定抵抗器のつまみの を使って左右どちらの光センサーに手をかざした ~19 行目は変数 nL および nR の値にメッセージを る。11 行目は変数 val の値を以前のアナログピン 付けてシリアルモニタに送信する。 20~29 行目は 行目は の入力値として変数 previous に代入して保存す 付けてシリアルモニタに送信する。 20~29 の入力値として変数 previous に代入して保存す 回転に追随してステッピングモーターが回転する。 かを判別し,ステッピングモーターを1/2回転ま 付けてシリアルモニタに送信する。 20~29 行目は の入力値として変数 previous に代入して保存す if 文を使って左右どちらの光センサーに手をか 文を使って左右どちらの光センサーに手をか る。これにより,半固定抵抗器のつまみの回転に if る。これにより,半固定抵抗器のつまみの回転に たは逆1/2回転させる。その際,変数frgにはステッ if 文を使って左右どちらの光センサーに手をか る。これにより,半固定抵抗器のつまみの回転に ざしたかを判別し,ステッピングモーターを 1/2 追随してステッピングモーターが回転する。 ざしたかを判別し,ステッピングモーターを 1/2 追随してステッピングモーターが回転する。 5-4.光センサーを使う ピングモーターが現在1/2回転し終えた状態にあ ざしたかを判別し,ステッピングモーターを 追随してステッピングモーターが回転する。 回転または逆 1/2 回転させる。その際,変数 回転させる。その際,変数 frg frg 1/2 回転または逆 1/2 光センサーを2個使用して,左側の光センサー る場合は文字列Lが,逆1/2回転し終えた状態に 回転または逆 1/2 回転させる。その際,変数 にはステッピングモーターが現在 1/2 回転し終え 回転し終え frg 5- -4 4. .光 光セ セン ンサ サー ーを を使 使う う にはステッピングモーターが現在 1/2 5 に手をかざすとステッピングモーターが1/2回転, ある場合は文字列Rが代入されており,これをif にはステッピングモーターが現在 1/2回転し終 回転し終え 5光センサーを -4.光 セン2サ ーを使う た状態にある場合は文字列 が,逆 1/2 1/2 個使用して,左側の光センサー た状態にある場合は文字列 LL が,逆 回転し終 光センサーを 2 個使用して,左側の光センサー 右側の光センサーに手をかざすと逆1/2回転させ 文を使って判別することによりgoto out命令でif た状態にある場合は文字列R Lが代入されており, が,逆 1/2 回転し終 光センサーを 2 個使用して,左側の光センサー えた状態にある場合は文字列 に手をかざすとステッピングモーターが 1/2 回転, 回転, えた状態にある場合は文字列 R が代入されており, に手をかざすとステッピングモーターが 1/2 る。図16の回路を取り除き,図18に示す回路を追 文から抜け出し,重複して同方向に回転しないよ えた状態にある場合は文字列 R が代入されており, に手をかざすとステッピングモーターが 1/2 回転, これを これを if 文を使って判別することにより 文を使って判別することにより goto 右側の光センサーに手をかざすと逆 1/2 回転させ 回転させ if goto 右側の光センサーに手をかざすと逆 1/2 加する。光センサー(CdS) とカーボン抵抗 (10kΩ, うにしている。 goto 右側の光センサーに手をかざすと逆 1/2 回転させ outこれを 命令でif if文を使って判別することにより 文から抜け出し,重複して同方向に 重複して同方向に る。図 16 の回路を取り除き,図 の回路を取り除き,図 18 18 に示す回路を に示す回路を out 命令で if 文から抜け出し, る。図 16 1/4W)をブレットボード上に配置し直列に接続 「ツール」→「シリアルモニタ」の順にクリッ 回転しないようにしている。 追加する。光センサー(CdS)とカーボン抵抗(10k out 命令で if 文から抜け出し,重複して同方向に る。図 16 の回路を取り除き,図 18 に示す回路を 回転しないようにしている。 追加する。光センサー(CdS)とカーボン抵抗(10k したものを左右2組作る。左側の光センサーと クしてシリアルモニタを起動する。図20に示すよ 「ツール」→「シリアルモニタ」の順にクリッ Ω,1/4W)をブレットボード上に配置し直列に接続 回転しないようにしている。 追加する。光センサー(CdS)とカーボン抵抗(10k 「ツール」→「シリアルモニタ」の順にクリッ Ω,1/4W)をブレットボード上に配置し直列に接続 カーボン抵抗の接続部をジャンパーワイヤーを うに,光センサーから読み取った値そのものが クしてシリアルモニタを起動する。図 20 に示す に示す したものを左右 組作る。左側の光センサーとカ 「ツール」→「シリアルモニタ」の順にクリッ Ω,1/4W)をブレットボード上に配置し直列に接続 クしてシリアルモニタを起動する。図 20 したものを左右 22 組作る。左側の光センサーとカ 使ってArduinoのアナログピン(A0)に,右側 時々刻々と表示される。左側の光センサーの値が クしてシリアルモニタを起動する。図 20 に示す したものを左右 2 組作る。左側の光センサーとカ #include <Stepper.h> <Stepper.h> #include #include <Stepper.h> Stepper stepper = Stepper(200,8,9,10,11); Stepper Stepperstepper stepper= = Stepper(200,8,9,10,11); Stepper(200,8,9,10,11); int val; int intval; val; int previous previous = 0; int int previous= = 0;0;. 77. 7. 29.
(9) 秋 葉 治 克. #include <Stepper.h> #include <Stepper.h> Stepper = Stepper(200,8,9,10,11); Stepperstepper stepper = Stepper(200,8,9,10,11); int =0;=0; intleft_cds left_cds int =5;=5; intright_cds right_cds int intnL; nL; int intnR; nR; char frg; char frg; void { { voidsetup() setup() stepper.setSpeed(30); stepper.setSpeed(30); Serial.begin(9600); Serial.begin(9600); frg=' '; frg=' '; }. }. 図 20. void loop() { void loop() { nL=analogRead(left_cds); nL=analogRead(left_cds); nR=analogRead(right_cds); nR=analogRead(right_cds); Serial.print("left="); Serial.print("left="); Serial.print(nL); Serial.print(nL); Serial.print(" right="); Serial.print(" right="); Serial.println(nR); if(nL < 900 ) { Serial.println(nR); if(frg <==900 'L') if(nL ) {{ goto out;} stepper.step(100); if(frg == 'L') { goto out;} frg='L'; stepper.step(100); } frg='L'; if(nR < 900) { } if(frg 'R') {{ goto out;} if(nR == < 900) stepper.step(-100); if(frg == 'R') { goto out;} frg='R'; stepper.step(-100); } frg='R'; out: } delay(200); out: }. り,シリアルモニタに表示された値を見てそのつ 5-5.アームロボを使う り,シリアルモニタに表示された値を見てそのつ ど決めなければならない。 ステッピングモーターとサーボモーターを使っ ど決めなければならない。. て物を運び,物を容器に入れるアームロボ教材を 5-5.アームロボを使う 製作した。製作手順は以下の①~⑧に従う。 5-5.アームロボを使う ステッピングモーターとサーボモーターを使っ ① 図21に示すように,アーテックのサーボ ステッピングモーターとサーボモーターを使っ て物を運び,物を容器に入れるアームロボ教材を モーター3個とブロックを使用してアームロ て物を運び,物を容器に入れるアームロボ教材を 製作した。製作手順は以下の①~⑧に従う。 ボ10)を組み立てる。 ①製作した。製作手順は以下の①~⑧に従う。 図 21 に示すように,アーテックのサーボ ② 図22に示すように,支柱と接続するために ① 図 21個とブロックを使用してアーム に示すように,アーテックのサーボ モーター3 アームロボにブロック(基本四角,白)を差 モーター3 個とブロックを使用してアーム ロボ 10) を組み立てる。 10) し込む。 ② 図 22 に示すように, 支柱と接続するために ロボ を組み立てる。 ③アームロボにブロック(基本四角,白)を差 ②図23に示すように,支柱を組み立てる。支 図 22 に示すように,支柱と接続するために 柱1および支柱2はアームロボを取り付ける し込む。 アームロボにブロック(基本四角,白)を差 ための支柱である。ブロック(ハーフA,薄 ③ 図 23 し込む。 に示すように,支柱を組み立てる。支 グレー)2個の上にブロック(基本四角,薄 柱 2 はアームロボを取り付け ③1 および支柱 図 23 に示すように,支柱を組み立てる。支. delay(200);. }. るための支柱である。 A,薄 グレー) それを2列にした。 柱 を3個差し込み, 1 および支柱ブロック(ハーフ 2 はアームロボを取り付け. 図 19 スケッチ 6(光センサー) 図19 スケッチ6(光センサー). グレー)2 個の上にブロック(基本四角,薄グ 支柱3はアームロボが運ぶ物を載せるための るための支柱である。ブロック(ハーフ A,薄. 図 19 スケッチ 6(光センサー) ように,光センサーから読み取った値そのものが left,右側の光センサーの値がrightである。例え. レー)を 3 個差し込み,それを 2 列にした。 支柱である。ブロック (基本四角, 薄グレー) グレー)2 個の上にブロック(基本四角,薄グ 支柱 3 はアームロボが運ぶ物を載せるため を4個差し込んだ。土台はブロック(18ベー レー)を 3 個差し込み,それを 2 列にした。 の支柱である。ブロック(基本四角,薄グレ ス)を2個連結した。. 時々刻々と表示される。左側の光センサーの値が ば,左側の光センサーに手をかざして数値の違い ように,光センサーから読み取った値そのものが left,右側の光センサーの値が right である。例 を見てみると,明るいと数値が大きくなり,暗い 時々刻々と表示される。左側の光センサーの値が えば,左側の光センサーに手をかざして数値の違 と小さくなることが確認できる。これにより,光 left,右側の光センサーの値が right である。例 いを見てみると,明るいと数値が大きくなり,暗 センサーの値がある値(閾値)よりも小さくなっ えば,左側の光センサーに手をかざして数値の違 いと小さくなることが確認できる。これにより, た場合に手がかざされたと判別するわけである いを見てみると,明るいと数値が大きくなり,暗 光センサーの値がある値(閾値)よりも小さくなっ が,スケッチの20行目と25行目では900を使って いと小さくなることが確認できる。これにより, た場合に手がかざされたと判別するわけであるが, いる。この値は周囲の環境(室内照明灯のON/ 光センサーの値がある値(閾値)よりも小さくなっ スケッチの 20 行目と 25 行目では 900 を使ってい OFF,外から入る太陽光など)により変化する た場合に手がかざされたと判別するわけであるが, る。この値は周囲の環境(室内照明灯の ON/OFF, ものであり,シリアルモニタに表示された値を見 スケッチの 20 行目と 25 行目では 900 を使ってい 外から入る太陽光など)により変化するものであ てそのつど決めなければならない。 る。この値は周囲の環境(室内照明灯の ON/OFF,. 支柱 3 はアームロボが運ぶ物を載せるため 4 個差し込んだ。土台はブロック(18 ④ー)を 図24に示すように,アームロボを支柱に差 の支柱である。ブロック(基本四角,薄グレ ベース)を 2 個連結した。 し込む。サーボモーター servo5はアームを ー)を 4 個差し込んだ。土台はブロック(18 ④ 図 24 に示すように,アームロボを支柱に差 上下に振る。servo6はアーム先端を握る放 ベース)を 2 個連結した。 し込む。サーボモーターservo5 はアームを す。servo7はアームを左右に振る。 ④ 図 24 に示すように,アームロボを支柱に差 上下に振る。servo6 はアーム先端を握る放 ⑤ 図25に示すように,厚さ2mmのダンボー し込む。サーボモーターservo5 す。servo7 はアームを左右に振る。 はアームを ル紙を直径190mmの円形にカットした後, はアーム先端を握る放 ⑤ 図 25 上下に振る。servo6 に示すように,厚さ 2mm のダンボール 高さを1/2にカットした紙コップ4個を回転 す。servo7 はアームを左右に振る。 紙を直径 190mm の円形にカットした後,高 角度90°間隔で配置し,ホットグールボンド ⑤ 図 25 に示すように,厚さ 2mm のダンボール で接着する。 紙を直径 190mm の円形にカットした後,高. 外から入る太陽光など)により変化するものであ8 30. シリアルモニタ画面. 図20 シリアルモニタ画面 図 20 シリアルモニタ画面. 8.
(10) 技術科教育におけるステッピングモーター教材の開発. servo7 servo7. 図 21. 図 24. アームロボを組み立てる. 基本四角を差し込む. 図22 基本四角を差し込む. 図 22. 支柱1. servo6 servo6. アームロボを支柱に取り付ける. 図図24 アームロボを支柱に取り付ける 24 アームロボを支柱に取り付ける. 図 21図21 アームロボを組み立てる アームロボを組み立てる. 図 22. servo5 servo5. 図 25. ダンボール紙に紙コップを接着する. 図 25. ダンボール紙に紙コップを接着する. 図25 ダンボール紙に紙コップを接着する. 基本四角を差し込む. 支柱2. 支柱1. 支柱2. 支柱3. 支柱3. 土台. 土台 図 26 ステッピングモーターにねじ止めする 図26 ステッピングモーターにねじ止めする. 図図23 支柱を組み立てる 23 支柱を組み立てる. 図 23 支柱を組み立てる 1/2 にカットした紙コップ 4 個を回転 ⑥ さを 図26に示すように,⑤をユニポーラステッ. 図 26 ステッピングモーターにねじ止めする ピングモーターST-42BYG020 の回転軸に取 8番, 9番,10番,11番,GNDピンとステッ. 角度 90°間隔で配置し,ホットグールボン ピングモーター ST-42BYG020の回転軸に取 さを 1/2 にカットした紙コップ 4 個を回転 ドで接着する。 り付けた5mmモーターシャフト用ハブにね 角度 90°間隔で配置し,ホットグールボン ⑥ じ止めする。 図 26 に示すように,⑤をユニポーラステッ ドで接着する。 ⑦ 図27に示すように,Arduinoのディジタル ⑥ 図 26 に示すように,⑤をユニポーラステッ. り付けた 5mm モーターシャフト用ハブにね ピングモータードライバーのX,/X,Y,/ ピングモーターST-42BYG020 の回転軸に取 じ止めする。 Y,GNDを ジャンパーワイヤーで接続す り付けた 5mm モーターシャフト用ハブにね ⑦ る。Arduinoのディジタル5番,6番,7番 図 27 に示すように,Arduino のディジタル じ止めする。 ピンとサーボモーター servo5,servo6,servo7 ⑦ 図 27 に示すように,Arduino のディジタル 9. 9. 31.
(11) 秋 葉 治 克. 図27 Arduinoとドライバーおよびサーボモーター の接続. 図28 サーボモーターと電池ボックスの接続. 13行 目 以 降 に お い て,write(angle) は サ ー ボ の各SIG(制御信号)をジャンパーワイヤー. モーターの角度を0°~180°の範囲で設定し,シャ. で接続する。ステッピングモーターのコイル. フトをその方向に向ける。この命令を実行する. をステッピングモータードライバーのターミ. と,//の右側にコメントしてある通りにアームロ. ナルブロックにねじ止めする。ステッピング. ボは動作する。up,downはアームを上下に振ら. モータードライバーのDCジャックにスイッ. せ る。left,rightは ア ー ム を 左 右 に 振 ら せ る。. チ ン グACア ダ プ タ ー( 9 V,2.0A,100~. grip,releaseは ア ー ム を 握 る 放 つ。 な お,. 120V,秋月電子通商)を接続し,その電源. rotationはステッピングモーターを1/4回転させ. プラグをコンセントに差し込む。Arduinoと. る。delay(t)はプログラムを500ms,つまり0.5. パソコンをUSBケーブルで接続する。. 秒だけ止める。19行のfor文は,4個の紙コップ. ⑧ 図28に示すように,ブレットボード上で サ ー ボ モ ー タ ー servo5,servo6,servo7の. にブロックを3個ずつ入れるために波カッコで囲 まれた命令を12回繰り返し実行する。. 各+V(電源)およびGNDを電池ボックス(単. 図30に位置決めを完了したアームロボ教材の全. 3×4本,スイッチ付,XHコネクタ付)の. 体の外観を示す。位置決めおよび操作の仕方は以. +極および-極にジャンパーワイヤーで接続. 下の①~⑦に従う。. する。なお,電池ボックスはXHコネクタに. ① 土台のブロック(18ベース)を粘着テープ. 両端ロングピンヘッダ(2P)を差し込んで. (セロテープや両面テープなど)で机上に固. ブレットボードに接続した。. 定する。. 以上で,組み立て・配線作業は完成である。 図29にアームロボを使ってブロック(基本四角) を運び,4個の紙コップにブロックを3個ずつ入. ② ステッピングモータードライバーのDC ジャックからACアダプターを外して回転し ないようにする。. れるスケッチ7を示す。スケッチ7の2行目は. ③ プログラムを実行する。アームロボはブ. Servoライブラリをインクルードする。4~6行. ロックを運び,紙コップに入れる動作を12回. 目 はServo型 の 変 数 をservo5,servo6,servo7と. 繰り返すので,この間に物を載せる支柱(図. して宣言する。7行目は整数型の変数tを宣言し. 23の支柱3)と紙コップ(つまり,ステッピ. 500を代入しておく。10~12行目のattach(pin). ングモーター)の位置を調整する。. はサーボ変数servo5,servo6,servo7をArduino. ④ 位置決めができたら支柱を移動し,ステッ. のディジタル5番,6番,7番ピンに割り当てる。. ピングモーターを粘着テープで机上に固定す. 32.
(12) 技術科教育におけるステッピングモーター教材の開発. #include <Stepper.h> #include <Servo.h> Stepper stepper = Stepper(200,8,9,10,11); Servo servo5; Servo servo6; Servo servo7; int t=500; void setup() { stepper.setSpeed(30); servo5.attach(5); servo6.attach(6); servo7.attach(7); servo5.write(45); delay(t); servo6.write(60); delay(t); servo7.write(100); delay(2000); for(int i=1; i<=12; i++) { servo5.write(85); delay(t); servo6.write(130); delay(t); servo5.write(45); delay(t); servo7.write(170); delay(t); servo5.write(80); delay(t); servo6.write(60); delay(t); servo5.write(45); delay(t); servo7.write(100); delay(t); stepper.step(50); } servo5.write(45); delay(t); }. // up // release // left. 図図30 アームロボ教材の全体の外観 30 アームロボ教材の全体の外観. // down. ロックを持ち上げる。 ブロックを左へ運ぶ。ブロッ ボを動作させ,物を載せる支柱の上でブロ. // grip. クを下げる。ブロックを放し紙コップに入れる。 ックを手渡し運ばせる。. // up. アームを上げる。アームを右に移動し最初の状態 図 31~図 39 にアームロボ教材の動作のようす にする。ステッピングモーターで紙コップを回転 を示す。人の手によりブロックを支柱の上に載せ. // right. させる。以上の動作を12回繰り返すと図40に示す る。上からアームが下りて来てブロックを握る。. // down. ように,4個の紙コップそれぞれに赤,黄,緑の ブロックを持ち上げる。ブロックを左へ運ぶ。ブ. // release. ロックを下げる。ブロックを放し紙コップに入れ ブロックが1個ずつ入れられ終了となる。. // up. る。アームを上げる。アームを右に移動し最初の. // left. 状態にする。ステッピングモーターで紙コップを. // rotation. 回転させる。以上の動作を 12 回繰り返すと図 40. // up. に示すように, 4 個の紙コップそれぞれに赤,黄, ステッピングモーターにはユニポーラステッピ. 6.発 展. 緑のブロックが1個ずつ入れられ終了となる。 ングモーターとバイポーラステッピングモーター の2種類がある11)。前者は高速トルクが大きく,. void loop() {. 6 . 発展 後者は低速トルクが大きい特長を持っている。. }. 図41および図42にバイポーラステッピングモー タステッピングモーターにはユニポーラステッ ー ド ラ イ バ ー の 回 路 図 お よ び 外 観 を 示 す。. 図図29 スケッチ7(アームロボ) 29 スケッチ 7(アームロボ) 繰り返すので,この間に物を載せる支柱(図 る。 の支柱 3)と紙コップ(つまり,ステッピ ⑤ 23ステッピングモータードライバーのDC ングモーター)の位置を調整する。 ジャックにACアダプターを接続する。 ④ ⑥ 位置決めができたら支柱を移動し,ステッ アームロボに運ばせるブロック(基本四角, ピングモーターを粘着テープで机上に固定 赤4個,黄4個,緑4個)を用意する。 ⑦ する。 ArduinoのRESETボタンを押してアーム ⑤ ロボを動作させ,物を載せる支柱の上でブ ステッピングモータードライバーの DC ジ. ャックに AC アダプターを接続する。 ロックを手渡し運ばせる。 ⑥ アームロボに運ばせるブロック(基本四角, 図31~図39にアームロボ教材の動作のようすを 赤 4 個,黄 4 個,緑 4 個)を用意する。 示す。 人の手によりブロックを支柱の上に載せる。 ⑦ Arduino の RESET ボタンを押してアームロ 上からアームが下りて来てブロックを握る。ブ. 図 31. ブロックを支柱に載せる. 図31 ブロックを支柱に載せる. 11. 33.
(13) 秋 葉 治 克. 34. 図32 ブロックを握る. 図35 ブロックを下げる. 図33 ブロックを持ち上げる. 図36 ブロックを放し紙コップに入れる. 図34 ブロックを左へ運ぶ. 図37 アームを上げる.
(14) 技術科教育におけるステッピングモーター教材の開発. 図38 アームを右に移動する. 図 38. 図40 12回繰り返し終了. アームを右に移動する. 図 40. Arduinoへの接続の仕方とスケッチはユニポーラ ピングモーターとバイポーラステッピングモータ の場合と同一である。 ーの 2 種類がある 11)。前者は高速トルクが大き 大学生または院生を対象とした授業では,ス く,後者は低速トルクが大きい特長を持っている。 テッピングモータードライバーの製作が容易なユ 図 41 および図 42 にバイポーラステッピングモ ニポーラの方が導入しやすい。大学生なら90分で ータードライバーの回路図および外観を示す。 製作できる。しかし,バイポーラの方は部品点数 Arduino への接続の仕方とスケッチはユニポーラ が2倍であり製作時間が長くなるのにともない配 の場合と同一である。 線ミスも多くなることが予想される。そこで,授 大学生または院生を対象とした授業では,ステ 業では回路図と実物を見せながら口頭で紹介する ッピングモータードライバーの製作が容易なユニ にとどめ,特に電気回路について豊富な知識と上 ポーラの方が導入しやすい。大学生なら 90 分で 達した技能を有する受講生だけに製作させること 製作できる。しかし,バイポーラの方は部品点数. 図39 紙コップが回転する. 図 39. 12 回繰り返し終了. 紙コップが回転する. 黒. ステッピングモーター ST-42BYH1004 5V、400ステップ. 緑. トランジスタは2SC1815以外は ダーリントンダンパ内蔵 しか使用できません。. 赤. ACアダプタ 6V, 2.8A. 青. + 2SB885 3.3k. 1JU41. 1JU41 2SB885 3.3k. 2SB885 3.3k 2SC1815 3.3k. 2SC1815 3.3k 2SD1195 1JU41 3.3k. 1JU41. Y D10. -. 2SC1815 3.3k 2SD1195 1JU41 3.3k. X D9. 1JU41 2SB885 3.3k. 2SC1815 3.3k. 2SD1195 3.3k. X D8. 1JU41. Y D11. 1JU41. 2SD1195 3.3k. GND. Arduino uno. 図 41. 図41 バイポーラステッピングモータードライバーの回路図. バイポーラステッピングモータードライバーの回路図. 13. 35.
(15) 秋 葉 治 克. 000000l156.html(2020年8月12日参照) 3)ステッピングモータの基本的な構造と動作原理, https://www.moonsindustries.com/jp/article/ techschooljp-stepmotor-00006-step-motor-basics (2020年8月12日参照) 4)臨床工学技士の為の電子工作, https://electronic.tousekice.com/(2020年8月12日参 照) 5)Arduino UNO+A4988でステッピングモータを回す, https://blog.goo.ne.jp/snagai4500/e/ca8bbfca4c6c7f1 c772d129ea5ea4e65(2020年8月12日参照) 6)ArduinoとA4988でステッピングモーターを制御する. 図42 バイポーラステッピングモータードライバー の外観. 法,https://iot.keicode.com/arduino/arduino-steppermotor-a4988.php(2020年8月12日参照) 7)arduinoでステッピングモーターを回す実験, http://miha.jugem.cc/?eid=94(2020年8月12日参照). を想定している。. 8)ステッピングモータの駆動運転,. 7.おわりに. 9)Arduino日本語リファレンス,. https://www.indexpro.co.jp/article/detail/2/8(2020 年8月15日参照) http://www.musashinodenpa.com/arduino/ref/. 筆者は,技術科の学生を対象として電気領域と 情報領域を融合した,Arduinoで制御するプログ ラミング教材を開発し,2019年に院生を対象に授 業 実 践 を 行 っ た。 授 業 全 体 の 構 成 は 第 1 章 LED,第2章 RGB LED,第3章 ブザー,第 4章 圧電サウンダ,第5章 光センサー,第6 章 温度センサー,第7章 超音波距離センサー,. (2020年8月15日参照) 10)Studuino ブロックプログラミング環境 入門ガイド 後編,35-53,(2018) , https://www.artec-kk.co.jp/studuino/ja/studuino_ v2.php(2020年8月20日参照) 11)ユニポーラ駆動とバイポーラ駆動, http://www.mechatroidea.com/sekkei-seizu/ acutuater/s027-stepping-u-b.html(2020年8月28日参 照). 第8章 人体検出赤外線センサーと外部割込み, 第9章 ボイスメモと外部割込み,第10章 ソ リ ッ ド ス テ ー ト リ レ ー と 外 部 割 込 み, 第11章 DCモーターの制御,第12章 サーボモーターの 制御,第13章 ステッピングモーターの制御,第 14章 SDカードシールド,第15章 XBeeである。 本論文は第13章をまとめたものである。今後は難 易度を調整の上,学部学生を対象に授業実践を行 う。. 引用文献 1)文部科学省検定教科書,技術・家庭[技術分野],開 隆堂,106,(2016) 2)ステッピングモーターの基本, https://www.marubun.co.jp/service/mps/a7ijkd. 36. . (旭川校准教授).
(16)
図
関連したドキュメント
「自然・くらし部門」 「研究技術開発部門」 「教育・教養部門」の 3 部門に、37 機関から 54 作品
( 内部抵抗0Ωの 理想信号源
英語の関学の伝統を継承するのが「子どもと英 語」です。初等教育における英語教育に対応でき
この P 1 P 2 を抵抗板の動きにより測定し、その動きをマグネットを通して指針の動きにし、流
遠くに住んでいる、家に入られることに抵抗感があるなどの 療養中の子どもへの直接支援の難しさを、 IT という手段を使えば
接続対象計画差対応補給電力量は,30分ごとの接続対象電力量がその 30分における接続対象計画電力量を上回る場合に,30分ごとに,次の式
接続対象計画差対応補給電力量は,30分ごとの接続対象電力量がその 30分における接続対象計画電力量を上回る場合に,30分ごとに,次の式
レーネンは続ける。オランダにおける沢山の反対論はその宗教的確信に