2020年5月17日日曜日

CNC本体組み立て

1年ほど前ですが、Amazonで小型の中華CNC(CNC1208)を購入
ちょっと奮発して5.5Wレーザー付きです

注文してから2週間ちょっとで中国から到着
箱の中は2段になっていて、それぞれに部品が梱包されている
マニュアルやソフトは入っていなかったのでAmazonの購入サイトから問い合わせると、ダウンロード用のURLを教えてもらった
動画の組立てマニュアルもあったのですが、備忘録としてブログにまとめてみます。

まずはネジ類の取り出し。大きさ別に並べておくと便利

まずは作業テーブルの作成
M3x12ネジ2本使って、プレートに銅ナットを取り付け

銅ナットが足りない場合は、モーター軸に付いている場合があるので、軸から取り外して使う

M3x35ネジとナット2セット、バネを使って裏側に銅ナットをもう一枚取り付け

M4x8ネジ4本ずつ使って、2枚のプレートにフランジベアリング2個ずつ取り付け。

M5x20ネジ8本使って、アルミプレートを取り付け

ベアリングに棒を通して、スムーズに動くかチェック。
棒の動きが渋い場合は、ベアリングのネジを一旦緩めて締めなおす。
これで作業テーブルは完了。

次に土台

M3x9ネジ4本で、モーター取り付け。(コネクタの向きに注意)

土台に作業プレートを取り付け。
軸を手でぐるぐる回して、作業プレートの銅ナットを通す。

バネ側の銅ナットは手で少し押し込んで、少し遊びができるように取り付け

M5x16ネジを6本使って、内側の棒2本と外側のアルミプレート2枚を取り付け

M4スクエアナットを外側のアルミプレートに2つずつ通しておく。(ゴム足の取り付け用)

5x16ネジを6本使って、反対側のプレートも取り付け

ベアリングを軸にはめ込んだ後、ハンドルを取り付け。
ハンドルにネジが2つ付いているので、軸に取り付けた後、ボルトで締め付けておく

M4x14ネジを使って、スクエアナットにゴム足4つ取り付け
これで土台は完成

次にモーター台の組み立て
M3x12ネジ2本使って、プレートに銅ナットを取り付け
M3x35ネジとナット2セット、バネを使って裏側に銅ナットをもう一枚取り付け

M4x8ネジ4本ずつ使って、2枚のプレートにフランジベアリング2個ずつ取り付け。

M5x16ネジを使って、4本の短い棒(柱)を取り付け。
ベアリングに棒を通して、スムーズに動くかチェック。 
棒の動きが渋い場合は、ベアリングのネジを一旦緩めて締めなおす。

M3x9ネジ4本で、モーター取り付け。(コネクタの向きに注意)
ハンドルも取り付けて、ネジ締め固定

軸を手でぐるぐる回して、作業プレートの銅ナットを通す。
バネ側の銅ナットは手で少し押し込んで、少し遊びができるように取り付け
M5x16ネジを使って、2本の棒を取り付け。

モーターは、回転部の先に付いていた黒いナットと、本体外側のカバーを取り外しておく
回転部にネジが付いているので締めておく。

M4x14ネジ2本で、モーターを台に取り付け

M5x16ネジ2本で、アルミプレートを取り付け

次にモータ台を支えるパネルの組み立て
M3x12ネジ2本使って、プレートに銅ナットを取り付け

M3x35ネジとナット2セット、バネを使って裏側に銅ナットをもう一枚取り付け

M4x8ネジ4本ずつ使って、2枚のプレートにフランジベアリング2個ずつ取り付け。



M5x20ネジを使って、モーター台のアルミプレートにパネル2枚を取り付け。

ベアリングに棒を通して、スムーズに動くかチェック。 
棒の動きが渋い場合は、ベアリングのネジを一旦緩めて締めなおす。

M5x20ネジを使って、モーター台の下にアルミプレート取り付け

土台に横プレートを組み付け
M3x9ネジで、右側のプレートにモーター取り付け

モーターのコネクターが後ろになるように取り付け

M5x20ネジ6本で、土台に右側プレート取り付け

軸を手でぐるぐる回して、作業プレートの銅ナットを通す。
バネ側の銅ナットは手で少し押し込んで、少し遊びができるように取り付け

M5x16ネジ2本で、棒2本を取り付け
モーター台は結構重いので、マウスで支えた

M5x16ネジ2本で、背面アルミプレートを取り付け

M4スクエアナットを背面アルミプレートに通しておく
写真では上側に2つ付けているが、後で下側にも2つ付けた。4つ付けておいた方がいろいろ便利

上はM5x16ネジ4本、下はM5x20ネジ6本で、左側のプレートを取り付け

ベアリングを軸にはめ込んだ後、ハンドルを取り付け。
ハンドルを回して引っかかりがあるようなら、ベアリングの取り付けネジを一旦緩めて締めなおす

これで本体の組み立ては完了

ネジは2本ずつ余るようになっているっぽい

2020年4月26日日曜日

DCSG動作チェック

以前ここで紹介したPasopia7用のVGM Player。
XPAC2動作確認のため久しぶりに使ってみた。

SMS Power!のサイトにも新しいVGMファイルが登録されており、久々にDCSGサウンドを堪能...

もう一台、別のPasopia7でのテスト。
昔98でお世話になりました。
OPNAにはかなわないけど、DCSGでもなかなかいい感じです...

最後はPasopia700でWaveファイル再生テスト。
以前紹介した、DCSGを使ったWaveファイル再生

Pasopia700はファンノイズがあるので、内蔵スピーカーで楽しむならPasopia7の方が良いかもです。

2019年11月24日日曜日

XPAC2ちょっと再販します

おまたせしました、XPAC2を再販します。

家電のケンちゃん(https://kadenken.com/)で購入できます。














前から再販の希望がありましたが、なかなか対応できずすいませんでした...
今回、家電のケンちゃんに置いてもらったので、興味のある方は見てみてください。
通販はこちら(https://www.kadenken.com/view/item/000000001021)

-----
SNSとか見ていると、パソピア/7でフィルムコンデンサが劣化して破裂する現象が発生しているようです。幸いなことに我が家のパソピア達はまだ大丈夫ですが、パソピアを使う方は注意した方がよさそうです。
ここに少し情報をまとめましたので、もし破裂した方は修理の参考にしてみてください。

もう一つ、パソピア700で使う人(いるのか?)はケースに入れて使ってください。
基板むき出しのまま装着すると、金属部分に触れてショートします...

それでは楽しいパソピアライフを!!

2018年12月28日金曜日

パソピア7のDCSGでWave再生(続き)

前回の続き

まず、DCSG再生用のデータ作成。
Pasopia7で読み込むデータファイルは、8bit 256階調のデータを順番に並べているだけです。
11025Hz(約0.09ms間隔)で再生するので1バイト=0.09msになり、64KBでは約6秒の再生時間になります

11025Hz/16bit/1channelのWaveファイルを用意します。

WaveファイルからDCSGデータにコンバートするプログラムを用意しました。ここからダウンロード
以下コマンドを実行すると、64KBに分割されたDCSGデータファイルが作成されるので、SDカードに保存します。
WavToDCSG.exe Waveファイル名


次にPasopia7の再生ロジックですが、タイマー割り込みを使わずにクロックで時間調整しています。(割り込みだと11025Hzは厳しそう)
DCSGデータ1バイトをXPAC2から読み込み、3和音のトーンテーブルから波形データに変換してSN76489にセットします。これを0.09ms間隔で行います
;初期設定: SN76489の周波数を1に設定
; SG_PORT EQU 3Bh  ;SN76489 Access Port(3Ah/3Bh)
XOR A
LD  C, SG_PORT
LD  B, 081h  ;Tone0 Frequency
OUT (C), B
OUT (C), A
LD  B, 0A1h  ;Tone1 Frequency
OUT (C), B
OUT (C), A
LD  B, 0C1h  ;Tone2 Frequency
OUT (C), B
OUT (C), A

LOOP:
; ここでLレジスタにDCSGデータロード
; * TONE_0テーブルの先頭は、Lowアドレスが00hになるように調整
; * テーブルデータの上位4bitは、TONE_0:Dxh, TONE_1:Bxh, TONE_2:9xhにセット
LD  H, TONE_0テーブルのHighアドレス
LD  A, (HL)  ;Tone0波形データ読み込み
INC H
LD  B, (HL)  ;Tone1波形データ読み込み
INC H
LD  H, (HL)  ;Tone2波形データ読み込み
; SN76489ポートの設定
OUT (C), H
OUT (C), B
OUT (SG_PORT), A
Lレジスタに読み込むデータは、64KBの前半・後半で読み込み方法が異なります
・前半32KB: XPAC2のMRAMから読み込んだデータをLレジスタに保存。同時に後半3秒のデータをPasopia7のRAMに保存
・後半32KB: RAMに保存されたデータをLレジスタに保存。同時にXPAC2のSDカードからMRAMにデータコピー

Pasopia7の再生プログラムはここからダウンロードできます。
RUNするとDSCGデータを読込むMRAMスロットが聞かれるので、「3」か「4」で指定します。
[3] 64KB MRAM (DEVICE 6)
[4] 64KB MRAM (DEVICE 5)

※指定したMRAMスロットのデータは消えるので注意してください。

SDカードに保存したDCSGデータが保存されているフォルダ名を指定します。
以前紹介したvramイメージをrgbというファイル名で同じフォルダに保存しておくと、その画像を表示した後にDCSG再生が始まります。

実機での演奏をどうぞ




実機で試せる方はぜひ

2018年12月27日木曜日

パソピア7のDCSGでWave再生

パソピア7にはSN76489A DCSGがあるので、これを使ってWaveファイルを再生することを考えます
MSXやP6のPSGで試した方がいるようですが、パソピア7はまだいないと思うので・・・

SN76489のVolumeと出力値の関係は以下
Volume設定値出力値割合
0327671.000000
1260280.794328
2206750.630957
3164220.501187
4130450.398107
5103620.316228
682310.251189
765680.199526
851930.158489
941250.125893
1032770.100000
1126030.079433
1220670.063096
1316420.050119
1413040.039811
1500.000000


Volumeの値が上がるほど出力値が小さくなり、Volume=15で無音。
SN76489は1チップ3和音なので、上記Volumeを3つMixしてPCMの256階調(0-255)を作ってみます
TONE_0:
DB 0Fh, 0Eh, 0Dh, 0Ch, 0Bh, 0Eh, 0Dh, 0Ah, 0Ch, 0Ch, 09h, 0Dh, 0Bh, 0Dh, 0Bh, 0Eh
DB 0Ch, 09h, 0Bh, 09h, 0Ah, 0Bh, 0Ah, 0Eh, 08h, 08h, 09h, 0Dh, 08h, 09h, 09h, 08h
DB 07h, 07h, 0Bh, 08h, 06h, 08h, 06h, 06h, 0Eh, 07h, 0Dh, 08h, 07h, 05h, 08h, 07h
DB 04h, 06h, 05h, 0Dh, 05h, 09h, 05h, 04h, 06h, 03h, 07h, 08h, 05h, 06h, 04h, 07h
DB 0Bh, 03h, 0Bh, 05h, 0Eh, 0Bh, 0Ah, 03h, 05h, 05h, 03h, 03h, 03h, 02h, 03h, 02h
DB 02h, 06h, 03h, 02h, 03h, 02h, 04h, 02h, 03h, 03h, 01h, 09h, 03h, 04h, 02h, 03h
DB 0Dh, 01h, 01h, 01h, 02h, 02h, 04h, 05h, 01h, 04h, 08h, 01h, 01h, 03h, 02h, 09h
DB 02h, 00h, 01h, 01h, 00h, 02h, 02h, 00h, 03h, 02h, 00h, 00h, 03h, 0Bh, 01h, 03h
DB 01h, 00h, 08h, 0Ch, 00h, 03h, 00h, 02h, 00h, 00h, 00h, 01h, 00h, 00h, 0Ah, 02h
DB 0Dh, 05h, 00h, 01h, 01h, 00h, 00h, 01h, 02h, 01h, 03h, 06h, 00h, 01h, 00h, 01h
DB 01h, 02h, 00h, 04h, 01h, 00h, 01h, 00h, 04h, 04h, 00h, 01h, 08h, 00h, 02h, 01h
DB 00h, 03h, 03h, 01h, 00h, 01h, 00h, 00h, 01h, 01h, 00h, 01h, 00h, 00h, 01h, 00h
DB 01h, 01h, 00h, 02h, 02h, 01h, 00h, 01h, 00h, 00h, 01h, 00h, 01h, 00h, 00h, 00h
DB 00h, 02h, 00h, 01h, 00h, 00h, 01h, 00h, 00h, 00h, 00h, 01h, 01h, 00h, 00h, 00h
DB 00h, 00h, 00h, 00h, 01h, 00h, 00h, 00h, 01h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
DB 00h, 00h, 04h, 04h, 00h, 00h, 01h, 01h, 01h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
TONE_1:
DB 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Eh, 0Eh, 0Fh, 0Eh, 0Dh, 0Fh, 0Eh, 0Ch, 0Dh, 0Eh, 0Bh
DB 0Ch, 0Ch, 0Ch, 0Bh, 0Ch, 0Bh, 0Bh, 0Ah, 0Dh, 0Ah, 0Ah, 09h, 09h, 09h, 09h, 0Ah
DB 0Bh, 0Bh, 08h, 09h, 0Ch, 09h, 0Bh, 0Bh, 06h, 07h, 07h, 08h, 09h, 0Bh, 08h, 09h
DB 0Ch, 08h, 0Ah, 04h, 0Ah, 05h, 08h, 09h, 07h, 0Eh, 06h, 07h, 06h, 07h, 09h, 05h
DB 04h, 0Ch, 03h, 06h, 04h, 05h, 04h, 0Ah, 07h, 05h, 09h, 07h, 08h, 0Dh, 09h, 0Ch
DB 0Ch, 06h, 07h, 0Ah, 07h, 08h, 07h, 09h, 06h, 07h, 0Eh, 04h, 06h, 04h, 08h, 06h
DB 01h, 0Dh, 0Ch, 0Bh, 06h, 07h, 03h, 05h, 0Ah, 05h, 03h, 09h, 08h, 03h, 05h, 01h
DB 04h, 0Eh, 09h, 08h, 0Ch, 05h, 06h, 0Dh, 04h, 04h, 0Bh, 09h, 05h, 00h, 07h, 03h
DB 06h, 0Ah, 02h, 02h, 09h, 04h, 08h, 03h, 07h, 07h, 08h, 05h, 07h, 08h, 01h, 02h
DB 02h, 03h, 06h, 03h, 03h, 05h, 05h, 03h, 03h, 04h, 03h, 00h, 05h, 05h, 04h, 04h
DB 03h, 02h, 05h, 00h, 02h, 04h, 02h, 05h, 00h, 02h, 03h, 02h, 00h, 05h, 02h, 01h
DB 04h, 00h, 01h, 02h, 02h, 01h, 04h, 03h, 01h, 02h, 02h, 03h, 03h, 02h, 01h, 02h
DB 02h, 01h, 02h, 02h, 02h, 01h, 02h, 03h, 03h, 03h, 02h, 01h, 00h, 01h, 01h, 01h
DB 02h, 02h, 01h, 01h, 01h, 01h, 02h, 02h, 02h, 01h, 01h, 01h, 01h, 01h, 03h, 03h
DB 02h, 02h, 00h, 01h, 02h, 00h, 00h, 00h, 01h, 00h, 01h, 01h, 00h, 02h, 02h, 00h
DB 00h, 00h, 00h, 00h, 00h, 00h, 01h, 01h, 01h, 00h, 00h, 02h, 02h, 02h, 01h, 01h
TONN_2:
DB 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Eh, 0Fh, 0Dh, 0Eh, 0Dh
DB 0Dh, 0Fh, 0Dh, 0Fh, 0Dh, 0Ch, 0Dh, 0Ah, 0Eh, 0Fh, 0Eh, 0Ah, 0Fh, 0Eh, 0Dh, 0Dh
DB 0Eh, 0Dh, 0Ah, 0Ch, 0Eh, 0Bh, 0Eh, 0Dh, 0Ah, 0Fh, 08h, 0Ah, 0Ah, 0Eh, 09h, 09h
DB 0Fh, 0Ch, 0Ch, 0Eh, 0Bh, 0Ch, 0Eh, 0Fh, 0Bh, 0Fh, 0Ah, 07h, 0Fh, 09h, 0Ch, 0Bh
DB 09h, 0Dh, 0Eh, 0Ch, 07h, 06h, 08h, 0Ch, 08h, 0Dh, 0Ch, 0Fh, 0Dh, 0Eh, 0Ah, 0Eh
DB 0Dh, 06h, 0Ch, 0Eh, 0Bh, 0Fh, 07h, 0Dh, 0Ch, 09h, 0Fh, 05h, 0Ah, 0Ch, 0Bh, 09h
DB 0Eh, 0Dh, 0Dh, 0Eh, 0Eh, 0Ah, 0Eh, 05h, 0Ch, 06h, 05h, 0Ch, 0Eh, 0Fh, 0Ch, 0Ah
DB 0Fh, 0Fh, 09h, 0Ah, 0Fh, 09h, 07h, 0Eh, 07h, 0Bh, 0Eh, 0Fh, 05h, 0Ch, 08h, 08h
DB 09h, 0Bh, 04h, 03h, 0Bh, 05h, 0Ch, 0Ah, 0Eh, 0Dh, 0Ah, 08h, 0Bh, 09h, 04h, 0Eh
DB 02h, 03h, 0Bh, 0Eh, 0Dh, 0Eh, 0Dh, 0Bh, 06h, 07h, 04h, 08h, 0Ah, 05h, 0Eh, 06h
DB 08h, 07h, 08h, 0Bh, 0Ch, 0Ah, 0Bh, 07h, 09h, 03h, 0Eh, 09h, 04h, 06h, 05h, 0Fh
DB 07h, 0Ah, 05h, 07h, 0Fh, 0Dh, 06h, 08h, 0Bh, 06h, 0Dh, 04h, 07h, 0Bh, 09h, 0Ah
DB 05h, 08h, 09h, 03h, 03h, 07h, 08h, 03h, 05h, 05h, 04h, 0Eh, 0Dh, 0Ch, 0Ch, 0Bh
DB 06h, 02h, 0Ah, 05h, 09h, 09h, 03h, 05h, 05h, 08h, 08h, 04h, 04h, 07h, 03h, 03h
DB 04h, 04h, 0Eh, 06h, 02h, 0Ch, 0Bh, 0Bh, 03h, 0Ah, 05h, 05h, 09h, 03h, 03h, 08h
DB 08h, 08h, 01h, 01h, 07h, 07h, 02h, 02h, 02h, 06h, 06h, 02h, 02h, 02h, 03h, 03h
6和音テーブルも作成してみましたが、11025Hzのタイミングでは処理が厳しそうなので今回は3和音でいってみます

11025Hzの場合は0.09ms間隔なので、パソピア7のZ80 4MHzで368clock(0.092ms)くらいの間隔で音階を変化させることでWave再生します


続く

2018年12月26日水曜日

パソピア7のVRAMイメージ表示(描画アルゴリズム変更)

以前、RGBイメージをパソピア7で表示するアプリを紹介しました。

しかしRGBプレーン毎にVRAM更新していたため、書き換え中の背景が気になっていました。
今回は1行ずつVRAMを更新していくように変更してみました。ここからダウンロードできます。

使い方は前と一緒です。
RUNするとVRAMイメージを読込むMRAMスロットが聞かれるので、「3」か「4」で指定します。
[3] 64KB MRAM (DEVICE 6)
[4] 64KB MRAM (DEVICE 5)

※指定したMRAMスロットのデータは消えるので注意してください。

続いて、MRAMに読み込むRGBファイルのパスを聞かれますので、SDカードのVRAMイメージ(RGBファイル)ファイルパスを入力します。
ファイルパスの中に「###」3文字を入れると、000~255まで自動でインクリメントしながら###の部分を置き換えて、ファイルを連続読込みします。

北海道のフリー画像がありましたので、以前紹介したアプリ(こちらを参照)でVRAMイメージを作成してパソピア7で表示させてみました。


以下、動画です。

札幌の画像が多いですね。

以前ブログへのコメントでXPAC2再販要求があったので組み立ててみましたが、どうやって販売するか考え中です。もうしばらくお待ちください・・・