こんにちは、kohtaです。
今回は作業机を作りました。FET_EL氏が机を作っていたのがキッカケです。
去年の四月(2013/04)からつくろうと考えていたのですが、年末に作業をはじめ、いろいろな人に手伝ってもらい、やっと完成しました。(但し作業してない日が圧倒的に多い)
サイズはコンパネのサイズ、1800*900mm
高さは670mm(だった気がする)
材料は2x4材 6ftを9本と、イエローコンパネを1枚つかった。その他ねじ
総額は5000円ぐらいかな~
作業スペースは広いほうがいいですよね!!!!!
部屋は狭くなったが。
そのうち、机の置く棚と、照明もつくろうと思っています。
P.S.
うぇすたらぐメンバーへ:
更新してくれ~~<(。ε゜)>
2013年12月13日金曜日
RIAAイコライザアンプ(フォノアンプ)の製作
こんにちは、kohtaです。今回はEP・LPなどのレコードを聴くためのイコライザアンプを製作しました。製作動機はレコードを聞きたかったから
レコードプレーヤーから出てくる信号はとても小さく(2.5mVぐらい)、逆RIAA特性(※)に従っているので、
フォノアンプ(イコライザアンプ)で一旦増幅&イコライジングしなければなりません。
※レコードは低音を減衰させ、高音を強調して記録されている
詳しく知りたい方は、ググってください。
回路は、増幅素子にオペアンプを使いました。
また、電源はトランスと3端子レギュレータで正負電源を作るというオーソドックスなものにしました。
フォノアンプは2つ作り、第1作目はNF型、第2作目はCR型にしました。2つ作った理由は後述します。
今回も画像オオメです。
☆第1作目

第1作目は、NF型の構成にしました。NF素子の定数はマスカット氏のサイトを参考にしました。
しかし、トランスと回路がとても近かったので、懸念されていたハムノイズが出力に乗ってしまいました。(勿論シャーシはアースされている)
シールドのやり方も適当でした。
オペアンプはNJM4580を使っています。ケースはデジットの訳ありケースです。トランスは銅箔の下にあります。
☆第2作目
ケースはタカチのYM-100を使いました。
ちなみに第1作目にも使っているスイッチのボタンは、デジットで売っていたものです。
瞬間接着剤でスイッチと固定しています。
回路は、前作と全く同じでは面白く無いので、CR型としました。
また、電源電圧を±5Vに下げました。これはトランスが小さいので、電流を稼ぐためです。
細かいところですが、電源インジケータのLEDを、トランス出力直後に置きました。
オペアンプは最初、NJM4580DDを使っていたのですが、
このオペアンプは入力バイアス電流が最大500nAあり、回路中R1,R10により、
オフセット電圧が生じてしましました。
終段で2.7Vものオフセット電圧になってしまったのです。
現在はオペアンプをJFET入力のOPA2134PAに変更し、出力オフセットは80mVぐらいになりました。
(これでも多い方ですが、妥協しますwそのうち出力にカップリングコンデンサを入れようと思います。)
回路設計の甘さを感じました。
第1作目では、2つめのアンプの間にコンデンサが入っていたので大きな問題にはなりませんでした。
左から、電源基板、メイン基板、スイッチ基板
私は最近、コネクタ類を基板に乗せるようにしています。整備性が上がりますw
ケースのアースは右上のスペーサで取っています。
ノイズ対策として、トランスに0.1mmの銅板で腹巻きをさせて、
鉄板で囲ってみました(これについては効果不明。
そしてアンプ回路をちょっとでも遠くになるように配置しました。
その結果、ハムノイズは消えました!!
第1作目との比較
サイズは、高さが少し低くなっていますが、全体としてはあまり変わっていません。
製作費用は両作ともに、3,000円ぐらいです。
☆まとめ
オペアンプは適切な物を選ぼう!
オーディオ機器の制作は楽しい!
レコード最高~~~~~~~~~~~~~~~~~~~~~~~~~~~~(゚∀゚)
☆参考文献
☆今後作りたいもの(電気もの)
・大型時計(2012年10月より停滞している)
・D級アンプ
・ヘッドフォンアンプ
・温度湿度計
2013年11月15日金曜日
初めまして
初めまして。Dr.Ashidakaです。博士取得者ではありません()只の中学生です()
実験室DANGERにも参加させて頂いているド素人です。理科が若干出来るだけで調子に乗っている俗に言う痛い人です。
今はコイルガンを製作しています。また進展がありましたら記事にさせて頂きます。
では。
実験室DANGERにも参加させて頂いているド素人です。理科が若干出来るだけで調子に乗っている俗に言う痛い人です。
今はコイルガンを製作しています。また進展がありましたら記事にさせて頂きます。
では。
ダイソーのUSBツインチャージャーを便利に改造
こんばんは、kohtaです。
100円ショップにはいろいろな物が沢山あって、お店の中をウロウロするだけでも楽しいですよね。
ダイソーに、「USBツインチャージャー」という物が売っていました。
これは、USBの電源を2つに分ける物のようです。ハブ機能はありません。
今回はこいつを改造して便利にしました。
出力の2つのうち、1つはデーター線を直結、
もう1つは出力のD+とD-をショートさせて、Android端末を高速充電(AC充電モード)できるようにしました。
1分で終わる改造ですね。
Android端末はACモードで充電すると1Aを軽く超えたりするので、PCによっては保護がかかるでしょうww
ちなみにこの製品のUSBのロゴは、本当のUSBのロゴと少し異なっています。ライセンスの関係でしょうね。
100円ショップにはいろいろな物が沢山あって、お店の中をウロウロするだけでも楽しいですよね。
ダイソーに、「USBツインチャージャー」という物が売っていました。
これは、USBの電源を2つに分ける物のようです。ハブ機能はありません。
今回はこいつを改造して便利にしました。
出力の2つのうち、1つはデーター線を直結、
もう1つは出力のD+とD-をショートさせて、Android端末を高速充電(AC充電モード)できるようにしました。
1分で終わる改造ですね。
Android端末はACモードで充電すると1Aを軽く超えたりするので、PCによっては保護がかかるでしょうww
ちなみにこの製品のUSBのロゴは、本当のUSBのロゴと少し異なっています。ライセンスの関係でしょうね。
フリスクケースで電圧計
こんばんは、kohtaです。
フリスクのケースに回路を載せる工作を載せた工作は、割と見かける気がします。
経験のある人は多いと思います(?)
ケースを使うためにフリスクを買う人も多いのではないでしょうか。
今回は(と言っても作ったのは今年の7月ごろだが)フリスクのケースを用いて電圧計を制作しました。面倒なのでこれ以降、フリスクのケースをフリスクと呼びます。
このプロジェクトwは、2つの実験的な要素を含んでいます。その要素は次の2つです。

LEDを表面実装するのです。
また、マイコンも同じようにピンを曲げて表面実装型にします。(表面実装パッケージのものも売っていますがあるものだけで作りたいという趣旨があります)

プリント基板は、(不)安定の熱転写方式で自作


まず電源の6~30Vを5Vに降圧します。7セグLEDはマイコンATTiny2313に直結しました。ダイナミック・ドライブします。アノードコモンのLEDを使いましたが、プログラミングを変えればカソードコモンも使えるはずです。
ATTiny2313にはAD変換器が付いていませんが、ATTiny2313にはアナログコンパレータが付いているので100uAの定電流ダイオードとコンデンサを外付しAD変換器を作りました。測定電圧は、ツェナーダイオードで降圧し、分圧したのちAVR ATTiny2313に入力しています。
~プログラムの制作~
AVRのプログラムをCで書きます。
タイマ割り込みでLEDをドライブして、mainで測定の処理をしました。
AD変換の原理について
コンデンサを定電流で充電すると、コンデンサの端子電圧は、直線的に増加します。
式で表すと、
Vc = (i/C) * t
(Vc…コンデンサの電圧、i…電流、C…コンデンサの容量、t…時間)
となります。
そして、ATtiny2313にはアナログコンパレータがついています。
コンパレータとは、2つの電圧の大小を比較するものです。
コンデンサの電圧と測定したい電圧を比較し、コンデンサの電圧が測定電圧より上回るまでの時間を計測すればAD変換の値を得ることができます。

より具体的に表すと、
実際に組んだプログラムです。(汚いのは勘弁w
書き込みは平ピンICソケットを上から被せると便利です。


~まとめ~
フリスクケースでそこそこ見やすい電圧計を作ることができました。
また、定電流ダイオード+コンデンサの組み合わせで作ったAD変換器は、直線性も良く、安定した物ができました。
この基板を少し改造したら電圧計以外にもいろいろ応用ができそうです。ただし電源が別でいるのが厄介ですね。マイコンをSOPなどの表面実装部品に換えたら小さなバッテリーを置くことができそうですが、そうなるとLEDより消費電力の低い液晶のほうが有利になってしまいます。
7セグLEDはそのままでは見にくいので、グレースモークの下敷きを貼り付けようと思いました
が、力尽きました……
~参考文献~
簡易A/D変換(積分回路の応用)
ELM - シンプルなA-Dコンバータ
フリスクのケースに回路を載せる工作を載せた工作は、割と見かける気がします。経験のある人は多いと思います(?)
ケースを使うためにフリスクを買う人も多いのではないでしょうか。
今回は(と言っても作ったのは今年の7月ごろだが)フリスクのケースを用いて電圧計を制作しました。面倒なのでこれ以降、フリスクのケースをフリスクと呼びます。
このプロジェクトwは、2つの実験的な要素を含んでいます。その要素は次の2つです。
- 大きな7セグをフリスクに収める
- ADCのついていないマイコンATTiny2313でAD変換をする
……などと言ってみましたが、単に部品が余っていたので作りました。
~ハードウェアの制作~
フリスクのケースの内寸法は、小部屋と突起を切り取ると67.2*27.7*8.5 mmです。
このケースに入る7セグLEDを探したところ、10mmくらいの小さな物しか見つかりませんでした。
LEDはなるべくケースから飛び出させたくありません。
LEDはなるべくケースから飛び出させたくありません。
しかし、小さなLEDでは見にくいです。なるべく大きな7セグLEDを使いたいと思いました。
そこで、文字高さ14mmの7セグLEDを少し加工して使うことにしました。

LEDを表面実装するのです。
また、マイコンも同じようにピンを曲げて表面実装型にします。(表面実装パッケージのものも売っていますがあるものだけで作りたいという趣旨があります)

プリント基板は、(不)安定の熱転写方式で自作

部品を実装するとこのようになりました。
フリスクケースのほうも加工します。小部屋をカッターで切り取り、蓋をドリルとヤスリで穴を開けます。バリ取りはカッターを使うと綺麗にできます。
~回路の設計~
主に自動車で使うことを想定したものにしてみました。測定範囲は6~30Vで、電源と測定端子は共通にします。共通にすると内部抵抗が下がり、精度が悪くなりますが、妥協しましょう。
回路図を下図に示します。

まず電源の6~30Vを5Vに降圧します。7セグLEDはマイコンATTiny2313に直結しました。ダイナミック・ドライブします。アノードコモンのLEDを使いましたが、プログラミングを変えればカソードコモンも使えるはずです。
ATTiny2313にはAD変換器が付いていませんが、ATTiny2313にはアナログコンパレータが付いているので100uAの定電流ダイオードとコンデンサを外付しAD変換器を作りました。測定電圧は、ツェナーダイオードで降圧し、分圧したのちAVR ATTiny2313に入力しています。
~プログラムの制作~
AVRのプログラムをCで書きます。
タイマ割り込みでLEDをドライブして、mainで測定の処理をしました。
AD変換の原理について
コンデンサを定電流で充電すると、コンデンサの端子電圧は、直線的に増加します。
式で表すと、
Vc = (i/C) * t
(Vc…コンデンサの電圧、i…電流、C…コンデンサの容量、t…時間)
となります。
そして、ATtiny2313にはアナログコンパレータがついています。
コンパレータとは、2つの電圧の大小を比較するものです。
コンデンサの電圧と測定したい電圧を比較し、コンデンサの電圧が測定電圧より上回るまでの時間を計測すればAD変換の値を得ることができます。

より具体的に表すと、
- コンデンサを0Vまで放電させる
- コンデンサを充電開始 & 時間をカウント開始
- コンパレータの出力が変わったところでカウントストップ
- カウントの値が測定電圧(に比例した数)
となります。
ここで重要なのは、コンデンサや分圧抵抗、ツェナーダイオードの精度、クロック源の精度です。
これらを測定していって真面目に計算するのは結構大変なので、最初に適当なプログラムを作り、入力した電圧と、出てきたAD変換の値から逆算しました。
また、AD変換器のコンデンサは特性の良いフィルム系の物を使います。セラミックコンデンサは向きません。
また、AD変換器のコンデンサは特性の良いフィルム系の物を使います。セラミックコンデンサは向きません。
実際に組んだプログラムです。(汚いのは勘弁w
/*********************************
電圧計
○○○○○○○○○○○○○○○○
*********************************/
#define F_CPU 12000000UL //12.0MHz
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <util/delay.h>
// グローバル変数
char keta = 0;
volatile int num = 0;
volatile unsigned long volt = 0;
void Set7seg( char number){
// セグ初期化
PORTB |= 0b00010100;
PORTD |= 0b01110111;
// セグメント割り当て
switch(number){
case 0:
PORTB &= ~0b00010100;
PORTD &= ~0b01010011;
break;
case 1:
PORTB &= ~0b00010000;
PORTD &= ~0b00010000;
break;
case 2:
PORTB &= ~0b00000100;
PORTD &= ~0b00110011;
break;
case 3:
PORTB &= ~0b00010100;
PORTD &= ~0b00110010;
break;
case 4:
PORTB &= ~0b00010000;
PORTD &= ~0b01110000;
break;
case 5:
PORTB &= ~0b00010100;
PORTD &= ~0b01100010;
break;
case 6:
PORTB &= ~0b00010100;
PORTD &= ~0b01100011;
break;
case 7:
PORTB &= ~0b00010100;
PORTD &= ~0b00010000;
break;
case 8:
PORTB &= ~0b00010100;
PORTD &= ~0b01110011;
break;
case 9:
PORTB &= ~0b00010100;
PORTD &= ~0b01110010;
break;
default:
break;
}
}
// タイマ0割り込み
ISR(TIMER0_OVF_vect){
// TCNT0 = 150;
PORTB &= 0x00; // 消灯
if(keta == 2){
Set7seg(num%1000/100);
PORTB |= _BV(PB5); // 3桁目 点灯
keta = 1;
}else if(keta == 1){
Set7seg(num%100/10);
PORTB |= _BV(PB6); // 2桁目 点灯
PORTD &= ~_BV(PD2);
keta = 0;
}else if(keta == 0){
Set7seg(num%10);
PORTB |= _BV(PB7); // 1桁目 点灯
keta = 2;
}
}
// カウンタ1の捕獲発生
ISR(TIMER1_CAPT_vect){
TCNT1 = 0;
volt = ICR1;
}
int main(void) {
/*
a PB2
b PD4
c PB4
d PD1
e PD0
f PD6
g PD5
DP PD2
COM1 PB5
COM2 PB6
COM3 PB7
コンデンサは、500uSで満タン
*/
DDRD = 0b01110111;
PORTD = 0b00001000;
DDRB = 0b11111100;
PORTB = 0b00000000;
// タイマー0
TCCR0B = 0x03; // プリスケーラは (dataseet p.66)
TCNT0 = 0; // タイマ0の初期値
TIMSK |= _BV(TOIE0);// タイマ0オーバーフローだけ割り込み許可
// タイマー1
TCCR1A = 0x00;
TCCR1B = 0b11000001;
TIMSK |= _BV(ICIE1);// 捕獲割り込み許可
TCNT1 = 0x0000;
// アナログコンパレータ
ACSR = _BV(ACIC); // アナログ比較器捕獲起動許可
//ACSR = _BV(ACIS1); // コンパレータ上昇で
//ACSR = _BV(ACIS0); //
DIDR = 0b11; // デジタル入力禁止
sei(); // 割り込み許可
char ave_cnt = 0;
long volt_ave = 0;
while(1){
volt_ave += (((volt*100)+69863)/1800);
volt_ave = volt_ave/2;
ave_cnt++;
if(ave_cnt >= 20){
num = volt_ave;
ave_cnt = 0;
}
_delay_ms(20);
DDRB &= ~_BV(PB0); // コンデンサのピンをオープン
cli(); // 割り込み禁止
// Cを充電開始
TCNT1 = 0x0000;
PORTB |= _BV(PB3); // 充電開始
// コンパレータが1を吐くまで待つ
while(!(ACSR & (1<<ACO))){
}
PORTB &= ~_BV(PB3); // 充電を止める
sei(); // 割り込み許可
// Cを放電
DDRB |= _BV(PB0); // コンデンサのピンを接地=放電
}
}
電圧計
○○○○○○○○○○○○○○○○
*********************************/
#define F_CPU 12000000UL //12.0MHz
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <util/delay.h>
// グローバル変数
char keta = 0;
volatile int num = 0;
volatile unsigned long volt = 0;
void Set7seg( char number){
// セグ初期化
PORTB |= 0b00010100;
PORTD |= 0b01110111;
// セグメント割り当て
switch(number){
case 0:
PORTB &= ~0b00010100;
PORTD &= ~0b01010011;
break;
case 1:
PORTB &= ~0b00010000;
PORTD &= ~0b00010000;
break;
case 2:
PORTB &= ~0b00000100;
PORTD &= ~0b00110011;
break;
case 3:
PORTB &= ~0b00010100;
PORTD &= ~0b00110010;
break;
case 4:
PORTB &= ~0b00010000;
PORTD &= ~0b01110000;
break;
case 5:
PORTB &= ~0b00010100;
PORTD &= ~0b01100010;
break;
case 6:
PORTB &= ~0b00010100;
PORTD &= ~0b01100011;
break;
case 7:
PORTB &= ~0b00010100;
PORTD &= ~0b00010000;
break;
case 8:
PORTB &= ~0b00010100;
PORTD &= ~0b01110011;
break;
case 9:
PORTB &= ~0b00010100;
PORTD &= ~0b01110010;
break;
default:
break;
}
}
// タイマ0割り込み
ISR(TIMER0_OVF_vect){
// TCNT0 = 150;
PORTB &= 0x00; // 消灯
if(keta == 2){
Set7seg(num%1000/100);
PORTB |= _BV(PB5); // 3桁目 点灯
keta = 1;
}else if(keta == 1){
Set7seg(num%100/10);
PORTB |= _BV(PB6); // 2桁目 点灯
PORTD &= ~_BV(PD2);
keta = 0;
}else if(keta == 0){
Set7seg(num%10);
PORTB |= _BV(PB7); // 1桁目 点灯
keta = 2;
}
}
// カウンタ1の捕獲発生
ISR(TIMER1_CAPT_vect){
TCNT1 = 0;
volt = ICR1;
}
int main(void) {
/*
a PB2
b PD4
c PB4
d PD1
e PD0
f PD6
g PD5
DP PD2
COM1 PB5
COM2 PB6
COM3 PB7
コンデンサは、500uSで満タン
*/
DDRD = 0b01110111;
PORTD = 0b00001000;
DDRB = 0b11111100;
PORTB = 0b00000000;
// タイマー0
TCCR0B = 0x03; // プリスケーラは (dataseet p.66)
TCNT0 = 0; // タイマ0の初期値
TIMSK |= _BV(TOIE0);// タイマ0オーバーフローだけ割り込み許可
// タイマー1
TCCR1A = 0x00;
TCCR1B = 0b11000001;
TIMSK |= _BV(ICIE1);// 捕獲割り込み許可
TCNT1 = 0x0000;
// アナログコンパレータ
ACSR = _BV(ACIC); // アナログ比較器捕獲起動許可
//ACSR = _BV(ACIS1); // コンパレータ上昇で
//ACSR = _BV(ACIS0); //
DIDR = 0b11; // デジタル入力禁止
sei(); // 割り込み許可
char ave_cnt = 0;
long volt_ave = 0;
while(1){
volt_ave += (((volt*100)+69863)/1800);
volt_ave = volt_ave/2;
ave_cnt++;
if(ave_cnt >= 20){
num = volt_ave;
ave_cnt = 0;
}
_delay_ms(20);
DDRB &= ~_BV(PB0); // コンデンサのピンをオープン
cli(); // 割り込み禁止
// Cを充電開始
TCNT1 = 0x0000;
PORTB |= _BV(PB3); // 充電開始
// コンパレータが1を吐くまで待つ
while(!(ACSR & (1<<ACO))){
}
PORTB &= ~_BV(PB3); // 充電を止める
sei(); // 割り込み許可
// Cを放電
DDRB |= _BV(PB0); // コンデンサのピンを接地=放電
}
}
書き込みは平ピンICソケットを上から被せると便利です。


~まとめ~
フリスクケースでそこそこ見やすい電圧計を作ることができました。
また、定電流ダイオード+コンデンサの組み合わせで作ったAD変換器は、直線性も良く、安定した物ができました。
この基板を少し改造したら電圧計以外にもいろいろ応用ができそうです。ただし電源が別でいるのが厄介ですね。マイコンをSOPなどの表面実装部品に換えたら小さなバッテリーを置くことができそうですが、そうなるとLEDより消費電力の低い液晶のほうが有利になってしまいます。
7セグLEDはそのままでは見にくいので、グレースモークの下敷きを貼り付けようと思いました
が、力尽きました……
~参考文献~
簡易A/D変換(積分回路の応用)
ELM - シンプルなA-Dコンバータ
登録:
投稿 (Atom)





