2007年01月

2007年01月28日

HDDを分解して破棄

使わなくなった低容量6.4GBのハードディスクを破棄する為に分解しました。 3.5インチのQuantum Fireball STで4枚のプラッタにヘッドは8つあります。 ケースはアルミニウム製で、磁石以外は分解して金属ゴミと不燃ゴミに出します。 ヘッドをトラック方向に動かすためにコイルを挟んだ2枚の強力なネオジム磁石は うっかり指を挟むと大変な事になりますが、楽しいアイテムになります。
最初に制御基板を分離 HDD1
磁石とヘッドを取り出す HDD2
プラッタを取り出す HDD3
4枚のディスク。 HDD4


2007年01月27日

ノートPCのバッテリ劣化のログを取る

Thinkpad T21,T22を使っていますが、LiIonバッテリの劣化が進んで来たので充放電のログを取ってみました。 GetSystemPowerState()でSYSTEM_POWER_STATUSを1分間隔でログを取ります。 記録はBatteryLifePercentとBatteryLifeTimeで残容量と残り時間(sec)を記録します。
time, LifePercent, LifeTime
14:06:41, 100, -1
14:07:00, 100, -1
14:08:00, 100, 3677
14:09:00, 98, 3574
14:10:00, 97, 3667
14:11:00, 95, 3624
14:12:00, 94, 3393
14:13:00, 92, 4140
14:14:00, 90, 3617
14:15:00, 89, 3288
14:16:00, 87, 3495
充電中のBatterryLifeTimeは -1 が返っています。
void CbattlogDlg::OnTimer(UINT nIDEvent)
{
	static int bfirst = 1;
	CTime now;
	now = CTime::GetCurrentTime();
	SYSTEM_POWER_STATUS status;
	if(now.GetMinute() != mlastmin)
	{
		mlastmin = now.GetMinute();
		if(GetSystemPowerStatus(&status))
		{
			CString temp;
			CString stime;
			stime = now.Format("%H:%M:%S");
			temp.Format("%s, %d, %d", stime, status.BatteryLifePercent, status.BatteryLifeTime);
			this->m_log.InsertString(0, temp);
			CStdioFile sfiles(sFilename, CFile::modeReadWrite | CFile::typeText | CFile::modeCreate | CFile::modeNoTruncate);
			if(bfirst){
				bfirst = 0;
				sfiles.WriteString("time, LifePercent, LifeTime\n");
			}
			sfiles.SeekToEnd();
			temp = temp + "\n";
			sfiles.WriteString(temp);
		}
	}

	CDialog::OnTimer(nIDEvent);
}
IBMのバッテリメータでは電流、電圧等の詳細データも表示していますが、WindowsのAPIでは取得できそうもないのでACPIを経由しているのでしょうか。 WindowsCE用にはAPIが用意されています。 [結果] 劣化の少ないバッテリの充放電の曲線は3%から100%まで振れていますが、劣化して容量の少なくなったバッテリでは充電途中で充電が終了して100 表示になり、放電途中で突然数%に落ちています。
[正常なバッテリ]
good battery

[劣化バッテリ]
bad battery