SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|

2004-09-17(Fri) PICのA/D変換の項の翻訳

  と、ゆーわけで、予告どおり翻訳である。いつもにも増して品質が低いような気もするが、ないよりいいだろう。とりあえず、前半である。どーぞ。

  11.0 A/D(アナログ→デジタル)変換モジュール

A/D変換モジュールは、5つの入力ピンのいずれかからのアナログ入力信号(電圧)を、10ビット値(0〜1023)に変換するものです。その際の参照電圧としてVdd(CPU電圧)、Vss(GND)、RA2またはRA3の組み合わせから選択できます。

なお、CPUのSLEEP中にA/D変換を行う機能もありますが、その場合はモジュールへのクロックの供給元として内蔵RCオシレータを選択する必要があります。

A/D変換モジュールは以下の4つのレジスタで制御します:

・A/D変換結果上位レジスタ(ADRESH)

・A/D変換結果下位レジスタ(ADRESL)

・A/D変換制御レジスタ0(ADCON0)

・A/D変換制御レジスタ1(ADCON1)

レジスタ11-1に、A/D変換モジュールの制御を行う、ADCON0レジスタについて示します。レジスタ11-2に、各ポートの機能設定を行う、ADCON1レジスタについて示します。ポートのピンはアナログ入力(RA3は参照電圧入力にも)またはデジタル入力に設定できます。

A/D変換モジュールの使用に関する更に詳しい情報は、PICmicro Mid-Range MCU Family Reference Manual(DS33023)を参照してください。

  画像の説明

  ADRESHとADRESLレジスタはA/D変換結果を格納します。A/D変換完了時、結果はADRESHとADRESLに格納され、GO/DONEビット(ADCON0<2>)はクリア、A/D割り込みフラグビットADIFがセットされます。A/D変換モジュールのブロックダイアグラムを図11-1に示します。

A/D変換モジュールの設定後、変換を開始するまで、選択したチャンネルには古いデータが入っています。アナログ入力チェンネルはTRISビットを入力に設定しておかなければなりません。

必要なサンプリング時間を知るためには、11.1節"A/D変換サンプリング時間"を参照してください。このサンプリング時間が経過してから、A/D変換が開始できます。

A/D変換を行うには、以下のステップに従います:

1. A/D変換モジュールの設定:

・アナログ入力ピン、参照電圧ピン、デジタル入力ピンの組み合わせを設定します(ADCON1)。

・A/D変換に用いるチャンネル、クロック、モジュールONを選択します(ADCON0)。

2. A/D変換割り込みの設定(必要な場合):

・ADIFビットをクリア、ADIEビットとGIEビットをセットします。

3. サンプリングに必要な時間、待ちます。

4. GO/DONEビット(ADCON0)をセットし、A/D変換を開始します。

5. A/D変換完了割り込みが発生するの待ちます。割り込みを設定しなかった場合、GO/DONEビットがクリアされるのを待ちます。

6. A/D変換結果(ADRESH:ADRESL)を得ます、必要ならADIFビットをクリアします。

7. 次の変換に備え、必要ならステップ1か2を実行します。各ビットごとのA/D変換時間はTADで示され、次のサンプリングを開始する前には、最低2TADの待ち時間が必要です。

  画像の説明

  11.1 A/D変換サンプリング時間

A/D変換を正しく行うためには、アナログ入力信号の電圧レベルに一致するまで、内部のサンプリングコンデンサ(CHOLD)を完全に充電する必要があります。アナログ入力モデルを図11-2に示します。外部抵抗の値と内部サンプリングスイッチ抵抗(RSS)の値は、CHOLDの充電時間に直接影響します。サンプリングスイッチ抵抗(RSS)はCPU電圧(Vdd)に依存します(図11-2参照)。外部抵抗の値は2.5kΩ以下を推薦します(外部抵抗の値が小さくなると、サンプリング時間も短くなります)。

アナログ入力チャンネル選択後(変更後)、サンプリングを完全に完了させ、A/D変換を開始する必要があります。最短サンプリング時間を計算するには、方程式11-1を用いてください。

この方程式は最大誤差をA/D変換モジュールの分解能以下に抑えるためのものです(訳注:かなり意訳)。

最短サンプリング時間を得るためのTACQについては、PICmicro Mid-Range MCU Family Reference Manual(DS33023)を参照してください。

  画像の説明

  注1: 参照電圧(VREF)はそれ自身で影響を打ち消すので、方程式に影響しません。

2: サンプリングコンデンサ(CHOLD)はA/D変換後も放電されません。

3: アナログ入力信号のための外部抵抗は10KΩ以下を推奨します。これはピンの漏洩電流量に基づきます(訳注:?)。

4: 変換完了後、次のサンプリングを開始する前に、最低2TADの待ち時間が必要です。2TAD経過するまで、サンプリングコンデンサが選択したA/D変換チャンネルに接続されないためです。

  画像の説明

  11.2 A/D変換クロックの選択

各ビットごとのA/D変換クロックはTADで示され、8ビット変換ごとに9TAD必要です。

TADは以下の7段階から、適切にユーザが設定する必要があります。

・2TOSC

・4TOSC

・8TOSC

・16TOSC

・32TOSC

・64TOSC

・内蔵A/D変換モジュールのRCオシレータ(2-6μs)

正しくA/D変換を行うには、TADが1.6us〜6.4usの範囲になるようにする必要があります。CPU周波数から求められる適切なTADとの関係を表11-1に示します。

  11.3 アナログ入力ピンの設定

ADCON1とTRISAレジスタはA/D変換入力ピンの役割を制御します。アナログ入力を行うピンは、TRISビットをセットして、入力に設定する必要があります。もしTRISビットがクリア(出力)だと、デジタル出力レベル(VOHまたはVOL)に変換されてしまいます。

なお、A/D変換はCHSビット<2:0>とTRISビットの状態とは無関係に動作します。

注意1: アナログ入力に設定された全てのピンはクリア(Lowレベル)として読み出されます。デジタル入力に設定されたピンでも、アナログ入力は可能で、正確に変換が行われます。

2: ただし、デジタル入力に設定された各ピンのアナログレベル(AN1:AN0ピンを含む)を与えると、入力バッファにより必要以上の電力消費を引き起こします(訳注:チト怪しい)。

注1: RCオシレータのTADは通常4us程度、概ね2us〜6us程度です。

2: CPU周波数が1MHz以上の場合にRCオシレータを用いる場合、SLEEP中に行うことを推奨します。

3: CPUがLFバージョンの場合、15.0節"電気的特性"を参照して下さい。

  画像の説明


2005-09-17(Sat) 「紅の魔爪」イージス完成

  さて、先週の日曜からボチボチ製作してきた、ガンダムSeedの「イージスガンダム」だが、やっと完成することができた。別に改造もしてないし、色も塗っていない素組みであるが、最近のガンダムのプラモデルは、特に色を塗らなくとも、ほとんど完璧にアニメに出てくる状態のままの色を再現する。昔のガンプラが、色を塗らないと「真っ白」一色だったコトを考えると、大した進化である。

  接着剤が必要ないというのも恐ろしい進化である。やるコトは、部品を切り出して、ハメるだけ。少々モノ足りないくらいであるが、まぁ、一部スキ間が空く部分はあるから、必要に応じて接着してもいいだろうし、こだわるなら、パーティングラインを消してもいい。もちろん塗ってもいい。そういう意味で、素晴らしい進化であると思う。そうそう、気がつけば「バリ」というモノも皆無になっている。技術の進化は恐ろしい。

  もひとついうと、プラモデルの造形や、可動の仕組みなんかも、かなり進化している気がする。それなのに、製品ラインナップは充実しまくりだ。もともと、プラモデルを売ってナンボ、というガンダムという市場であるが、Seedに登場するモビルスーツの量は、ファーストに比べ、ハンパでなく多い。全部がプラモデル化されているワケではないが、概ね1/100スケールと1/144スケールの2タイプが出ており、主力機では4タイプくらい出ている。それもこれも、やはりCADの進化のおカゲだろう。きっと、相当に設計作業を簡略化できているに違いない。しつこいようだが、素晴らしい技術の進化である。

  画像の説明 画像の説明

  さて、この辺でムズかしい話はヤメて、完成したイージスを見てもらおう。Seedのプラモデルを作ったのは初めてなので、他と比較はできないが、このイージスは変形するため、他のモノより基本的な強度が劣っているとは思うが、ちゃんと自立するし、スタイルもかなりのモノだと思う。昔のモノに比べたら、ポーズの自由度も格段に高い。かなり遊べるといえよう。

  画像の説明

  そして、変形してツメ形状にしてみる。これまた、素晴らしくちゃんと変形する。ここまでちゃんと変形すると、メカニックデザイナーは、紙上でのデザインなどせず、ハナっからCADでデザインをしているとしか思えない。たぶん、そうなのだろう。

  画像の説明

  ちょっと笑いをとって申し訳ないが、こういう「ロボット→別の形態」を再現する場合、一番問題になるのが、頭と手の処理である。ロボットではない形態で、頭や手が出ているとチョット醒める。その点、イージスは手は取り外し、頭はうまく隠れるようにデキている……が、出そうと思えば出せてしまう。あー、スマン。とんでもなくカッコ悪いポーズを作ってしまった。ごめーん。

  画像の説明

  あまりにカッコ悪いポーズを披露したからか、突然イージスがキレ、オイラに向かってきた。ツメ形状では、相手に取り付いて、スキュラという大砲を撃つのが、イージスの基本戦法である。すんでのトコロで、アスランの説得に成功し、スキュラを撃たれずにすんだ。あー、よかった。

  プラモデルの箱に書いてあるウンチクを読むと「本来この機体は他の4機(デュエル、バスター、ストライク、ブリッツ)との連携行動においての指揮機的な役割を果たすため、その名を冠されたと思われる」とあるが、その名の「イージス」とは「盾」の意味であり、わかったようなわからないような感じ……。

  画像の説明

  そんなことは置いておいて、とりあえず、ひととおり遊んだ後は、玄関に置いてあるクマの縫いぐるみに組み付かせておくコトにした。と、いうわけでこのイージス、かなり遊べるプラモデルである。なんだか、ストライクも作って、そいつに組み付かせておきたい気もするが、また、気が向いたらストライクも作ることにしよう。

  というワケで、ココんトコ仕事が忙しく、毎晩、右手、左手、右足、左足と、ノンビリと作ってきたが、久々に楽しい時間を過ごすコトができた。そういえば、昔よくガンプラを作ったなぁ、と懐かしく思い出す諸兄は、最近の製品を試してみてはいかがであろう。オイラはかなり楽しめたぞ。オススメである。うほうほ。


2011-09-17(Sat) 照明のリモコン制御化、外伝

  遅ればせながら、習作を踏まえ、自分の工房の照明をリモコン化するプロジェクトを開始する。というか、以前からブレッドボード上の回路でソフトは組んでいたのだが、それに一応の目処が付いたので、ブツを作り出したという感じ。

  今回は、電池ではなくAC100Vから給電する仕様。単に照明をリレー制御するだけでなく、赤いLEDをゼビウスっぽく点滅させたり、温度や照度を赤外線通信で応答する機能も持たせる予定。

  画像の説明

  とりあえずメイン基板は完成、と。


2016-09-17(Sat) ラズベリーパイ3B(Raspbian)で電子工作を始める

  先日、PICマイコンの開発環境を整えたことだし、ラズベリーパイ側をイジり始める。現在、ウチにはラズベリーパイが4台(A, B,B+, 3B)あるが、B+は無線アクセスポイント、Bは無線コンバータとして、実用に供しているので、3Bで開発を行う。なお、3BのNOOBSではpidoraが選べなかったので、Raspbianが入っているが、まぁ、開発する限りでは似たようなもんだろう。

  自作してもよかったが、面倒くさいので秋月で買っておいた、ブレッドボード用の変換コネクタをセットして開発開始。

  画像の説明

  まずは、定番のLEDの点灯。GPIOの状態を確認するため、まずはgpioコマンドを一発。

user@raspberrypi:~ $ gpio readall
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |★
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+

  適当なポートを出力モードに切り替える。

user@raspberrypi:~ $ gpio -g mode 25 out
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | OUT  | GPIO. 6 | 6   | 25  |

  あとは、ポートの電圧を上げ下げするだけ。

user@raspberrypi:~ $ gpio -g write 25 1
user@raspberrypi:~ $ gpio -g write 25 0

  シェルスクリプトでLEDを点滅。こりゃ、お手軽じゃ。

user@raspberrypi:~ $ while true; do gpio -g write 25 1; sleep 0.5; gpio -g write 25 0; sleep 1; done

  次はシリアルポート、なのだが、どうもPi3からBluetoothとの兼ね合いで扱いが厄介らしい。とりあえず、GPIOの14番をシリアル送信モードに切り替えてみた。

root@raspberrypi:~# gpio -g mode 14 ALT0 
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |

  でもってraspi-configでシリアルを有効にしてみた。

root@raspberrypi:~# raspi-config 
9 Advanced Options
A7 Serial
<いいえ>
<了解>

  この作業は、結局、以下の記述と等価らしい。

root@raspberrypi:/boot# diff config.txt.org config.txt
> enable_uart=0
root@raspberrypi:/boot# diff cmdline.txt.org cmdline.txt
< dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
> dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

  再起動して「echo 'aaa' > /dev/ttyAMA0」してみたが、bashが100%になってプロセスストール。通信速度を変えてみる。

root@raspberrypi:~# stty speed 115200 < /dev/ttyAMA0 
115200
root@raspberrypi:~# stty -g < /dev/ttyAMA0 
0:4:1cb2:a30:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0

  更に謎の設定を追加してみる。

root@raspberrypi:/boot# diff config.txt.org config.txt
59a60,61
> enable_uart=0
> dtoverlay=pi3-miniuart-bt

  再起動すると、/dev/ttyS0が現れた。「echo 'aaa' > /dev/ttyS0」してみたが、プロセスストールはしなくなったものの、出ない。

  config.txtを「enable_uart=1」を変更してみる。

root@raspberrypi:/boot# diff config.txt.org config.txt
> enable_uart=1
> dtoverlay=pi3-miniuart-bt

  再起動して「echo 'aaa' > /dev/ttyAMA0」すると、なにやらシリアルに反応が得られた。通信速度を合わせてやったところ、いつもの自作のserialDebugスクリプトによる受信に成功した。

  とりあえず、PICの学習リモコンでも操作できるようにしてみるかな。


2017-09-17(Sun) 糸を紡いでみる

  実は5月の初旬、ひょうたんと同時に、綿花の種も蒔いていたのだが、めでたくワタを収穫することに成功した。というか、ちょっとワタを育ててみたい、というレベルだったのに、もういいよっていうくらい実が付いた。

  で、お遊びで「糸紡ぎ」をしてみた。といっても、やり方はハイジのおばあさんと、某博物館でチラッと見た程度。トガった棒の付いた弾み車が必要なので、竹ひごとCDケースの蓋で即興で作る。

  画像の説明

  少し繊維を引き出して、先端付近に巻きつけ「撚る」。撚りながら、手のワタを遠ざけ、撚りを続ける。一定の太さにするのが難しい。30cmくらい撚ったら「巻き付け」て、また「撚る」。その繰り返し。

  結構、夢中になれるので楽しいといえば楽しい。なんとなく糸っぽいものができたが、Tシャツへの道はガンダーラより遠いな。

  さて、昨日のレザークラフトだが、カミさんも作りたいというので、適当に型に切ってやったら、縫い合わせてそれっぽいカードホルダが完成した。

  画像の説明

  嗚呼、素晴らしき哉、家内制手工業。


2021-09-17(Fri) 人狼大会、入賞カップ、完成

  職場でオレプロデュースの人狼大会を実施したのだが、それの入賞者賞品が上がってきた。なかなかの出来栄えだ。キャラデザインは自分じゃなく、心得のある絵師に描いてもらったのだが、とても気に入っている。

  画像の説明

  そして、実はここに10進-16進-アスキーコード表が隠されていて、実用性もタップリだったりするのである。

  画像の説明

  元データ。製作を依頼したのは「オリジナルプリント.jp」であるが、十分に期待に見合う品質であった。

  画像の説明