Python driver for PAMC-104 Piezo Assist Motor Controller
Project description
pypamc_104
PAMC-104 ピエゾアシストモーターコントローラ用 Python ライブラリ
インストール
pip install pypamc_104
開発版(ローカルインストール):
cd pypamc-104
pip install -e .
必要環境
- Python 3.9+
- pyserial
開発環境のセットアップ
1. リポジトリをクローン
git clone https://github.com/mechano-transformer/pypamc-104.git
cd pypamc-104
2. 仮想環境(venv)を作成・有効化
Windows:
python -m venv .venv
.venv\Scripts\activate
macOS / Linux:
python3 -m venv .venv
source .venv/bin/activate
3. 開発用依存パッケージと共にインストール
pip install -e ".[dev]"
これで pypamc104 本体 + pytest がインストールされます。
4. ユニットテストの実行
pytest
詳細出力で実行する場合:
pytest -v
特定のテストクラスだけ実行する場合:
pytest tests/test_controller.py::TestRotation -v
5. 仮想環境の終了
deactivate
クイックスタート
from pypamc104 import PAMC104
# コントローラに接続(ポートは自動検出)
with PAMC104() as ctrl:
# 通信確認
ctrl.check_connection()
# ファームウェアバージョン確認
print(ctrl.get_firmware_info())
# CH1を正回転(1500Hz, 10パルス)
ctrl.rotate_forward(channel=1, frequency=1500, pulses=10)
# CH2を逆回転(連続駆動)
ctrl.rotate_reverse(channel=2, frequency=300)
# 停止
ctrl.stop()
使い方
接続
ポート名を省略すると、USBのVID/PID(FTDI FT230X: 0403:6015)が一致する
シリアルポートを自動検出します。ポート名の明示指定も可能です。
from pypamc104 import PAMC104, find_port
# context manager(推奨)。ポート自動検出
with PAMC104() as ctrl:
...
# ポート名を明示指定(自動検出をスキップ)
with PAMC104("COM3") as ctrl:
...
# 手動で接続管理
ctrl = PAMC104()
ctrl.open()
print(ctrl.port) # 実際に使用中のポート(例: "COM3", "/dev/ttyUSB0")
# ... 操作 ...
ctrl.close()
# 検出だけ行うことも可能(見つからない/複数候補の場合は ConnectionError)
port = find_port()
通信確認
with PAMC104("COM3") as ctrl:
# CON コマンドで通信状態を確認
if ctrl.check_connection():
print("通信OK")
ファームウェアバージョン確認
with PAMC104("COM3") as ctrl:
info = ctrl.get_firmware_info()
print(info) # e.g. "PAMC-104 Ver:0.8.0(115200bps)"
チャンネル / 軸(CH1〜CH4 = A〜D)の指定方法
PAMC-104 は最大4軸を制御できます。各メソッドの channel 引数には、
数字 1〜4 でも 軸文字 "A"〜"D"(大文字・小文字どちらも可)でも指定できます。
両者は次のように対応します。
| 数字 | 軸文字 | 軸 |
|---|---|---|
1 |
"A" |
CH1 |
2 |
"B" |
CH2 |
3 |
"C" |
CH3 |
4 |
"D" |
CH4 |
PAMC-104 の駆動コマンド(NR/RR)では軸表記はコマンド末尾の A〜D です。
数字で指定してもライブラリが自動変換するため、利用者はどちらの書き方をしても同じ結果になります。
| コマンド系統 | 軸表記 | 例(CH1 / CH2) |
|---|---|---|
回転駆動(NR/RR) |
末尾に A〜D |
NR05000100A / …B |
with PAMC104("COM3") as ctrl:
# 数字でも軸文字でも同じ(どちらも CH2 を 500Hz で正回転)
ctrl.rotate_forward(channel=2, frequency=500, pulses=100)
ctrl.rotate_forward(channel="B", frequency=500, pulses=100)
# 小文字も可
ctrl.rotate_reverse(channel="c", frequency=300)
モーター駆動(正回転 / 逆回転)
with PAMC104("COM3") as ctrl:
# 正回転: CH1, 1500Hz, 10パルス
ctrl.rotate_forward(channel=1, frequency=1500, pulses=10)
# 逆回転: CH2, 500Hz, 連続駆動(pulses=0)
ctrl.rotate_reverse(channel=2, frequency=500)
# 小数点周波数(ファームウェア0.8.0以降)
ctrl.rotate_forward(channel=1, frequency=100.5, pulses=10)
# 拡張パルス(最大999999パルス、ファームウェア0.8.0以降)
ctrl.rotate_forward(channel=1, frequency=800, pulses=100000)
# 停止(駆動パルス数が返る)
result = ctrl.stop()
print(result) # e.g. "FIN" or "FIN1456"
# パルス数だけ取得
count = ctrl.get_stop_pulse_count()
生コマンド送信
with PAMC104("COM3") as ctrl:
response = ctrl.send_raw("CON")
print(response)
コマンド一覧
| メソッド | コマンド | 説明 |
|---|---|---|
check_connection() |
CON |
通信確認 |
get_firmware_info() |
INF |
ファームウェアバージョン確認 |
rotate_forward() |
NRnnnnyyyyz |
正回転駆動 |
rotate_reverse() |
RRnnnnyyyyz |
逆回転駆動 |
stop() |
S |
駆動停止 |
駆動コマンドのフォーマット
| フォーマット | 説明 | 対応FW |
|---|---|---|
NR/RR + nnnn + yyyy + z |
標準(整数周波数、4桁パルス) | 全バージョン |
NR/RR + nnnn.n + yyyy + z |
小数点周波数(0.1Hz単位) | 0.8.0+ |
NR/RR + nnnn + Xyyyyyy + z |
拡張パルス(6桁) | 0.8.0+ |
パラメータ
| パラメータ | 範囲 | 説明 |
|---|---|---|
| 周波数(整数) | 1〜1500 Hz | 4桁ゼロ埋め |
| 周波数(小数) | 0.1〜1500.0 Hz | ○○○○.○形式 (FW 0.8.0+) |
| パルス数(標準) | 0000〜9999 | 0000 = 連続駆動 |
| パルス数(拡張) | X000000〜X999999 | X + 6桁 (FW 0.8.0+) |
| チャンネル | 1〜4 または A〜D | 数字でも軸文字でも指定可(A:CH1, B:CH2, C:CH3, D:CH4) |
レスポンスメッセージ
| メッセージ | 意味 |
|---|---|
OK |
コマンドを正常に受けた |
FIN |
駆動終了 |
FIN△△△△ |
連続駆動停止時の実移動パルス数 |
ERROR |
コマンド入力間違い |
BUSY |
駆動中 |
通信仕様
| 項目 | 値 |
|---|---|
| ボーレート | 115200 bps |
| データビット | 8 bit |
| パリティ | None |
| ストップビット | 1 bit |
| フロー制御 | None |
| デリミタ | CR + LF |
PAMC-204 との違い
PAMC-104 は PAMC-204 と比較してシンプルな構成です:
- アドレスシステムなし: コマンドに
Exxプレフィックスを付けません - 位置制御なし: 絶対位置移動(PA)、相対位置移動(PR)等はありません
- CON コマンド: PAMC-104 固有の通信確認コマンドがあります
- 出力電圧制御なし: DAC コマンドはありません
ライセンス
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pypamc_104-0.4.0.tar.gz.
File metadata
- Download URL: pypamc_104-0.4.0.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
246d466c73993c006cb337e864cfdba3d1bcc26dd1ee815624c422f25f16dd38
|
|
| MD5 |
a4bf011498d7dff9c69ae252dfc18bb2
|
|
| BLAKE2b-256 |
d2f6df93e3249c0912d65c52c48349bf9ab268adb164949be0b8365f5ccca6c8
|
Provenance
The following attestation bundles were made for pypamc_104-0.4.0.tar.gz:
Publisher:
publish.yml on mechano-transformer/pypamc-104
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypamc_104-0.4.0.tar.gz -
Subject digest:
246d466c73993c006cb337e864cfdba3d1bcc26dd1ee815624c422f25f16dd38 - Sigstore transparency entry: 2133708890
- Sigstore integration time:
-
Permalink:
mechano-transformer/pypamc-104@159b639277fad9ab3e1a3413f9557d0a5d078844 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/mechano-transformer
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@159b639277fad9ab3e1a3413f9557d0a5d078844 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pypamc_104-0.4.0-py3-none-any.whl.
File metadata
- Download URL: pypamc_104-0.4.0-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
335414ed0be04551875d1ff3712ee53a538c309deb3cdce09ec36cadbb0b98fd
|
|
| MD5 |
97946a5daf1532cb71113f5a1724bf38
|
|
| BLAKE2b-256 |
967bb2dc6ccd7a87e5accb34f0569af351b570305d37682b4b5f68913b9ad3e6
|
Provenance
The following attestation bundles were made for pypamc_104-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on mechano-transformer/pypamc-104
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pypamc_104-0.4.0-py3-none-any.whl -
Subject digest:
335414ed0be04551875d1ff3712ee53a538c309deb3cdce09ec36cadbb0b98fd - Sigstore transparency entry: 2133708928
- Sigstore integration time:
-
Permalink:
mechano-transformer/pypamc-104@159b639277fad9ab3e1a3413f9557d0a5d078844 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/mechano-transformer
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@159b639277fad9ab3e1a3413f9557d0a5d078844 -
Trigger Event:
push
-
Statement type: