エントリー

カテゴリー「電子工作」の検索結果は以下のとおりです。

AQM0802A-FLW-GBWを使えるようにする

良く利用しているI2C接続LCDのAQM1602XA-RN-GBWは16×2表示でコストパフォーマンスに優れてるが基板の中央等に載せるとその大きさで他のボタンなどと干渉し配置を悩まされることがある

IMG_20180120_164042.jpg

そこで8×2表示のAQM0802A-FLW-GBW(バックライト付き)をAQM0802A-RN-GBWにバックライトが付いただけだと思って購入

資料を比べても異なるのはバックライトのみだったので同じように使えるはず

またAQM1602XA-RN-GBWと表示文字数は異なるが表示用DDRAMは内部で同じなのでライブラリ等の修正は必要ない

しかしピンのピッチはAQM0802A-RN-GBWと同じ1.5だがバックライト用のピンがあるので同じ変換基板は利用できないしAQM1602XA-RN-GBW用はピッチが1.27でピン配置も異なり不可

つまり取付用の変換基板は作製しなければならない

IMG_20180120_163956.jpgIMG_20180120_164131.jpg

2.54や2.0の基板では厳しいので64×64の1.27ピッチ基板を試すと挿せるがパーツを載せるのが表面実装品でないと大変そうだ

IMG_20180123_195210.jpgIMG_20180123_195233.jpg

そこで1.27から2.54の変換基板を利用する

IMG_20180123_195317.jpgIMG_20180123_195401.jpg

10ピン変換なので1ピン余るため中央を外し5,4ピンに分けた

IMG_20180123_195753.jpgIMG_20180123_195804.jpg

そして出力ピンをAQM1602XA-RN-GBWと同じにしてパーツを載せる(少しは配置を考えたつもりだが汚い)

IMG_20180129_193537.jpgIMG_20180129_193549.jpg

早速テストしてみると

IMG_20180129_193830.jpg

載せる方向が思っていたのと上下逆だった(逆にすれば使えるので問題はない)

次に深刻な問題として1行目は表示されるが2行目が表示されていない

そして1行目が表示されていたためソフトの問題だと思い込んでしまって一週間も嵌ることになる・・・

  • コントラストを何度も調整したり
  • 仕様書を眺めまわしソフト的な制御を変更したり
  • I2Cアドレスを確認したり
  • 3.3Vでないとダメなのかと試してみたり
  • ネットで同様の問題はないか検索したり

色々と考え試したが解決しない

で,ようやく休日を迎えたので別のAQM0802A-FLW-GBWをブレッドボード上で試してみると2行目が表示されてしまった

つ・ま・り・・・ハードの問題だったのだ(元々不良だったのか基板に載せる際に壊したのかは不明)

IMG_20180206_185038.jpgIMG_20180206_185126.jpg

今度はLCDの方向とパーツの配置を考えて作り直し(またも美しくないが)正常動作を確認

IMG_20180206_185251.jpg

(備考)
  • LCDのピン付近は熱に弱いので注意(半田付けで熱を逃さないと簡単に溶ける)
  • バックライトは5Vでの動作も考え51Ωを入れた
  • 1ピンは使用しないので変換基板に8ピンを上手く割り振れば他のパーツの配置が良くなるかもしれない
  • 仕様では3.3V用となっているが(コントラスト設定時の)昇圧指定を無くせば5Vでも使える
(参考)16×2での表示

IMG_20180206_185336.jpg

 

3.6Vの組充電池用充電器の試作

秋月電子のニッケル水素電池パックは安価で何かと使える3.6V充電池である

IMG_20170903_153320.jpg

これまで(リポを外した)ダイソーのUSB充電ライターの充電機能を利用して充電していた(真ん中のパーツ)

充電は問題なくできるのだがリポ用のため完全な満充電にはならないのが欠点

今後充電する事が増えそうなので専用の充電器を作製しようとしたら実は半年前に作製しようと設計していた(いろいろあって中止し忘れてしまっていたようだ)

diagram.png

ATTINY13aで充電制御する方式で設計,スケッチがまだなのでプログラミングしていたが,今のところ先日の充電器で十分なため記録だけにしておく(他に完了させないといけない物があるので落ち着いたら組み立てる予定)

上記の回路は問題があり正常に充電できません!(Nch FETにして,スケッチを修正,印加電圧も要調整)

暫定仕様
  • 全体の8~9割までは500mAの急速充電
  • 残りの1~2割は50%位で充電
  • 最終充電電圧を10秒間保持できていたら充電完了
  • LEDの点滅具合で充電状態が判るようにする
スケッチ
//
// ATMEL ATTINY13 / ARDUINO
//
//                 +-\/-+
// ADC0 (D 5) PB5 1|   |8 Vcc
// ADC3 (D 3) PB3 2|    |7 PB2 (D 2) ADC1
// ADC2 (D 4) PB4 3|    |6 PB1 (D 1) PWM1
// GND            4|   |5 PB0 (D 0) PWM0
//                 +----+
// 1: Reset
// 2: LED
// 3: Serial Out
// 4: GND
// 5: PWM(FET SW)
// 6:
// 7: ADC(充電池電圧確認)
// 8: Vcc 3.3V
//
#include <avr/io.h>

#define BAUD_RATE 38400
#include <BasicSerial3.h>

#define PIN_ADC 1   //PB2(ADC1)
#define PIN_LED PB3 //LED
#define PIN_OUT PB4 //SerialOut(Debug)
#define PIN_FET PB0 //FET

#define MCHR_VOLT (1400*3) //最大充電終止電圧(mV)
#define LAST_VOLT (1420*3) //充電終止電圧(mV)

static void serOut(const char *str) {
while(*str) TxByte(*str++);
}

//確認用シリアル出力
static void voltOut(int v) {
char bf[8];

itoa(v, bf, 10); //10は十進数
serOut(bf);
serOut("mV\r\n");
}

//電圧(mV)
static int voltRead() {
    ADCSRA = (1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(0<<ADIF)|(0<<ADIE)|(0b100);
//ADC#3
    loop_until_bit_is_set(ADCSRA,ADIF); //ADC#4
    long v = (long)ADC; //long v = (long)analogRead(PIN_ADC);
    v *= 5000;                           //基準電圧5V
    v /= 1024;
    return((int)v);
}

void setup() {
    DIDR0 = _BV(PIN_ADC);                              //ADC#1: pinMode(PB2, INPUT);
    ADMUX = (0<<REFS0)|(0<<ADLAR)|PIN_ADC; //ADC#2: analogReference(DEFAULT);
    DDRB = (_BV(PIN_LED)|_BV(PIN_FET)|_BV(PIN_OUT));   //pinMode(PIN_LED, OUTPUT);
                                                       //pinMode(PIN_FET, OUTPUT);
                                                       //pinMode(PIN_OUT, OUTPUT);
    OSCCAL = 91;                           //87 - 96 (91, 92)
}

void loop() {
   int volt;

    serOut("Begin.\r\n");

    //MAX充電
   while((volt = voltRead()) < MCHR_VOLT) {
        voltOut(volt);
        PORTB |= _BV(PIN_LED);                         //digitalWrite(PIN_LED, HIGH);
        PORTB |= _BV(PIN_FET);                         //digitalWrite(PIN_FET, HIGH);
        delay(4000);
        PORTB &= ~_BV(PIN_LED);                        //digitalWrite(PIN_LED, LOW);
        delay(1000);
    }

    //残りを50%充電で完了させる
    int final = 5;
    do {
        voltOut(volt);
        PORTB |= _BV(PIN_LED);                         //digitalWrite(PIN_LED, HIGH);
        PORTB |= _BV(PIN_FET);                         //digitalWrite(PIN_FET, HIGH);
        delay(1000);
    PORTB &= ~_BV(PIN_FET);                        //digitalWrite(PIN_FET, LOW);
    PORTB &= ~_BV(PIN_LED);                        //digitalWrite(PIN_LED, LOW);
        delay(1000);
    if((volt = voltRead()) < LAST_VOLT) final = 5;
    } while(--final != 0);

//終了
serOut("End.\r\n");
PORTB &= ~_BV(PIN_LED);                            //digitalWrite(PIN_LED, LOW);
for(;;);
}
コードサイズ
  • arduinoのライブラリを利用すると1Kbytesを超えた
  • ADCを直接ハードウェア操作することで210bytes減る
  • その他も直接操作で最終的に780bytesになっている
  • 確認用のシリアル出力は削除できる
ADC関係
  • ADC#1: デジタル入力抵抗を無効(消費電流が減る)
  • ADC#2: REFS0=Reference: 0でVCC参照, 1で1.1V内部電圧源,ADLAR=0:右詰め,1:左詰め,下位2bitで00から11までADC0からADC3
  • ADC#3: ADEN=ADC有効,ADSC=ADC開始,ADIE=完了割込許可,下位3bitがクロック指定
  • ADC#4: ADIFビットが1の間はAD変換中

006P(8.4V 7セル)用簡易充電器改造

以前006P(8.4V 7セル)用充電器を作製したが,知識不足だったこともあり時間の掛かる充電器にしてしまっていた

IMG_20180113_161157.jpg

そこでちょっとした訳もあって改造することにした

回路は以下のとおり0.1Cの定電流で充電し満充電の判定など行わない簡易版である

diagram.png

対象がニッケル水素充電池なので停止しなくても0.1Cなら問題は起きないし,周囲の気温により満充電圧が変動するため面倒な判定を行わなくても確実に満充電させることができる

また,006Pに約25mAと以下の3.6Vの組充電池用に約80mA充電を切り替えるられるようにした

IMG_20180114_153320.jpg

大したパーツもないのでサクッと作り直し

IMG_20180114_111223.jpg

先に電子負荷を使って定電流なのを確認した後にバッテリーを繋いで確認

IMG_20180114_111601.jpgIMG_20180114_111645.jpg

30mAと83mA位にしようとしていたし手持ちの抵抗値の事もあり上の様な電流値となる

IMG_20180114_114113.jpg

3.6Vの組充電池も対応したし満足かな

メロディICと圧電サウンダ

警告や終了を音で通知するためにメロディICを購入

(本当は1年前に購入していたのだけど)

いつものほったらかし状態から突如,まずは鳴らしてみようとした・・・が・・・結果はかなり嵌った(つまり楽しめた)

チョイス

メロディICは三端子メロディIC(UM66TxxL)等を3種(5曲オルゴールICも先に購入したけど触るのは後になることに)

UM66TxxL共通仕様

  • 動作電圧範囲:1.5V~4.5V
  • 消費電流:16μA(Typ.)

音の出力は大体は小さい物に組み込むことになるので,サイズ・電力的に大きなスピーカーにするわけにはいかないため圧電ブザーと圧電サウンダを選択

電子ブザー(24mm)PKB24SPCH3601

  • 発振周波数:3.6kHz(電源DC12V時)
  • 定格音圧:90dB(電源DC12V時, 10cm)
  • 動作電圧:DC 2~20V
  • 消費電流

 1.8mA(電源DC2V時)
 2.8mA(電源DC3V時)
 5.0mA(電源DC5V時)
 9.0mA(電源DC9V時)
 13mA(電源DC12V時)

圧電スピーカー(圧電サウンダ)(13mm)PKM13EPYH4000-A0

  • 動作電圧範囲:30Vp-p以下

実は,圧電ブザーと圧電サウンダ・圧電スピーカーの違いを知らずに,とりあえず圧電ブザーと圧電サウンダを購入していた

基礎知識(後付け)

  • 圧電サウンダと圧電スピーカーは同じ(以降,サウンダで記載)
  • 圧電サウンダは音が鳴る圧電振動板のみの部品で発音には外部に励発振回路が必要となる
  • 圧電ブザーは圧電サウンダに自励発振回路を組み合わせ一体化したもので直流電源があれば発音する
ファースト発音

接続は以下のとおり

fig1.png

画像クリックで動画(左:圧電ブザー,右:圧電サウンダ)

IMG_20171127_201002.jpgIMG_20171127_200927.jpg

発音は簡単にできて(左)電子ブザーだと終了音程度なら音量的にも十分

しかし電子ブザーはサイズが大きいため,できれば圧電サウンダを使いたい

そこで難点である音量を増大することを試みる

メロディIC

まずはメロディICの波形を観る(左:画像クリックで動画,右:パルス拡大)

IMG_0464.JPGaudio.jpg

音階の出し方はFM音源が実装される前のPC(AppleII,MZ,PC8001とか)など知っていれば判るが,要は矩形波の密度(周波数)を変えることで音階を出している訳だ(PC8001なんか圧電ブザーで苦心の音階を出していたなぁ)

圧電振動版への電圧増加

圧電サウンダの音量を上げるには圧電振動版を大きく振動させることになり大きく振動させるには圧電振動版への電圧を上げる

TrとFETへ変更版で確認(どちらもスイッチ的使用)

圧電サウンダは電圧を与えないと鳴らない(電圧駆動)ため並列で抵抗を入れる

fig2.pngfig3.png

R1を,1kΩ,100kΩ,330Ωと変更してみたところ1kΩが一番大きい音量であった

圧電振動版へ3V,5V,12Vと変えて与えてみると少しは大きくなるが大して音量は上がらない

更に電圧を上げても大幅に変化しそうにないと考え止めた

IMG_20171130_182513.jpg

1つの結論

電圧を上げても劇的には音量はあがらないようだ(警告音とかは瞬間的に大きい電圧を発生しているらしい)

では何故電子ブザーは,それなりの音量を発生させているのか・・・調査すると共振を利用しているようだ

そこで試しに圧電サウンダを基板に付け共振させてみる(動画はなし)と・・・

IMG_20171203_200240.jpg

音量が上がることを確認,美味く共振させれば十分な音量になりそうな感じだ

最終的な回路は以下とした(発生起電力を抑制するためダイオード入れた)

fig4.png

追加

周波数の違いによる音量の変化を確認(デサルフェータ―で作製したパルスジェネレータを改良して実験)

IMG_20171207_195938.jpg

3kHzの音量が大きかった(だけど・・・耳が年なんで強弱は判断できないだろうと思う)

ページ移動

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed