• カテゴリ ATmega128活用法 の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - ATmega128活用法カテゴリのエントリ

AVRマイコンボードシリーズを改版した事もあり、次回のGCC Developer Liteの更新時にシリアル通信ライブラリの仕様を変更します。
ARMコアのマイコンボード用シリアル通信ライブラリと記述を合わせる事で、基本的にコード互換向上を考えた上での措置となります。

主な変更は以下を予定しています。
  • システムクロックの引用
    ボーレートの決定にシステムクロックを指定し、標準的に適用している周波数と異なるクロックに対応。
  • ボーレートの指定
    ボーレートジェネレータの分周値の指定から、直接ボーレートの指定に変更。
  • 割り込み版とポーリング版の両対応
    割り込みを使用しないアプリケーションや割り込み処理内に記述できる様に送受信割り込みを使用しないバージョンを追加。
  • 送信割り込み処理変更
    送信データが多くて割り込みが連続する場合の負荷軽減。
  • 送信バッファの返値変更
    ~tx_buff関数の返値は送信バッファにたまっているデータのバイト数を返す様に変更。
  • 関数名の変更
    ポーリング版はus_~/us0_~/us1_~、割り込み版はus_int_~/us0_int_~/us1_int_~のプレフィクスに変更。
残念ながらソース互換ではなくなるため、リリースに合わせてサンプルプログラムも修正します。

技術

回路の準備ができたので、いよいよプログラム。まずはGCC Developer Liteをインストール。コンパイルオプションは「DYNAMIXEL Library for ATmega128 USB I/O」を選択(このGDLのバージョンは2.2.0.44)。GDLのバージョンによっては違う名前のこともあるが、「DYNAMIXEL」と「ATmega128」の2つの単語が入っている設定を使えばOK。
 

この設定にすることで、予め用意されているAX/DX(RXも)ライブラリをそのまま利用することができる。0から自分で用意する選択肢もあるが、今回は面倒なのでパス。また、別マイコンでAX/DXモータを使う場合も、ライブラリの中身を参考にするのが楽かも。

 


基本になるプログラムはこんな感じ。ただし、これだけだと何もしないので焦って「動かない!」と思わないよ~に。
 


トルクイネーブルまでを加えたのがこのプログラム。正しく動作すれば、AX-12+モータが現在位置で保持されるのでわかるはず。ここまでできれば、後は位置制御やら無限回転やら思いのままだ!

ということで今回はここまで。

74HC241を使えば、1つのICでAX-12+用の回路を作れる、というのが前回までのあらすじ。ちなみにDIPパッケージだと約110円。占有スペースが減るのもメリット多し。ただ、パッケージの半分以下しか使っていないのがもったいないといえばもったいない(貧乏性?)。

DIPパッケージでの接続は赤線の通り。


これだと中身がわからないので、内部ロジックから見た図がこれ

 
もちろん、元の回路にあったプルアップと直列抵抗も忘れずに。


 


モータの電源は7~12Vなので、マイコン電源と共通にしないように注意。次はいよいよライブラリを使って動かそうかな。

AX-12+は(AX-S1も)電源を含めた3本の線で動作させる・・・、というのはコネクタを見ればわかることですが、問題はマイコンとの接続ですね。

この図はAX-12+のマニュアルに載っている回路に追記したものです。2つのICを使って、マイコンの送信、受信端子を切り替えています。ちなみに、74HC125,126どちらもDIPパッケージなら100円しない位の価格らしいです。

切り替えに使うI/Oはどこでも良いといえばいいのですが、上の例ではPD5に接続しています。理由はベステクのATmega128用AXライブラリの接続がこの端子だったから。つまりこの接続なら用意されているAXライブラリ(実際にはDX/RXも共通)がそのまま使えるというわけです。楽チン楽チン。

前述の回路はこれで問題なく動作するのですが、ICを2種類使うのが玉にキズ。というわけで、1つのICで何とかならないかなと探したところ74HC241を使えば良さそうだ、というところで今回はここまで。

さてさて、回路が同じといってもAX-12+とICS2.0のプロトコルは全く違うので、別途送信コマンドを用意する必要があります(ま、当然ですね)。

ISC2.0のコマンドリファレンスとにらめっこしながら、適当に動かしてみました。

パリティの設定が違うのが、ハマりやすいところでしょうか。

中規模なシステムを組むのに、何かと便利なATmega128マイコンボード

シリアルポートが2ch用意されているので、最近流行のスマートアクチュエータも動かすことができます。試しに、KONDOのKRS-401x(シリアルモード)とベステクのAX-12+の両方を動かせるボードを作ってみました。

使っている回路は同じ。電源電圧も同じ(DC12V)なので、ケーブルを付け替えるだけで両方の動作を確認できます。

追々、これを動かす様子も紹介していきたいと思います。