2025年2月26日水曜日

ArLFO Ver.1.2 BOOTHに出品しました。

 ArduinoとSPI DACを使ったArLFOの基板をBOOTHに出品しています。

こんなんなんぼあってもいいですからね。ぜひご検討ください。

https://pnpn-mfg.booth.pm/items/6591825




2025年2月12日水曜日

ArLFO Ver.1.2 Arduino(ATMega328P)とSPI DAC(MCP4921)を使ったLFOの製作

以前、テストしたArLFOのEurorackモジュールを製作しました。

はんだ付けしている様子をYoutubeにアップしてますので参考にしてください。

Arduinoのスケッチを書き込んだATMega328PとSPI DACのMCP4921を使ったLFOです。12bit DACでサンプリング周波数25kHzで動作させています。

オーディオ用DACに比べて低ビット、低レートですが、CV(モジュレーション信号)なので実用上問題ありません。MIDIが8bitデータ、分解能が1ms程度であることを考えるとむしろハイスペックと言えるかも知れません。また、出力段に4次多重帰還ローバス・フィルタを設けて量子化歪(信号波形のガタガタ)を低減しています。

ファームウェアはArduinoのスケッチなのでAVRライターなどは不要で、Arduino IDEからUSB-Serial変換モジュールを使ってプログラミング出来ます。デフォルトのファームウェアは性能を上げるために直接レジスタを操作しているので、書き換える際はAVRの知識が多少あった方がいいかもしれません。

ファームウェアはGithubで公開しています。

実装済基板

パネルに取付

出力波形


出力は以下6種類をプッシュスイッチで切り替えます。

  • サイン波
  • 三角波
  • 矩形波(パルス幅可変)
  • ノコギリ波(上昇)
  • ノコギリ波(下降)
  • サンプル&ホールド

サイン波

三角波

矩形波(パルス幅可変)

ノコギリ波(上昇)

ノコギリ波(下降)

サンプル&ホールド

Dual波形とSingle波形


ArLFOには2系統の出力があります。Singleは0V~+5V、Dualは-5V~+5Vです。受け側の入力電圧範囲に合わせて利用できます。


CH1:Dual CH2:Single

ローパス・フィルタ


DACの出力に4次多重帰還LPFを入れて量子化歪を除去しています。またLPFを掛けないDACの信号も出力できます。


CH1:LPF通過後 CH2:LPF通過前

LPFはカットオフ周波数6.25kHz、ベッセル特性で設計しています。LTSpiceでのシミュレーションは以下の通りです。

シミュレーション回路図

AC解析

過渡解析

1kHz/2Vp-p矩形波

ベッセル特性はフィルターの切れはいまいちですが、過渡特性が良く信号波形のリプルが少なく素直な特性になります。

出力周波数


出力周波数はLとHをトグルスイッチで切り替えます。

  • L:  0Hz~5Hz
  • H:  0Hz~50Hz

Hにすると可聴帯域の信号も出力できるので実際に耳で聞くこともできます。振幅が大きいので注意してください。最大周波数はスケッチ内の定数で変更できます。

回路について


回路図

回路図(アクティブフィルタ)

MCP4921の出力を直接アクティブフィルタに入力すると十分にドライブ出来ず、波形の一部がクリップしてしまいました。長年MCP492Xを使っているのですが、いつも何の気なしに出力にボルテージフォロワを入れていたので気づきませんでした。


MCP4921の出力を直接アクティブフィルタに入力すると波形がクリップする

このため、実際の回路ではDACの後段にボルテージフォロワによるバッファ(U3B)を入れています。前出のオシロの波形がクリップしていないのをご確認ください。

Q1の2SC1815はBLランクにします。YランクやGRランクだと増幅率が小さくインジケータLEDの明るさが暗く点滅するようになると思います。正規品の2SC1815は入手困難なのでUNISONIC製などセカンドソース品で十分です。

抵抗は、手持ちの関係で一部金属皮膜を使っていますが、今回の製作はすべてカーボンで十分です。また、フィルムコンデンサもマイラで大丈夫だと思います。

ファームウェアの書き込み


あらかじめATMega328PにArduinoのBootloaderを書き込んでおきます。


ファームウェアはGithubで公開しています。

ファームウェアに書き込むにはUSB-Serial変換モジュールをArLFOのJ7(ARDUINO_ISP)と接続します。

配線表

QIコネクタを使ってハーネスを作っておくと良いでしょう。


※光の加減でコネクタが白く映っていますが、黒いQIコネクタのハウジングです。

USB-Serial変換モジュールは、私はAliExpressのノンブランド品を使用しています。DTR、TXD、RXD、GNDの端子が出ていて、5V動作するものであれば大丈夫だと思います。FT232RLとCH340使用のもので動作確認しています。

ファームウェア書き込み手順

  1. USB-Serial変換モジュールをArLFOに接続
  2. USB-Serial変換モジュールをPCにUSBで接続
  3. ArLFOの電源投入
  4. Arduino IDEを起動
  5. Tools - Board - Arduino Uno
  6. Tools - Port - <USB-Serial変換モジュールのポート>

あとは普通のArudinoと同じようにスケッチをUploadします。

2025年2月7日金曜日

ArLFOはんだ付け 動画を公開


製作中のArduinoをSPI DACを使ったLFOのはんだ付けの様子を動画に撮ってみました。
Blog記事にするほどでもない細かいノウハウもちょこちょこ紹介しています。

初心者の頃、キットを買ったはいいもののどうやってはんだ付けして組み立てるのか良くわからなかったので、そういった方のお役に立てればと思います。

2025年1月2日木曜日

Arduino Writerの製作

こちらの基板をBOOTHで販売しております。

製作の目的

素のATMega328PをArduinoとして使うために、Arduino Unoを使ってBootloaderを書き込めます。簡単な回路なのでブレッドボードでも出来ますが、毎回ブレッドボードで回路を組むのが面倒なので専用の基板を製作しました。また、Bootloaderを書き込んだ後、USB-Serial(TTL)モジュールを使って、Arduinoのスケッチも書き込めるようにしました。


大きく2つに分けて使用方法を示します。

  1. ArduinoのBootloaderを書き込む
  2. Arduinoのスケッチを書き込む

Arduino IDEはVer.2.3.2を使って説明しますが他のバージョンでも大きく違うことはないと思います。Arduino UnoはATMega16U2の代わりにCH340を使った互換ボードでも動作確認しています。

1.ArduinoのBootloaderを書き込む


基本的な概念はArduinoの公式ページを参照してください。

Arduino UnoにProgramer用スケッチを書き込む


まずArduino UnoをBootloaderのProgrammerとして使うためのスケッチを書き込みます。

手順
  1. Arduino UnoとPCをUSB接続する
    Arudino Writer(この基板)とは接続しないでおきます
  2. PCでArduino IDEを起動し、File→Examples→11.ArduinoISP→ArduinoISPを開く
  3. Tools→Board→Arduino AVR Boards→Arduino Uno を選択
  4. Tools→Port→<Arduinoを接続しているPort> を選択
  5. Sketch→Upload、またはメニューバーの(→)アイコンでスケッチを書き込む
  6. IDEの右下にDone Uploading.とポップアップされるのを確認

これでArduino UnoをBootloader書き込み器として使う準備完了です。


Arudino Unoを使ってATMega328PにBootloaderを書き込む


配線図

ハーネスの作例

接続のようす

手順
  1. Arduino Writer(この基板)のZIFソケットにATMega328Pを挿入してレバーを倒す
    レバー側が1ピンです
  2. Arduino UnoとPCのUSB接続を外す
  3. Arduino UnoとArduino Writer(この基板)を接続する
  4. Arduino UnoとPCをUSB接続する
    Arduino Writer上のLEDチェックが走り、HTBT LEDがじんわりと点滅します
  5. PCでArduino IDEを起動
  6. Tools→Port→<Arduinoを接続しているPort> を選択
  7. Tools→Programmer→Arduino as ISP を選択
  8. Tools→BurnBootloader を選択
  9. IDEの右下にDone burning bootloaderとポップアップされるのを確認

これでATMega328PにArudinoのスケッチを書き込むためのBootloaderが書き込まれました。

2.Arduinoのスケッチを書き込む


スケッチの書き込みにはUSB Serial(TTL)モジュールを使用します。FT232RLとCH340のモジュールで動作確認しています。

テスト用にATMega328PにLチカのスケッチを書き込んでみます。

配線図

配線表

※TXDとRXDは互い違いになるように配線します
※CTSは配線しないでおきます
※VCCはUSB Serialモジュールで5Vに設定

配線用ハーネス

接続のようす

手順
  1. Arduino UnoとPCのUSB接続を外す
  2. Arduino UnoとArduino Writerの配線を外す
  3. USB SerialモジュールとArduino Writer(この基板)を接続する
  4. USB SerialモジュールをPCにUSB接続する
  5. PCでArduino IDEを起動
  6. File→Examples→01.Basics→Blinkを選択
  7. Tools→Board→AVR Arduino Board→Arduino Unoを選択
  8. Tools→Port→<USB SerialモジュールのPort> を選択
    Arduinoを接続していたPortと異なるで注意
  9. Sketch→Upload、またはメニューバーの(→)アイコンでスケッチを書き込む
  10. Done Uploading.とIDEの右下にポップアップされるのを確認

Arduino Writer(この基板)の緑のLEDが点滅したら成功です。

回路について


回路図

Bootloaderの書き込みはSPIを使います(D13~D10)。L_PROG、L_ERR、L_HTBTはProgramerとしてつかうArduino Unoからの出力を受けてLEDを点滅させます(D9~D7)。LEDの電流制限抵抗(R2、R3、R4)は実際に使うLEDの明るさで調整してください。私の使っているLEDは緑色だけ暗いのでR4は330Ωに変更しています。

U2のLM358はD13に接続するLEDをドライブしているだけです。D13はSPIのSCKとしても使うのでバッファリングして干渉を避けます。Arduino Unoでも同様の回路になっています。前述の理由でR5は330Ωに変更しています。

Sketchの書き込みにはSerial(D0、D1)とRESETを使います。DTRから0.1uFのコンデンサ(C5)介し、10kΩ(R1)でVCCにプルアップ必要があります。C5がハイパスフィルターとして働き、RESETピンに+5Vを超える電圧がかかります。このため、SBD(D4)でクランプして+5Vを超えないようにしています。