ノート(CF-T8)にWi-Fi USB アダプタをつけようとPLANEXのGW-USNno2を入手した、と云っても大分前のことですが。ルータにはオプションの無線LANカードを入れてある。
しかし、色々設定を変えても全く接続できません。オプションの無線LANはちゃんと受信できているのだが、SSID、その他パラメタを入れても接続できませんと出るばかり、全くどうなっているのか?因みにルータの無線LANは携帯内臓のWi-Fiから接続できるのでこちらは生きている。
ノート(CF-T8)にWi-Fi USB アダプタをつけようとPLANEXのGW-USNno2を入手した、と云っても大分前のことですが。ルータにはオプションの無線LANカードを入れてある。
しかし、色々設定を変えても全く接続できません。オプションの無線LANはちゃんと受信できているのだが、SSID、その他パラメタを入れても接続できませんと出るばかり、全くどうなっているのか?因みにルータの無線LANは携帯内臓のWi-Fiから接続できるのでこちらは生きている。
定電流負荷装置が何とか完成しました。プログラムは思い通りにならない部分があるのですが、最初に意図した機能は動作するようです。
上の画像は電池をつないで装置の電源を入れたところです。スタート スイッチを押していませんので放電停止状態です。
スタート スイッチを押し放電が始まった所です。放電中表示LEDが点灯、スタート スイッチのLEDも点灯しています。この状態で電池電圧が3.1Vになったら放電停止、ブザー鳴動、放電時間表示(LCD)になるはずです。今、試運転中です。
プログラム:
タイマ1を使い1ms毎に割り込みをさせ、1000msで計時カウンタをプラスしてLCDに時間表示をさせます。
ISR(TIMER1_COMPA_vect)
{
i = i + 1;
if (i % 1000 == 0) {
measurement();/* 1sec */ 経過時間計算
ad = adc_conv(4);
batt_v_calc();
}
}
/** @brief main routine */
int main(void)
{
s=s1=s10=m1=m10=h1=h10=h10_1= 0;
hardware_init();
LED_RED_OFF;
SP_OFF;
DISCHARGE_OFF;
lcdc_init(); /*LCD初期化*/
lcdc_cls();
adc_init();
lcd_init_msg();
lcdc_xy(0,0);
lcdc_putstr("Hour=00:00:00 ");
cli();
// init_timer0();
init_timer1();
for(int i = 0; i < 3; i++){
ad = adc_conv(4); <---- ダミー でADCを実行、最初の計測がばらついて3.1V以下のことがある。
}
while(START_SW_PORT & 0x01);{
LED_RED_ON;
DISCHARGE_ON;
}
sei();
while(1) {
_delay_ms(100); <---このdelayは割り込みの影響を受け変化してしまう?
//ad = adc_conv(4); <---本当はここで実行させたいのだがここでやるとLCD表示がカウント中に化けてしまう。
//batt_v_calc();
if(batt_v cli();
LED_RED_OFF;
SP_ON;
DISCHARGE_OFF;
}
}
return 0;
}
そんな訳でプログラムは要検討ですね、でも疲れましたので取りあえず第一段階は終了としましょう。
試運転完了
4時間55分で3.1V以下になり放電が終了しました。ブザーが鳴り放電中表示のLEDが消えました。意図した機能は良さそうです。
電池電圧の読み出しプログラムが動作するようになりました。単4電池(2本)の電圧を測っていますが手持ちのデジボルの表示より0.1Vほど高く出ています。ADCのRefは外部に2.5Vのシャントレギュレータを使っていますので、測定は抵抗で2分の1の電圧に分圧して読み込んでいます。この抵抗は3.3K(1%)を2本シリーズにして分圧していますが、抵抗値の誤差が影響しているのでしょう。
AVRのVccは3.3V、これを5VにしてRef電圧を5Vにすれば分圧する必要はないのですが。Timer1を使って割り込みで1秒をカウントアップしています。
今は割り込みのルーティンの中に電圧表示をさせるプログラムを回していますので、これは経過時間表示とは無関係に電池電圧の変化を表示させるようにしようと目論んでいるのですが、思い通りに動いてくれません。
追加機能は3.1Vになったら放電停止、計時停止、ブザー鳴動を考えています。
定電流負荷でリチウム イオン電池の放電時間を測る為、AVR(ATmega328)でタイマを作ることにしました。以前ガンマカウンタを作りましたのでそのタイマー部分を使うことにしました。随分前に作ったのですっかり忘れてしまい、この表示までプログラムをこねくり回していました。
何とか動いているようですので、後はADCで電池電圧を読む部分を作って追加します。
2014/1/14(Sun)
色々変なところを修正して結局放電負荷回路図は下記のようになりました。
バッテリー電圧が3.1V以下になるとLEDが消灯し、TR(2SA1015)がオンしてFET(2SK591)のゲートをグランドに落とし電池の放電は停止します。
2014/1/13(Mon)
昨日、今日とADCのプログラムを作っていましたが、ADCは初めて。ATmega328のADC4を使っているのだが、何故か0しか出てこない。出鱈目でもいいので数字が出てくれればいいのだが、何がまずいのか、、、?
リチウムイオン電池の放電時間を調べる目的で定電流負荷装置を作ってみました。取りあえず400mAの定電流を流し電池電圧が3.1Vになるまでの時間を計ります。
回路図 最終的にはこんな風にまとめました。電池電圧が3.1Vになると放電は停止します(停止するはず?)
2014/1/3(Fri)
OP Ampをオープンループでコンパレータとして使いましたが、基準電圧(3.1V)になる前に出力が反転してしまい、どうもうまく動作しません。AVRで電池電圧を読み込んでやらないと駄目かな?
車に轢かれた基板を使いました。後で切断して欠けた部分はカットします。現在試運転中です。青LEDは電源ON、赤LEDが放電中を表示しています。3.1VになればこのLEDが消えます。ヒートシンクがほんのり暖かいです。
AVRマイコンのADCとタイマを使い時間測定が出来るように考えています。今は時計を見ていないといけません。