上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- -- l スポンサー広告 l top
音が小さいのでハードの方を改良し、オーディオアンプを追加しました。
基板の部品配置も良くなかったので、新規作り直しにしています。


回路図は以下の通りです。低電圧1.2WオーディオアンプIC HT82V739を使っています。


単体での写真は以下の通りです。

裏側はこうです。



「スポンサードリンク」

style="display:block"
data-ad-client="ca-pub-0620260288102702"
data-ad-slot="9773401572"
data-ad-format="auto">



ここで3.3V電流が不足することが分かりましたので、前回記事のようにichigojamの方をパワーアップしました。

ソフトも方も手直ししました。(※#include xc.hはxc.h を< >で囲んでください。)

どうもDAC->OP-AMP出力がichigojamからのSPK信号に引っ張られる動きをしていたのを直しました。

PIC16F1705のDAC出力は、ENABLEにしておくと双方向で機能するみたい(?)で、
最初は DAC1CON0 = 0b10110000; // DAC enable ,OUT1/2 enable としていたのを、
DAC1CON0 = 0b10000000; // DAC enable ,OUT1/2 disableとすることで安定しました。



#include xc.h
#include "math.h"

#pragma config FOSC = INTOSC // use intosc , clkout = IO
#pragma config WDTE = OFF // WDT off
#pragma config PWRTE = ON // PWT on
#pragma config MCLRE = OFF // MCLR disabled
#pragma config CP = OFF // Memory code protection disabled
#pragma config BOREN = ON // BOR enabled
#pragma config CLKOUTEN = OFF // CLKOUT = IO
#pragma config IESO = OFF // IESO disabled
#pragma config FCMEN = OFF // FCMEN disabled
#pragma config WRT = OFF // FLASH write protection disabled
#pragma config PPS1WAY = OFF // PPSWAYdisabled
#pragma config ZCDDIS = ON // ZCD enabled
#pragma config PLLEN = ON // 4xPLL enabled
#pragma config STVREN = ON // Stack overflow reset enabled
#pragma config BORV = LO // BOR voltage = HI
#pragma config LPBOR = OFF // PLBOR disabled
#pragma config LVP = OFF // LOW voltage program disabled

unsigned int sin0[256];

unsigned int wave0[] = {
112,123,133,151,170,199,215,220,215,200,177,155,130,117,117,120,122,127,
125,123,120,110,105,86,60,43,52,63,83,109,140,166,160,114,
80,45,19,4,9,26,46,78,100,114
};


void main()
{
int i,t;

OSCCON = 0b01110000 ; // internal osc 32MHz with 4xPLL
ANSELA = 0b00000000 ; // PORTA all digital
ANSELC = 0b00000100 ; // PORTC all RC2 analog
TRISA = 0b00100000 ; // PORTA AN5 = INPUT
TRISC = 0b00111000 ; // PORTC 3-5 input

// DAC & OPAMP1 initialization
DAC1CON0 = 0b10000000; // DAC enable ,OUT1/2 disable
OPA1CON = 0b10010010; // OPAMP1 Enable , DAC-> + , OUT-> -

//while(1) {
// PORTCbits.RC2 = PORTAbits.RA5;

//}

for(i=0;i<256;i++) {
sin0[i] =(int)(128*sin(3.1415926*2*(float)i/254)+128);
// PORTCbits.RC1= 1-PORTCbits.RC1;
}

while(1) {
while (PORTAbits.RA5==0) {};

for (i=0;i<255;i++) {
DAC1CON1 =sin0[i];
}
while (PORTAbits.RA5==1) {};
}

}


このソフトで、ichigojamの矩形波が正弦波に変換されて出力されます。音は圧電ブザーそのままよりはかなり良いですが、まだ単調ですね。

後は波形テーブルを作ってやれば、色々な音色に変換できるはずです。さらにエンベロープをつければより楽器らしくなるはずですが、そのためには音符の切れ目をどう判断するか、が問題ですね。

ここまででハードは出来たと思いますので、この後ソフトで色々試したいと思います。


スポンサーサイト
2015.09.22 Tue l 未分類 l コメント (0) l top
音質向上アダプタにオーディオアンプを付けたところ、動作不安定になってしまいました。

音量が小さいうちは良いのですが、ある程度大きくするとPICマイコンのOP-AMP出力がおかしくなります。
PIC16F1705のOP-AMP出力を疑っていたのですが、調べてみたら3.3V電源電圧低下によってPICがリセットされていることが分かりました。オーディオアンプICが結構パワーを食っているようです。

元々ichigojam搭載の3.3Vレギュレータはあまり電流容量が有りません。(コスト重視なのだと思いますが。)
そこで今後別のシールドを付けることも考えて、強化しておくことにしました。

強化には秋月電子の低損失三端子レギュレーター 3.3V500mA TA48M033Fを使用します。

まず、元々のichigojamについている3端子レギュレータをニッパーで取り外します。写真は取り外した後です。


「スポンサードリンク」

style="display:block"
data-ad-client="ca-pub-0620260288102702"
data-ad-slot="9773401572"
data-ad-format="auto">





そして基板裏面にTA48M033Fを下の写真のようにハンダ付けします。

基板の座で写真の右斜め上から見て、GND、5V入力、3.3V出力の順番です。

これでichigojam+シールドで3.3V500mAの供給能力が得られました。
音質向上シールドについては別記事でアップします。




2015.09.22 Tue l ICHIGOJAM l コメント (0) l top
シルバーウィークの半分は休めることになりましたので、次のIchigojam工作を始めました。
目標はIchigojamのサウンド機能の改善です。

ichigojamはPLAY文によって音楽演奏できますが、基本的には矩形波なのでどうしても単調になります。
これを改善してみようと思います。最初はアナログフィルタ回路を付けて音をまろやかにしようかと思っていたのですが、どうもそれだけではおもしろくない。そこで、以前使った8bitAD付きのPICマイコンを持ってくることにしました。

PICマイコンPIC16F1705をICHIGOJAM-U用拡張基板に載せたサウンド改良シールドです。


回路図は以下のようになります。


IchigojamのSPK出力をIOとして読み取り、それをトリガとして内蔵した波形を再生する、という考えです。
Ichigojamは音程がやや外れるといわれているようですので、できればSPK出力を単にトリガとするだけではなく、周波数を解析して補正してあげられないかな、とも考えています。(後半は結構たいへんそうですが。)

「スポンサードリンク」

style="display:block"
data-ad-client="ca-pub-0620260288102702"
data-ad-slot="9773401572"
data-ad-format="auto">





とりあえず今日ハンダ付けしてテスト中のところ。


単純にSPKをトリガとして正弦波に変換する動作は以下のような比較的簡単なソフトで動きました。


#include xc.h     // ※includeはファイル名を<と>で囲んでください。
#include "math.h"

#pragma config FOSC = INTOSC // use intosc , clkout = IO
#pragma config WDTE = OFF // WDT off
#pragma config PWRTE = ON // PWT on
#pragma config MCLRE = OFF // MCLR disabled
#pragma config CP = OFF // Memory code protection disabled
#pragma config BOREN = ON // BOR enabled
#pragma config CLKOUTEN = OFF // CLKOUT = IO
#pragma config IESO = OFF // IESO disabled
#pragma config FCMEN = OFF // FCMEN disabled
#pragma config WRT = OFF // FLASH write protection disabled
#pragma config PPS1WAY = OFF // PPSWAYdisabled
#pragma config ZCDDIS = ON // ZCD enabled
#pragma config PLLEN = ON // 4xPLL enabled
#pragma config STVREN = ON // Stack overflow reset enabled
#pragma config BORV = HI // BOR voltage = HI
#pragma config LPBOR = OFF // PLBOR disabled
#pragma config LVP = OFF // LOW voltage program disabled

unsigned int sin0[256];

void main()
{
int i;

OSCCON = 0b01110000 ; // internal osc 32MHz with 4xPLL
ANSELA = 0b00000000 ; // PORTA all digital
ANSELC = 0b00000000 ; // PORTC all digital
TRISA = 0b00100000 ; // PORTA AN5 = INPUT
TRISC = 0b0000000 ; // PORTC all output

// DAC & OPAMP1 initialization
DAC1CON0 = 0b10110000; // DAC enable ,OUT1/2 enable
OPA1CON = 0b11010010; // OPAMP1 Enable , DAC-> + , OUT-> -

for(i=0;i<256;i++) {
sin0[i] =(int)(128*sin(3.1415926*2*(float)i/254)+128);
}

while(1) {
while (PORTAbits.RA5==0) {};
for (i=0;i<256;i++) {
DAC1CON1 =sin0[i];
}
while (PORTAbits.RA5==1) {};
}
}

オシロで見ると波形が結構ひずんでますし、音も小さいです。そういえばこのPICのアナログ出力は結構インピーダンスが大きかったはずで、圧電スピーカ直結はできなかったかもしれません。

その当たりなおした後で、次はもう少し凝った音の変換をしてみようかと思います。

それではまたです。

2015.09.19 Sat l ICHIGOJAM l コメント (0) l top
多忙続きのうちに夏が去ってしまいました。。。。

次の連休は少しは休めそうなので何か作りたいところです。

とりあえずしばらく前にAITENDOから買ってあったIchigojam用ユニバーサル基板に乗るもので何かを、と眺め中です。



I2CインタフェースのDSPラジオでもどうか、と考え中。
あまり意味ないかな。。。


「スポンサードリンク」

style="display:block"
data-ad-client="ca-pub-0620260288102702"
data-ad-slot="9773401572"
data-ad-format="auto">



2015.09.13 Sun l 未分類 l コメント (0) l top
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。