0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Milk-v Duoでサーボモーターを制御する

Last updated at Posted at 2023-12-05

はじめに

秋葉原ロボット部の有志で、Milk-v Duoを購入し、個々人が様々な実験を行って、勉強会内で報告しています。

Milk-v Duoは9ドルのrisc-vコンピュータとして知られています。
ハードウェアは以下の通りです。

  1. CPUはCVITEKのCV1800B (C906@1Ghz + C906@700MHz)
  2. 最高1 GHzで動作するデュアルRV64コア
  3. 64 MBのラム
  4. オプションのアドオンボードを接続すると10/100Mbpsの速度でイーサーネットに接続可能

Wiringxを使うと、様々な外部機器の制御が可能です。
この記事では、サーボモータの制御を紹介します。

DF9GMSとは

DGF9GMSサーボモーターは、DFROBOT社から販売されている360度回転可能なモーターです。
https://www.dfrobot.com/product-1579.html
ホームページ掲載のスペックは以下の通り

  • 動作電圧: 3.5 - 6.0V
  • 入力すべ気電圧: 4.8V ~ 6.0V
  • Dead Zone Width: 5usec
  • 動作速度: 0.12秒/60度 (4.8V no load)
  • Stall Torque: 1.2kg/cm (4.8V), 1.6kg/cm (6.0V)
  • Neutral Location: 1500us
  • 配線:
     茶: GND
     赤: 電源[+]
     オレンジ: 制御信号
  • ケーブル長: 250mm
  • 温度範囲: -30°C to + 60°C
  • 外形寸法: 22.6 x 12.2 x 30 mm /0.89x0.48x1.18インチ
  • 重量: 9±1g

容易に入手できるSG90でも、動作できそうです。

サーボモータの接続

「dfgms.c」を参照すると、

dfgms.c
#include <stdio.h>
#include <unistd.h>
#include <wiringx.h>
/*
Duo
------------------------------------------
PWM operation at a fixed frequency clock of 100MHz, writing Period in units of nanoseconds.
    DF9GMS 360-degree PWM Duty Cycle 
    ------------------------------------------ 
    0.4ms - 1.4ms CW deceleration 
    1.5ms Stop 
    1.6ms - 3ms CCW acceleration 
*/
static int PWM_PIN = 4; // PWM5@GP4

とありますので、PWM5に相当するGPIO19に信号制御の線を接続します。
サーボモーターは5 Vで動作しますので、「VSYS」に接続します。
GNDはGNDに接続します。

サーボ動作プログラムのビルド

まず、Milk-v Duoアドベントカレンダー
https://qiita.com/advent-calendar/2023
のシリーズ2の3日の
「Milk-v Duoのクロスコンパイル環境をWSL上に作成して、Gitで公開されているプログラムを動かしてみる」
に従って開発環境を構築してください。
使用するプログラムは
https://github.com/milkv-duo/duo-examples
にあります。
「duo-examples」ディレクトリに移動したら、以下のコマンドで「df9gms」ディレクトリで、プログラムをビルドします。

$ cd df9gms
$ make it

「ls」で生成したファイルを確認します。

$ ls
df9gms df9gms.c df9gms.o Makefile

Milk-vに「df9gms」を転送します。
「df9gms」ファイルのあるディレクトリで、「./df9gms」と入力すると、サーボモータが回転し、以下のような画面表示が現れます。

[root@milkv-duo]~# ./df9gms
Duty: 10000
Duty: 20000
Duty: 30000
...
Duty: 280000
Duty: 290000
Duty: 300000

WiringXライブラリのおかげで、容易に制御可能となりました。
様々な動きをさせるための、母艦でプログラムの作成とビルド、ファイル転送の一連の操作は、面倒です。
Milk-v Duo上で操作が完結する、PythonやTinyccでプログラムが作成できると作業がはかどりそうです。

おわりに

Milk-v DuoのGPIOにサーボモーターを直接接続して、プログラムで制御することが可能になりました。
Milk-v Duoを自作ロボットの制御基板として利用可能です。

参考 https://milkv.io/docs/duo/application-development/sensor-demo

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?