2016年12月30日金曜日

ベースマシン I/Oエクスパンダ―基板


下側のスイッチx8はパターン切替用。aitendoで購入。キートップはついていなかったが、艶消しの基板でなかなかかっちょいい。

上側のスイッチ類はパターンのロードセーブ、コピー&ペースト用。

真ん中はI/Oエクスパンダ―のMCP23S17とEEPROMのAT24C1024。

回路図



基板図(配線まだ)


基板は真ん中に電源ラインがあらかじめ配線されているユニバーサル基板を使ってみるつもり。

ずいぶん前に買ったはいいものの使いどころが難しい。

スイッチ類回路図


スイッチ類基板図(配線まだ)

2016年12月29日木曜日

ベースマシン 5V/3.3V/2.5V電源をつないでみる。

ベースマシンのシンセパネルに5V/3.3V/2.5V電源基板を載せてみた。



NJM13600 DCA | VCVS DCF | PSoC 4 DCO
電源          | SPI Bus Buffer

NJM13600 DCA
±9V、内部で3.3Vを作ってMCP4922に供給

VCVS DCF
+5V、内部で±2.5Vの仮想GNDを作ってフルスイングOPAMP(NJM2732)に供給

PSoC 4 DCO
+3.3V

SPI Bus Buffer
+3.3V

UI Panel

Nucleo F401REを使ったUIパネルには+9Vを送って、Nucleoのオンボードのレギュレータを使って必要な電圧を供給。

それぞれのユニットと機能がかぶっているが、将来的にユニットを取りかえるときに楽をするため。

全体をつないで今のところ動作している(^q^/

2016年12月27日火曜日

5V/3.3V/2.5V電源 はんだ付け完了



回路図


基板図


ハンダ面


ハンダ面でジャンパーを這わすのではなくて、部品面でジャンパーを配線するようにした。ブレッドボードのジャンパー線のように単線の被覆つきの線材を加工した。

ハンダ忘れが2箇所あったがなんとか直して、無負荷の状態だと所定の動作はするようになったと思う。

電源なので直流回路だが、つなぎ先は、デジタル信号が飛び交っているのでどうなるのか(^q^;;;


2016年12月26日月曜日

5V/3.3V/±2.5V電源 基板設計

それぞれの出力に100Ωの負荷をかけて計測したが、±0.02V以下の変動だった。ラジエーターを付けていない7805の表面温度を測定してみて10分経過で23℃程度から31℃程度への上昇だった。

50Ωの負荷をかけると電池の減りが早すぎて、新品の単3×6で計測開始したのに、すぐに6.66Vに低下してしまった。三端子レギュレータは入力電圧と出力電圧は2V程度見ないと行けないので50Ω負荷の実験は中止した。

単3×6の電池電源だと、放熱より前に電池の減りの方がネックになってきそうだ。

100Ω負荷           

項目 0分経過 5分経過 10分経過
+9V 8.29 7.98 7.83
-9V -8.20 -8.06 -8.00
+5V 5.06 5.06 5.04
+3.3V 3.31 3.31 3.31
+2.5V 2.51 2.54 2.52
7805温度(℃) 23.17 30.90 31.11

47Ω負荷       

項目 0分経過 5分経過
+9V 7.15 6.66
-9V -7.59 -7.45
+5V 4.96 4.95
+3.3V 3.29 3.29
+2.5V 2.41 2.40
7805温度(℃) 24.25 33.09

47Ω負荷では抵抗分圧+ボルテージフォロワーの値が少々低下している。

回路図


基板図


部品並べ

メモ:

高出力OPAMPでは、AD8532が250mA流せる。NJM4556は73mA。

2016年12月22日木曜日

5V/3.3V/±2.5V電源 ブレッドボードで実験

±9Vを安定化しないで使うことにした。7905を使うと負電源の電位がふらつくので(力量が足りなくてちゃんと扱えない)いっそのこと電池の電位をそのままという方針。

今のところベースマシンで必要な電位で考えると、
  • 両電源で使うOPAMPやOTA ±9V(安定化なし)
  • Digital PotとフルスイングOPAMP +5V/±2.5V
  • デジタル系 +3.3V
回路図


負電源の三端子レギュレータの回路は除去して、おおもとの±9Vの電池電源を安定化なしで両電源として使うことにした。両電源で使うデバイスは上限±18Vとか±15Vとかそういうのが多くて、性能を追求しない限りは、正負の電源電圧が多少ずれていても問題ない。←GNDがふらつくほうが問題

+5Vと+3.3Vで使うデバイスは電源電圧の最大値が決まっているので安定化する。

GND~5Vを分圧してOPAMPでインピーダンスをさげて±2.5Vの仮想GNDとして使えるようにする。実験には高出力のNJM4556を使った。

ブレッドボード配線図




無負荷の状態で、

電源 : -8.72V +7.70V
5V  : +5.06V
3.3V: +3.31V
2.5V: +2.51V

メモ:


5V、3.3Vの電源は実用していて特に不満もないし(参考「5V/3.3V安定化電源 」「5V/3.3V安定化電源 Ver.2」)、±2.5Vの仮想GNDもVCVS DCF(参考「VCVS DCF シールドでけた」)で使っているので、大きな破綻はないはず。

負荷をかけてもう少し実験する予定。

2016年12月20日火曜日

±5V/+3.3V電源 ブレッドボードで実験 負電源三端子レギュレータは性能が出ない?

7905の出力電圧が低下した原因は、温度測定のためにカプトンテープでぐるぐる巻にしたのが原因だったようだ。熱がこもって性能がでなかった可能性がある。負電源の三端子レギュレータ(79xx)は正電源用(78xx)に比べて、温度に敏感なのかも?粘着力が強くてビタッと貼れるカプトンテープはどれがいいのか。(本物は高くて買えないけど)

ルネサスの「三端子レギュレータの使い方」というドキュメント新日本無線の「三端子レギュレータについて」というドキュメントを参考にした。

回路図


電池電源に限定すると電圧変動はほとんどなさそうなので、三端子レギュレータの入力側に入れていた電解コンデンサを取り除いた。

両電源のラッチダウン防止用のD5、D6をショットキーバリアダイオードに変更、OUTからINの逆電圧をバイパスするD3、D4を整流用ダイオードに変更した。

負電源の入力側に入れているC4の値を0.33uFから0.47uFのフィルムコンデンサに変更。新日本無線のドキュメントに


という図があって、理由がわからないが負電源側の値が2.2uFになっている。手持ちの2.2uFのフィルムコンデンサはサイズが大きすぎるので、0.47uFにしておいた。1.0uFの積セラに差し替えても違いはないようだが。

ブレッドボード配線図


7905にだけ放熱器をつけたり、はずしたりしてようすを見てみた。シリコングリスとうは塗っていない。負荷は100Ωの抵抗の場合と、100Ωを並列にした50Ωの場合を比較。

放熱器なし 無負荷 


項目 出力電圧(V)
7905 -5.02


放熱器なし 100Ω           


項目 出力電圧(V) 開始時 出力電圧(V) 5分経過 出力電圧(V)10分経過
7905 -4.95 -4.94 -4.95

放熱器あり 100Ω           


項目 出力電圧(V) 開始時 出力電圧(V) 5分経過 出力電圧(V)10分経過
7905 -5 -5.03 -5.02

放熱器なし 50Ω           


項目 出力電圧(V) 開始時 出力電圧(V) 5分経過 出力電圧(V)10分経過
7905 -4.82 -4.74 -4.84

放熱器あり 50Ω           

項目 出力電圧(V) 開始時 出力電圧(V) 5分経過 出力電圧(V)10分経過
7905 -5 -4.78 -4.78

無負荷のときは-5.02V出ているが、負荷が重くなると出力電圧が低下する。放熱器をつけると若干結果が良くなるようだ。同時に7805と3.3V LDOも計測したが、こちらは放熱器なしの状態で、それぞれ5.08V±0.01V、3.31V±0.01Vと安定している。

まだどこか間違えている可能性もあるが、負電源用の三端子レギュレータは特性があまり良くないのかも。

正電源用三端子レギュレータだけで両電源


ルネサスのドキュメントに載っていた回路図

おおもとの電源を2系統に分ければ、やはり正電源用だけでも両電源として使えるようだ。単3電池×6の9Vを2系統をおおもとの電源とする予定なので、正電源用三端子レギュレータだけでも両電源を構成できる。

正電源用の三端子レギュレータだけを使うと、9V×2を安定化せずにそのまま両電源として使うことができない。9V×2をそのまま両電源として使うと正側の-と負側の+をつないでGNDとするので、回路図の負電源側の三端子レギュレータのINとOUT(出力のGND)が短絡してしまっておかしなことになる。

う~ん(@@;

自分が書いたコードでも思い出すのは苦労する

去年の冬コミに出したリズムマシンのプログラムが意外と複雑で、1年前の自分が何をやっていたのか思い出すのに苦労している。

現物は動くし、もう一回buildして書き込んだら 動作したのでなんとかなりそうな気もする。

やりたいことは、

1) リズムマシンのキック音をPSoC内部のDDSで作った波形ではなくて、アナログ回路から出音できるようにしてみたい。

2) リズムマシンとベースマシンのSync


1)のキック音の外出しはSPI経由のDAC+OTAやデジタル・ポットでなんとかできないかと妄想。

2)のSyncはリズムマシンから割り込み線を用意して、ベースマシンに割り込みをかけてなんとかならないかあなどと妄想。



2016年12月19日月曜日

±5V/+3.3V電源 ブレッドボードで実験 負電源三端子レギュレータを使ってみる。

ベースマシン用の電源。Nucleoにも+5V、+3.3Vの電源がついているが、Nucleoの外部にいろいろつなげるので、強めの電源を考える。

回路図


おおもとの電源は単3×6の9Vの電池ボックスを2個。7805と7905で正負5Vに安定化する。+5Vを元に、3.3Vのロードロップ・レギュレータで3.3Vに安定化する。ポリスイッチやダイオードは逆接続、過電流に対する保護用で、過剰ぎみかもしれない。

ブレッドボード配線図





使用した三端子レギュレータは、JRC 7805A(7805)、TA79005S(7905)、TA48033S(3V3 LDO)

無負荷時とそれぞれ100Ωの負荷抵抗をつないで出力電圧を測定した。

無負荷時   
電源電圧 +8.73V -8.80V


デバイス 出力電圧(V) 電流(計算値)(mA)
7805 5.09 -
7905 -5.01 -
3V3LDO 3.32 -


100Ω負荷時       
電源電圧 +8.62V -8.73       


デバイス 出力電圧(V) 電流(計算値)(mA)
7805 5.11 51.1
7905 -4.7 -47
3V3LDO 3.35 33.5

100Ω負荷時(10分後)   
電源電圧 +8.62V -8.73   


デバイス 出力電圧(V) 電流(計算値)(mA)
7805 5.11 51.1
7905 -4.7 -47
3V3LDO 3.34 33.4

無負荷時には-5Vも-5.01V出力できているが、100Ωの負荷をかけると-4.7Vにまで低下してしまった。

この間、温度計を作ったので、7905の表面温度を測定してみた。カプトンテープの粘着力が弱いのでサーミスタの頭をぐるぐる巻にして固定した。



ログを見ると、スイッチON時26.6℃ スイッチOFF時(約10分後)32.0℃でひどく発熱しているという風でもない。

無負荷時は-5.01V出ているので、回路が大きく間違ってるとも思えない。7905ってこんなもんなんだろうか。

きっちり確認したわけではないが、ダイオードがいらんことしていることも考えられるのではずしてみてもかわらない。負電源側単体でも同様。オシロでACカップリングして出力を見てみたがそれほどおかしい感じでもなかった。

もう少し調べて見るか。

メモ:


自作の5V/3.3Vの安定化電源5V/3.3Vの安定化電源Ver.2 を2個使いして正負両電源として使えている。Ver.1は7805、Ver.2は5V LDOのNJM2396を使っている。

負電源用の7905がある理由って何?2系統の電池電源なら不要で、トランスのセンタータップからGNDを出した場合とうに必要になるのか(@@?

2016年12月14日水曜日

PT2399エコーを金属ケースに収めた


製作中のベースマシンにつなげて音出ししてみたが、エフェクタを1個の筐体に収めるといろいろ遊んでみる元気も出る(^q^/

ケース加工図


タカチのYS-1STS-1Sでも収まりそうだったが、300円ぐらいしか値段が違わないので余裕をもって一回り大きいYS-1TS-1にした。もしかしたら、エフェクトのOn/Off(パススルー)用のフットスイッチ的なものをつけたくなるかもしれないので、パイロットランプのLEDの位置をずらしてスペースは開けておいた。

ケース内配線


配線(のトポロジー?)はプラケースの時と同じ。ACアダプタとうを使うことも考えてDCジャックをつけてみたが、当分使いそうもないし、電源周りの線材をはんだ付けしなおすのが手間だったので場所取りだけにした。

基板は両面テープでPOTの裏面に張り付けている。

背面


RCAジャックは、以前買ったゆるみ止め剤のロックタイト243を使って固定している。これ使わないといくら締め付けてもゆるゆるになってしまう。



以前使ったのは「RCAジャックのゆるみ止め」の記事を書いたとき(2015年2月28日)なので2年ぶりに使ってみたが、劣化はしていない感じだ。

ケース内配線は、「サウンド・クリエーターのためのエフェクタ製作講座」を参考にさせていただいている。


手はんだでも、知恵と勇気で実用できるレベルに仕上げるノウハウが詰まったとても良い本だと思います。

タカチの傾斜ケースは底面につけるゴム足がついていて、サイズが合えばなかなかコスパはいいかもしれない。

ロギング可能な温度計 でけた

回路図


基板図


VBUSとGNDのテスト・ポイントを追加。

部品面



PSoC 4 Prototyping KitとChar LCDを取り外した状態


ジュンフロン線でジャンパを配線してみた。

PSoC 4 Prototyping KitのUSB-Serial Bridgeの基板が裏返っているのは設計ミス。裏返したらつじつまがあったので苦肉の策(^q^; Eableで自分でDeviceを作って利用したがDeviceのConnectでミスってたようだ。Eagleで部品を作るのはだいぶ慣れてきたが、あんまり使いやすいとは思えない(--;

ピンソケットに刺しているRは、サーミスタの抵抗値を算出するための基準とするもので差し替えられるようにしておいた。

はんだ面



部品面でジャンパを這わせたのではんだ面はスッキリした。

Github: (ギフハブじゃないよ)
https://github.com/ryood/PSoC_4_Thermistor

自作のEagleのパーツ
https://github.com/ryood/EAGLE_Library
↑mylib2.lbrを使用

メモ:


Eagleで部品面でジャンパを配線する方法がわかったので(参考:「Eagleでユニバーサル基板の部品面でジャンパー配線を作図する (メモ)」)実践してみた。配線の手間ははんだ面でポリウレタン線を使って配線した場合と大差ない感じだが、部品面の見た目はあまりよくないな~。ショートしたり抜けたりする事故が減ることを期待している。

あまり考えていなかったが、この基板上でBootloader Hostを使って、そのままPSoC 4 Prototyping Kitにプログラミングできる。PSoC 4 Prototyping Kit上のタクトスイッチを押しながら、基板上の電源スイッチをOn/Offすればプログラミング・モードに入る。ということは、PSoC 4 Prototyping Kitのプログラマーとしても使える(^q^/

サーミスタはカプトンテープを使って測定対象に貼りつけようと思っているが、aitendoで買った5mm幅のカプトンテープの粘着力が弱くてすぐはがれてしまう。全然消費していないのでもったいないが、違う製品も試してみるべきか。

2016年12月12日月曜日

冬コミ(C-91)&ライブ配信予告

今回も諸事情により参加できませんが、tozさんが参加されるそうなのでARM & mbed関係の記事を書いています。何かしら本を出してもらう予定です。



土曜日 西地区 ”や”ブロック-02b

電磁工廠

当日は行けない代わりに、Ustreamとうで自宅から配信してみるつもりです。

ESP-WROOM-02を秋月のFT232RL USBシリアル変換モジュールで使ってみる。


師匠のtozさんにESP-WROOM-02本体をもらっていたが、端子ピッチが1.5mmとなんとも中途半端でなかなか実験できないでいた。あきらめてaitendoで変換基板 [IFB1518J-A]を買って使ってみた。

秋月の変換基板の方が安いが、なんか変な形だし、aitendoの通販無料会員になっているのでaitendoの方にした。

表面実装だが1.5mmピッチだし楽勝と思っていたが、モジュールの裏面にはんだが回ってブリッジするので結構難儀した。←はんだ吸い取り線がなかなか効かない。

手はんだでやるなら適量のはんだを基板に盛ってえいやっで引きはんだした方がいいかも。



配線図




でかいブレッドボードを使っているのは理由があって、幅が広くて普通にブレッドボードに載せると配線するスペースがなくなってしまう。秋月の変換基板は変な形しているが、ピンが出ている部分の幅が狭いので普通のブレッドボードでも配線しやすいんだと思う(^q^;

ESP-WROOM-02のIO0(Pin8、ブレッドボード図の青色のケーブル)をGNDにつなぐと書き込みモード、3.3Vにすると実行モードになる。

FT232RLモジュール(AE-UM232R)のジャンパーは

JP1 1-2 ショート
JP2 1-2 ショート

にする。USBから電源を供給し、VIOは3.3Vの設定になる。このジャンパの設定だとUART(TX/RX)の信号レベルも3.3Vになる。JP1を2-3ショートにしてVIOを5Vにすると信号レベルは5Vになる。←やっと確認した。

Arduino IDEの準備


Arduino IDE 1.6.4の「ファイル」-「環境設定」の「Additional Boards Manager URLs:」に「http://arduino.esp8266.com/stable/package_esp8266com_index.json」を入力

「スケッチ」-「inlclude Library」-「Manage Libraries...」で「esp8266」をインストール

「ツール」-「ボード:」で「Generic ESP8266 Module」を選択

「ツール」-「Reset Method:」で「nodemcu」選択←まだ、よくわかっていない(^q^;

「ツール」-「ポート:」でFT232RLモジュールに割り当てられたポートを選択

Arduinoのスケッチ

ESP_WROOM-02_Blink

const int LED = 4;

void setup() {
  pinMode(LED, OUTPUT);
}

void loop() {
  digitalWrite(LED, LOW);
  delay(100);
  digitalWrite(LED, HIGH);
  delay(200);
}


ExampleのESP8266/Blinkでも動作するが、LEDが書き込みで使うUARTのTXDと同じGPIO1なので、別にGPIO4(Arduinoだとint型の4になる)を指定した。

書き込み時には、IO0をGNDに接続して書き込む。書き込み完了後、いったんUSBケーブルを抜いてIO0を3.3Vに接続する。ふたたびUSBケーブルをつなぐとLEDがチカチカする。

Lチカだけでも電波が飛んでるようだ。


メモ:


ESP-WROOM-02はもう少しあっさりした感じだと思っていたが、結構いろいろいじりがいがありそう。


2016年12月9日金曜日

Raspberry Pi 3とNucleo F401REでSPI通信させてみる。

Sparkfunのチュートリアルhttps://learn.sparkfun.com/tutorials/raspberry-pi-spi-and-i2c-tutorialを参考にした。

配線図




3.3V系同士なので信号レベルは気にせず接続できる。

Raspberry Pi 3B(Master)


Raspberry PiのOSはNOOBSで、SPI通信のライブラリにはWiringPiををインストールして使った。

sparkfunの記事にある通り、
>sudo raspi_config
で、SPIを有効化した。

spitest2.cpp

#include <iostream>
#include <errno.h>
#include <wiringPiSPI.h>
#include <unistd.h>

using namespace std;

static const int CHANNEL = 1;

int main()
{
   int fd, result;
   unsigned char buffer[100];

   cout << "Initializing" << endl ;

   fd = wiringPiSPISetup(CHANNEL, 500000);

   cout << "Init result: " << fd << endl;

   unsigned char cnt = 0;
   while (1) {
           buffer[0] = cnt;
           cnt++;
           result = wiringPiSPIDataRW(CHANNEL, buffer, 1);
           cout << "result: " << result << " recieve: " << int(buffer[0]) << endl;
           usleep(10000);       // wait 10ms
   }
}

オシロで信号を捕捉しやすくするために、while(1)の無限ループでSPI通信をさせたが、ラズパイのCPUが発熱してPCとのTCP/IP通信のエラーが発生したのでusleep()を使ってウェイトをかけるようにした。


コンパイル


>g++ spitest2.cpp -lwiringPi -o spitest2


Nucleo F401RE (Slave)


参考「Arduino UnoをSPI Master、Nucleo F401REをSPI Slaveにして通信してみる。

今回はタイミングがシビアではないのでprintfで受信結果を表示するようにした。

main.cpp

#include "mbed.h"

#include "SPISlave.h"


SPISlave SpiS(D11, D12, D13, A2);    // mosi, miso, sclk, ssel


int main()

{

    printf("*** SPI Test: Raspberry Pi 3:Master Nucleo:Slave ***\r\n");

   

    SpiS.format(8, 0);

    SpiS.frequency(500000);

   

    uint8_t cnt = 0;

    SpiS.reply(cnt);

    while (1) {

        if (SpiS.receive()) {

            int v = SpiS.read();

            printf("%d\r\n", v);

            SpiS.reply(cnt++);

        }

    }

}

実行


Raspberry Piで

./spitest2

とコマンドを打って実行すると、ラズパイ用のコンソールと、Nucleoからのシリアル出力用のコンソールから送受信結果が
出力される。



SPI信号波形


MOSI


ch1:MOSI ch2:SCK

MISO


ch1:MISO ch2:SCK

CS


ch1:CS ch2:SCK


MISOとMOSIは1kΩのRでプルダウンしているが、これを入れないとHi-Zになったとき(?)に信号波形が崩れるため。SCKとCSはプルダウンしなくても平気な感じだ。

MOSI(プルダウンなし)


MISO(プルダウンなし)


2016年12月6日火曜日

ロギング可能な温度計 基板設計


ラズパイやLME49600のヘッドホンアンプの実験用に温度測定は必須な感じなので、ユニバーサル基板で配線すること、基板の部品面で配線する方向で基板の配線図を考えてみた。

回路図




基板図


もっと簡単にできるかと思っていたが、HDなんちゃら互換のパラレルLCDの配線はなかなかむずかしい。

2016年12月4日日曜日

ロギング可能な温度計の構想

PSoC 4 Prototyping Kitとサーミスタ(SEMITEC 103AT)とPSoC 4 Prototyping Kitを使って素子の温度を測る温度計を実作するつもりで基板の配線を考えてみた。

参考「PSoC 4 Prototyping Kitでサーミスタを使ってみる。(LCD表示)

回路図




基板図(配線はまだ)


PSoC 4 Prototyping KitにくっついているUSB Serial BridgeのUSBプラグ的なプリントパターンは接触が甘いので使わないことにして、Mini-USBジャックを別途用意して、こちらでPCとのUART通信をさせることにした。

ちょっと困ったのが、PSoC 4 Prototyping KitのUSB Serial Biridge基板の両脇のピンヘッダ/ソケット用のパターンにUSBからの入力信号線が引き出されていないこと。USBジャックに差し込む用のパターンに直に線材をはんだ付けして使うことにした。



ブレッドボードで実験


部品並べ



部品並べ(LCDを外した状態)



パワースイッチはオルタネート・タイプ(押したらずっとON、もう一度押したらずっとOFF)タイプのプッシュスイッチで、強制的にUSBからの給電を接続、切断して再起動する。これはPSoC 4 Prototyping KitのUSB Serial Bridgeを再起動しないとPCのシリアル・コンソールがUSBデバイスとして認識しない場合があるため。