< 動作マトリクス > 停止 REQ 固定位置 REQ 往復 REQ 停止 () 現在位置と同じなら無視異なれば停止パルス中へ 停止パルス中へ 停止 ( 固定位置 ) 現在位置と同じなら無視異なれば停止パルス中へ 停止パルス中へ 停止パルス中 ( 停止パルス終了後 ) ( 停止パルス終了後動作 )

Similar documents
スライド 1

も 常に 2 つのコイルに電圧を印加する 2 層励磁方式や 1 つのコイルと 2 つのコイルに交互に電圧を印 2

c J 2013/11/ H8/3062BF H NOP 2 PUSH.L ER5 1: 3 4, ER7 ), ER5 4 PUSH.L ER5 5 MOV.L 8, ER7 )

第2章


内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

Microsoft Word - Ladder Tool 使çfl¨ã…žã…‰ã…¥ã‡¢ã…«ã…©ã…•ã…¼ã†ªã†Š_ docx

スライド 1

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

また RLF 命令は 図 2 示す様に RRF 命令とは逆に 各ビットを一つずつ 左方向に回転 ( ローテイト ) する命令である 8 ビット変数のアドレスを A とし C フラグに 0 を代入してから RLF A,1 を実行すると 変数の内容が 左に 1 ビットシフトし 最下位ビット (LSB)

スライド 1

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

Microsoft PowerPoint - RL78G14_動画マニュアル_タイマRD.ppt [互換モード]

CoIDE 用 STM32F4_UART2 の説明 V /03/30 STM32F4 Discovery の非同期シリアル通信ポート UART2 の送受信を行うプログラムです Free の開発ツール CoIDE で作成したプロジェクトサンプルです プログラムの開始番地は 0x08000

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

スライド 1

160mm OR16-34 ORB16-34 OR16-35 ORB16-35 OR16-43 ORB16-43 OR16-44 ORB16-44 OR16-45 ORB16-45 OR16-46 ORB16-46 OR16-47 ORB16-47 OR16-48 ORB16-48 OR16-53

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M

UIOUSBCOM.DLLコマンドリファレンス

セゾン保険_PDF用.indd

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

untitled

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

スライド 1

untitled

橡07第1章1_H160203_.PDF

起動画面

ヤマハDante機器と他社AES67機器の接続ガイド

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

データ収集用 NIM/CAMAC モジュールマニュアル 2006/5/23 目次 クレート コントローラ CC/ NIM ADC 1821 (Seiko EG&G)...3 ADC インターフェイス U デッドタイム

PowerPoint プレゼンテーション

Fujitsu Standard Tool

スライド 1

1. 使用する信号 1.1. UART 信号 UART 通信に使用する信号と接続相手との接続は以下の通りです UART 信号表 番号 CPU 機能名 CPU 信号名 基板コネクタピン番号 方向 接続相手の信号名 1 USART1_TX PA9 CN > RxD 2 USART1_R

まず,13 行目の HardwareTimer Timer(1); は,HardwareTimer というクラスを利用するという宣言である. この宣言によって Timer というインスタンスが生成される.Timer(1) の 1 は,OpenCM に 4 個用意されているタイマのうち,1 番のタイマ

三菱電機マイコン機器ソフトウエア株式会社

ブート領域、フラッシュ領域の分割方法 RL78ファミリ用Cコンパイラ CC-RL


RA-485実習キット

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

改版履歴 Ver 改版日内容 /02/07 新規作成 2 / 18

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ

NCB564個別00版

Microsoft Word - DTX7LM.doc

102

// USB_CNC_Machine リモート PIO 端末プログラムのメイン関数およびユーザアプリ部 // 編集作成 by Takehiko Inoue /*********** メイン関数 ***************************/ #pragma code



1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

M16C M16C/50 M16C/5M R5F35MD6JFB 128K + 24K 12K PLQP0100KB-A 100P6Q-A ( 1) R5F35MD6KFB PLQP0100KB-A 100P6Q-A ( 1) R5F35MDEJFB 256K + 24K 20K PLQP0100K

割り込み 今までのプログラムは 順番にそって命令を実行していくのみ それはそれで良いが 不便な場合もある 例えば 時間のかかる周辺機器を使う場合 その周辺機器が動作を終了するまで CPU は待たなければいけない 方法 1( ポーリング ) 一定時間毎に 周辺機器の動作が終了したか調べる 終了していれ

81 /******************************************************************************/ 82 /* スレーブアドレスの設定 */ 83 /*****************************************

Microsoft Word - USB2-PCI…V…−†[…Y_04†iWinNt40_PDFŠp†j.doc

SP-1221 LIN I/F 基板 ユーザーズマニュアル 作成日 :2017 年 10 月 17 日

スライド 1

スライド 1

SICE東北支部研究集会資料(2009年)

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

Microsoft Word - FCTT_CS_Mod( )Jver1.doc

1. プログラム実行時の動作プログラムを実行すると以下のように動作します 1) NUCLEO-F401RE 上の LED LD2( 緑 ) が 200mSec 間隔で点滅します 2. プロジェクトの構成 2.1. プロジェクト F401N_BlinkLD2 の起動画面 TrueSTUDIO で作成し

V8_教育テキスト.dot

Touch Panel Settings Tool

スライド 1

untitled

untitled


untitled

Microsoft Word - 日文-GAMING____-SHARKOON Skiller 40R ____-Final.doc

PN-L601B

TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門 作品のタイトル : Toppers_JSP と Scicos_lab / (Scilab でも可 ) による 組込みメカトロニクス制御シミュレーション 作成者 : 塩出武 ( シオデタ

Windows Meで使用する際の手順

PIC24F Family Reference Manual Section 9 WDT

出 アーキテクチャ 誰が 出 装置を制御するのか 1

統合開発環境CubeSuite+ V へのバージョンアップのお知らせ

Microsoft PowerPoint - kougi7.ppt

リンク バンドル コマンド

ServerView RAID Manager VMware vSphere ESXi 6 インストールガイド

M4Gグループ(1)_CEC-A

2

2


2


必要システム ( お客様ご用意 ) 形式 :MSRPAC-2010 MSRPAC 仕様書 NS-7404 Rev.2 Page 2/13

マニュアル訂正連絡票

本資料のご使用につきましては 次の点にご留意願います 本資料の内容については 予告無く変更することがあります 1. 本資料の一部 または全部を弊社に無断で転載 または 複製など他の目的に使用することは堅くお断りいたします 2. 本資料に掲載される応用回路 プログラム 使用方法等はあくまでも参考情報で

PN-L600B

ReTRY HUB

PN-L802B / PN-L702B / PN-L602B

USB_IR_Remote_Controller_Advance_Library 取扱説明書 2016/06/23 R03 Assembly Desk USB_IR_Remote_Controller_Advance_Library を使用すると 弊社製 USB IR Remote controll

Microsoft Word - CAN Monitor の使い方.doc

PowerPoint プレゼンテーション

USB_IR_Remote_Controller_Advance_Library 取扱説明書 2015/8/21 Assembly Desk USB_IR_Remote_Controller_Advance_Library を使用すると 弊社製 USB IR Remote controller Ad

Viewgo波形の連続格納ソフト

マニュアル訂正連絡票


<< 目次 >> 1 PDF コンバータのインストール ライセンスコードの入力 PDF にフォントを埋め込みたい場合の設定 PDF オートコンバータ EX で使用しない場合 PDF コンバータ単体で使用する場合の説明 PDF コンバータのアン

ターゲット項目の設定について

ソフトウェア基礎技術研修

Transcription:

ステッピングモータ (12 相励磁 ) 低速なステッピングモータ制御モジュールを紹介します. 用途としては, エアコンの風向制御をイメージしていただければよいと思います. ソフトウェア制御のため, ハードはドライバICのみでOKです. <12 相励磁 > 1 < 仕様 > 指定位置への移動動作 ( 高速動作 ) 指定範囲内での往復動作( 低速動作 ) 動作開始時と動作停止時には一定時間の停止パルスを出力して, 位置の安定化を図る. 動作中の指示変更時は, 動作方向が同じならば, そのまま動作を継続逆方向への動作ならば, 一旦停止パルスを出力 高速動作/ 低速動作とも, 動作速度は変更可能 1パルスの励磁時間はメインルーチンの実行間隔とする (1ms 単位 ). <ステッピングモータの動作イメージ> 4 2 3 相番号 コイル4 コイル3 コイル2 コイル1 0 1 2 3 4 5 6 7 励磁パターンを順次変更していくと力の向きが変わり, 回転できる < マイコン出力波形 > H: < 動作範囲 > 上限 往復範囲 下限

< 動作マトリクス > 停止 REQ 固定位置 REQ 往復 REQ 停止 () 現在位置と同じなら無視異なれば停止パルス中へ 停止パルス中へ 停止 ( 固定位置 ) 現在位置と同じなら無視異なれば停止パルス中へ 停止パルス中へ 停止パルス中 ( 停止パルス終了後 ) ( 停止パルス終了後動作 ) ( 停止パルス終了後動作 ) 下方範囲外動作中停止パルス中へ高速動作継続高速動作継続 範囲内動作中 ( 方向 ) 停止パルス中へ停止パルス中へ往復低速動作継続 範囲内動作中 (+ 方向 ) 停止パルス中へ停止パルス中へ往復低速動作継続 上方範囲外動作中停止パルス中へ高速動作継続高速動作継続 ;***** ポート定義 ***** P_STM1.BTEQU 0,p1 ; (O) P_STM2.BTEQU 1,p1 ; (O) P_STM3.BTEQU 2,p1 ; (O) P_STM4.BTEQU 3,p1 ; (O) I/O ポートは出力モードで初期化しておいて下さい ;***** STM ***** ZMSSTG:.BLKB 1 ; STG 番号 ZMBCMD:.BLKB 1 ; コマンド ; 00: 停止 ; 01: 固定位置リクエスト ; 02: 往復リクエスト ZMBDIR:.BLKB 1 ; 方向フラグ ; 00: + 方向 ; 01: 方向 ZMBSTP:.BLKW 1 ; 停止パルス ZMCSTP:.BLKW 1 ; 停止パルスカウンタ ZMBPOS:.BLKW 1 ; 現在位置 ZMBPSK:.BLKW 1 ; 固定位置 ZMBPSL:.BLKW 1 ; 往復下限位置 ZMBPSH:.BLKW 1 ; 往復上限位置 ZMBV:.BLKB 1 上限 ; 速度カウンタ値 (ZMBVL or ZMBVH をコピー ) ZMCV:.BLKB 1 ; 速度カウンタ (ZMBV をコピーして動作 ) ZMBVL:.BLKB 1 ; 低速カウント値 ZMBVH:.BLKB 1 ; 高速カウント値 ROM 領域の初期値を RAM 領域にコピーして使用 プログラムを書き換えないで位置 / 速度をメモリファインダーで変更しながら評価するため

;***** STMモジュール初期化 ***** M_INI: MOV.W Q_MBPSK,ZMBPSK ; 固定位置 MOV.W Q_MBPSL,ZMBPSL ; 往復下限 MOV.W Q_MBPSH,ZMBPSH ; 往復上限 MOV.B Q_MBVL,ZMBVL ; 低速移動パルス時間初期値 MOV.B Q_MBVH,ZMBVH ; 高速移動パルス時間初期値 MOV.W Q_MBSTP,ZMBSTP ; 停止パルス時間初期値 Q_MBPSK:.WORD 100 ; 固定位置 Q_MBPSL:.WORD 200 ; 往復下限位置 Q_MBPSH:.WORD 500 ; 往復上限位置 Q_MBVL:.BYTE 15 ; 低速カウント値 Q_MBVH:.BYTE 5 ; 高速カウント値 Q_MBSTP:.WORD 1000 ; 停止パルス ROM 領域の初期値 ;***** STM 制御メイン ***** M_MAIN: MOV.B ZMSSTG,R0L ; 状態遷移番号 (STG) JNZ M_MAIN10 ; ***** 時の処理 ***** JSR M_STG0 JMP.B M_MAIN90 M_MAIN10: CMP.B #01,R0L JNZ M_MAIN20 ; ***** 停止パルス中の処理 ***** JSR M_STG1 JMP.B M_MAIN90 M_MAIN20: ; ***** 動作中の処理 ***** JSR M_STG2 M_MAIN90: メインルーチンで 1ms 毎に呼び出す ;***** 中の処理 ***** M_STG0: MOV.B ZMBCMD,R0L ; リクエスト? JZ M_STG090 ; Yes, スキップ CMP.B #01,R0L JNZ M_STG010 ; 往復動作なら停止パルス開始へ ; ***** 固定位置リクエスト ***** JSR M_CMP ; 現在位置と目標位置の比較 JZ M_STG090 ; 一致ならスキップ M_STG010: MOV.W ZMBSTP,ZMCSTP ; 停止パルスカウンタセット JSR M_OUT ; 相出力 MOV.B #01,ZMSSTG ; 停止パルス中 STG M_STG090:

;***** 停止パルス中の処理 ***** M_STG1: SUB.W #1,ZMCSTP ; 停止パルスカウンタ 1 JNZ M_STG190 ; 0000でなければスキップ MOV.B ZMBCMD,R0L ; 停止コマンド? JZ M_STG180 ; Yes, 出力 へジャンプ CMP.B #01,R0L ; 固定位置コマンド? JNZ M_STG110 ; ***** 固定位置コマンド ***** JSR M_CMP ; 現在位置と目標位置の比較 JZ M_STG180 ; 一致なら出力 へジャンプ JNC M_STG130 ; 現在 < 固定位置 : 高速移動 + 方向 JMP.B M_STG150 ; 現在 > 固定位置 : 高速移動 方向 M_STG110: ; ***** 往復コマンド ***** JSR M_CMP ; 現在位置と上限 / 下限位置の比較 CMP.B #00,R0L ; 範囲内? JNZ M_STG120 ; 範囲外ならジャンプ ; *** 範囲内 *** CMP.B #00,ZMBDIR ; 記憶している方向判断 JZ M_STG140 ; + 方向なら 低速移動 + 方向 JMP.B M_STG160 ; 方向なら 低速移動 方向 M_STG120: CMP.B #01,R0L ; 下限と一致? JZ M_STG140 ; 現在 = 下限なら 低速移動 + 方向 CMP.B #02,R0L ; 上限と一致? JZ M_STG160 ; 現在 = 上限なら 低速移動 方向 CMP.B #03,R0L ; 現在 < 下限? JNZ M_STG150 ; 現在 > 上限なら 高速移動 方向 ; 現在 < 下限なら 高速移動 + 方向 M_STG130: MOV.B #00,ZMBDIR ; + 方向 ADD.W #1,ZMBPOS ; 現在 現在 +1 JMP.B M_STG170 M_STG140: MOV.B #00,ZMBDIR ; + 方向 MOV.B ZMBVL,ZMBV ; 低速移動 ADD.W #1,ZMBPOS ; 現在 現在 +1 JMP.B M_STG170 M_STG150: MOV.B #01,ZMBDIR ; 方向 SUB.W #1,ZMBPOS ; 現在 現在 1 JMP.B M_STG170 M_STG160: MOV.B #01,ZMBDIR ; 方向 MOV.B ZMBVL,ZMBV ; 低速移動 SUB.W #1,ZMBPOS ; 現在 現在 1 M_STG170: MOV.B #02,ZMSSTG ; 動作中 STG JSR M_OUT ; 出力 JMP.B M_STG190 M_STG180: AND.B #0F0h,p1 ; MOV.B #00,ZMSSTG ; 中 STG M_STG190: この例では, p1_0 ~ p1_3 が STM 用ポートとして割り当てられています

M_STG2: DEC.B ZMCV ; 移動パルスカウンタ 1 JNZ M_STG290 ; 00 以外ならスキップ ; パルスカウンタ再セット CMP.B #02,ZMBCMD ; 停止 or 固定位置リクエスト? JNC M_STG230 ; Yes, 停止パルスへジャンプ JSR M_CMP ; 現在と上限 / 下限を比較 CMP.B #00,R0L ; 範囲内? JNZ M_STG200 ; No, ジャンプ ; *** 範囲内 *** MOV.B ZMBVL,ZMBV ; 低速移動 CMP.B #00,ZMBDIR ; 記憶してある方向判断 JNZ M_STG260 ; + 方向? No, 低速移動 方向 JMP.B M_STG250 M_STG200: ; *** 範囲外 *** CMP.B #03,R0L JNC M_STG220 ; 上限 or 下限なら停止パルスへ JNZ M_STG210 ; 現在 > 上限ならジャンプ ; 現在 < 下限 JZ M_STG250 ; 同一方向なので動作継続 JMP.B M_STG220 ; 逆方向なら停止パルスへ M_STG210: ; 現在 > 上限 JNZ M_STG260 ; 同一方向なので動作継続 ; 逆方向なら停止パルス M_STG220: ; 停止パルス MOV.W ZMBSTP,ZMCSTP ; 停止パルスカウンタセット JSR M_OUT ; 相出力 MOV.B #01,ZMSSTG ; 停止パルス中 STG JMP.B M_STG290 M_STG230: CMP.B #00,ZMBCMD ; 停止リクエスト? JZ M_STG280 ; Yes, 停止パルスへジャンプ JSR M_CMP ; 現在と固定位置を比較 JZ M_STG280 ; *** 一致したら停止パルスへ *** JC M_STG240 ; *** 現在 < 固定位置 *** JZ M_STG250 ; 同一方向なので動作継続 JMP.B M_STG280 ; 逆方向なので停止パルスへ M_STG240: ; *** 現在 > 固定位置 *** JNZ M_STG260 ; 同一方向なので動作継続 JMP.B M_STG280 ; 逆方向なので停止パルスへ M_STG250: ADD.W #1,ZMBPOS ; 現在 現在 +1 JMP.B M_STG270 M_STG260: SUB.W #1,ZMBPOS ; 現在 現在 1 M_STG270: JSR M_OUT ; 出力 JMP.B M_STG290 M_STG280: MOV.W ZMBSTP,ZMCSTP ; 停止パルスカウンタセット JSR M_OUT ; 相出力 MOV.B #01,ZMSSTG ; 停止パルス中 STG M_STG290:

;***** 現在位置判定 ***** ; 入力 : ZMBPOS= 現在位置 ; ZMBPSK= 固定位置 ; ZMBPSL= 往復下限位置 ; ZMBPSH= 往復上限位置 ; 出力 : 固定位置 Z=1 : 一致 ; Z=0,C=1: 現在 > 固定位置 ; Z=0,C=0: 現在 < 固定位置 ; 往復 R0L=00 : 範囲内 ; 01 : 下限と一致 ; 02 : 上限と一致 ; 03 : 現在 < 下限 ; 04 : 現在 > 上限 M_CMP: CMP.B #02,ZMBCMD ; 往復動作? JNZ M_CMP50 ; ***** 往復動作 ***** CMP.W ZMBPSL,ZMBPOS ; 現在と下限を比較 JNZ M_CMP10 MOV.B #01,R0L ; *** 下限と一致 *** M_CMP10: JC M_CMP20 MOV.B #03,R0L ; *** 現在 < 下限 *** M_CMP20: CMP.W ZMBPSH,ZMBPOS ; 現在と上限を比較 JNZ M_CMP30 MOV.B #02,R0L ; *** 上限と一致 *** M_CMP30: JC M_CMP40 MOV.B #00,R0L ; *** 範囲内 ( 下限 < 現在 < 上限 ) *** M_CMP40: MOV.B #04,R0L ; *** 現在 > 上限 *** M_CMP50: CMP.W ZMBPSK,ZMBPOS ; 現在と固定位置を比較 M_CMP90: ;***** 相出力 ***** M_OUT: MOV.W ZMBPOS,A0 AND.W #0007,A0 ; 相は下位 3ビット有効 FCLR I ; 相出力変更作業中は割り込み禁止 MOV.B p1,r0l AND.B #11110000b,R0L OR.B Q_SOU:16[A0],R0L MOV.B R0L,p1 FSET I ポートの割り当てを変更した場合は修正が必要です Q_SOU: ; 下位 4ビット使用.BYTE 00000011b ; 相 0.BYTE 00000010b ; 相 1.BYTE 00000110b ; 相 2.BYTE 00000100b ; 相 3.BYTE 00001100b ; 相 4.BYTE 00001000b ; 相 5.BYTE 00001001b ; 相 6.BYTE 00000001b ; 相 7