JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

Fujitsu LIFEBOOK AH52DAのCPU換装

2021-06-23 13:10:56 | パソコン
 富士通 LIFEBOOK AH52DARの調子が悪くなってきました。このパソコンは2011年に購入したもので、使用期間が10年になります。



 症状は、プログラムの立ち上がりに非常に時間がかかるようになったことです。くるくるマークが長い間出るようになりました。

 Crystal Disk Infoで調べると、HDDが「注意」の状態です。HDDがそろそろ寿命でしょうか。

 HDDをSSDに換装すべく、500GBのSSDを発注しました。が、まだ届かないので先にCPU換装することにしました。

 LIFEBOOK AH52DAは、比較的CPUにアクセスしやすく、裏蓋のネジを全て外せば、裏蓋が外せマザーボードが現れCPUが見えます。


 まず、バッテリーを外します。

 次にネジを外します。△印のついたネジとついていないネジの2種類です。
 組み立ての時間違えないように、紙に外した位置と同じ位置にセロテープ止めしておきます。

 裏蓋を外した状態です。CPUクーラー,CPUファンが見えます。CPUクーラーは、ネジ三本を外せば、簡単に取り外せます。

CPUクーラーを取り外した状態です。

CPUクーラー、CPUファンをエアダスターできれいにしてから、CPUを交換しました。
LIFEBOOK AH52DAのCPUは、Pentium B940/2.0GHzです。これをCore i3 2350M SD0DN/2.3GHzに交換しました。

 昨年ヤフオクで600円ほどで購入しました。現在でも、中古で2000円以下で手に入れることができます。
 CPUをソケットに装着して、CPUグリスを塗り、CPUクーラーを取り付けました。

 裏蓋を元通りにねじ止めして、電源ON。
 ちゃんと動き出しました。
 システムを見てみると

 はい、OKですね。
 パソコンの速度は、なんとなく少し早くなったかな、という程度で大きな差は感じられません。HDDからSSDへの換装の方が変化を感じられるかもしれません。

 SSDが届いたら、HDDのクローニングをしてみます。
 うまくいったら、交換して終了となりますが、うまくいきますやら・・・・・

---------------------------------------------------------------------------------------------------------
6月30日追記

 昨日、AmazonからSSD(Crusial 500GB)が届きました。
 さっそく、HHDからSSDへのクローン作製の作業に入りました。
 HHDが640GBで SSDが500GBですが、大丈夫だろうか。

 クローンソフトは、EaseUS Todo Backupを使おうと思って準備していました。Web上の記事を参考にして、EaseUS Todo Backupを立ち上げてみると、なんと無料版では、クローンができないことが判明。えー、うそー!
どうやら、最新版では、クローンができないようです。今更製品版も購入したくありません。

 そこで、リカバリディスクを使って、一旦工場出荷状態(Windows7)に戻してから、Windows10にアップデートする作戦に変更しました。

 HHDを外して、SSDを装着してから作業開始。使ったディスクは、購入時に作成しておいたDVD6枚(トラベル解決ナビ1枚、リカバリディスク3枚、ソフトウェアディスク2枚)で、取説を見ながら作業を進め、約1時間で出荷時の状態に戻しました。

 次に、2019年11月にバックアップしたディスクイメージ(DVDで9枚)があったので、ディスクイメージを復元しました。この所要時間は約1時間半。

 いよいよWindows7からWindows10へのアップグレードです。作成しておいたインストールメディアUSBを使って、作業開始。
 ところが、Windows7のリソースを引き継いだ形でのアップグレードができないと言ってきました。Windows7のサポート終了のせいでしょうか。
 しかたなく、引き継がないことにしたら、結局Windows10がクリーンインストールされてしまいました。Windows7の賞味期限が終了ということでしょうか。

 まあいいか、とクリーンインストールされたWindows10で使うことにしました。でも、これまでの2時間半の作業は無駄になってしまいました。こんなことなら最初からクリーンインストールした方が良かったなー・・

 その後、いくつかの作業(Windowsのアップデートなど)とアプリのインストールをして、使える状態になりました。

 CPUとSSDを換装したLIFEBOOK AH52DAは、立ち上がり、終了が速く、ブラウザもさくさく動き快適です。あと数年はこれで大丈夫でしょう。


今日の落ちこぼれ花壇

2021-06-08 19:28:57 | 家庭菜園と花
 落ちこぼれ花壇の隅で、ガウラ・リリポップピンクが咲き始めました。


 側にオルレアとビオラが寄り添い、寄せ植えみたいになっています。

 タワーの下では、ムラサキカタバミ(オキザリス)が咲き始めました。



 側の鉢は、昨日「道の駅あいづ」で買ってきたロベリアを植え替えたものです。

 ロベリアもこんもりと花を咲かせます。成長が楽しみです。


今年の初収穫

2021-06-06 12:29:00 | 家庭菜園と花
 5月14日に種を蒔いたハツカダイコンを今日初収穫しました。無農薬栽培なので、ネットをかけて栽培しています。虫による食害もなくきれいです。


 今日は、わずかに10本ですが、これから毎日収穫できます。

 ただ、気になることがあります。畝の半分の成長が良くありません。今年は酸度調節のための苦土石灰散布をしなかったせいかな、などと原因を考えています。

 毎年同じような作物を同じように栽培していますが、年によって出来不出来があります。自然が相手なのでしかたがないのですが、歩留まりを上げるように工夫したいと思います。

Arduino RTC(DS1307)のテストその2

2021-06-04 16:46:47 | Arduino
 前回の記事でテストできなかった内容を今回テストします。

 まず、Timekeeper Registerのアドレス00hのbit7を1にするとRTCはstopします。電源ONで立ち上がった時は、1になっていて、secondのデータが書き込まれた時に、bit7が0になり、RTCがスタートします。
 bit7を操作することにより、強制的にRTCをスタート/ストップできます。

 次に、12時間制と24時間制の切り替えです。
 これは、アドレス02h(Hourに関するレジスタ)のbit6で切り替えます。
 bit6=0で24時間制(0~23)、bit6=1で12時間制(1~12)になり、12時間制では、bit5=0でAM,bit5=1でPMを表します。

 12時間制で動かしてみました。PM11:59:30からスタートさせ、AM0:0:0に切り替わるのが分かります。ただ、bit6=1だけの設定ですと、AM12:0:0になってしまい、どうもいけません。12の時は強制的に0にするようにプログラミングしました。

 時間表示に関する部分のプログラムです。
--------------------------------------------------------------------------
if((REG_table[2] & 0x20) == 0 ){
Serial.print("AM");
}else{
Serial.print("PM");
}
if((REG_table[2] & 0x1F) == 0x12){
Serial.print("0");
}else{
Serial.print((REG_table[2] & 0x1F),HEX);
}
--------------------------------------------------------------------------

 SQW/OUT(方形波出力)についてテストしました。アドレス07hのbit7(OUT),bit4(SQWE),bit<1:0>(RS1,RS0)の設定で次の表のように設定されます。
 例えば、SQWE=1,RS1=1,RS0=1と設定すると32.768KHzの方形波がSQW/OUTに出力されます。デューティ比は、50%です。
 SQWE=0の場合は、OUT=1とすれば、SQW/OUTは、1(High)の固定されます。
 

 SQWE=1,RS1=1,RS0=1の場合の出力波形と周波数です。

1Hz程度の誤差で正確です。

SQWE=1,RS1=1,RS0=0の場合の出力波形と周波数です。


SQWE=1,RS1=0,RS0=1の場合の出力波形と周波数です。


SQWE=1,RS1=0,RS0=0の場合の出力波形です。

いずれも正確な方形波が出力されました。
そこで、この1secの方形波でLEDを点滅させてみます。
SQW/OUTの出力は、オープンドレインになっていますので、プルアップ抵抗を接続し、デジタルトランジスタでLEDをドライブしています。


ブレッドボードです。


 500msごとに点灯と消灯を繰り返します。(1secごとに点滅)
 SQW/OUT信号は、割込みや秒を表す点滅などにつかえそうです。

 他に、DS1307には、56byteのメモリー(アドレス08h~3Fh)がありますので、これも利用できます。

Arduino RTC(DS1307)のテストその1

2021-06-03 10:58:37 | Arduino
 YouTubeでよみやさんの動画を見ていたら、格安のRTC(リアルタイムクロック)モジュールの紹介があったので、私もAmazonから購入してみました。1個なんと118円です。ただし、並行輸入品なので、届くまで2週間ほどかかりました。

 このモジュールには、RTC DS1307とEEPROM:AT24C32(32Kb) が搭載されています。また、バックアップ電源用のボタン電池フォルダーがついています。(電池はついてきません)



 ブレッドボードで実験をするために、ヘッダーピンを取り付けました。
 最初、部品面が上にくるように取り付けたのですが、電池フォルダーに厚みがあり、うまくいきません。そこで、電池フォルダーが上にくるように取り付けました。

 まず、I2Cアドレスを調べてみます。ArduinoとRTCモジュールの接続回路図です。


 I2Cのプルアップ抵抗は、モジュールに内蔵されているようなのでつけませんでした。
実際の接続の様子です。Arduinoをパソコンに接続します。

 Arduino IDEを立ち上げ、ファイル→スケッチ例→Wire→i2c_scannerと進み、i2c_scannerのスケッチを書き込み実行します。


 シリアルモニタに、0x50と0x68が表示されました。Web上にも書いてありますが、0x50がEEPROM、0x68がRTC(DS1307)のI2Cアドレスです。

 では、次にRTCのプログラミングに進みます。
 まず、DS1307の構造です。(説明書より)

 I2Cでコントロールします。SQW/OUTに1Hz~32.768KHzの方形波を出力することができます。

 次にコントロール方法です。
 Timekeeper Registerの内容です。
 ADDRESS 00h~06hに秒、分、時、週、日、、月、年のデータが格納されています。ここにアクセスして時刻のデータを読み書きします。
 07hで、SQW/OUT(方形波出力)の設定を行います。


 I2Cの書き込み及び読み込みのフォーマットです。

 RTCの動作テストを行います。スケッチは、よみやさんのものとプチモンテさんのサイトのものを参考にしました。
 年月日曜のデータは、本日(2021年6月3日木曜日)にして、時分秒のデータは、12時から13時への繰上りを確認できるようにセットしました。
-------------------------------------------------------------------------------
#include <Wire.h>
#define RTC_address 0x68
char *week[] = {"日","月","火","水","木","金","土"};

uint8_t REG_table[7];

void setup() {
Wire.begin();
Serial.begin(115200);

//RTCにデータを書き込む
Wire.beginTransmission(RTC_address);
Wire.write(0x00);//Register 先頭アドレス
Wire.write(0x30);//second
Wire.write(0x59);//minute
Wire.write(0x12);//hour
Wire.write(0x04);//week
Wire.write(0x03);//day
Wire.write(0x06);//month
Wire.write(0x21);//year
Wire.endTransmission();
}

void loop() {
Wire.beginTransmission(RTC_address);
Wire.write(0x00);//Register 先頭アドレス
Wire.endTransmission();

//RTCデータの読み込み
Wire.requestFrom(RTC_address,7);
for(int i=0;i<=7;i++){
REG_table[i]=Wire.read();
}

//RTCデータ表示
Serial.print("20");
Serial.print(REG_table[6],HEX);//year
Serial.print("/");
Serial.print(REG_table[5],HEX);//month
Serial.print("/");
Serial.print(REG_table[4],HEX);//day
Serial.print("(");
Serial.print(week[REG_table[3]]);//week
Serial.print(") ");
Serial.print(REG_table[2],HEX);//hour
Serial.print(":");
Serial.print(REG_table[1],HEX);//minute
Serial.print(":");
Serial.print(REG_table[0],HEX);//second
Serial.println();
delay(1000);
}
-------------------------------------------------------------------------------
シリアルモニタに次のように表示されました。


1secごとに、年月日曜日時分秒が表示され、RTCの動作が確認できました。