FPGA(field-programmable gate array)にチャレンジ。

投稿日: カテゴリー: おやじブログ

PLD(プログラマブルロジックデバイス)の一つであるFPGAによるロジック回路を置き換えることを再開予定。約30年前にaltera社とXilinx社を使っていましたが今回、intel社にしました。(実は 企業の統合で変わりましたが、alteraのMAXシリーズです。)

2018年度に、むすこがソフトをやったので 2019年度は ハードと言われるロジック回路をソフトで実現できるFPGAをやってみようと思ったわけです。これで 「ハードとソフトは絵を描くのと同じ」と言っているのを実感してもらえればと思います。

徳用マッチ

投稿日: カテゴリー: おやじブログ
菊水マッチ

最近はガスライターが主流だが、今でもマッチがあるのが嬉しい。ちょっとした演出用に購入しました。アルコールランプをマッチで点火してたのは中学の理科実験かな! などなど懐かしい品です。

水が美味しくなる鍋の秘密

投稿日: カテゴリー: おやじブログ

水が美味しくなる鍋があると友人がいう。「嘘やろ」という私。そこで実験してみることに。その鍋を購入した。普通のホウロウ鍋ですが……..

ホウロウ鍋

これで 茶粥を食べると確かに味が違う。なんで違うのか気になる。ステンレス、アルミ、鉄、違うホーロー鍋と比べてみるとどちらのホーロー鍋も良い。

ホーロー(琺瑯)とは、鉄やアルミニウムなどの金属素材の表面にガラス質の釉薬を高温で焼き付けたものです。とSNSで調べた。

ならば、何か足されて上手くなるのでなく 何も加えられないので美味いと推測できるのでは…….. そこで 耐熱ガラスでお湯を沸かして味を比べると同じく美味い。よって何も加わらないことで美味い。

これより言えることは「名水はガラス質の容器でなければ意味をなさない。」という個人的な結論を得た。友達に自慢しようかな?

妻の49日満中陰

投稿日: カテゴリー: おやじブログ

 時間の経つのは早いもので もう49日になりました。妻はTMR 西川貴教さんのファンで昨年9月のイナズマロックに行き喜んでいたのが昨日のようです。 キャラクタ「タボくん」も好きでしたので、ふたばさんにお願いして和菓子で作って頂きました。私は美味しく頂きましたが ファンの娘は躊躇ってましたが……..

和菓子のタボくんとみかん大福

この時期の妻の好きな「みかん大福」とセットに。ふたばさんに感謝です。

そろそろ、仕事をしないと「えー加減しろ サボるな!!」と妻に叱られそうな気持ちに。 すると新案件があり、頭フル回転の春になりそうです。息子も頑張っているので乗り切れるだろうと思いつつ、僕も頑張ります。

温度/湿度/気圧から

投稿日: カテゴリー: RasberryPiおやじブログ
温度/気圧/湿度の測定結果

趣味で作った測定システムを動かしてみました。

1300分位の位置が今、左に向かって過去を表しています。約1日分です。気圧は上昇、湿度は乾燥、温度は下降に向かっています。空調の効いた部屋内の測定なので気温は外気でないので変化はわかりません。気圧が上昇しているので高気圧が近づき、湿度が乾燥しているので北風が吹いていることを表しています。

 IOTと言う言葉を耳にしますが、このように時間の流れで変化をみると色々なものが想像できます。

こんなこと考えるの面白いと思うんだけどなあ〜 興味ある人いるのかなあ〜

「寂しい」と「友達」

投稿日: カテゴリー: おやじ

今まで理解していたつもりでいましたが 妻を亡くしてやっと気づきました。すべきことをやろうとするのだが何か気力がないのです。

 レースオフィシャル時代の友達が「当然だよ。穴が空いたようになるよ明日 行くから話そうよ」と励ましに来てくれることになりました。レースを支えているオフィシャルは、危険と背中合わせの部分もある趣味。いろんな場面を一緒に経験した仲間の友達です。

 僕は 嫁、家族、友達や周りの方など、良い人たちに恵まれ幸福だと改めて再認識、少し元気がでました。

写真:2018/11/27 座禅 建仁寺にて:写真Okの風神雷神(複製)です。

ADT7310で温度測定

投稿日: カテゴリー: RasberryPiおやじブログ
測定風景

0.0625℃の分解能で測定される温度計(ADT7310)で 実験場所の温度を22時間程測定してみました。実際には、60秒で60回測定して平均したものを測定結果(60分x24時間で1440個)としています。

温度グラフ 測定結果

緑色が1日、青色が1分、橙色が1時間の測定結果を表示している。青色より1秒間隔の測定差が判り、橙色より1分単位の変化が、緑色より24分単位の変化が判ります。

起床時から少し増えたのは私が部屋に入ったから。メモリ20(8時頃)から太陽の光が部屋に入ったので。メモリ25の付近は曇ったため。メモリ35(14時頃)から下がり始めています。21℃から23.5℃で推移していることが分かりました。

一応の結果が得れたので、今度は気温、気圧と湿度の3つを測定できると面白いと考えています。

測定した温度グラフを作る 2019/1

投稿日: カテゴリー: RasberryPiおやじブログ
1日経過

1日(22時間)、RaspberryPiで温度計測をした結果が出ました。太陽の光が差し込むと温度が上昇し夕方になると下降しています。途中の下がっているところは光が雲により遮られた時です。起床した時が最低温度で側にしばらく座っていると上昇が始まっています。人間ってすごく発熱するんだとびっくりです。

約6時間経過

エアコン風の影響を受けない所で測定の試験を初めて約6時間経過した。緑色の1日を1分単位で測定した結果は、22.8->21.1℃と下がった。橙色は、1時間を1分単位で表示、青色は、1分を1秒単位で測定したものです。

.

SPIやI2Cで温度計測ができるようになりました。しかし、データを記録したいことは多いので、CSVファイルに測定データを格納するプログラクをPythonで作ることにした。

  • Python3で作る
  • RaspberryPi3 B+ で動作する。
  • 1日分のデータを格納できる。
  • 測定は1秒に1回測定して1分単位に纏める。
  • 平均と標準偏差を求め 標準偏差の4倍の範囲で表示する。(4倍は99.99%を含む範囲)

を目標に作っている途中です。ファイルは1日1回なので実働テストに時間がかかってしまう。

SPIで温度測定ができた2。

投稿日: カテゴリー: RasberryPiおやじブログ

SPIとI2Cの通信手段を確認できました。

センサー、表示器、RaspberryPi

下記にRaspberryPi3B+ で動作させた PythonのプログラムをPDFにしています。このセンサーは電源電圧と測定温度で誤差が -40℃〜105℃(2.7V-3.6v)では±0.5℃、カタログの表から 0-100℃(3.3v)では±0.2℃程度と考えることができるので、私には十分です。

RaspberryPi モニタ
 coding: utf-8 
#
import spidev
import time
class Adt7310:
def init(self): #インスタンス作成時に呼び出し 確認2018/12/29
self.spi = spidev.SpiDev()
self.spi.open(0,0)
self.spi.max_speed_hz = 10 # 通信速度の設定
self.spi.bits_per_word = 8 # 送信文字(bit)単位の設定
self.spi.mode = 3 # [CPOL|CPHA]
CPOL 0:正理論 ポジパルス --_-
0 CPHA 0: CPOL立上りで読込
1 CPHA 1: CPOL立下りで読込
CPOL 1:負理論 ネガパルス -----_--
2 CPHA 0: CPOL立下りで読込
3 CPHA 1: CPOL立上りで読込
参考資料 http://dlnware.com/theory/SPI-Transfer-Modes
#
def spi_close(self): #動作未確認
self.spi.close()
シャットダウン
ADT7310は、コンフィギュレーション・レジスタ(レジスタ・アドレス0x01)のビット[6:5]を11にする。
シャットダウン前の最後の変換からの変換結果は、シャットダウン・モードのときでもADT7310から読み取ることができます。
コンフィギュレーション・レジスタ(レジスタ・アドレス0x01)のビット[6:5]に00にするとシャットダウン・モードから抜けることができます。
シャットダウン・モードから出るのに1ms(0.1μFデカップリング・コンデンサで)必要です。
デバイスがシャットダウンモードから抜け出ると、内部クロックが開始され、変換が開始されます。
def spi_shutdown(self): #動作未確認 self.spi.xfer([0b00001000,0b01100000]) # Register:01へ シャットダウンコマンドdata:0x60 の書き込み
#
 xfer CS端子が転送中は activate され 未使用時は解放される。
 xfer2 CS端子は解放されている。
参考資料 https://pypi.org/project/spidev/
#
ワンショットモード
ワンショット・モードでは、ADT7310はただちに変換を完了してからシャットダウン・モードなる。
ワンショットモードは、消費電力を削減する。
ワンショットモードを有効にするには、
コンフィギュレーションレジスタ(レジスタアドレス0x01)のビット[6:5]を01に設定します。
動作モードビットに書き込んだ後、温度値レジスタから温度を読み出す前に、少なくとも240ms待機が必要。
この遅延により、ADT7310は起動して変換を完了するのに十分な時間を確保できる。
更新された温度変換を得るには、
コンフィギュレーションレジスタ(レジスタアドレス0x01)のビット[6:5]を01にリセットします。
1 SPSモード
このモードでは、パーツは1秒あたり1回の測定を実行します。
一回の変換はわずか60msしかかからず、残りの940msの間はアイドル状態のままです。
このモードは、コンフィギュレーションレジスタ(レジスタアドレス0x01)のビット[6:5]を10にする。
def spi_oneshot(self): #動作未確認 self.spi.xfer([0b00001000,0b10100000]) # Register:01へ ワンショットコマンドdata:0xa0 の書き込み def spi_SPS(self): #確認2018/12/29 self.spi.xfer([0b00001000,0b01000000]) # Register:01へ SPSコマンドdata:0x40 の書き込み
温度データの読込
読取りは、ADT7310に書込み/読込みビットを1にセットして開始すると、
アドレス指定されたレジスタに応じて8または16クロック・パルスを供給し、
ADT7310はアドレス指定されたレジスタからデータをクロック・アウトしますDOUTに出力される。
データは、コマンドバイトに続くSCLKの最初の立ち下がりエッジでクロック出力されます。
マスターがCSをハイにすると、読み出しは終了します。
マスタは、読み込まれたレジスタごとにバス上で新しい読み取りを開始する必要があります。
1つの読み取りにつき 1つのレジスタのみが読み出されます。
ただし、連続リードモードでは、コマンドバイトC2 = 1となり、連続して温度値レジスタを読み出すことができます。
マスタはSCLKで16クロック・パルスを送信し、温度値はDOUTでクロック出力されます。
def spi_read(self): #確認2018/12/29 e = self.spi.xfer([0b01010000,0xff,0xff])[1:] # Register:02へ データ呼び出しコマンドdata:0x50 の書き込み er = e[0]<<8 | e[1] if(er >= 0x8000): er = er - 0x10000 er = er / 128.0 return er # 2バイトの0xffはダミーデータです。
Status Register (Register Address 0x00)
Bit Default Type Name
[3:0] 0000 R unused
4 0 R Tlow
5 0 R Thigh
6 0 R Tcrit
7 0 R _RDY
4このビットは、温度がTLOW温度制限を下回ると1に設定されます。
ステータスレジスタが読み出されたとき、
および/または測定された温度が限界を超えたときに、
ビットは0にクリアされます
TLOW + THYST設定値レジスタに設定します。
5このビットは、温度がTHIGHの温度制限を超えると1に設定されます。
ステータスレジスタが読み出されたとき、
および/または測定された温度が制限値を下回ったとき、
ビットは0にクリアされます
THIGH-THYST設定値レジスタに設定します。
6このビットは、温度がTCRITの温度制限を超えると1に設定されます。
ステータスレジスタが読み出されたとき、
および/または測定された温度が制限値を下回ったときに
0にクリアされます
TCRIT - THYST設定値レジスタに設定します。
7温度変換結果が温度値レジスタに書き込まれると、このビットはローになります。
温度値レジスタを読み出すと1にリセットされます。
ワンショットモードと1つのSPSモードでは、
このビットはワンショット・ビットへのライト後にリセットされます。
def spi_status(self): #確認2018/12/29 d = self.spi.xfer([0b01000000,0xff]) ## Register:00へ ステータス呼び出しとダミーdata:0xff の書き込み return d[1]
------------------------ サブルーチン -----------------------
one SPSモードでは、1秒間に1回の測定が行われるから、測定の終了を待って読み出す部分が必要です。
def spi_read_SPS(self): #確認2018/12/29 while self.spi_status() & 0x80 != 0: # データの準備ができるまで time.sleep(0.4) # 間隔で待つ。 ret = self.spi_read() # 温度データを読み出す。 return ret
#
#
ADT7310 の概要
●高性能:
温度精度±0.5℃@-40℃~+105℃(2.7V~3.6V) ±0.4℃@-40℃~+105℃(3.0V)
16ビット温度分解能:0.0078℃
高速な最初の温度の変換時間:パワアップ後6ms
●低消費:
パワーセービング・モード:1サンプル/1秒
ノーマル・モード:700μW@3.3V
シャットダウン・モード:7μW@3.3V
●容易な導入:
温度校正 / 補正は不要
直線性補正の不要
●広い動作範囲:
温度範囲:-55℃~+150℃
電圧範囲:2.7V~5.5V
●プログラマブル割り込み:
高精度な温度過熱割り込み 温度上昇 / 温度低下割り込み
●SPI互換インターフェース
●8ピン狭幅SOIC、RoHS準拠パッケージ
#
SPI コマンド Byte
0 0 (固定)
1 0 (固定)
2 1:温度連続読出 0:
[5:3] 7-0:レジスターアドレス
6 1:読み出し 0:書き込み
7 0 (固定)
#
コンフィギュレーション・レジスタ(レジスタ・アドレス0x01)
[1:0] これらの2つのビットは、
INTピンとCTピンを設定する前に発生する可能性のある低温/過温度フォルトの数を設定します。
これにより、誤ったトリガーを避けることができます
温度ノイズ。
00 = 1フォルト(デフォルト)。
01 = 2フォルト。
10 = 3フォルト。
11 = 4フォルト。
2 このビットは、CTピンの出力極性を選択します。
0 =アクティブロー。1 =アクティブハイ。
3 このビットは、INTピンの出力極性を選択します。
0 =アクティブロー。1 =アクティブハイ。
4 このビットは、コンパレータモードと割り込みモードを選択します。
0 =割り込みモード。1 =コンパレータモード。
[6:5] これら2つのビットは、ADT7310の動作モードを設定します。
00 =連続変換(デフォルト)。 1つの変換が終了すると、ADT7310は別の変換を開始します。
01 =ワンショット。変換時間は通常240ミリ秒です。
10 = 1 SPSモード。変換時間は通常60msです。この動作モードは平均消費電流を低減します。
11 =シャットダウン。インターフェイス回路を除くすべての回路がパワーダウンされます。
7 このビットは変換時にADCの分解能を設定します。
0 = 13ビット分解能。符号ビット+12ビットは0.0625℃の温度分解能を与えます。
1 = 16ビット分解能。符号ビット+ 15ビットは0.0078125℃の温度分解能を与えます。
#

牡蠣のスープ

投稿日: カテゴリー: おやじブログ

岡山の日生は、カキオコで有名ですが、その一軒のタマちゃんに立ち寄った。まだメニューに載せてない味噌汁を一昨日から提供し始めたというので頂いた。(作っている女性に写真の許可は頂いてます。)

カキ味噌汁

色々考えられて、この時期に発売されたものとお聞きし、新商品開発の裏側をお聞きしたようで より美味しく頂いた。

カキネギ

カキとネギを炒めたもの 塩味とカキの風味が丁度よかった。これも 色々 こだわりがあるんだろうと思いながら頂いた。

作っている途中のカキネギとお好み焼き(カキネギ)

出来上がりのお好み焼きは

調理器具のポップ

 日生には カキオコを出されるお店は沢山ありそれぞれ有名です。

  • なぜ 有名になったの?
  • なぜ カキオコを考えれたの?
  • なぜ……….

と考えながら食べさせて頂きましたが、なぜの答えがわからないのが残念でした。

 現地に出向いて空気を自分の目と耳で感じるのが僕の異業種(交流)の形かもしれません。本を信頼するのも良いことですが決断は自分自身が行うもの、空気を感じる練習も必要と思ってます。