Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

組み込み入門

4,582 views

Published on

NXPのLPC Xpressoを使った組み込み入門です

Published in: Technology
  • Be the first to comment

組み込み入門

  1. 1. SUGAR SWEET ROBOTICS CO., LTD. 組み込みプログラミング入門 菅 佑樹 (株式会社SUGAR SWEET ROBOTICS代表取締役) (早稲田大学ヒューマノイド研究所招聘研究員) (芝浦工業大学SIT研究所客員研究員) (東京大学情報理工学系研究科大学発新産業創出拠点 プロジェクト 特任研究員) 1
  2. 2. SUGAR SWEET ROBOTICS CO., LTD. 目標 • 組み込み開発工程の流れを知る • マイコンの選び方を知る • 組み込み機器を併用した現在のロボットシ ステムのトレンドを知る • 組み込みにおける通信を知る 2
  3. 3. SUGAR SWEET ROBOTICS CO., LTD. 組み込みとは何か 3
  4. 4. SUGAR SWEET ROBOTICS CO., LTD. 組み込みシステム • 特定の機能を実現するために製品に組み込 まれるコンピュータシステム • 小型 ー マイクロコントローラ • 省資源 • 電力 • 処理速度 • 機能 4
  5. 5. SUGAR SWEET ROBOTICS CO., LTD. マイコンとは何か プログラムメモリ:CPUの命令 を格納するメモリ 5 CPU I/O コントローラ プログラム メモリ ワーキング メモリ 演算装置:プログラムメモリ から命令を読み出して,I/Oコ ントローラ等を制御する 入出力制御:ピンの状態や, シリアル通信,PWMやタイ マーなどを制御 作業メモリ:CPUの計算結果な どを格納する作業メモリ
  6. 6. SUGAR SWEET ROBOTICS CO., LTD. 組み込みプログラミング • 組み込みマイコンで実行できるソフトウエア をプログラミングする • C言語などのプログラミング言語で作成 したものをマイコン向けにコンパイル して書き込む • コンパイラ・・・C言語をマイコン用のマシ ン語命令に変換 • ライター・・・マイコン用のマシン語命令を マイコンのプログラムメモリに書き込む • IDE・・・Integrated Development Environment (統合開発環境) コンパイラやラ イター,エディタなどがセットになっている 6 C言語のソースコード コンパイル コンパイラ 機械語ファイル 書き込み ライター
  7. 7. SUGAR SWEET ROBOTICS CO., LTD. 組み込みデバッグ • Debug (バグを取り除く) • マイコンのプログラムの 悪い箇所を見つける作業 • C言語のプログラムを一 行ずつ実行しながら,変 数の値などを確認できる • ICD (In circuit Debug) ・・・ 回路にマイコンを搭載した 形でデバッグする方法 7
  8. 8. SUGAR SWEET ROBOTICS CO., LTD. マイコンの選び方 8
  9. 9. SUGAR SWEET ROBOTICS CO., LTD. マイコンの選択肢 • PICーMicrochip • 国内でホビーユーザーが多い • 種類が豊富で、DSPを積んだものなどもある • AVRーAtmel • 小型で使いやすい。Arduinoで採用されている • PSoCーCypress • デジタル、アナログ機能モジュールを柔軟に組み合わせて使える • H8, SHなどールネサス • カーエレではまだ根強いか • ARMマイコンーTI, Motorola, STmicro, NXP, Atmelなど • 世界で最も使われているマイコン9
  10. 10. SUGAR SWEET ROBOTICS CO., LTD. マイコンの選び方 • 機能モジュールの種類と数 • 開発環境 • 価格 10
  11. 11. SUGAR SWEET ROBOTICS CO., LTD. 機能モジュール • デジタルI/Oピン • 数、電圧 • A/Dコンバータ • 数、分解能、速度 • タイマー、カウンター • 数、機能 • 通信モジュール • UART, I2C, SSP, CAN, EtherNet • その他 • D/Aコンバータ、アナログコンパレータ、DSP 11
  12. 12. SUGAR SWEET ROBOTICS CO., LTD. なぜARMマイコンか • ARMアーキテクチャは多数の会社にライセ ンスされており、選択肢が豊富で、一社に 依存しない • フリーのGCCコンパイラがメンテナンスさ れており、安価なJTAGデバッガが使える ので、安価に開発ができる • 開発者が多く、情報が豊富 12
  13. 13. SUGAR SWEET ROBOTICS CO., LTD. NXP LPCマイコンシリーズ • NXP社のARMマイコン • NXPの用意する統合開発環境が便利 • LPC Expresso • mbedでも使われているマイコンで入手性 が高くラインナップも多い • 安価なデバッガが付いている 13
  14. 14. SUGAR SWEET ROBOTICS CO., LTD. 入門者向け組み込み機器のトレンド 14
  15. 15. SUGAR SWEET ROBOTICS CO., LTD. 組み込みボードのトレンド • ソフトウエア環境の充実化 • 開発者コミュニティのサポート • 異なる業界のユーザを取り込む動き • デザイナー • 技術系学生 • 非組み込み技術者 15
  16. 16. SUGAR SWEET ROBOTICS CO., LTD. 小型組み込みボード • Arduino • マイコンはAVR • Processingなどのデザイナ向けのシンプルなプログラミングが可能 • mbed • マイコンはNXP製のARMマイコン • ブラウザ上で動作する開発環境 • インストール不要 • netduino • マイコンはARMマイコン • Microsoft .NET Microframeworkで動作 • Visual Studioで開発・デバッグができる 16
  17. 17. SUGAR SWEET ROBOTICS CO., LTD. Arduino • Atmel社の8ビットAVRマイコンを使ったオープンソースハードウ エアの小型基板 • オープンなので,標準コネクタ配置に対応する増設基板 (シールド)がサードパーティから多数販売されている (モーター回転・mp3再生・LED点灯・リレースイッチ・ 液晶・Ethernet・無線通信・ロボット) • いろいろな形状がある • 標準型 • I/Oやメモリが大きい (Mega) • 小型組み込み用 (Pro mini) • 導電糸を使った電子手芸工作用 (Lilypad) • XBeeに対応した無線通信用 (FIO) • シンプルなIDE • Processingという入門者向けのプログラミング言語に対応 (簡易版C++) • オープンソースなので,様々な工作例とプログラムのソー スコードがネット上で見つかる • オーソドックスなarduinoは2,835円,オープンソースなのでサー ドパーティ製の互換ボードがより安く売っている17
  18. 18. SUGAR SWEET ROBOTICS CO., LTD. mbed • NXP社の32bit ARMマイコンであるLXPマイコンを 使った小型基板 • ブレッドボードに装着しやすいI/Oピン配置 • Ethernetコントローラを備えている • ブラウザ上で動作する開発環境 • ブラウザの操作でコンパイルができる • mbedはPCにつなぐとUSBメモリのように見え るので,コンパイルしたバイトコードを保存す ると書き込まれる • インターネット上で自分の開発したコードを公 開し,他の開発者のコードを読み込む機能をサ ポートしている • Cortex-M3を積んだ通常のmbedが5,400円,Cortex- M0版は4,200円 18
  19. 19. SUGAR SWEET ROBOTICS CO., LTD. 組み込みLinuxボード • Raspberry-Pi • 一枚5,000円の安価なLinuxボード • Intel Edison • 名刺サイズの超小型Linuxボード • Android端末 • スマートフォンのプログラミングをフリーで 19
  20. 20. SUGAR SWEET ROBOTICS CO., LTD. Raspberry-Pi • 教育用小型Linuxボード • USBコネクタにキーボード とマウス,HDMIモニタを繋 げば,Linuxが入ったパソコ ンとして動作 • Ethernet, USB, 汎用I/Oを備 えて,組み込み用途にも合う • 安価.旧型タイプAは2800円. 最新のタイプB+は3940円! 20
  21. 21. SUGAR SWEET ROBOTICS CO., LTD. Intel Edison • SDカードと同じサイ ズながらLinux搭載 • 裏面にフィルムケーブ ルを挿すコネクタ • 無線LAN搭載 • 6,800円 21
  22. 22. SUGAR SWEET ROBOTICS CO., LTD. Android端末 • オープンソースのOS「Android」を搭載し た携帯端末 • 多くの端末が,カメラ,加速度センサ,ジャ イロ,地磁気センサ,GPSなどを搭載 • 上述のArduinoと接続してデジタルI/Oを使 う事も出来る • 開発環境を無料で揃えることができる 22
  23. 23. SUGAR SWEET ROBOTICS CO., LTD. 組み込みとロボットシステム 23
  24. 24. SUGAR SWEET ROBOTICS CO., LTD. 組み込みで作るロボットシステム • 組み込み機器のみでロボットシステムを作るのは,も はやあり得ない • OSが無いと開発しにくい • アップデートしにくい • リソースが限られる • 用途が固定される部分や,リアルタイム性が問われる部 分を組み込み • ユーザインターフェースやインターネット通信などを上 位のコンピュータで構成 24
  25. 25. SUGAR SWEET ROBOTICS CO., LTD. ロボット機器 25 頭部 RS485等サーバPC コントローラ (マイコン) センサ等モータ クライアント • Aldebaran Robotics NAO • 頭部でLinuxサーバープログラムが自動実行される ウェブサーバ IE等ブラウザ
  26. 26. SUGAR SWEET ROBOTICS CO., LTD. ロボット機器 頭部 (Linux) 26 モータ コントローラ (マイコン) • PID制御など,リアルタイムでの処 理が必要な部分をマイコンに任せる • 上位のアプリケーションから目標位 置のみ送る制御 センサ等 RS485等 サーバ コントローラ (マイコン) コントローラ (マイコン) 歩行制御や画像処理, 音声合成など モモーータタ モモーータタ モモーータタ センサ等 セセンンササ等等 セセンンササ等等 セセンンササ等等 コントローラ (マイコン) コントローラ (マイコン) モモーータタ 電源管理やセンサなど の情報収集 モータの位置速度制御 やLEDの点灯制御など
  27. 27. SUGAR SWEET ROBOTICS CO., LTD. 組み込みとロボットシステム • 組み込みに於いても通信が鍵 • RS232C, RS485, SSP, I2C, CAN, USB, ZigBee • 近年ではEtherNet や無線LANに直接接続し て、TCP/IPソケット通信が可能なマイコン も多い • 小型なマイコンにフルセットのLinuxも乗 るようになってきた27
  28. 28. SUGAR SWEET ROBOTICS CO., LTD. 実習 28
  29. 29. SUGAR SWEET ROBOTICS CO., LTD. 開発環境の整備 29
  30. 30. SUGAR SWEET ROBOTICS CO., LTD. LPCXpressoのダウンロード • 公式ウェブ • http://www.lpcware.com/lpcxpresso 30
  31. 31. SUGAR SWEET ROBOTICS CO., LTD. 31 LPCXpressoのダウンロード 2. toolを選ぶ 1. LPCXpressoを選ぶ 3. Filterボタンを押す 4. Toolsをクリック 5. LPCXpresso Windows Installerを選択
  32. 32. SUGAR SWEET ROBOTICS CO., LTD. LPCXpressoのダウンロード 32 LPCXpresso v7.4.0を選択
  33. 33. SUGAR SWEET ROBOTICS CO., LTD. LPCXpresso_*.exeを実行 • インストールする • すべてのドライバをイ ンストールすること 33
  34. 34. SUGAR SWEET ROBOTICS CO., LTD. Activate • 起動するとworkspaceの 場所を問われるが,デフォ ルトのままで良い • メニューから,Help > Activate > Create serial number and register (Free Edition)…を選択 • シリアル番号が表示され るのでOKを押す 34
  35. 35. SUGAR SWEET ROBOTICS CO., LTD. ユーザ登録 • LPC Xpressoがウェ ブブラウザを開く • 画面右側からログ インする • (未登録の場合は Create new accout を選択) 35
  36. 36. SUGAR SWEET ROBOTICS CO., LTD. ユーザ登録 • Create New Accoutを選択したのち・・・ • 赤い*印がついた項目を選択して登録 • Username • E-mail address • Fullname • CAPTCHA (画像認証) • Create New Accoutボタンを押す • NXPからメールが届く 36
  37. 37. SUGAR SWEET ROBOTICS CO., LTD. ユーザ登録 • NXPから届いたメールのリンクを開 • http://www.lpcware.com/user/reset/** • Log inボタンを押す • 次の画面でpasswordを設定してsaveを押す • 再度,LPC Xpressoからシリアル番号登録 を行う 37
  38. 38. SUGAR SWEET ROBOTICS CO., LTD. Activation • Register LPC Xpressoを押す • 続く画面にActivation Keyが表じ されるのでコピーする • メニューからHelp > Activate >Activate (Free Edition) を選択 • キーを入力して終了 • LPC XpressoをRestartする 38
  39. 39. SUGAR SWEET ROBOTICS CO., LTD. サンプルを動作させる 39
  40. 40. SUGAR SWEET ROBOTICS CO., LTD. Import Project(s) • 左下のQuick Start Panelからimport project(s)を選択する • Archiveの「Browse」 ボタンをクリックする 40
  41. 41. SUGAR SWEET ROBOTICS CO., LTD. Import Project(s) • LPCOpenフォルダを選 択し, 「lpcopen_**_1347.zip」 を選択する • Nextボタンを選択 41
  42. 42. SUGAR SWEET ROBOTICS CO., LTD. • インポートするプロジェ クトをzipファイルの中 から選択できる.今回 はすべて選択してFinish する • 画面左上のProject panel にたくさんのプロジェ クトが追加されている 42 Import Project(s)
  43. 43. SUGAR SWEET ROBOTICS CO., LTD. LEDチカチカ • periph_systickプロジェ クトを使う • periph_systickプロジェ クトを右クリックする • 「Build Project」を選 択する 43
  44. 44. SUGAR SWEET ROBOTICS CO., LTD. 実行 • マイコンをつなぐ • NXPの文字が左下になるよ うにして左側がデバッガ • デバッガをPCにつなぐ(デ バッガがライターになる) • デバッガをUSBでPC等につ なぐと,バスパワーからマ イコンに必要な電源を作成 してマイコンに供給できる • USBケーブル一本で開発で きる44
  45. 45. SUGAR SWEET ROBOTICS CO., LTD. デバッグを開始 • periph_systickプロジェクト を右クリックする • Debug As > C/C++ (NXP Semiconductors) MCU Applicationを選択 • リストにLPC-Linkが選択され ているをの確認してOK • デバッグが開始され,プログ ラムがメモリに書き込まれる 45
  46. 46. SUGAR SWEET ROBOTICS CO., LTD. デバッグが開始されると • main関数の1行目に右向き矢印が 表示される • マイコンのプログラムがこの行 で止まっている印 • 開始ボタンを押してプログラムを 開始する • LEDが点滅しますよね? • すでにプログラムメモリに命令が 書き込まれているので,次からは 電源を入れればマイコンは普通に 命令を実行できます. 46
  47. 47. SUGAR SWEET ROBOTICS CO., LTD. systick.c • periph_systickサンプルのmain関 数はsystick.cにある • 非常にシンプル • TICKRATE_HZ1で定義される周 期でSysTick_Handler関数が呼ば れる • 10HzでToggleが呼ばれるの で,5Hzで点滅する • TICKRATE_HZ1の値を変更して 実行してみましょう 47
  48. 48. SUGAR SWEET ROBOTICS CO., LTD. デバッグする 48
  49. 49. SUGAR SWEET ROBOTICS CO., LTD. In circuit デバッグ • 開発ボードを使うと,C言語のソースコード を一行ずつ実行させることができる • 実行中の状態を監視しながら開発できる • マイコンを回路につないだままで,振る舞 いを確認しながら実行できる • 通常は高価なツールが必要だが,LPC-Link があれば安価にIn circuitデバッグができる 49
  50. 50. SUGAR SWEET ROBOTICS CO., LTD. Break Pointの設定 • SysTick_Handler関数の Board_LED_Toggle(0)の行 の行番号の左横をダブルク リックする • 青いまるい印がつく • これをBreak Pointという • プログラムがBreak Point がある行に達すると止まる 50
  51. 51. SUGAR SWEET ROBOTICS CO., LTD. プログラムが止まったらどうするか • 全Break Pointを停止 • プログラムをスタート (次のBreak Pointまで) • 一時停止 • 停止 • デバッガと切断 • ステップイン (今の行の関数の中に入る) • ステップオーバー (今の行の関数を実行して次の行へ) • ステップアウト (今実行中の関数を最後まで実行して 呼び出し元の関数に戻る) 51
  52. 52. SUGAR SWEET ROBOTICS CO., LTD. ではデバッグを始めましょう • 最初にmain関数の1行目で止まります • 次のブレークポイントまで実行します • Board_LED_Toggle(0)の行で止まります • ステップオーバーするとLEDの状態が変化して 止まります • また実行します 52
  53. 53. SUGAR SWEET ROBOTICS CO., LTD. USBで通信する 53
  54. 54. SUGAR SWEET ROBOTICS CO., LTD. USB通信について • USBは本来はかなり複雑なプロトコル • ベンダIDとプロダクトID • インターフェース・デスクリプタ • バルク通信,コントロール通信… • ドライバ開発・メンテナンスが非常に面倒 • CDCドライバを使いましょう • オープンな規格 • ドライバは第3者がメンテナンスしている • Virtual COM port driver (擬似COMポート)が使える 54
  55. 55. SUGAR SWEET ROBOTICS CO., LTD. usbd_rom_cdc • usbd_rom_cdcをビル ドして実行 • 反対側のUSBコネク タをPCに接続する と,VCOMと認識さ れる 55
  56. 56. SUGAR SWEET ROBOTICS CO., LTD. VCOMドライバのインストール • ドライバは C:NXPLPCXpresso_***Driversの 中にあるので,デバイスマネージャ からインストールする • デバイスマネージャーからほか のデバイス>VCOMを右クリック • コンピュータを参照して・・・ を選択 • C:nxpLPCXpresso_7.4.0_229 Driversを選択してOK • COM番号を覚えておく 56
  57. 57. SUGAR SWEET ROBOTICS CO., LTD. Tera Termで確認 • Tera Termを起動する • シリアルを選択 • COM** (LPC USB Vcom)を 選択 • Enterを押す • Hello Worldと表示される 57
  58. 58. SUGAR SWEET ROBOTICS CO., LTD. 独自の命令を実装する 58
  59. 59. SUGAR SWEET ROBOTICS CO., LTD. マイコンに命令を送る • VCOMはCOMポートとして認識されるので,Tera Termから文字列を送ることができる • キャラクタベースプロトコル • バイナリベースプロトコル • マイコンはバイナリベース向き • リアルタイム処理を行うマイコンにとって文字列か らの数値読み取りの負荷が無駄 • 今回は簡単にキャラクタベースで通信しましょう 59
  60. 60. SUGAR SWEET ROBOTICS CO., LTD. キャラクタプロトコル • x*z • *に入るのは数値 • 「1」ならばLED点灯して「OK」と返す • 「0」ならばLED消灯して「OK」と返す • それ以外ならば「FAIL」を返す • 3文字目がzでない場合は「ERR」と返す 60
  61. 61. SUGAR SWEET ROBOTICS CO., LTD. 処理の流れ • 1文字読み込みxだったら処理開始 • 2文字読み込み,最後がzでないなら「ERR」と返 して最初に戻る • 2文字目の文字が「1」ならLED点灯して「OK」し て最初に戻る • 2文字目の文字が「2」ならLED消灯して「OK」し て最初に戻る • 「FAIL」を返して最初に戻る 61
  62. 62. SUGAR SWEET ROBOTICS CO., LTD. 62 if(接続中) { char c = 1文字読む; if (c != ‘x’) { continue; } char d = 1文字読む; char e = 1文字読む; if (e != ‘z’) { 送信 (“ERR”); continue; } switch(d) { case ‘1’: LED点灯; 文字列送信 (“OK”); break; case ‘2’: LED消灯; 文字列送信(“OK”); break; default: 文字列送信(“FAIL”); break; } }
  63. 63. SUGAR SWEET ROBOTICS CO., LTD. 実際に実装 • usbd_cdcプロジェクトを選択 • Ctrl+Cでコピーして,Ctrl+Pを押す • プロジェクト名入力ダイアログが開くので, 「my_usb01」とする • my_usb01 > example > src > cdc_main.c を選択して編集 63
  64. 64. SUGAR SWEET ROBOTICS CO., LTD. 編集 • 下の部分を編集する (178行目付近) 64 while (1) { /* Check if host has connected and opened the VCOM port */ if ((vcom_connected() != 0) && (prompt == 0)) { vcom_write("Hello World!!rn", 15); prompt = 1; } /* If VCOM port is opened echo whatever we receive back to host. */ if (prompt) { rdCnt = vcom_bread(&g_rxBuff[0], 256); if (rdCnt) { vcom_write(&g_rxBuff[0], rdCnt); } } /* Sleep until next IRQ happens */ __WFI(); } この部分は,接続が確認 された場合にHello World と送信する命令
  65. 65. SUGAR SWEET ROBOTICS CO., LTD. 使う関数 • 接続中 ・・・ prompt == 1 • uint32_t vcom_bread (uint8_t *pBuf, uint32_t buf_len); • pBufにbuf_lenの長さのデータを受信 • 返り値の数だけ受信成功 • uint32_t vcom_write (uint8_t *pBuf, uint32_t buf_len); • pBufにあるデータをbuf_lenだけ送信 • 返り値の数だけ送信成功 • void Board_LED_Set(uint8_t LEDNumber, bool On) • LEDNumberは0を指定 • Onがtrueならば点灯.falseならば消灯 65
  66. 66. SUGAR SWEET ROBOTICS CO., LTD. 機能モジュールの使いこなし 66
  67. 67. SUGAR SWEET ROBOTICS CO., LTD. ARMアーキテクチャの機能モジュール 67
  68. 68. SUGAR SWEET ROBOTICS CO., LTD. 機能モジュールを使う手順 • 通常は,機能モジュールは オフ • 機能モジュールにクロッ クを加える • 機能モジュールの初期設 定を行う • モジュールと外部とを接 続するピンを選択する 68 モジュールA モジュール B モジュールC
  69. 69. SUGAR SWEET ROBOTICS CO., LTD. lpc_chip_13xxプロジェクト • LPC13xxの基本的な機能モジュールを利用 するためのライブラリが収められている • 各機能モジュールの使い方はincフォルダ内 のヘッダファイルを見ればわかる • **_Init関数が用意されているので初期化処 理が簡単 69
  70. 70. SUGAR SWEET ROBOTICS CO., LTD. デジタル入出力 70
  71. 71. SUGAR SWEET ROBOTICS CO., LTD. GPIO • General Purpose Input / Output (汎用入出 力 ) • ほとんどのピンが使用可能 • HIGH (3.3V) / LOW (0V) 入出力 • gpio_13xx_1.h, gpio_13xx_2.hを参照 71
  72. 72. SUGAR SWEET ROBOTICS CO., LTD. A/D変換 72
  73. 73. SUGAR SWEET ROBOTICS CO., LTD. A/D変換 • アナログ信号をデジタルデータに変換 • LPC1347には分解能12bitが搭載 • [0, 3.3V] を [0, 4095]のデータに • 変換には数マイクロ秒かかる • 変換終了までCPUが待たないといけない • 変換終了時に割り込みをかけることもできる • periph_adcプロジェクトを参照 73
  74. 74. SUGAR SWEET ROBOTICS CO., LTD. タイマと割り込み 74
  75. 75. SUGAR SWEET ROBOTICS CO., LTD. タイマ・割り込み • タイマで一定周期を作る • 割り込みによって,現在実行中の処理を 中断して,別の処理を実行できる • タイマ割り込みで周期的処理を行う • periph_timerプロジェクト 75
  76. 76. SUGAR SWEET ROBOTICS CO., LTD. EEPROM 76
  77. 77. SUGAR SWEET ROBOTICS CO., LTD. EEPROM • マイコンに内蔵された記憶領域にデータを 保存する • 電源が落ちてもデータは保存される • 設定値などで使用 • periph_eepromプロジェクト 77
  78. 78. SUGAR SWEET ROBOTICS CO., LTD. 作成例 78
  79. 79. SUGAR SWEET ROBOTICS CO., LTD. DCモータのPID制御 • DCモータの角度制御 • 角度をポテンショメータで取得 • USB経由で目標値(司令)を受ける • USB経由で現在角度を出力 79
  80. 80. SUGAR SWEET ROBOTICS CO., LTD. モータを回す • マイコンには数[A]という大きな電流を流す機能は ない • トランジスタを使う • 正逆回転させるためには複数のトランジスタが必要 • モータ駆動用のICがある • 今回はDCモータの正逆回転が可能なTA8428を使う • マイコンからは2つのデジタル出力で制御 • [1,0]で正回転,[0, 1]で逆回転 • 回転数の調節にはPWMを使う • パルス幅を指定すると自動的に出力 • パルス幅が広ければ回転数が高くなる
  81. 81. SUGAR SWEET ROBOTICS CO., LTD. PWM • Pulse Width Modulation • 右図のように規定周期内のHIGH時間を制 御 (Duty比) • CPUでHIGHとLOWのタイミングを制 御・・・無駄 • PWM専用の機能モジュールがあり,Duty 比を設定するだけで自動的にPWM信号を 出し続けてくれる • LPC OpenライブラリはPWM非対応 • 下記URLでPWMサポートを追加したバージョ ンを配布中 • http://sugarsweetrobotics.com/組み込み プログラミング入門/ 81 81 3.3V 0V 3.3V 0V 3.3V 0V duty = 75 % duty = 50 % duty = 25 %
  82. 82. SUGAR SWEET ROBOTICS CO., LTD. 角度取得 • ポテンショメータは可変抵抗 • 0-3.3Vの電圧信号になる • 角度と比例した電圧が得られる • A/D変換 • マイコンはA/D変換で使えるピンは 決まっている 3.3V 82 1.65V 82
  83. 83. SUGAR SWEET ROBOTICS CO., LTD. ソフトウエア • USBのメッセージをmain関数内で処理 • PCから目標値,制御ゲインを受け取る • PCから要求があれば,現在のA/D値を送信 • A/D変換は割り込みで使う • 割り込みハンドラ内ではA/D変換の値を保存するだけ • タイマで割り込みして,目標値とA/Dの値を比較しながら制御 • PID制御 • 下記URLで配布中 • http://sugarsweetrobotics.com/組み込みプログラミング入門/ 83
  84. 84. SUGAR SWEET ROBOTICS CO., LTD. まとめ • 下記のウェブサイトでサポート • http://sugarsweetrobotics.com/組み込み プログラミング入門/ • Facebook (本講義の受講者とおっしゃって いただければ・・・) • Twitter — @ysuga 84

×