2022/12/25

Github ダウンロード方法と Arduino インクルード

Arduino プログラミングする際,無償ライブラリのお世話になっている。しかし,たまにしか行わないせいかダウンロードとインクルードにいつも悩まされる。

1)ダウンロード
Github にて所望のライブラリを見つけ,緑色の Code ボタンをクリックすると以下のような画面がポップアップするので Downlload ZIP をクリックすれば自動的にダウンロードされる。
ArduinoGit.png

2)インクルード
Arduino のメニュー「スケッチ」さらに「ライブラリをインクルード」を選択してもダウンロードされたZIPが表示されない。Arduino の日本語化に難があるのだろう。当該のZIPを英語名のみのパス名場所に移動して,選択するとOKになる。
2022/06/15

Huawei スマホ消費電力とカーナビ

長らく Huawei のスマホを使用している。バッテリ寿命が短くなった。買い替え時か。2017 年と 2020 年の CPU の熱設計電力 TDP を比較すると増大している。カメラ機能とスマホ決済は不可欠だ。

2017 Kirin 655 5W 16nm
2020 Kirin 820 6W 7nm

TDP が 20% も増大したスマホなんか要らない。

30年以上使用しているオンボロ車にカーナビはない。スマホのコンパスが壊れているけど,GPSと基地局との通信のおかげか Google は方位もナビしてくれる。自動車の電源12vDCから給電する DC-DC コンバータを買った。しかし充電しながらのナビはできない。
2022/05/10

対戦車ミサイル ジャベリンはMPU 250個を使用

歩兵が携行して戦車を待ち伏せる。ジャベリンは装甲がない上面から攻撃する。想像を絶するマイクロプロセッサの使用量である。スマホは20個も使用していないだろう。

中国が国産化に躍起になるのも頷ける。日本ではルネサスが生き残った。以前は当時日立のH8プログラミングをしていたけど,今はArduinoのマイクロコントローラモジュールばかりになった。MPUは昔のAtmelが買収された。

合衆国の MPU メーカはファブレスばかりになった。NECとか富士通の設計技術者はどうなったのだろう。一世を風靡したモトローラは会社自体が消滅した。設計技術者は新興企業へ転職したのだろう。技術資産と人材が活かされないまま衰退していくと国家レベルではリソースの無駄使いか。

日本の江戸期に何故産業革命が起きなかったのか。今につながる同じような状況だろう。
テイクレット氏は、米国内のマイクロプロセッサー設計・製造を後押しして外国からの供給への依存を減らすための超党派の法案が米議会を通過すれば、状況の改善に寄与するだろうと指摘した。ジャベリン1基当たり約250個のマイクロプロセッサーが必要だという。
参考
2018/05/25

ATmega328P の動作がわからない

NiMH の寿命判定に,充電電流の変化によらない内部抵抗の増加を考えている。Amazon に格安の ESR テスタがあるので購入してみた。結論から言うと,つかえない。秋月取扱のテスタだとOKなのようで回路図を調べたら,動作原理がわからなくなった。ADC を使用していない。改造のしようもない。駆動周波数を DSO で簡単に測定できると思っていたが,測定端子が GND から浮いている。Auto でみると正弦波が見えるが一瞬である。周波数は結構高そうだ。トリガを Single SEQ にすると,5V にスイングする駆動電圧の On/Off だけがクリップされる。基板は面実装なのでプローブをあてられない。

コンデンサを介して劣化廃棄の NiCd と使用中の NiMH の ESR を測定すると,ほぼ同じである。

私の保有している DMM PC510 はキャパシタ容量のみで ESR とインダクタの測定はできない。インダクタンスが不明になってしまったインダクタが測定できるので,これだけでも価値があると思う。
ESR.jpg 

基板の様子
サイズは 72.8x60.3xt1.4 で両面ともベタアース? 裏面に半田ボールが2箇所あった。手付け部品の半田付けは初心者レベル。水晶が傾かず半田付けされているから自動機なのだろうと思う。LCD ベースの固定突起の融着を1箇所手抜きのため,光源 LED 端子が固定強度を担っている危ない設計。運搬郵送用のためか,それとも半田付けのためかメンディングテープでベースごと仮止めされていた。

裏面の絶縁保護シートの他に LCD 脱落防止の対策がいるだろうと思う。4箇所のねじ止め穴がリング状にスルーホールになっている。この意味がわからない。

回路図をみてオートパワーオフの動作原理がわかった。回路は複雑になるけど,バカヨケとタイマに役立つかなと思う。

結論
電池の内部抵抗を測るのに最適周波数がある筈だ。駆動周波数を変えられないのはダメかもしれない。ESR を測定するにはリード線の影響が大きく,何とか法のようなプローブ方式じゃないと,短絡していちいち補正するのは面倒だ。

バックライト付きの LCD ディスプレイの視認性が良いのに驚いた。度の強い老眼鏡なしでもOKだ。これまで表示はPCに担わせていたけど,これもいいかなと思う。でも検索すると価格が高いな。テスタの部品を取り出した方が安いとは。。。

参考
2017/05/09

AVR 分刻みのタイマ検討と結果

事前検討
これまで Slip21 から設定された時間間隔で AVR にコマンドを送り充電器の充電流値を得ていたから,タイマ機能は Slip21 が担っていた。タイマのないマイコンはないだろうなくらいよく使われるものらしい。私の使用している AVR ATmega8 には3個のタイマがある。これらタイマが分刻みのタイマとして使えるかどうか検討してみた。

クロックは内蔵の 8MHz としている。確かシリアル通信のため,この周波数にした記憶がある。タイマは基本クロックを最高 1024 分周まで可能だから,タイマクロックの最低周波数は 7.8125 kHz になる。周期だと 0.128 ms となる。16 bit タイマだとカウンタは unsigned short を宣言して 0 ~ 65535 までの範囲で使えるのだろうか。そうだと最大でも 84 s 弱のタイマにしかならず,現状の5分には程遠い。

ディレイ(遅延)関数を利用したソフトウェア簡易タイマはどうだろうか。この関数の変数は unsigned int と宣言されているから,65 s までの遅延が可能だ。60 s に設定して,これを5回繰り返せば,ラフな5分が得られるのではなかろうか。この種のプログラム動作中,他のジョブができないけど,さして支障がないような気がする。中断するには,給電している USB コネクタを抜くかリセット SW を設ければいいだろうと思う。

データシートによれば,外付けの低周波クロックを導入すれば,正確な時間タイマが得られそうだが,そこまでの精度はいらないだろう。目的は充電池の充電流値のトレンドを得る事なのだから。

float 演算は double より遅い?
AVR でのプログラミングに単精度の実数を使用している。整数型でプログラムするのが面倒だからだ。ネット情報だとPCのコプロセッサが外付けだった 386 の時代だと浮動小数演算は単精度で 486 からは倍精度になったので,単精度を倍精度に変換,そして結果を単精度に戻すため遅くなるのだと言う。大学のサイトにも,
現在のコンピュータでは, float 型よりも double 型を使うことが多い.その理由は
 1. 精度が良い.
 2. 計算速度が速い.
ということがある.速度が速い理由は,現在のほとんどのコンピュータには double 型のデータを専門に扱う回路が付いているからである. float 型の計算を行うときには,一度 double 型に変換した後,この回路で計算し, その後再び float 型に変換される.したがって, float 型の方が計算時間が多くかかることになる. float 型にはメモリサイズが double 型の半分という利点があるが, 現在のコンピュータは十分なメモリを持っているので,その利点が有効であることはあまりない.

にわかに信じ難く,実際に検証した人がいた。コンパイラは実際のハードを想定して設計するし,演算プロセッサもソフトを無視して設計する事はないから当たり前かな。さらに検索したら今でも FORTRAN の方が C より速いとあり,なるほどと思う。

今時,K&R 準拠の C コンパイラを動かしている趣味人がいるとも思えない。30年以上前に購入した K&R 翻訳本でも ANSI 準拠となっていた。昔,リアルな社会世界から隔絶している東大総長を吉田茂首相は曲学阿世の輩と呼んだ。西欧の天文学にしても,古代のアリストテレス,プトレマイオスの世界観から何世紀も抜け出せなかった。地動説が日の目をみるようになったのは観測と実証主義の考え方が西欧社会に広まったからだ。

マイコンに触っていたら,倍精度演算が単精度演算より速いと言われたら,そんなバカなと思うのが普通だと思う。私は高校時代,生物を除いて実験の授業を受けた事がなかった。サイエンスを何と座学だけで履修したのだ。それを異常と思わない教育界。

座学だけで革新(イノベーション)ができるのなら,日本の失われた30年は説明がつかない。明治以来の教育がおそらく日本のイノベーションを阻害しているのだろう。しかし,これは変えようがない。今では文科省都道府県教育委員会がなくなっても,この現状は変わらないと思うようになっている。先生自体が変わらないと,ダメなのだろう。理科とサイエンスは交わる事はないのかとも思う。

デッバガが使えない環境
ICE を持っていないので,AVR Studio7 の高機能デバッギングが使えない。Slip21 に使用したプログラム を AVR に一部移植して Teraterm に出力しようとしたら,どうも途中で停止してしまう。プログラムを小分けにして,ひたすら出力させたらポインタ宣言が原因だった。Avr-gcc の関数宣言を真似たのがよくなかった。私の場合,Teraterm をデバッガ代わりに使えたけど AVR 単体のスタンドアロンのデバッギングはどうするのだろう。何らかの表示器がないと大変そうだ。このデバッグに丸一日費やした。。。

Debug と Release 版による違い
Debug 情報を含まない Release 版を Build したら,float 表示せず,リンカに Debug 版同様のライブラリを追加しても効果がない。Atmel の説明にあるように -vprintf のリンカオプションチェックを施すとOKになったが,コードサイズが大きくなった。浮動小数演算の実行コード最適化に処理が複雑な vprintf が何故必要になるのだろう。

                                                Debug                              Release
Program Memory Usage : 3358 bytes   41.0 % Full    4840 bytes   59.1 % Full
Data Memory Usage : 88 bytes   8.6 % Full          88 bytes   8.6 % Full

遅延タイマの実測結果
ATmega8 にシリアル通信によるコマンド入力により,無限タイマを起動し所定の遅延終了後にカウンタと ADC を出力させる。その時間間隔をTeraterm 画面をみて,カシオ時計 F-84W のストップウオッチ機能により測定した。2017-04-25 17:23

Nominal time      Measurement
1min                  59"35
2min                  1'58"44
3min                  2'57"08
4min                  3'55"88
5min                  4'55"91

本タイマの目的は充電流変化のトレンド測定なので,チューニングせずともこの精度で十分だろう。

参考