2015年8月31日月曜日

OPA2134のA47で2出力のヘッドホンアンプを作る構想

おいっこの進学or就職祝いあげるヘッドホンアンプを考え中。

上のこにあげたのもA47構成だったが、あんまり使ってもらえてないみたいだ。

上のこは今はソフトウェアに興味があるみたいだが、いつか電子回路に興味を持ってくれればと思っている。

下のこは小さいころから工作好きだったので、自分で作ったりするようになってくれという動機のめんどくさいおっさんのプレゼントの構想

凝った構成だと作ってる余裕がなさそうなので今回もA47にする。

A47というのは基本的には非反転増幅回路とボルテージ・フォロワーを組み合わせた回路だが、フィードバックの仕方とか出力に入れるRの入れ方がなんか不思議な構成の回路だ。

LTSpiceでシミュレーション


オリジナルは電源(ACアダプタ?)をTLE2426で分圧してBUF634で増幅しているみたいだが、今回は単4×2で3V、これを2個使って両電源を構成する予定。

入力は10kΩ/AカーブのPOTで分圧して音量を調整。入力のHPFは1uF/47kΩにした。
fc = だいたい3.4Hz
最初のOPAMPの非反転増幅回路で
1 + (2.2k / 8.2k) = だいたい4.7倍
に増幅する。→増幅率は電源電圧との兼ね合いで考える。

出力には32Ωのヘッドホンを2個つないだ感じで32ΩのRloadを2個つないだ。


過渡解析


グラフの下側

青色のV(n004)は入力した1kHz/0.3Vのサイン波を10kΩのPOTで分圧した電圧(だいたい0.15V)だ。

緑色のV(out)は出力波形。0.15V×4.7=0.705Vなので少し足りないがまあまあ計算通り。

グラフの上側

電源から流れ出す電流もシミュレーションしてみた。プラスマイス2.0mAぐらいだ。

こんなに少ない消費電流だと単4電池(750mAh)でもつけっぱで375h=だいたい15日ぐらい持つ計算になる

実際にテストしてみないとわからない値です。

AC解析


青色のV(n004)が入力の分圧後の値で、-6dBなのでだいたい0.5倍

緑色のV(out)が出力電圧で、7dBなので2.23倍で、AカーブのPOTなら3時方向ぐらいに合わせると電圧で2倍増幅ぐらいになりそう

増幅率を設定するRはピンソケットで差し替え可能にすることにしてユニバーサル基板で組んでしまう方向で考えようかな?

2015年8月30日日曜日

AVRをI2Cスレーブとして使う スレーブからバイト列の送信

シーケンス入力用のデバイスの仕様を検討した結果、AVRはI2Cのスレーブとして
スイッチの状態[1..8](8bit)|スイッチの状態[9..16](8bit)|POT1のADC値(8bit)|POT2のADC値(8bit)|ロータリーエンコーダーの状態(8bit)
ぐらいは送信しないといけない。

まだ1バイトの送信のテストしかしていないのでバイト列の送信をテストしてみた。

I2Cスレーブのバイト列の送信手順


またまたI2Cの通信仕様を確認した。AVRの参考書「AVRマイコン・リファレンス・ブック 」のTWIインターフェイスの項を読んでぼんやりと理解できた。バイト列のスレーブ送信の手順は

  • マスターからスレーブにデータの送信を要求(SLA+R)
  • スレーブがSLA+Rを受け取って自分のアドレス(SLA)だったらACK(L)を返す
  • スレーブはデータを1バイトごと送信
  • マスターは1バイト受け取るごとにACK(L)を返す
  • マスターは最後のバイトを受け取った時NACK(H)を返す

と、ややこしい(^q^;

最後にマスターがNACKを帰すというのを見落とすと結構こんがらがる。モードによって最後がACKの場合もある。

I2Cの通信自体はこんな感じだが、AVRのI2Cモジュールはこのバイトごとの通信結果をTWSR(TWIステータス・レジスタ)にステータスコードをセットして、TWCR(TWIコントロール・レジスタ)のTWINTビットをセットする。割り込みを有効化している場合はISR(インターラプト・サービス・ルーチン)が呼び出される。

ステータスコードは、AVRのDATASHEETに載っていた。

スレーブ送信モードのステータスコード表

が、わけがわからない(^q^; 「AVRマイコン・リファレンス・ブック 」に日本語訳された表が載っていてこれがなかったら挫折してた(^q^;

AVRのプログラムで使ったステータスコード
 #define SR_SLA_ACK  0xA8          // SLA_R 受信チェック  
 #define SR_DATA_ACK 0xB8          // 送信パケットチェック バイト列の送信  
 #define SR_DATA_NACK 0xC0          // 送信パケットチェック 最後のバイトを送信  

マスター/スレーブを切り替えて使うとかしない限り、スレーブ送信はこの3つのステータスコードを判定すればいいようだ。
→まったく自信はないです

ブレッドボード図



ArduinoはI2Cのマスターとして使う。

タクトスイッチの列でAVRに8bit入力し、マスターのArduinoに送信する。

赤色LED×8と黄色LEDはエラー表示用だ。

AVRのプログラム

Atmel StudioのプロジェクトはGithubで公開しました。
https://github.com/ryood/Arduino_master_AVR_sleve/blob/master/Atmel%20Studio/I2C_Slave_Sender_ATMega88V_Byte_Sequence/I2C_Slave_Sender_ATMega88V_Byte_Sequence.c


とりあえず、8bitの配列を用意して先頭と末尾のバイトにタクトスイッチの読み取り値を入れて、8バイト送信するようにした。

      uint8_t sdata[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };  
      <中略>  
      for(;;) {  
           // swの押し下げ状態をパケットの先頭と末尾に代入  
           sdata[0] = ~PIND;  
           sdata[7] = sdata[0];  
           //データを送信する。  
           twi_send(sdata, 8);  
      }  

デバッグ中にエラーの原因を特定するためにエラー発生時にLEDでTWSRのステータスコードを表示するようにした。

 void twi_error(uint8_t code)  
 {  
      uint8_t twi_status = TWSR & 0xF8;  
      PORTC = (1 << PC0);  
      while(1) {  
           PORTB = code;  
           _delay_ms(1000);  
           PORTB = twi_status;  
           _delay_ms(1000);  
      }  
 }  

twi_error()を呼び出すときに、引数の「uint8_t code」にエラーコードを指定して呼び出す。

エラー状態の時には、エラーコードとエラー時のTWSRのステータスコードを交互にLEDに表示する。

この処理のおかげで結構あっさりバグの原因を特定できた(^q^/

Arduinoのスケッチ


こちらもGithubで公開しました。
https://github.com/ryood/Arduino_master_AVR_sleve/blob/master/Arduino/master_reader_byte_sequence/master_reader_byte_sequence.ino

スレーブから8Byteのデータを受け取って、シリアル通信でそのまま表示するというもの。


I2Cの通信状態


赤色がSDA、黄色がSCL


AVRのI2Cのの処理を割り込みで処理するようにしないといけないが、また次回。

2015年8月29日土曜日

LME49600の特性

こないだ買ったLME49600の特性を見てみた。

ピンのピッチが1.7mmなのでそのままではブレッドボードには刺せないので抵抗とかの切った足の残りをハンダ付けした


がっちりハンダ付けすると外せなくなりそうなのでかなりいいかげんです

テスト用のブレッドボード図


電源は自作の可変量電源、入力は自作の矩形波だけのファンクションジェネレーターを使った

前やったOPAMPの比較と同じ条件で測定してみた。

電源(+8V)

電源(+10V)

応答を比べると普通のOPAMPとは一線を画している感じだ。

立ち上がりはほぼ直角だし、AVRのクロックノイズもほとんどそのまま出力されている(MHz帯のノイズだと思う)

Rail to Railではないがまあまあ振幅は稼げていると思う。

LME49600にはBWというピンが出ていて、ここをフロートにするとBWが制限されるようなのでこちらも試した


拡大

電源電圧を変化させて波形を見てみた

VCC: 5.03V

VCC: 6.01V

VCC: 6.99V

VCC: 7.98V

VCC: 8.99V

VCC: 10.00V

VCC: 10.99V

もうほとんど誤差レベルかもしれないが、片電源だと電源電圧+10V程度がステップ応答は良好になるみたいだ。

負荷なしの測定なのでヘッドホンアンプとして使ったときの音質はわからないが、バッファとしては相当優秀だ。(一応オシロのプローブの1MΩ10MΩの負荷はある)

と、いうか+5Vp-pしか出力できないファンクションジェネレーターがおかしいので、やっぱ改良したいなですなあ

2015年8月28日金曜日

AVRのPin Change Interruptとチャタリング対策

タクトスイッチの入力も割り込みで処理することを考えてみた。

Timer割り込みで処理しようかと思っていたが、調べるとAVRにはPin Change Interruptという外部割り込みの仕組みがあるようだ。

PORTB、PORTC、PORTDの入力状態が変化すると、それぞれPCINT0、PCINT1、PCINT2の割り込みがかかる。

ブレッドボード図

タクトスイッチの入力をPORTDで受けて、PORTBに接続したLEDで表示する。PC0につないだ黄色のLEDはデバッグ用だ

Atmel StudioのプロジェクトはGithubで公開しました。
https://github.com/ryood/Pin_Change_Interrupt_Test

大まかな処理の流れとしては、以下のとおり。

  1. タクトスイッチの状態が変化(ユーザーがなんかボタンを押す)
  2. Pin Change割り込みが発生(PCINT2)
  3. タクトスイッチの入力状態をprevSwitchに記録して1ms後にTimer0割り込みを発生させる
  4. 1ms後にTimer0割り込みが発生したらprevSwitchと現在のタクトスイッチの入力状態を比較して、同じだったらチャタリングではないとしてLEDの表示状態を変更する。

細かいこと

トグル動作

トグルスイッチとして動作させるために、prevSwitchとは別にsdataという8bitの変数を設けてXORでトグル動作させている。
sdata ^= prevSwitch;
PINxの処理

prevSwitchと現在の入力状態(PIND)を比較するときに、一旦テンポラリ変数にPINDの状態を代入している。

これは
if (prevSwitch == ~PIND)
という書き方では比較がちゃんと動作しないため。PINxの読み取りにはウエイトをかけないとダメなせいかな?わかんねー(^q^;

チャタリングの持続時間

デバッグ用にPin Change Interruptがかかった時に黄色のLEDが点滅するようにしているので、ある程度チャタリングの発生状況が視認できるようにしている。

黄色のLEDが不安定な感じのときにも赤色LEDはそこそこトグル動作をしているが1msだと短すぎるかもしれない。

トグル動作がおかしいとイライラするので、1msよりもう少し長い時間にした方がいいかも。

起動時のLEDチェック

起動時にLEDの接続がうまくいっているか確認するためにちょっとした処理を入れてみた。
// LED Check PORTB = 0xFF;
PORTC = (1 << PC0);
for (int i = 0; i < 8; i++) {
PORTB &= ~(1 << i);
_delay_ms(100);
}
PORTC = 0x00;
LED全点灯から一つづつ消灯していくという処理。

ブレッドボードでの実験では素子数が多くなると不具合の原因がよくわからなくなりがちなのでなかなか便利です(^q^/

AVRのI2Cを割り込みで使う

AVRをI2Cのスレーブとして使って、割り込みで処理するテストをしてみた。

ブレッドボードの配線は、「AVRをI2Cスレーブとして使う スレーブからのデータ送信」と同じだが、今回はATMega328PではなくてATMega88Vを使っている。


AVRのI2Cのライブラリはいくつか公開されているようだが、テストなのでベタ書きでやってみた。

Atmel StudioのプロジェクトはGithubで公開しました。
https://github.com/ryood/Arduino_master_AVR_sleve/tree/master/Atmel%20Studio/I2C_Slave_Sender_Interrupt

<一部抜粋>
 #define      F_CPU 8000000UL // 8MHz  
 #include      <avr/io.h>  
 #include     <avr/interrupt.h>  
 #include     <util/delay.h>  
 //TWI状態値  
 #define SR_SLA_ACK 0xA8          //SLA_R 受信チェック  
 #define     SR_DATA_ACK     0xC0          //送信パケットチェック  
 #define     SR_ENDP_ACK     0xA0          //終了orリピートチェック  
 volatile uint8_t sdata;  
 void twi_error(){  
      PORTB = 0x02;  
      while(1);  
 }  
 void twi_init(){  
      // 8MHz clk, bit rate 100kHz  
      TWBR = 2;  
      TWSR = 0x02;  
      //slave address  
      TWAR=0xfe;  
      // 割り込みを許可  
      TWCR = ((1<<TWEN) | (1<<TWEA) | (1<<TWIE) | (1<<TWINT));     // Enable TWI port, ACK, IRQ and clear interrupt flag  
 }  

スレーブなのでI2Cのクロック設定は必要なのかどうなのかよくわからないが、I2Cのクロック(F_SCL)は
F_SCL = F_CPU/(16 + 2*TWBR*Prescaler)
とTWBRレジスタとTWSRレジスタのプリスケーラで設定。I2Cのクロックはスタンダードで100kHzなので、AVRを1MHz駆動すると
TWBR*Prescaler = (F_CPU / 2*F_SCL) - 8 = (1MHz / 2*100kHz) - 8 = -3
となってしまって設定できない。AtmelのI2Cのドキュメント「AVR311: Using the TWI module as I2C slave」(doc2565.pdf)の4Pを見ても、SCLを100kHzにするならCPUクロックは1.6MHz以上にしなさい、みたいなことが書いてある。

なのでFuse Bitを書き換えて内蔵RCの8MHz駆動にしてSCLを100kHzに設定した。
Fuse Bit: lFuse:0xE2 hFuse:0xDF eFuse:0x01
I2C割り込みの有効化はTWCRのBITで
TWCR = ((1<<TWEN) | (1<<TWEA) | (1<<TWIE) | (1<<TWINT));     // Enable TWI port, ACK, IRQ and clear interrupt flag  
TWEN、TWEA、TWIE,TWINTに1をセットすると割り込みが有効化されるようだ。

ほんと全然良くわかっていない(^q^;

 ISR (TWI_vect)  
 {  
      // 割り込みごとにLEDを点滅  
      PORTB ^= 0x02;  
      switch (TWSR & 0xF8) {  
      case SR_SLA_ACK:  
           TWDR = sdata;  
           break;  
      case SR_DATA_ACK:  
           break;  
      default:  
           twi_error();  
      }  
      TWCR |= (1<<TWINT);     // Clear TWI interrupt flag  
 }  

割り込みルーチンはかなりシンプル。TWSRレジスタの状態値はいろいろあるが、最低限っぽいこれ動いた。
TWCR |= (1<<TWINT); // Clear TWI interrupt flag
TWINTは割り込み時の処理がひと通り終わったあとに1をセットするらしい。1をセットしてクリアしないと(ややこしい(^q^;)割り込みが続かない。

冒頭の
// 割り込みごとにLEDを点滅
PORTB ^= 0x02;
は割り込みがかかっているかどうかをLEDの点滅で確認するためのデバッグ用の処理だ。

マスター側のArduinoのスケッチは、「AVRをI2Cスレーブとして使う スレーブからのデータ送信」と同じものです。

https://github.com/ryood/Arduino_master_AVR_sleve/tree/master/Arduino/master_reader

動いたからいいもののAVRのI2Cを把握するのはなかなか大変だ.。しんどい話やで(^q^;;;

2015年8月26日水曜日

シーケンス入力用のデバイス 基板設計とブレッドボードで実験

もう少し考えてみた。

回路図

基板図

部品を並べた

POTを2個追加した。

外部との通信はI2CなのでI2CのLCDを載せることも考えてみたが、ユニバーサル基板では配線がきつそうなのでPOTを2個追加することにした。

ADCの入力に使えるPORTCの空きピン数を増やすために、タクトスイッチの入力用のPINをPORTB、PORTDにまたがって使うことにした。

プログラミングがちょっと煩雑になりそうだが(^q^;

POTの用途はまだちゃんと考えていないがLevelやDecayの調整に使えないかと思っている。

基板図の黄色い配線は基板の表面で配線しようかな?

ツマミを乗せた

いつも使ってるつまみをつけてみたが、なんか大げさな感じがするのでもっと安っぽいやつを仕入れる予定。

Sequencer_IC接続表

接続状態が混乱しそうなので、一応表にまとめてみた。

ATMega88Vの空きピンはPC3の一本だけになってしまった。

PINを大量消費したが、外部との接続には最低I2CのSCL、SDAとGNDの3本で済む。AVRの起動時の挙動(Fuse Bitで指定するらしい)をうまくすれば、RESETは省略できるかも知れない。


ブレッドボードで実験

ArduinoとのI2Cの通信と、LED制御用のシフトレジスタ(74HC595)だけ実験してみた。

なんか色々問題がありそうなのでもう少し実験続行予定。

I2C通信は割り込みで処理するべき?


ファームウェアのソース
https://github.com/ryood/RhythmMachine/blob/master/Atmel%20Stduio/Sequencer_I2C_Slave/Sequencer_I2C_Slave/Sequencer_I2C_Slave.c

前回テストしたI2C Sleveのコードをそのままコピペで使ったが、I2Cの処理でマスターからの送信要求をwhileループでWaitしている
// Wait for TWINT Flag set.
while( !( TWCR & (1<<TWINT) ) );
マスターからの要求が無い限りこのループからは抜け出さない。なので、待ち状態の間はメインループでポーリングで読み取っているタクトスイッチの押し下げを検知できない。

I2C通信を割り込みで処理するか、スイッチ押し下げをTimer割り込みで検知するかしないとダメっぽい。

納期はないので(^q^;両方割り込みで処理できるように実験してみようかな?

ATMegaならFreeRTOSも使えるみたいだが、まずは割り込みで処理することを目標に
→ロータリーエンコーダーとPOTのADCもあるので悩ましい(^q^;

I2C通信の送出

どこまでこの基板上で処理するかも悩ましい。

単なる入力デバイスとして考えると
スイッチの状態[1..8](8bit)|スイッチの状態[9..16](8bit)|POT1のADC値(8bit)|POT2のADC値(8bit)|ロータリーエンコーダーの状態(8bit)
ぐらいかな?ロータリーエンコーダーによるトラックの切り替えは本体で処理しようか?悩ましい(^q^;;;

メモ:
  • スイッチのトグル動作はできたがチャタリング対策はまだ
  • タクトスイッチはTR-808みたいに4個ずつ(1小節ごと)で色分けしたほうが使いやすそう
  • シーケンスの[1..8]、[9..16]切り替え表示用のLEDは縦に並べたほうが良さそう
  • GND、VCCにテスト・ピンを追加
  • パスコンに10uFぐらいのケミコンを追加

2015年8月24日月曜日

ロジックICでクロックノイズを低減する

自作の「矩形波だけのファンクションジェネレーター」は意外と使い出があってもう少し改良しようと思っている。

Digital出力をそのまま使うことがほとんどで、OPAMPを使った出力バッファを通すと波形がなまりまくるのでこちらはあまり使っていない。
→Digital出力と便宜上書いてますが、Digital信号ではなくてアナログ回路を通さずにAVRのPWM出力そのままという意味です。

Digital出力の問題は

  • AVRのクロックノイズが載っていて気分が悪い
  • 5Vp-pなのでそのまま測定対象につっこむには躊躇してしまう

クロックノイズの除去にOPAMPを使ったLPF、BPFを試してみたが、矩形波の直角な感じの波形が大事なのにこれが鈍ってしまってなかなか使いづらくなった。

ロジックICならもともと「あり」か「なし」かの世界なので、これでクロックノイズを除去できないかと思って実験してみた


使ったICは74HC125という3-State Bufferだ。
→ほんとはインバーターの74HC04とか素のバッファICを使いたかったが手持ちがなかった



*Aの入力をそのまま強くして*Yから出力するという回路で、OE(アウトプット・イネーブル)がLのときバッファが働き、OEがHのときは出力の*Yがハイ・インピーダンスになって出力が切り離されるという回路だ。


ブレットボード図

74HC125には3-Stateバッファが4回路入っているので1個だけ使って、残りの3回路はOE、*A(入力)をVCCにつないだ。

電源には自作の5V/3.3V安定化電源の3.3V出力を使った。

電源電圧をテスターで測ると3.36Vだった。


「矩形波だけのファンクションジェネレーター」のDigital出力から5Vp-pの矩形波を出力してオシロで見てみた。

1kHz、Duty比50%

赤色が入力、黄色が出力

ノイズは低減されてそうだ!

立ち上がり拡大

立ち上がり波形ではオーバーシュートは抑制されているようだが、逆に若干振動が出ているようだ。

立ち下がり拡大

立ち下がりは良好


結論としては、ロジックICで矩形波のクロックノイズは低減できてOPAMPとは違って波形の崩れもほとんどない。

今回は3-State Bufferを使ったが、NOT回路とか単なるバッファとかも仕入れて実験してみたいと思う。DATASHEETに載ってるスペックじゃわからないですし。


ここでノイズを低減できてある程度駆動力が稼げれば出力レベルの調整は最終段にPOT1発でいいような気もする。

VGND/GNDの切り替えはMOS-FETのスイッチをやめて物理的なスイッチすればいいかな。

ファームウェアも改良したいし

う~ん(^q^;

2015年8月23日日曜日

サイン波とノイズでスネアの音ができるかどうかの検証

Ableton Liveでやってみた

スネアの基本波形のサイン波はOperatorで作った。ノイズはOperatorで作る方法がわからなかったのでAnalogで生成


スネアだけだと寂しいのでサイン波のキックも入れてみた

Decayをうまくすればサイン波とノイズでスネアっぽい音は作れそうだ

2015年8月22日土曜日

シフトレジスタ(74HC595)をAVR(ATMega88V)で使う

LEDの制御をするために74HC595のテストをしてみた。

「chibiegg研究ノート」さんの記事(http://www.chibiegg.net/elec/avr-elec/74hc595_sample.htm)を参考にしました。

ブレッドボード図
↑表記はatmega168になっていますが、実際はATMega88V(http://akizukidenshi.com/catalog/g/gI-03655/)を使用しました。

「chibiegg研究ノート」さんの記事では、ATiny2313を使用されていますが、リズムマシンのシーケンス入力制御用にはATMega88Vを使用する予定なのでPIN配置を変更した。

AVRのソースはほとんどそのままだが、ATMega88VのPIN配置に合わせて
#define SHIFT_PORT PORTB
#define SHIFT_DATA PB1
#define SHIFT_SCK PB2
#define SHIFT_RCK PB3
に変更。DDRも合わせて変更した。
//DDRB = 0b00000111;  //入出力設定
DDRB = 0b00001110;
ATMega88VのFuse Bitはデフォルトのまま
hFuse: 0Fh
lFuse: 62h
eFuse: 01h
基本的には内蔵RCクロック1MHzの動作の設定です。

eFuseの値はavrdudeの読み取り値でこういう値でした。
→ATMega328PではデフォルトでeFuse:0Fhとかだったような気がしますがよく覚えていない(^q^;


動作状態

3.3V駆動で問題なく動作したので、たいしたことない動画だが、youtubeにあげてみた。


動画撮影にはこの間川崎のキャンドゥ(セリアだったかな?)でゴリラポッドみたいな三脚を買ったので使ってみた。


安っすかったけどちゃんと使えたです(^q^/)

SPI

「chibiegg研究ノート」さんのところでAVRのSPIを使う方法も紹介されていたのでやってたが、こちらも動作OK。

SPIのメリットとしてはコードサイズを節約出来て動作が早くなるようだが、AVRのSPI用のPIN(SCK, MISO, MOSI, SSにアサインされているPB2..PB5)が予約されてしまうようで今回の用途では少し使いづらい。(MISOとSSは使わないので)

GPIOを使ったほうがある程度PIN配置の自由が効きそうなのでGPIOを使う方向で考えたいと思う。

ソースコードも多少改変したのでGithubにあげました。
https://github.com/ryood/74HC595_Test

2015年8月21日金曜日

シーケンス入力用のデバイスの構想

コミケに行って何作ってるんだか忘れかけてたが、そうそうリズムマシンを作っている途中だった。

シュミット・インバーターでチャタリング防止するのは実装がしんどすぎそうなのであきらめて、ATMega88Vをコントローラーとして使ってプログラムでチャタリング対策する方向で考えることにした。

回路図

機能的にはスイッチを並べてI2Cに変換すればいいだけの話だが

オムロンのこのスイッチが使いたくてしょうがない


ですので、なんとかスイッチの押し下げとLEDの点灯を連動させたいので、シフト・レジスタの74HC595を使ってAVRのピン数を節約する方向で考えることにした。

基板図(途中)

電源系とタクトスイッチを優先して錫メッキ線を使うことにして配線してみた。

いつも使ってるC基板の倍サイズのB基板で考えてみました。LEDへの信号線はジュンフロン線かポリウレタン製みたいな被覆のあるケーブルで配線する予定。基板の上半分は考え途中です。


部品並べた

基板の下側のタクトスイッチは左から8個をシーケンス入力用、右の1個でシーケンスの1..8、9..16に切り替える用途に使うつもり。

LEDは左8個をシーケンスのON/OFFを表示、右端の青(透明)と赤の2個は1..8、9..16の切り替えの表示用のつもりです。

真ん中左あたりのロータリー・エンコーダーはたぶんトラック切り替え用に使って、軸の押し下げもスイッチとして働くので一応使えるようにしておいた。


シフト・レジスタの使い方の実験をまだしていないので、ATMega88Vのテストも兼ねてやるつもりです。

メモ:

  • AVRではなくてPSoCを使えばデジタル・ブロックでシュミット・インバーターを実装できそうだが、DIP28PのPSoC1でも値段が高過ぎる→実験だけでもしてみるか
  • タクトスイッチではなく、POTとかロータリー・エンコーダーを並べればVelocity(音の大きさ)やDecay(音の長さ)を設定できるかも知れない。実装の手間もコストもかかるけど、ロータリー・エンコーダーの周りをぐるっとLEDで囲ってやればNordっぽいUIが・・・妄想全開(^q^;
  • わりと気楽に考えてたけど、昔あったマイコン・キットのTK-80の弱い(一部強い)バージョンを作ろうとしているのかもしれない。LEDを8セグメントのLEDに置き換えて考えてみるとぞっとします(^q^;;;

2015年8月20日木曜日

アキバのパーツ屋さん巡り その2

aitendo


初めて行ってきました。店員さんが全員中華系(?)のお姉ちゃんで驚きました(^q^;

店員に技術的な質問をしても無駄という無言のアピールなのか?レジも商品に貼ってあるバーコードを読み取らずに金額を直打ち。謎だな~

SPIのグラフィックLCD 2種


ぴゅんぴゅん4号はグラフィック液晶を使おうと思っているのでテスト用に購入。どちらもコントローラーは同じようです。手持ちのNOKIAのでもいいけど、まあ調査用ということで


HD44780互換とおぼしきLCD

ブレッドボードでの実験ではピンが横一列の方が使い良いので購入。安いな~

SOP->DIP変換基板

SOP、SSOPと0.5mmピッチどれでも使えそうな変換基板。こんなにオープン状態の端子があると電気的にどうなのかわからないですが、とりあえず使うには便利そうです。

4×4のキーパッド

AKAIのMPC的な打ち込みに使えるかな?TR-808的な入力デバイスの作成後に試してみる予定


千石

不戦敗。

去年買ったBBD(アナログ・エコー)用のIC、BL3208用のクロックIC、BL3102を探しましたが、千石では取り扱いが無いそうです。マイコンとか他のICで代用するしかないかな。


あきばお~零号店

ボリュームアンプ

tozさんが使われているアンプです。いろいろ改造しがいがありそうなやつ。
一部の100均でも売ってるみたいですが、あきばお~では若干高くて税込@130円です。どっちにしろ安い


とんかつが食いたくなって丸五に行きましたが残念ながら連休でした。頭がとんかつモードに入ってたので富貴でロースかつ定食(1,000円)を食しました。ここの店員の人おもしろいね~。しゃべりっぱなしだし。

animate前には女のおまえらが並んでたけど何かイベントがあったんだろうか?

2015年8月19日水曜日

アキバのパーツ屋さん巡り


通販の送料(500円程度)を節約するためにアキバのパーツ屋さんを巡ってきました

言うても途中でタバコを吸うためドトールとかKFCで休憩したので確実に赤字ですが(^q^;;;;


秋月


生き地獄でした(^q^; 店舗改装された直後だったようです。

月曜日は土砂降りだったので欲しい部品の在処の目星をつけて退散。
火曜日に本腰を入れました。

AD822ARZ(@300円)

素性はよくわからないですがDIPしばりをやめたので買ってみました

Rail to Railが売りなのかどうなのか


SMDプロト基板(@100円)

0.2mm厚のSMD用の基板です。ハサミでカットできるそうなので、普通の2.54mmピッチのユニバーサル基板に載せて試作に使えないかと思って購入。


PSoC 4 Prototyping kit(@600円)

もう少し使い倒したいと思って購入。これでトータルで3枚買いましたが合計価格はまだPionner Kitを超えていないのです。なんかうまいこと使えないかな


EEPROM AT24C1024(@270円)


AVRでもPSoCでもいろいろ波形を載せようと思うとFlashメモリーが不足しがちなので、外付けメモリーの実験もしたいと思って購入


ATMega88(@150円)

10MHzまででいいならこれが一番コスパが高い気がします。(妄想)


LME49600(@550円)

長らく在庫無しでしたが再入荷されたようです。店舗限定かと思ったら通販でもOKのようです。

高いけど1回路なので4個購入しました。

どうやってブレッドボードに挿せるようにするか妄想中。


IRLB3034(@250円)

よくわからないですがコミケでやばいと聞いたの急きょ購入しました

どんだけやばいのか楽しみです(^q^/)


見つからない部品をおじさんの店員さん(めっちゃ愛想いい)にお願いして探してもらいましが、在庫の管理がまだうまく行っていないみたいです。
イライラマックスの怒号の飛び交う中で思ったことは

あとしばらくは、よっぽど急ぎでない限りは通販の方がよさそうです


マルツ本店


日に焼けたCQ出版のバックナンバーをたくさん売ってました。税込みで1冊300円でした。

300円ならまあまあいいかなと思って購入


aitendoにも行きましたがまた次回・・・