Renesas Rulz - Japan
Renesas Rulz - Japan
  • User
    Join or sign in
  • Site
  • Search Japan.RenesasRulz.com
  • User
  • Renesas Rulz
  • FAQ
  • パートナー
  • 半導体セミナ
  • eラーニング
  • ヘルプ
  • More
  • Cancel
  • かふぇルネ
  • がじぇるね
  • English Community
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-ROSE 近藤科学のICSシリアルサーボの制御
  • Forums
  • Blog
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New

 

 GR-SAKURA

 GR-KURUMI

 GR-COTTON

 GR-CITRUS

 GR-PEACH

 GR-KAEDE

 GR-ADZUKI

 GR-LYCHEE

 GR-ROSE

 GR-MANGO(*)

 SNShield

 Web Compiler

 IDE for GR

 TOPPERS関連

 女子美コラボ

 その他

 ※プロデューサミーティング中

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • Replies 39 replies
  • Subscribers 443 subscribers
  • Views 32513 views
  • Users 0 members are here
  • GR-ROSE
  • ICS
Options
  • Share
  • More
  • Cancel
Related Tags
  • B3M
  • DDS-XRCE
  • Dynamixel
  • esp8266
  • FIT
  • GR-ROSE
  • HYGRO
  • ICS
  • include
  • JSTK2
  • KYPD
  • MG996R
  • MIC3
  • NAV
  • OLED
  • pin
  • PMOD
  • ROS
  • ROS2
  • rosserial
  • RS-485
  • RX65N
  • Serial2
  • spi
  • Wire
Related

近藤科学のICSシリアルサーボの制御

西村備山
西村備山 over 2 years ago

 近藤科学のICSシリアルサーボの制御ができました。

・使用サーボ: 近藤科学 KRS-3301 ICS
・ボーレート: 115200
・接続ポート: Serial1 (1線UART設定)
・ID: あらかじめICS USB Adapterで設定

去年のルネサスナイト11で発表した自作ライブラリに、1線UART設定のための1行を追加したのみです。

#ifdef GRROSE
    serial->direction(HALFDUPLEX);
#endif

https://github.com/lipoyang/ICSlib

近藤科学からもArduino用ライブラリが公開されていますが、おそらく同様の変更で対応できるかと思います。

  • Reply
  • Cancel
  • Cancel
  • Yuuichi Akagawa
    Yuuichi Akagawa over 2 years ago

    情報ありがとうございます。
    なんか動かないなと思ってましたが、

    Serial1.begin(115200, SERIAL_8E1);

    ですよね。
    スケッチサンプルに書いてなかったので、Serial1やSerial2ではライブラリ側で勝手にやってくれるのかなと思ってしまいました。

    ちなみに、625000bpsや1.25Mbpsでは動かないですよね。

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • 西村備山
    西村備山 over 2 years ago in reply to Yuuichi Akagawa
    625kbpsや1.25Mbpsは設定はできるものの誤差が大きすぎたと記憶しています。後で確認します。

    SERIAL_8E1も忘れそうなところですね。
    まとめると、初期化処理は次のような2行です。

    Serial1.begin(115200, SERIAL_8E1);
    Serial1.direction(HALFDUPLEX);
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Okamiya Yuuki
    Okamiya Yuuki over 2 years ago in reply to 西村備山

    PicoScopeの安いオシロで、ボーレートvs波形を見てみました。1.25Mbpsまでは行けそうですが、3Mbpsは誤差がでかいためチューニングが必要そうです。3万円のB3Mが・・・。

    波形は、PMOD側Serial5と、バッファをかんでいるSerial1です。プログラムは以下です。ボーレートのみ変更していってます。

    #include <Arduino.h>
    void setup()
    {
    Serial1.begin(3000000);
    Serial5.begin(3000000);
    }

    void loop()
    {
    Serial1.write(0x55);
    Serial5.write(0x55);
    delay(3);
    }

    ●Serial5 115200bps

    ●Serial1 115200bps

     

    ●Serial5 625kbps

    ●Serial1 625kbps

     

    ●Serial5 1250000

    ●Serial1 1250000

    それほど誤差はなさそうだが、立ち上がりの遅さが目立ってきている。

     

    ●Serial5 3000000

    3.8MHzぐらいになってしまっている。Serial1も同様

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Okamiya Yuuki
    Okamiya Yuuki over 2 years ago in reply to Okamiya Yuuki

    1.25Mbpsで受信もできるかどうか、FTDIのUSBシリアル変換でループさせて確認しましたが、受信も問題内容でした。

    Serial(USB) → Serial1 (配線)→ FTDI

    FTDI (配線)→ Serial1 → Serial(USB)

    #include <Arduino.h>
    void setup()
    {
    Serial.begin(9600);
    Serial1.begin(1250000);
    }

    void loop()
    {
    if(Serial1.available()){
    Serial.write(Serial1.read());
    }
    if(Serial.available()){
    Serial1.write(Serial.read());
    }
    }

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • 西村備山
    西村備山 over 2 years ago in reply to Okamiya Yuuki
    実験ありがとうございます。
    クロック周波数を失念してました。
    CITRUSやSAKURAではPCLK=48MHzのため、
    625kHz、1.25MHzは誤差20%となりますが、
    PCLK=60MHzのROSEではちょうど割り切れる?
    ひょっとしてメインクロック120MHzにはそういう深い意味があったのでしょうか?
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Okamiya Yuuki
    Okamiya Yuuki over 2 years ago in reply to 西村備山
    え!?ないですよー^^
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • 西村備山
    西村備山 over 2 years ago in reply to Okamiya Yuuki
    625kHzおよび1.25MHzでICSサーボの制御ができることが確認できました!
    絶妙な設計ですね!(^^;)
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Yuuichi Akagawa
    Yuuichi Akagawa over 2 years ago in reply to 西村備山
    検証ありがとうございます。ホント絶妙。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • 西村備山
    西村備山 over 2 years ago
    シリアル2系統 × 各8軸のICSサーボの制御が確認できました。

    近藤科学のロボットKXR-L2をコントロールする様子
    https://youtu.be/VE1_n5_29WY
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Aoki Shinji
    Aoki Shinji over 2 years ago

    近藤科学ICS USB Adapterの代替

    サーボのID書換はICS USB Adapterが必要ですが、これをGR-ROSEにやらせてみました。

    [動作確認の内容]

    ・PC側ソフトウェア:KXR ICS Manager

    ・使用サーボ: 近藤科学 KRS-3301 ICS

    ・ボーレート: 115200

    ・接続ポート: Serial1 (1線UART設定)

    [スケッチ]

    // IcsAdapter
    // GR-ROSEに近藤科学ICS USB Adapterの代わりをさせる
    // Serialで受信したデータをSerial1に出力し、
    // Serial1で受信したデータをSerialに出力
    // 2018/09/19 ICSサーボのID書換えが出来ることを確認済
    // 参考:japan.renesasrulz.com/.../ics

    /* GR-ROSE Sketch template V0.01 */
    #include <Arduino.h>
    extern "C" {
    #include "FreeRTOS.h"
    #include "task.h"
    }

    void loop2(void *pvParameters);

    void setup() {
    // LEDs
    pinMode(PIN_LED0, OUTPUT);
    pinMode(PIN_LED1, OUTPUT);

    // serial output to USB
    Serial.begin(115200);

    //サーボモータの通信初期設定
    Serial1.begin(115200, SERIAL_8E1);
    Serial1.direction(HALFDUPLEX);

    // loop2 task creation for sensing
    xTaskCreate(loop2, "LOOP2", 512, NULL, 2, NULL);

    }

    void loop() {
    if(Serial.available())
    {
    char c = Serial.read();
    Serial1.write(c);
    }

    if(Serial1.available())
    {
    char c = Serial1.read();
    Serial.write(c);
    }
    }

    void loop2(void *pvParameters) {
    while (1) {
    digitalWrite(PIN_LED1, !digitalRead(PIN_LED1));
    vTaskDelay(500);
    }
    }

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • 西村備山
    西村備山 over 2 years ago in reply to Aoki Shinji

    GR-ROSEで、近藤科学KXR-L2のサンプルモーション相当の動きができました。

    ついでにスマホアプリからWiFiでコントロールできるようにしました。(ESP8266のファームは書き換えています。)

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • 西村備山
    西村備山 over 2 years ago in reply to 西村備山
    リンク貼り忘れました。動画こちら。
    www.youtube.com/watch
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Aoki Shinji
    Aoki Shinji over 2 years ago
    西村備山氏はすでに解決済みのようですが、近藤科学のICSシリアルサーボをカスケード接続して、IDの異なる複数のサーボモーターに立て続けにコマンドを送ると、うまく動きません。コマンド送信ごと時間を取るとOKでした。どの程度の時間が必要か、近藤科学様へ問い合わせたところ、次の回答を頂きましたのでUPします。

    >>受信データを全て受信直後に送信をすると、他の処理を行っているため
    >>動作しま せん。
    >>時間的には400usほど待っていただければ問題なく送信できます。
    >>なお、KRR-5FHを使用する場合は、内部の処理が複雑なため5ms程必要に
    >>なります。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • digiponta
    digiponta over 2 years ago

    話題それますが、近藤科学さんで、安売りしているKRS-3301でも、シリアルサーボとして使えますか?

    あと、ボーレートの設定は、最終的には、ライブラリ側で、差異を吸収するんでしょうか?

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • digiponta
    digiponta over 2 years ago in reply to digiponta
    すみません。愚問でした、最初の投稿で、
    「使用サーボ: 近藤科学 KRS-3301 ICS」
    と書いてありました(;^ω^)
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
>
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2020 Renesas Electronics Corporation. All rights reserved.