OSOYOO メカナムホイールカーのキットを組み立ててみた

スポンサーリンク

レゴ互換モーターでメカナムホイールカーを作ってみたものの、もっとパワーとスピードのある別の車体がほしくなってきたので、手っ取り早くキットを選択。組み立てたキットは「OSOYOO メカナムホイールカー」(英語名はMecanum Wheel Metal Chassis Robotic)。

組み立て方法は公式ページで図入りで解説してくれているので、わりとスムーズに完成。

キット組み立て後の変更

拡張やメンテナンスが行いやすいように適当にプレートを追加。

f:id:sato_susumu:20201127121831j:plainf:id:sato_susumu:20201127121828j:plain

あとは、PCA9685を追加して、PCA9685とArduino間は4本の配線で動くようにした。

f:id:sato_susumu:20201127121526p:plain

プログラム

動作確認用のプログラム

プログラムの内容 (クリックで展開)

使用したPCA9685ライブラリはこちら

#include <Wire.h>
#include <PCA9685.h>

#define SPEED 255
#define TURN_SPEED 255
#define SHIFT_SPEED 255
#define BRAKE_SPEED 255

#define PWM_HIGH 255
#define PWM_LOW 0

#define CH_FRONT_DRIVER_ENA 0
#define CH_FRONT_DRIVER_IN1 1
#define CH_FRONT_DRIVER_IN2 2
#define CH_FRONT_DRIVER_IN3 3
#define CH_FRONT_DRIVER_IN4 4
#define CH_FRONT_DRIVER_ENB 5

#define CH_REAR_DRIVER_ENA 6
#define CH_REAR_DRIVER_IN1 7
#define CH_REAR_DRIVER_IN2 8
#define CH_REAR_DRIVER_IN3 9
#define CH_REAR_DRIVER_IN4 10
#define CH_REAR_DRIVER_ENB 11

PCA9685 pwm = PCA9685(0x40);

void set_pwm(int ch, int speed)
{
  // map to 12bit value
  int value = map(speed, 0, 255, 0, 0xfff);
  pwm.setPWM(ch, 0, value);
}

void motor_set_speed(int ch_en, int ch_in1, int ch_in2, int speed)
{
  if (speed == 0) {
    set_pwm(ch_in1, PWM_LOW);
    set_pwm(ch_in2, PWM_LOW); 
    set_pwm(ch_en, BRAKE_SPEED);
  } else if (speed > 0) {
    set_pwm(ch_in1, PWM_LOW);
    set_pwm(ch_in2, PWM_HIGH); 
    set_pwm(ch_en, speed);
  } else {
    set_pwm(ch_in1, PWM_HIGH);
    set_pwm(ch_in2, PWM_LOW); 
    set_pwm(ch_en, -speed);
  }
}

void front_right_motor_set_speed(int speed)
{
  motor_set_speed(CH_FRONT_DRIVER_ENA, CH_FRONT_DRIVER_IN1, CH_FRONT_DRIVER_IN2, speed);
}

void front_left_motor_set_speed(int speed)
{
  motor_set_speed(CH_FRONT_DRIVER_ENB, CH_FRONT_DRIVER_IN3, CH_FRONT_DRIVER_IN4, speed);
}

void rear_right_motor_set_speed(int speed)
{
  motor_set_speed(CH_REAR_DRIVER_ENA, CH_REAR_DRIVER_IN1, CH_REAR_DRIVER_IN2, speed);
}

void rear_left_motor_set_speed(int speed)
{
  motor_set_speed(CH_REAR_DRIVER_ENB, CH_REAR_DRIVER_IN3, CH_REAR_DRIVER_IN4, speed);
}

void all_motors_set_speed(int front_left_speed, int front_right_speed, int rear_left_speed, int rear_right_speed)
{
  front_left_motor_set_speed(front_left_speed);
  front_right_motor_set_speed(front_right_speed);
  rear_left_motor_set_speed(rear_left_speed);
  rear_right_motor_set_speed(rear_right_speed);
}

void all_motors_stop()
{
  set_pwm(CH_REAR_DRIVER_ENB, 0);
  set_pwm(CH_REAR_DRIVER_ENA, 0);
  set_pwm(CH_FRONT_DRIVER_ENB, 0);
  set_pwm(CH_FRONT_DRIVER_ENA, 0);
}

void all_motors_brake()
{
  front_left_motor_set_speed(0);
  front_right_motor_set_speed(0);
  rear_left_motor_set_speed(0);
  rear_right_motor_set_speed(0);
}

void setup_pca9685()
{
  pwm.begin();
  pwm.setPWMFreq(60);
}

void setup()
{
  setup_pca9685();
  all_motors_brake();
}

void loop()
{
  all_motors_set_speed(
    SPEED, SPEED,
    SPEED, SPEED);
  delay(2000);

  all_motors_set_speed(
    -SPEED, -SPEED,
   -SPEED, -SPEED);
  delay(2000);

  all_motors_set_speed(
    -TURN_SPEED, TURN_SPEED,
    -TURN_SPEED, TURN_SPEED);
  delay(2000);

  all_motors_set_speed(
    TURN_SPEED, -TURN_SPEED,
    TURN_SPEED, -TURN_SPEED);
  delay(2000);

  all_motors_brake();
  delay(4000);
}

各部品のスペックとメモ

車体

f:id:sato_susumu:20201127125439p:plainf:id:sato_susumu:20201127125443p:plain
メーカーのページより引用

メカナムホイール

f:id:sato_susumu:20210201182003j:plain

Amazon.comより引用

メーカーのページより引用

エンコーダ付きDCモーター

項目 内容
コネクタ JST XH 6pin(1.5mm)
VMモーター電源
GND
ホールセンサー用V型電源
ホールセンサー用G-GND
オレンジ ホールセンサーのS1
ホールセンサーのS2
定格電圧 DC 9.0V
ギア比 1/75
Output Speed(無負荷時速度) 150±10%rpm
No-load Current(無負荷時電流) 200mA(Max)
Stall Current(ストール電流) 4500mA(Max)
Stall Torque(ストールトルク) 9.5kg.cm
Rated Torque(定格トルク) 3000g.cm = 0.294N.m
Rated Current(定格電流) 1200mA(Max)
Rated Speed(定格速度) 100±10%rpm
Noise 56dB
モーター本体の無負荷速度 11500±10%rpm
モーター本体の無負荷時電流 180mA(Max)
モーター本体のストール電流 4500mA(Max)
モーター本体の失速トルク 160g.cm

定格9Vを7.4Vで運用。

モーターの詳細PDF
Shenzhen Chihai Motor Store
メーカーのHP

モータードライバー

OSOYOO Model-X Motor Driver Module

項目 内容
ロジック電圧 5V
駆動電圧 5-35V
定格電力 25W
使用チップ L298N, 78M05
対応モーター 2相または4相ステッピングモーター、2相DCモーター

記載が見えづらいけど、外側のピンはV0, 12V, GND, GND, 5V, S, Sと記載されている。 V0, 12V, GNDは電圧計に接続。
内側のピンはENA, IN1, IN2, IN3, IN4, ENBと記載されている。

項目 内容
ENA Enable A(K1)
IN1 Input1(K1)
IN2 Input2(K1)
IN3 Input3(K3)
IN4 Input3(K3)
ENB Enable B(K3)

制御方法
f:id:sato_susumu:20201127123139p:plain

メーカーのページより引用

L298N
項目 内容
最大電流 合計4A
負荷用電源電圧 約5V~46V
ロジック電源電圧 4.5V~7V

Voltage meter

項目 内容
Measuring Range DC0-100V
Input Voltage DC3-30V
Pin 3Pins

記載が見えづらいけど、ピンの内容はVt, VCC, GNDと記載されれている。 測った結果は、Vt、VCCともに電池電圧と同じ8.0V。

OSOYOO MEGA2560 R3 Control Board

項目 内容
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V

Arduinoって7〜12Vで動くんだ。

使用した電池(付属外)

KEEPPOWER P1832J 3200mAh 保護回路付き リチウムイオンバッテリ

項目 内容
種類 18650
連続使用可能時間 3 Hours
電圧 公称電圧: 3.7V, Max 4.2V, Cut-off 2.5V 400mA放電条件
出力 Max6.2A
サイズ 直径18.70mm ±0.25mm × 長さ69mm ±0.85mm
重量 49.0g±0.5g
サイクル寿命 500回
推奨充電方式 CC/CV Max 充電電流 2A

リンク

キットの組立方法 公式ページ
@deveminさんのキットの情報
きょうのかんぱぱ さんのキット製作レポート
きょうのかんぱぱ さんのサンプルプログラム解析