ワレ、セツシヨクフリヨウ、ホシユウセリ・・・
2013-09-30
申請中のIC-821が漸く審査中になり、ACAGへの準備が着々と進んでいく中、一昨日修理し損ねたステルス君のマッチングボックス用ロータリースイッチを買って帰ってきました。今日の外出は、実にタイムリーだと言えます
一昨日修理したコイルは下の写真のような感じで、コイルがほどけないように巻いてあるタイラップを交換しました。手前にぶら下げてあるのが、これまで頑張っていたもの。

さて、夕刻に帰宅して、早速マッチングボックスを外して蓋を開け、アンテナ端子に51Ωのカーボン抵抗、リグ側にはクラニシ君をつないでスイッチをカチカチやったんですが、どうも接触不良の感じがありません・・・。そこで、シゲシゲと一昨日付け替えたスイッチの配線を見ると、何と接続が間違っていました
その間違った接続のところにスイッチを合わせると「開放」・・・要はこれを「接触不良」と勘違いしたようで、配線を正してカチカチやると、クラニシ君のインピーダンス表示(って、まぁ針ですが・・・)がきちんと変わっていきました。ここまで確認しろってぇの・・・。
ついでに、アンテナ端子を見ると・・・。

白く粉を吹いたようになってしまっています。左側は少しヤスリで削ってみたもので、漸く地金が見えてきたところ・・・ネジ部分は傷んでいませんでしたので、きっとネジ山の部分で導通していたんでしょうね。これも綺麗にお掃除。

補修完了。同じボックスの本体と蓋・・・そもそも同じ色なんですが、蓋の部分は「空側」ですから、思いっきり日焼けしています。来春ぐらいで寿命かなぁ・・・でもまぁよく保った方でしょう。タッパウェアとは違うね
元に戻す頃には外は真っ暗。それでもベランダですから作業はできます。「接触不良」ともオサラバし、各バンドのSWRを測ると、40,20,15,12mが1.2以下、10mだけ1.8程度・・・即ち元に戻りました。10mは、短縮コンデンサ容量をトリマかなんかで微調整してやる必要がありそうですが、今日の所はここまでとしました。
昨日までより若干CONDXが落ちてしまったようで、我が設備で呼べるようなDXはおらず・・・それでも1つ、コンテストに向けての悩みが減りました

一昨日修理したコイルは下の写真のような感じで、コイルがほどけないように巻いてあるタイラップを交換しました。手前にぶら下げてあるのが、これまで頑張っていたもの。

さて、夕刻に帰宅して、早速マッチングボックスを外して蓋を開け、アンテナ端子に51Ωのカーボン抵抗、リグ側にはクラニシ君をつないでスイッチをカチカチやったんですが、どうも接触不良の感じがありません・・・。そこで、シゲシゲと一昨日付け替えたスイッチの配線を見ると、何と接続が間違っていました

ついでに、アンテナ端子を見ると・・・。

白く粉を吹いたようになってしまっています。左側は少しヤスリで削ってみたもので、漸く地金が見えてきたところ・・・ネジ部分は傷んでいませんでしたので、きっとネジ山の部分で導通していたんでしょうね。これも綺麗にお掃除。

補修完了。同じボックスの本体と蓋・・・そもそも同じ色なんですが、蓋の部分は「空側」ですから、思いっきり日焼けしています。来春ぐらいで寿命かなぁ・・・でもまぁよく保った方でしょう。タッパウェアとは違うね

元に戻す頃には外は真っ暗。それでもベランダですから作業はできます。「接触不良」ともオサラバし、各バンドのSWRを測ると、40,20,15,12mが1.2以下、10mだけ1.8程度・・・即ち元に戻りました。10mは、短縮コンデンサ容量をトリマかなんかで微調整してやる必要がありそうですが、今日の所はここまでとしました。
昨日までより若干CONDXが落ちてしまったようで、我が設備で呼べるようなDXはおらず・・・それでも1つ、コンテストに向けての悩みが減りました

今秋の初EU
2013-09-29
ミニ・エレキー製作と並行して、そろそろ「我らQRPer」(誰達のことだ
)にも通用するDXシーズンに移行してきただろうと、4,5日前から帰宅後ワッチを開始し、EU方面がそれなりに聞こえて来始めたなぁ・・・と静観ムードだったんですが、昨日の午後に早々と秋のコンテスト前のチェックとばかりにアンテナ周りを見て回り、「外回りの環境整備」を行うことにしました。
ステルス君のウィークポイントは、両翼のコイルと西側エレメントを下に引っ張っている「荷造りの紐」、そしてマッチングボックスなんですが、コイルは比較的元気なため簡単な補修、紐はお取り替え。マッチングボックスについては接触不良が頻出してきたんで、買い置きのロータリー・スイッチと交換。ところが、目星を付けた方でない方のロータリー・スイッチも接触不良で、結局もう一つ調達しなければならない羽目に陥り、土曜日中の「完治」はできなくなりました
その後、17時J頃から12/10mを聞き始めると、SM、G、4Z・・・などなど、入り乱れての入感。特に12mの国内局がもの凄いエコーで聞こえてくる始末・・・CONDXはまずまずの様子です。4Zに拾って貰いたかったんですが、そこそこ呼ばれていたのと暫くしたら弱くなってしまったため10Call くらいで諦め、とりわけ強かったYO局を呼んでみたものの「QRZ
」が関の山でした。
今日は、リグ-SWR計間のジャンパが今のレイアウトでは短か過ぎて使い難くなったことから、巨大なトロイダルコアに3D2Wを14回巻きしたものをこしらえたり、XC8にけんかを売ったり(これは、この記事の趣旨ではありませんので、また別の記事でご紹介するかも・・・)して夕方を迎え、昨日と同じようにワッチ開始。すると、やはり17時半J頃からに東欧が一斉に入感。今日は10mでも責めてみようか・・・と暫くワッチしていると、妙に強力なCQ連呼のYT局(Serbia)を見つけました。呼んでみるとプリフィックスは取ってくれたんで、2回コールしたら「
付き」で応答あり、何とか559を貰って(相手はピークで599)QSO成立です
ステルス君、健在振りをアピール(
)
多分、SSNは昨日より劣るものの40くらい(NICTでね)はあると思われ、地磁気が大人しいことも後押ししてくれたんでしょうが、ひとまず「サイクル24終わり際」の今秋のQRP-DX開幕となりました
さらにちょっと自慢。実に1ヶ月ほど掛けてこしらえてきたミニ・エレキーによる初QSOとなりました
TS-590のCW送出設定を「バグキー」かつ「長短点逆設定」にすると、パドルを挿す方のキージャックでも外部エレキーが使えるようになったため便利、便利
本当は「自作QRP機で初のDX-QSO」ってのがカッチョイイんですが、自作エレキーというだけでもちょっと嬉しい出来事となりました。

ステルス君のウィークポイントは、両翼のコイルと西側エレメントを下に引っ張っている「荷造りの紐」、そしてマッチングボックスなんですが、コイルは比較的元気なため簡単な補修、紐はお取り替え。マッチングボックスについては接触不良が頻出してきたんで、買い置きのロータリー・スイッチと交換。ところが、目星を付けた方でない方のロータリー・スイッチも接触不良で、結局もう一つ調達しなければならない羽目に陥り、土曜日中の「完治」はできなくなりました

その後、17時J頃から12/10mを聞き始めると、SM、G、4Z・・・などなど、入り乱れての入感。特に12mの国内局がもの凄いエコーで聞こえてくる始末・・・CONDXはまずまずの様子です。4Zに拾って貰いたかったんですが、そこそこ呼ばれていたのと暫くしたら弱くなってしまったため10Call くらいで諦め、とりわけ強かったYO局を呼んでみたものの「QRZ

今日は、リグ-SWR計間のジャンパが今のレイアウトでは短か過ぎて使い難くなったことから、巨大なトロイダルコアに3D2Wを14回巻きしたものをこしらえたり、XC8にけんかを売ったり(これは、この記事の趣旨ではありませんので、また別の記事でご紹介するかも・・・)して夕方を迎え、昨日と同じようにワッチ開始。すると、やはり17時半J頃からに東欧が一斉に入感。今日は10mでも責めてみようか・・・と暫くワッチしていると、妙に強力なCQ連呼のYT局(Serbia)を見つけました。呼んでみるとプリフィックスは取ってくれたんで、2回コールしたら「



多分、SSNは昨日より劣るものの40くらい(NICTでね)はあると思われ、地磁気が大人しいことも後押ししてくれたんでしょうが、ひとまず「サイクル24終わり際」の今秋のQRP-DX開幕となりました

さらにちょっと自慢。実に1ヶ月ほど掛けてこしらえてきたミニ・エレキーによる初QSOとなりました


ミニ・エレキーの再改良
2013-09-28
そろそろ、ブログの題名を替えても良さそうですね・・・『過渡現象 ~エレキーでもQRPっておもろいのん?~』
さて、結局はパドルのプルアップ抵抗を10KΩ⇒47KΩに変更しました。これで「チャタ取り」としての時定数は、PICが「LOW」と認識する0.8V以下の区間が「-ln(1-(0.8/3))・47KΩ・0.0022μF」で求められる「32μs」程度になったと同時に、パドル押下における消費電流は約1/5と省エネになりました。
さらに「コメント主」たる(わぁ・・・乗っ取られたか
)我が知恵袋さんから「トランジスタスイッチのベース・グランド間抵抗は無意味じゃね
」というこの記事のコメントに合点し、これも取っ払いました。何となく、NPNのトランジスタスイッチには、ON⇒OFF時の安定動作に必須だと思い込んでいましたが、低VDDに高抵抗では確かに無意味ですね
諸元と回路図をリニューアルしました。
◆ 諸元
そんなに変わっていませんが、一応掲載。黄色の文字部分が、ここ一連の改良ポイントになります。
パドルの長・短点挟みっぱなしで連続送信している状態が最も「電気を食う状態」ですが、これで0.32mA程度ですので、諸元上は「Max 0.4mA」にしてあります。
◆ 回路図
回路図は以下の通りです。上の説明の通り修正しました。

スイッチ類のプルアップは、ひとまず10KΩとしたままですが、まぁパドルに比べりゃ出番は圧倒的に少ないですからいいでしょう。
◆ 残る宿題など
今のプログラムは、タイマ1を符号生成用の基本タイマとして使っており、付随するポートルックインは必要に応じてタイマ0、オートCQはタイマ2を使っています。特にオートCQは数秒間の「待ち」が存在するため、この部分を「寝て待つ」という方法にするとさらに省エネになります。「寝て待っていないときの消費電流」は実測で120μA程度であるため、まぁ気が向いたら直そう程度に考えています。
※2013/09/28
ちょっと回路を手直ししましたので差し替えます。
・電源瞬断保護用ケミコンの容量が大きいためスイッチを切ってもなかなかOFFにならず、メモリ切替に時間が掛かるため、スイッチOFF時に100Ωで放電
・MODE切換用のトグルスイッチについて、一瞬不定となる時間を短くするため、RA4-グランド間に0.0022μFのコンデンサを接続して影響期間を短くした
さて、結局はパドルのプルアップ抵抗を10KΩ⇒47KΩに変更しました。これで「チャタ取り」としての時定数は、PICが「LOW」と認識する0.8V以下の区間が「-ln(1-(0.8/3))・47KΩ・0.0022μF」で求められる「32μs」程度になったと同時に、パドル押下における消費電流は約1/5と省エネになりました。
さらに「コメント主」たる(わぁ・・・乗っ取られたか



諸元と回路図をリニューアルしました。
◆ 諸元
そんなに変わっていませんが、一応掲載。黄色の文字部分が、ここ一連の改良ポイントになります。
項目 | 内容 | 備考 |
動作仕様 | スクイーズモードB | |
長短点 メモリ | 有り | |
メモリ禁止 | 短点の50% | 余計な長短点送出防止 |
ウエイト | 長点:短点 1:3固定 | |
メッセージ 送出機能 | 4メッセージ 同時使用2パターン | 電源投入時に選択 EEPRROM格納で 書換可 |
メッセージ 書換機能 | パドル操作による | |
送信速度 | 15-40WPM | スイッチ操作により送信中 でも可変可能 |
KEY出力 | オープンコレクタ | 20mAまでキーイング可能 |
電源 | 単4×2本 | |
消費電流 | 待機時:1μA未満 送信時:0.4mA Max | 送信時平均0.2mA程度 |
パドルの長・短点挟みっぱなしで連続送信している状態が最も「電気を食う状態」ですが、これで0.32mA程度ですので、諸元上は「Max 0.4mA」にしてあります。
◆ 回路図
回路図は以下の通りです。上の説明の通り修正しました。

スイッチ類のプルアップは、ひとまず10KΩとしたままですが、まぁパドルに比べりゃ出番は圧倒的に少ないですからいいでしょう。
◆ 残る宿題など
今のプログラムは、タイマ1を符号生成用の基本タイマとして使っており、付随するポートルックインは必要に応じてタイマ0、オートCQはタイマ2を使っています。特にオートCQは数秒間の「待ち」が存在するため、この部分を「寝て待つ」という方法にするとさらに省エネになります。「寝て待っていないときの消費電流」は実測で120μA程度であるため、まぁ気が向いたら直そう程度に考えています。
※2013/09/28
ちょっと回路を手直ししましたので差し替えます。
・電源瞬断保護用ケミコンの容量が大きいためスイッチを切ってもなかなかOFFにならず、メモリ切替に時間が掛かるため、スイッチOFF時に100Ωで放電
・MODE切換用のトグルスイッチについて、一瞬不定となる時間を短くするため、RA4-グランド間に0.0022μFのコンデンサを接続して影響期間を短くした
チャタ取りの時定数考察
2013-09-27
未だやってるのか・・・とお思いでしょうが、未だやってます
昨晩投稿のつもりが今日になってしまった「パドルのチャタ見参」・・・ってか直前の記事について、ちょっと自問自答して「おかしいぞ」ということに気付き、午後からの会社イベント中にこっそりノートの裏に落書きしていた奴を清書しました。

今回作ったミニ・エレキーのパドル入力回路はプルアップ抵抗+時定数用コンデンサの組み合わせで至ってシンプルですが、昨日の時定数計算について「LOW/HIGHの閾値を50%」と決めてしまったところがどうにも引っ掛かり、「確か、PICのIOポートのLOW閾値は『0.8V以下』だっとような・・・」と、出勤途上のスマホでデータシートをチェック。まんざら、記憶力は落ちていませんでした
チャタ発生時にHIGH⇒LOWの動きで上図のように「パドルの接点がバウンドした」という場面を仮定すると、接点がバウンドで離れている時間が短い場合なら、現状の時定数の範囲内だと「OK
」ですが、それより長い場合はいわゆる「グレーゾーン」・・・不定区間ができいてしまいます。このことから考えると、今の時定数ではやはりちょっと短か過ぎ・・・。現ミニ・エレキーの抵抗は10KΩ、コンデンサ容量は0.0022μFですから、「-ln(1-(0.8/3))・10KΩ・0.0022μF」⇒6.8μsで0.8V超えになってしまいます。
一方、直前記事のチャタ波形を見ると、波々の怪しげな部分・・・チャタっていそうな部分が50μs程続いていますから、CRの時定数は、少なくとも現状の10倍程度はあっても良さそう。これは、抵抗値を上げてさらなる省エネにする「良い口実」になりそうですね
昨日書いたように実はソフト的な逃げも打ってありますから、この対策自体はあんまり意味はないんですが、例えば抵抗値を10KΩ⇒47KΩに上げても良さそう・・・ということは、省エネ仕様を目指す部分では「イイ感じ」になりそうです。またしても、改造に取り掛かろうかな

昨晩投稿のつもりが今日になってしまった「パドルのチャタ見参」・・・ってか直前の記事について、ちょっと自問自答して「おかしいぞ」ということに気付き、午後からの会社イベント中にこっそりノートの裏に落書きしていた奴を清書しました。

今回作ったミニ・エレキーのパドル入力回路はプルアップ抵抗+時定数用コンデンサの組み合わせで至ってシンプルですが、昨日の時定数計算について「LOW/HIGHの閾値を50%」と決めてしまったところがどうにも引っ掛かり、「確か、PICのIOポートのLOW閾値は『0.8V以下』だっとような・・・」と、出勤途上のスマホでデータシートをチェック。まんざら、記憶力は落ちていませんでした

チャタ発生時にHIGH⇒LOWの動きで上図のように「パドルの接点がバウンドした」という場面を仮定すると、接点がバウンドで離れている時間が短い場合なら、現状の時定数の範囲内だと「OK

一方、直前記事のチャタ波形を見ると、波々の怪しげな部分・・・チャタっていそうな部分が50μs程続いていますから、CRの時定数は、少なくとも現状の10倍程度はあっても良さそう。これは、抵抗値を上げてさらなる省エネにする「良い口実」になりそうですね

昨日書いたように実はソフト的な逃げも打ってありますから、この対策自体はあんまり意味はないんですが、例えば抵抗値を10KΩ⇒47KΩに上げても良さそう・・・ということは、省エネ仕様を目指す部分では「イイ感じ」になりそうです。またしても、改造に取り掛かろうかな

パドルのチャタを見てみよう!
2013-09-27
エレキー製作の課題に、パドルのチャタをどう防ぐか・・・というのがあります。今回のミニ・エレキーでは、長・短点押下の初っ端は「割り込み」(=1ショット)で検出し、その後「メモリ禁止区間」を短点の半分の時間分設けており、この間に押されたパドルは読み捨てますから、結果的にこの禁止区間が「チャタ取り」を行っていることになります。
一方、長・短点メモリー区間はルックインになっているため、送出中でない側の押下を周期的に(4ms毎に)拾いに行きますが、一度でも検出されたら押下として認めるようにしています。即ち、こちらには「チャタ取り」が利いていませんが、特段の不都合は生じません。なぜなら、この区間は送出中でない方のパドル操作を狙い打ちで待っていることと、周期でルックインしているため滅多に「拾い漏れ」しないためです。万一、多少チャタって読み飛ばしても「次があるさ・・・」といった案配です。
ハード的には、スイッチ部に重畳しておく消費電流をケチるあまり大きな抵抗でプルアップするとノイズを拾い易くなる・・・という部分に注意が必要で、現時点では 「10KΩと0.0022μF」の組み合わせでひとまず落ち着かせてしまいました。誤作動しない程度の抵抗値(10KΩ)にしているつもりですが、この辺りも「エイヤ」であり理屈になっていません。
本当は、全体の省エネ化のためにもう少し大きな抵抗値、或いは「弱プルアップ」にしたいなぁ・・・と思っていますが、そもそもパドルはどの程度チャタるのかを知らないと、全てが机上の空論になってしまいますね。
そこで実験。我が主戦パドルに47KΩの抵抗と超ヘタレたゴミ箱行き9V電池(ディップメータに入れっぱなしでほぼ放電しきった奴:0.2Vくらい出ています)を繋ぎ、これをOFF/ONさせたときの様子をオシロで見てみました。ストレージオシロならこの様子が簡単に記録できるんですが、まぁ「お遊び」ですから、我がアナログオシロの画面をデジカメのビデオモードで撮影し、波形の動きがあった部分のコマをパソコンのプリントスクリーンでコピペしました。
パドルを普通に押してもそんなにチャタは見られない感じですが、乱打すると時折上手く波形が出てきます。偽ストレージオシロ操作は、デジカメでビデオ撮影しながらパドル連打という荒技
そして、上の写真が上手く取れた瞬間の画像です。立ち上がり部分は、こんな感じかな・・・というところを破線で補っています。
左側は時間を補足していますが、パドルがOFFからONになっていく過程で過渡的に上昇していく時間は大凡19μSくらいで、その後怪しげな波々が続いて72μs後に収束しています。その後ろの四角で囲った奴もほぼ同様でしょう(波々が少し短いかな・・・程度)。これが本当なら、「50μs程度のざわめき」にビクともしない値で時定数を作ってやればいいことになります。普通のスイッチより、案外短いチャタなんだなぁ・・・。
ミニ・エレキーのCR時定数「10KΩと0.0022μF」の組み合わせについて、「T=-ln(0.5)CR」(丁度50%を閾値とする)で計算すると約118μsとなりますから、かなりイイ線いっているようです
ただ、この実験の接続配線が超テキトー・・・19μsも掛かって上がってくるということは、ヘタレ電池につないだ47KΩに対して数百pFの「浮遊容量」がある計算になります。幾ら何でもちと大きいかな
プローブ自体の浮遊容量が18pFですが、ワニ口リード線の空中配線ってこんなものかなぁ
その上、立ち下がりは真っ直ぐだし・・・。
何れにしても、パドルは「かなり大人しいスイッチ」であることは解りましたし、そんなに大袈裟に「チャタってないかなぁ
」と不安になるようなものでもないということも解りましたので、ひとまずヨシ
として寝ましょうかね・・・。
※2013/09/27
CR回路の応答が指数関数であること、PICのHigh/Lowの閾知が0.8Vくらいなことを考慮すると、時定数としてはやはり小さ過ぎるようですね・・・。この辺り、再計算が必要そうです。
一方、長・短点メモリー区間はルックインになっているため、送出中でない側の押下を周期的に(4ms毎に)拾いに行きますが、一度でも検出されたら押下として認めるようにしています。即ち、こちらには「チャタ取り」が利いていませんが、特段の不都合は生じません。なぜなら、この区間は送出中でない方のパドル操作を狙い打ちで待っていることと、周期でルックインしているため滅多に「拾い漏れ」しないためです。万一、多少チャタって読み飛ばしても「次があるさ・・・」といった案配です。
ハード的には、スイッチ部に重畳しておく消費電流をケチるあまり大きな抵抗でプルアップするとノイズを拾い易くなる・・・という部分に注意が必要で、現時点では 「10KΩと0.0022μF」の組み合わせでひとまず落ち着かせてしまいました。誤作動しない程度の抵抗値(10KΩ)にしているつもりですが、この辺りも「エイヤ」であり理屈になっていません。
本当は、全体の省エネ化のためにもう少し大きな抵抗値、或いは「弱プルアップ」にしたいなぁ・・・と思っていますが、そもそもパドルはどの程度チャタるのかを知らないと、全てが机上の空論になってしまいますね。
そこで実験。我が主戦パドルに47KΩの抵抗と超ヘタレたゴミ箱行き9V電池(ディップメータに入れっぱなしでほぼ放電しきった奴:0.2Vくらい出ています)を繋ぎ、これをOFF/ONさせたときの様子をオシロで見てみました。ストレージオシロならこの様子が簡単に記録できるんですが、まぁ「お遊び」ですから、我がアナログオシロの画面をデジカメのビデオモードで撮影し、波形の動きがあった部分のコマをパソコンのプリントスクリーンでコピペしました。

パドルを普通に押してもそんなにチャタは見られない感じですが、乱打すると時折上手く波形が出てきます。偽ストレージオシロ操作は、デジカメでビデオ撮影しながらパドル連打という荒技

左側は時間を補足していますが、パドルがOFFからONになっていく過程で過渡的に上昇していく時間は大凡19μSくらいで、その後怪しげな波々が続いて72μs後に収束しています。その後ろの四角で囲った奴もほぼ同様でしょう(波々が少し短いかな・・・程度)。これが本当なら、「50μs程度のざわめき」にビクともしない値で時定数を作ってやればいいことになります。普通のスイッチより、案外短いチャタなんだなぁ・・・。
ミニ・エレキーのCR時定数「10KΩと0.0022μF」の組み合わせについて、「T=-ln(0.5)CR」(丁度50%を閾値とする)で計算すると約118μsとなりますから、かなりイイ線いっているようです

ただ、この実験の接続配線が超テキトー・・・19μsも掛かって上がってくるということは、ヘタレ電池につないだ47KΩに対して数百pFの「浮遊容量」がある計算になります。幾ら何でもちと大きいかな


何れにしても、パドルは「かなり大人しいスイッチ」であることは解りましたし、そんなに大袈裟に「チャタってないかなぁ


※2013/09/27
CR回路の応答が指数関数であること、PICのHigh/Lowの閾知が0.8Vくらいなことを考慮すると、時定数としてはやはり小さ過ぎるようですね・・・。この辺り、再計算が必要そうです。
LFタイプの検証と回路直しのオマケ
2013-09-25
PIC12F1822はXLPに非ず・・・という記事を書きっぱなしではちょっと無責任かな
っと思ったというより、本当にそうなのかを確認すべく、帰宅途中に秋葉にササッと寄ってお目当ての品を買ってきました。

こんな写真じゃ判らないなぁと思いつつも掲載・・・正真正銘のPIC12LF1822です。136円也。沢山買っても仕方がないんで、ひとまずミニ・エレキー用に1つ入手。
さて、これでプログラムして早々に実験を・・・と思ったんですが、コメントを頂いた「BOR」(Brown-out Reset)についてのフェールセーフ(電池の接触不良による瞬断対策)として、ケミコンを1つ入れておくことにしました。まぁ「精神衛生」以外の何者でもない気もしますが・・・。そして、回路図を何気なく見渡したら、な、な、なんと・・・トランジスタスイッチの部分の抵抗値が間違っていることに気づきました。
そもそも、hFEの大きなトランジスタを選び、最低でもベース電流の400倍程度のキーイングはいけるだろう・・・と踏んで値を決めたつもりが、ベース-グランド間の抵抗と間違えていました
ここで、落ち着いて思案。
単4×2の3Vの電池が消耗して仮に1.8Vまで落ちたと仮定し、この状態でもベース電圧0.6V以上を保証してやれば、最後の最後(
)までエレキーが動作できるとします。すると、ベース抵抗の分圧は1:1で良さそう(ベース電位は0.9Vとなり、0.6Vより若干余裕有り)ですから、コレクタのスイッチング電流を20mA前提でベース電流が足りるように(流し過ぎないように)選び、同じ値の抵抗でベースとグランドを接続してやればよいことになります。
今までベース抵抗は10KΩでしたから300μAも流れていたわけですが、こうなるとこのhFE倍(450倍)・・・何と135mAもコレクタ電流を流せる状態にオーバドライブしていたことになります。逆に20mAをMaxと考えれば44μA程度のベース電流で良いはずで、ベース抵抗は67KΩくらいまで上げられそうです。そこでひとまず「47KΩ」としました。これでベース電流としては67μA、ベース-グランド間が同じく47KΩですから、キーイングがONになったときの消費電流は134μAまで小さくできそうです。

・・・というわけで、回路図を書き換えました。電源スイッチ横の47μF(ケミコン)追加、RA5とベース間の抵抗値を10KΩ⇒47KΩというマイナーチェンジです。この通り「実機」を直して、いざP12LF1822の出番。プログラムのヘッダファイル指定を変更してリコンパイルし、PICkit3でプログラムしました。果たして

SLEEP中の様子です・・・って、全然証拠写真になっていませんが、これでちゃんと動いています
カタログスペックを読み取ると、SLEEP中は30nA程度の筈。秋月のこのデジタルテスタでは測定不能な領域ですね。その他、パドル操作中の消費電流がやはり断然減りました。これは大いに、ベース抵抗の見直しによる部分が大きく、長短点同時押下で最大電流が1mAを若干超えていたものが、800μA程度(900μAにはならない程度)にまで抑えることができました。これは、上記の「300μA⇒134μA」を裏付けています。これで、TS-590もキーイングできましたからまずは問題ないでしょう。
また、「L付き」「L無し」の差として、動作時の消費電流(オートCQのストップ待ちなど、SLEEP中でないプログラム空転時)もPIC12LF1822の方が大凡30μAほど小さく、「56円高いだけのことはあるぞ
」という結論です。メデタシメデタシ・・・
それにしても「ナノ・アンペア」って、なんナノ
・・・お後が宜しいようで


こんな写真じゃ判らないなぁと思いつつも掲載・・・正真正銘のPIC12LF1822です。136円也。沢山買っても仕方がないんで、ひとまずミニ・エレキー用に1つ入手。
さて、これでプログラムして早々に実験を・・・と思ったんですが、コメントを頂いた「BOR」(Brown-out Reset)についてのフェールセーフ(電池の接触不良による瞬断対策)として、ケミコンを1つ入れておくことにしました。まぁ「精神衛生」以外の何者でもない気もしますが・・・。そして、回路図を何気なく見渡したら、な、な、なんと・・・トランジスタスイッチの部分の抵抗値が間違っていることに気づきました。
そもそも、hFEの大きなトランジスタを選び、最低でもベース電流の400倍程度のキーイングはいけるだろう・・・と踏んで値を決めたつもりが、ベース-グランド間の抵抗と間違えていました

単4×2の3Vの電池が消耗して仮に1.8Vまで落ちたと仮定し、この状態でもベース電圧0.6V以上を保証してやれば、最後の最後(

今までベース抵抗は10KΩでしたから300μAも流れていたわけですが、こうなるとこのhFE倍(450倍)・・・何と135mAもコレクタ電流を流せる状態にオーバドライブしていたことになります。逆に20mAをMaxと考えれば44μA程度のベース電流で良いはずで、ベース抵抗は67KΩくらいまで上げられそうです。そこでひとまず「47KΩ」としました。これでベース電流としては67μA、ベース-グランド間が同じく47KΩですから、キーイングがONになったときの消費電流は134μAまで小さくできそうです。

・・・というわけで、回路図を書き換えました。電源スイッチ横の47μF(ケミコン)追加、RA5とベース間の抵抗値を10KΩ⇒47KΩというマイナーチェンジです。この通り「実機」を直して、いざP12LF1822の出番。プログラムのヘッダファイル指定を変更してリコンパイルし、PICkit3でプログラムしました。果たして


SLEEP中の様子です・・・って、全然証拠写真になっていませんが、これでちゃんと動いています

また、「L付き」「L無し」の差として、動作時の消費電流(オートCQのストップ待ちなど、SLEEP中でないプログラム空転時)もPIC12LF1822の方が大凡30μAほど小さく、「56円高いだけのことはあるぞ


それにしても「ナノ・アンペア」って、なんナノ


PIC12(L)F・・・「L」の意味合い
2013-09-24
エレキー自作三昧が漸く一段落しましたが、コメント欄ではお馴染み(
)の「昔ローカルさん」にコメントでアシストを貰ったことを書き留めておきたいと思います。
PIC16F18xxシリーズの「8ピン版」としてPIC12F1822があり、こいつが拡張ミッドレンジのPICで結構な機能を持った代物。その上1個80円@秋月と来れば「買い」でしょう・・・というわけで、ミニ・エレキーは製作途上で宗旨替えしてこいつを心臓部と決めたわけです。また、小さい割にはプログラム容量が2Kワードもあり「C言語でもいけるっしょ
」と高を括り、初の「オールC言語」にしてみましたが、何とか目論見通り収まりました。
エレキーの機能に着目すると、「殆どパドル入力待ちになる」ということには簡単に気づきます。即ち、PICの「SLEEP機能」を上手く使えば電池入れっぱなしで何年も保つものが作れちゃうわけで、今回これを目指しました。ところが、SLEEP状態で実測20μA程度の消費電流あり
「おかしいなぁ・・・もっと少ない筈」とあれこれ試してみたんですが、詰まるところ20μA以下にはできませんでした。
そこで、改めてこのPICのマニュアルをよく読んでみると、その謎は明白に記されていました。

このシリーズには「(L)」が付いたものがあるわけですが、今回使ったのは「L無し」・・・上の表でグレーのハッチングが掛かった方です。VDDが3Vの時、Typicalで22μA
このデータ、基本機能を全部OFFった値ですから・・・合ってるじゃねぇか
要は「もっとすんげぃ省エネしたけりゃ、『LF』の方を買ってね」ということです。旧来の8ピンPICは、諸機能を切った状態での待機電流がnWクラスなんだよね・・・同じような型名付けるから、間違うじゃろがぁぁぁ
ということで、「PIC12LF1822」を探してみたら、マルツさんに132円で売っておりましたとさ・・・。
このエレキーを追試される方も少ないかと思いますが、他の用途にせよ、省エネ狙いなら「L付き」にしましょう。ちなみに、扱える電源電圧(VDD)が違います(タダの「F」は5.5V・・・TTLレベルまでOK、「LF」は3.3V・・・乾電池2本までOKです)のでお気を付けあそばせ

PIC16F18xxシリーズの「8ピン版」としてPIC12F1822があり、こいつが拡張ミッドレンジのPICで結構な機能を持った代物。その上1個80円@秋月と来れば「買い」でしょう・・・というわけで、ミニ・エレキーは製作途上で宗旨替えしてこいつを心臓部と決めたわけです。また、小さい割にはプログラム容量が2Kワードもあり「C言語でもいけるっしょ

エレキーの機能に着目すると、「殆どパドル入力待ちになる」ということには簡単に気づきます。即ち、PICの「SLEEP機能」を上手く使えば電池入れっぱなしで何年も保つものが作れちゃうわけで、今回これを目指しました。ところが、SLEEP状態で実測20μA程度の消費電流あり

そこで、改めてこのPICのマニュアルをよく読んでみると、その謎は明白に記されていました。

このシリーズには「(L)」が付いたものがあるわけですが、今回使ったのは「L無し」・・・上の表でグレーのハッチングが掛かった方です。VDDが3Vの時、Typicalで22μA


要は「もっとすんげぃ省エネしたけりゃ、『LF』の方を買ってね」ということです。旧来の8ピンPICは、諸機能を切った状態での待機電流がnWクラスなんだよね・・・同じような型名付けるから、間違うじゃろがぁぁぁ

このエレキーを追試される方も少ないかと思いますが、他の用途にせよ、省エネ狙いなら「L付き」にしましょう。ちなみに、扱える電源電圧(VDD)が違います(タダの「F」は5.5V・・・TTLレベルまでOK、「LF」は3.3V・・・乾電池2本までOKです)のでお気を付けあそばせ

IC-821にCWフィルタ装備
2013-09-23
免許の変更申請結果がなかなか「審査終わ~り~」にならず、IC-821がデビュー戦を迎えられません。提出は8/29なんで、もうそろそろだとは思うんですが結果的にIC-821でのオンエアは叶わず、修理から帰ってきた後は、時折アンテナをモビホに換えてワッチはしています。どういうわけか「/0」が良く聞こえてきます。やはり、西側にはある程度開けているらしく、8mHのベランダのモビホとしてはまずまずでしょう。
さて、6m&Dで結構2mのCWが混雑していたのを記憶していたため、是非ともこのリグにはCWのフィルタを付けよう・・・と思っていたらぶっ壊してしまい延期になっていたんですが、今さっきCWフィルタを取り付けました。

FL-132は流石に古いため秋葉のショップにはなく、「いずちょっくらねっと」さんの通販で購入。序でにキャリングハンドル(手提げバンド)も買ってしまいました。本体が8Kg・・・ちょっと掃除するときなど、持ち手があるのとないのとでは結構違いますからね

これがCWフィルタです。これをメインボードに「はんだ付け」します。そう言えば、IC-703にもCWフィルタ(FL-53A:250Hz)を付けましたが、これもメインボード・・・ってか、IC-703はメインボードだけのような構成ですが、筐体から外すのにコツが必要でちょっと難儀しました。
メインボードはぶっ壊した際に一度外したんでその要領は判っていますが、あんまり簡単ではありませんでした。慎重にやらねば・・・と心を落ち着けつつ机の上を片付けていざ
裏蓋を外したとき、何やらネジの感触が違うぞ・・・と思ってみてみると、何と外回りの黒ネジが全て新品になっていました
この間の修理の際に全て取り替えてくれたようですね。「何か綺麗になって帰ってきたなぁ・・・」と思ったのはこのせいだったのかも
ただ、このサービスはちょっと嬉しかったです

期せずして、修理後のケーブル見参
当たり前ですが綺麗になっていました。何とかあと9年ほど保って欲しいなぁ・・・と思いつつ、このケーブルに負担が掛からぬよう、そぉ~っと基板の持ち上げ。万一倒れた場合を考慮してハンドタオルをクッションにし、さらに割り箸を急造のつっかえ棒にして固定。
さぁ、はんだ付け開始・・・30Wのコテでは、CWフィルタのケース部分がなかなか付かず閉口した上、古いリグ故の「接点部分の老化」でハンダがなかなか乗らず
基板用のフラックスを塗布しながらよ~く暖めて、一つひとつ必要な箇所のはんだ付けを進めれば、案外作業はあっけなく終了。メインボードを元に戻し、その状態で仮止めして通電・・・おお、聞こえる聞こえる、良かった良かったと安堵

右側のものが今回増設したフィルタです。フラッシュが前面で反射して何だかはんだゴテの当て過ぎで黒焦げになっちゃったようにも見えますね
再度電源を落として全てのネジ止めと裏蓋閉めを完了し、本体を元の位置に戻してから2mのCW帯をワッチしても流石に夜半過ぎには誰もおらんやろ・・・と思ったら、お誂え向けに弱~い和文が聞こえてきました。
フィルタをオンにすると、500Hzのフィルタらしい音調になりました。信号強度は殆ど変わらないのが有り難い
ただ、スカート特性は若干甘いようで、TS-590の「DSPナイフ炸裂
」みたいな感じにはなりません。その代わり妙なリンギングも感じられず、「疲れないフィルタ」といった案配で、2mや70cmには丁度良い気がしました。
さぁ、一通りの機材は揃いました。エレキーもちゃんとした「メッセージキーヤー」になったし。あとは「スピーディーなアンテナ切り替え」ができるようになるといいんだけどなぁ・・・と改善欲は尽きませんね
さて、6m&Dで結構2mのCWが混雑していたのを記憶していたため、是非ともこのリグにはCWのフィルタを付けよう・・・と思っていたらぶっ壊してしまい延期になっていたんですが、今さっきCWフィルタを取り付けました。

FL-132は流石に古いため秋葉のショップにはなく、「いずちょっくらねっと」さんの通販で購入。序でにキャリングハンドル(手提げバンド)も買ってしまいました。本体が8Kg・・・ちょっと掃除するときなど、持ち手があるのとないのとでは結構違いますからね


これがCWフィルタです。これをメインボードに「はんだ付け」します。そう言えば、IC-703にもCWフィルタ(FL-53A:250Hz)を付けましたが、これもメインボード・・・ってか、IC-703はメインボードだけのような構成ですが、筐体から外すのにコツが必要でちょっと難儀しました。
メインボードはぶっ壊した際に一度外したんでその要領は判っていますが、あんまり簡単ではありませんでした。慎重にやらねば・・・と心を落ち着けつつ机の上を片付けていざ

裏蓋を外したとき、何やらネジの感触が違うぞ・・・と思ってみてみると、何と外回りの黒ネジが全て新品になっていました




期せずして、修理後のケーブル見参

さぁ、はんだ付け開始・・・30Wのコテでは、CWフィルタのケース部分がなかなか付かず閉口した上、古いリグ故の「接点部分の老化」でハンダがなかなか乗らず



右側のものが今回増設したフィルタです。フラッシュが前面で反射して何だかはんだゴテの当て過ぎで黒焦げになっちゃったようにも見えますね

再度電源を落として全てのネジ止めと裏蓋閉めを完了し、本体を元の位置に戻してから2mのCW帯をワッチしても流石に夜半過ぎには誰もおらんやろ・・・と思ったら、お誂え向けに弱~い和文が聞こえてきました。
フィルタをオンにすると、500Hzのフィルタらしい音調になりました。信号強度は殆ど変わらないのが有り難い


さぁ、一通りの機材は揃いました。エレキーもちゃんとした「メッセージキーヤー」になったし。あとは「スピーディーなアンテナ切り替え」ができるようになるといいんだけどなぁ・・・と改善欲は尽きませんね

ミニ・エレキーを解剖する-モールス符号複合化編
2013-09-22
エレキーの機能としてポピュラーな「メッセージ自動送出」は、事前に作ったASCII文字列を、直前の記事にあるASCII ⇒モールス符号データ変換を使って実現できますが、そもそもメッセージが永久固定ならいざ知らず、コールサインの後に「移動地」を付けたくなったり、コンテストナンバーを変えたくなったりします。即ち、EEPROMなどの書換可能なメディアにメッセージを用意しておき、必要に応じて変更できるようにする必要があります。
今回作ったミニ・エレキーは、当初「コンテスト専用」として「固定メッセージ」で考えていました。必要に応じてPICをプログラムし直せばいいや・・・ってな具合だったわけですが、なんか片手落ちな気がして、結局EEPROMにメッセージを書き、後からパドル操作で書き換えられるようにしました。
◆ 手打ちの短・長点の順序と数を記録する
世にあるCW解読ソフトは、細かいタイムスロットで信号をサンプリングし、そのON/OFF情報を紡いで複合化しているものが多いと思いますが、ミニ・エレキーではこんな芸当をさせずとも「パドル操作で打たれた短点・長点を、順番に記録すればできる」ということに気づきました。そもそも、エレキーの基本機能に「スクイーズ動作に合わせて短・長点を送出する」という機能があるわけですから、手操作の開始と終了さえ判れば、その間の短・長点の順序と数を記録してしまえばいいわけです。
そこで、以下のような手順を守って入力するようにしました(関連記事はこちら)。
1) エレキーから「R」を送出
2) パドル操作で書き換えたい文字を入力
3) 文字入力が終了したらボタンを押下
◆ ビットデータを逆に作っていく
直前の記事で説明したように、今回はビットのOFF/ONを短点/長点とし、その頭に「スタートビット」を付け足したものを送出データとしていますから、記録した短・長点の情報について、0ビット目に設定しては左に1ビットシフトして展開し、最後にスタートビットを設定すればよく、これも非常に簡単のロジックと変数2つで実現できました。
例えば「Q」の場合は、以下のようになります。
Q : - - ・ -
(1)(2)(3)(4)
0) 事前に2つの変数「ptn」「sbit」を以下のように初期化
ptn : 00000000 sbit : 00000001
1) 長点
・ptnを左1ビットシフト
ptn : 00000000
・ptnのLSB(最下ビット)に長点を示す1をORでセット
ptn : 00000001
・sbitを左1ビットシフト
sbit : 00000010
2) 長点
・ptnを左1ビットシフト
ptn : 00000010
・ptnのLSB(最下ビット)に長点を示す1をORでセット
ptn : 00000011
・sbitを左1ビットシフト
sbit : 00000100
3) 短点
・ptnを左1ビットシフト
ptn : 00000110
・ptnのLSB(最下ビット)に短点を示す0をORでセット
ptn : 00000110
・sbitを左1ビットシフト
sbit : 00001000
4) 長点
・ptnを左1ビットシフト
ptn : 00001100
・ptnのLSB(最下ビット)に短点を示す1をORでセット
ptn : 00001101
・sbitを左1ビットシフト
sbit : 00010000
5) 終了
sbitをptnにORでセット
ptn : 00011101
1)から4)は同じ処理で作れますよ・・・念のため。
◆ パターンマッチングで逆引きしてASCIIコードへ
出来上がったパターンデータ「ptn」を、直前の記事にあるテーブルの先頭から順に比較します。一致するものがあったら、先頭から何番目で見つけたか・・・この数に0x20を加算すれば、ASCIIコード(値)が求められます。これを、EEPROMの所定位置に書き込めば、その位置のデータが書き換わります。
以上、参考になれば幸いです
今回作ったミニ・エレキーは、当初「コンテスト専用」として「固定メッセージ」で考えていました。必要に応じてPICをプログラムし直せばいいや・・・ってな具合だったわけですが、なんか片手落ちな気がして、結局EEPROMにメッセージを書き、後からパドル操作で書き換えられるようにしました。
◆ 手打ちの短・長点の順序と数を記録する
世にあるCW解読ソフトは、細かいタイムスロットで信号をサンプリングし、そのON/OFF情報を紡いで複合化しているものが多いと思いますが、ミニ・エレキーではこんな芸当をさせずとも「パドル操作で打たれた短点・長点を、順番に記録すればできる」ということに気づきました。そもそも、エレキーの基本機能に「スクイーズ動作に合わせて短・長点を送出する」という機能があるわけですから、手操作の開始と終了さえ判れば、その間の短・長点の順序と数を記録してしまえばいいわけです。
そこで、以下のような手順を守って入力するようにしました(関連記事はこちら)。
1) エレキーから「R」を送出
2) パドル操作で書き換えたい文字を入力
3) 文字入力が終了したらボタンを押下
◆ ビットデータを逆に作っていく
直前の記事で説明したように、今回はビットのOFF/ONを短点/長点とし、その頭に「スタートビット」を付け足したものを送出データとしていますから、記録した短・長点の情報について、0ビット目に設定しては左に1ビットシフトして展開し、最後にスタートビットを設定すればよく、これも非常に簡単のロジックと変数2つで実現できました。
例えば「Q」の場合は、以下のようになります。
Q : - - ・ -
(1)(2)(3)(4)
0) 事前に2つの変数「ptn」「sbit」を以下のように初期化
ptn : 00000000 sbit : 00000001
1) 長点
・ptnを左1ビットシフト
ptn : 00000000
・ptnのLSB(最下ビット)に長点を示す1をORでセット
ptn : 00000001
・sbitを左1ビットシフト
sbit : 00000010
2) 長点
・ptnを左1ビットシフト
ptn : 00000010
・ptnのLSB(最下ビット)に長点を示す1をORでセット
ptn : 00000011
・sbitを左1ビットシフト
sbit : 00000100
3) 短点
・ptnを左1ビットシフト
ptn : 00000110
・ptnのLSB(最下ビット)に短点を示す0をORでセット
ptn : 00000110
・sbitを左1ビットシフト
sbit : 00001000
4) 長点
・ptnを左1ビットシフト
ptn : 00001100
・ptnのLSB(最下ビット)に短点を示す1をORでセット
ptn : 00001101
・sbitを左1ビットシフト
sbit : 00010000
5) 終了
sbitをptnにORでセット
ptn : 00011101
1)から4)は同じ処理で作れますよ・・・念のため。
◆ パターンマッチングで逆引きしてASCIIコードへ
出来上がったパターンデータ「ptn」を、直前の記事にあるテーブルの先頭から順に比較します。一致するものがあったら、先頭から何番目で見つけたか・・・この数に0x20を加算すれば、ASCIIコード(値)が求められます。これを、EEPROMの所定位置に書き込めば、その位置のデータが書き換わります。
以上、参考になれば幸いです

ミニ・エレキーを解剖する-モールス符号データ編
2013-09-22
各種の小さなマイコンでエレキー製作されている方は沢山いらっしゃると思いますので、モールス符号のデータ化も千差万別でしょう。どなたかの役に立つかも知れませんので、今回のミニ・エレキーのモールス符号化に関わる部分をまとめておきます。
◆ まずはASCII文字として扱う
普段使っているパソコンもそうですが、半角のアルファベット表現に「ASCIIコード」を用いているものは非常に多く、今さら解説するほどでもないでしょう。このコード、元々はアメリカ生まれですから、アルファベットの大・小文字(と数字)の通信ができれば良かったために「7ビット」でコード化されたものです。7ビット・・・128通りの意思疎通が可能というわけですね。
このコードの0x00から0x1Fまでは、通信手段として「これから送信するぞ」「これで終わりだぞ」・・・といった意味のコードになっており、普通の人は専ら0x20から上のコードを使うわけですが、大体以下のようになっています。
0x20-0x2F : 特殊文字-1
0x30-0x39 : 数字の「0-9」
0x3A-0x40 : 特殊文字-2
0x41-0x5B : アルファベットの「A-Z」
(以下、略)
一方、アマチュア無線のモールス通信でも特殊な意味合いの通信用に「?」や「/」(スラッシュ)或いは表示上よく使う「 」(半角のスペース」は特殊文字の範囲にあります。例えば、「QRZ? JM1DPL K」という文字列を書いてみると判るように、特殊文字の「?」に加え、「?」の後ろと「L」の後ろには「 」(半角スペース)が入りますよね
実際のCW通信上は「7短点分空ける」という規則ですが、何れにせよこの「何もない部分」も「何もないんだぞ」というデータ化をする必要があるわけです。
こうなると、ASCIIコードをそのまま扱って「A」なら「・-」、「?」なら「・・--・・」、「 」(半角スペース)なら「(7短点分の時間)」といった変換を行えれば、何となくエレキーができそうだなぁ・・・となるでしょう。そこでとりあえず、大本の送信したい文字は「ASCIIコード」で表現する(扱う)ことにします。
◆ 短点と長点を符号化
マイコンの最小記憶単位はビットであり、1ビットは「0」か「1」の値になりますので、これを短点と長点に当て嵌めてしまうと、モールス符号が簡単に表現できます。1バイト=8ビットに右詰で表現してみます。
「A」 ⇒ 00000001
「B」 ⇒ 00001000
「C」 ⇒ 00001010
「D」 ⇒ 00000100
「E」 ⇒ 00000001
「F」 ⇒ 00000010
この辺で止めておきます
・・・が、よく見ると「A」と「E」が同じになってしまっていますね
これは上手くありません。そこで、そのコードがどこから始まるかを示す「スタートビット」を付けてみます。
同じ表現になってしまった「A」と「E」ですが、実は「A」の場合は右から2ビット分がデータ、「E」は右から1ビット分がデータですよね
ここに着目して、スタートビットを追加すると・・・。
「A」 ⇒ 00000101
「B」 ⇒ 00011000
「C」 ⇒ 00011010
「D」 ⇒ 00001100
「E」 ⇒ 00000011
「F」 ⇒ 00010010
ピンクの「1」がスタートビットです。こうすると、このビットの右側が「コード化された短点と長点」だということが判りますし、「A」と「E」もきちんと区別できます。
◆ スタートビットを探していざ送出
さぁ、この「スタートビットを探す論理」にも幾つかバリエーションがありますが、特にアセンブラで組む場合には「左シフトしてキャリーが立ったら見つけたことにする」という論理が簡単で高速な処理になります。即ち、以下のように処理を進めます。
1) キャリーが立つまで左シフト
2) キャリーが立ったらもう1ビットシフトし、またキャリーが立ったら「長点」、立たなかったら「短点」を送出
3) キャリー探しを含め8ビット分で終了
◆ コード化されたデータの配列を準備
上記の論理でコード化されたものを配列にします。そして、ASCIIコードの値をその配列を索引するインデックスに使えば、一発で「送出したい文字のコード化されたデータ」を持ってくることができます。ここで、0x20未満は不要ですから、下の表のようなデータを作りました。

右端の「0x??」が「送出したい文字のコード化されたデータ」です。黄色はスタートビットです。また、今回は制御データについては未使用として扱っています。将来、何か制御したいときに使うための「個人的な予約」です。
PICのC言語による実際のコーディングイメージは以下のようになっています。
実際にこのテーブルをインデックスする際は、先頭が0x20に当たるため、ASCIIコードから0x20を減算してインデックスすればOK・・・簡単ですね
◆ スペースと未使用領域
スペース(0x20)は、実際には短点も長点も出ませんから省いてもいいんですが、例えば送出中の文字をLCDに表示させたり、EEPROMにメッセージを格納するときなどには無いと困る文字でもあるため含んでいます。もしスペースが不要なら、もう少しテーブル自体を小さく(先頭を「/」にするなど)しても良いでしょう。
未使用領域には「#」「$」・・・が眠っているわけですが、中には「.」(ピリオド)など、ひょっとしたらCWで送信するかも知れないコードもありますから、その場合は該当する位置に「送出したい文字のコード化されたデータ」として定義すれば済みます。
◆ この方法の欠点
この方法は、送りたい文字の送出データを簡単に拾い出すことにはかなり長けていて、オマケに必要な短点・長点のデータを取り出す処理も簡単で比較的高速になると思いますが、各データに2ビットほど無駄があるのが欠点です。
アルファベットと数字、それに幾つかの特殊文字を合計すると大凡40文字あれば良く、これを管理するためには「6ビット」もあれば事足ります。この辺り、例えばエレキー専用のPICを用意するのではなく、「何かの序でにこのPICの空き部分に入れちゃおう」といった場合や、特にメモリが小さいPICの場合には「デカ過ぎ
」ということもあり得ます。
ただ、原理的には難易度が低いため、「そろそろ自作でエレキーを・・・」といった方なら、Mid Rangeの比較的容量のあるPICを採用すれば、少なくともASCII ⇒モールス符号データ変換は簡単に作れると思います
◆ まずはASCII文字として扱う
普段使っているパソコンもそうですが、半角のアルファベット表現に「ASCIIコード」を用いているものは非常に多く、今さら解説するほどでもないでしょう。このコード、元々はアメリカ生まれですから、アルファベットの大・小文字(と数字)の通信ができれば良かったために「7ビット」でコード化されたものです。7ビット・・・128通りの意思疎通が可能というわけですね。
このコードの0x00から0x1Fまでは、通信手段として「これから送信するぞ」「これで終わりだぞ」・・・といった意味のコードになっており、普通の人は専ら0x20から上のコードを使うわけですが、大体以下のようになっています。
0x20-0x2F : 特殊文字-1
0x30-0x39 : 数字の「0-9」
0x3A-0x40 : 特殊文字-2
0x41-0x5B : アルファベットの「A-Z」
(以下、略)
一方、アマチュア無線のモールス通信でも特殊な意味合いの通信用に「?」や「/」(スラッシュ)或いは表示上よく使う「 」(半角のスペース」は特殊文字の範囲にあります。例えば、「QRZ? JM1DPL K」という文字列を書いてみると判るように、特殊文字の「?」に加え、「?」の後ろと「L」の後ろには「 」(半角スペース)が入りますよね

こうなると、ASCIIコードをそのまま扱って「A」なら「・-」、「?」なら「・・--・・」、「 」(半角スペース)なら「(7短点分の時間)」といった変換を行えれば、何となくエレキーができそうだなぁ・・・となるでしょう。そこでとりあえず、大本の送信したい文字は「ASCIIコード」で表現する(扱う)ことにします。
◆ 短点と長点を符号化
マイコンの最小記憶単位はビットであり、1ビットは「0」か「1」の値になりますので、これを短点と長点に当て嵌めてしまうと、モールス符号が簡単に表現できます。1バイト=8ビットに右詰で表現してみます。
「A」 ⇒ 00000001
「B」 ⇒ 00001000
「C」 ⇒ 00001010
「D」 ⇒ 00000100
「E」 ⇒ 00000001
「F」 ⇒ 00000010
この辺で止めておきます


同じ表現になってしまった「A」と「E」ですが、実は「A」の場合は右から2ビット分がデータ、「E」は右から1ビット分がデータですよね

「A」 ⇒ 00000101
「B」 ⇒ 00011000
「C」 ⇒ 00011010
「D」 ⇒ 00001100
「E」 ⇒ 00000011
「F」 ⇒ 00010010
ピンクの「1」がスタートビットです。こうすると、このビットの右側が「コード化された短点と長点」だということが判りますし、「A」と「E」もきちんと区別できます。
◆ スタートビットを探していざ送出
さぁ、この「スタートビットを探す論理」にも幾つかバリエーションがありますが、特にアセンブラで組む場合には「左シフトしてキャリーが立ったら見つけたことにする」という論理が簡単で高速な処理になります。即ち、以下のように処理を進めます。
1) キャリーが立つまで左シフト
2) キャリーが立ったらもう1ビットシフトし、またキャリーが立ったら「長点」、立たなかったら「短点」を送出
3) キャリー探しを含め8ビット分で終了
◆ コード化されたデータの配列を準備
上記の論理でコード化されたものを配列にします。そして、ASCIIコードの値をその配列を索引するインデックスに使えば、一発で「送出したい文字のコード化されたデータ」を持ってくることができます。ここで、0x20未満は不要ですから、下の表のようなデータを作りました。

右端の「0x??」が「送出したい文字のコード化されたデータ」です。黄色はスタートビットです。また、今回は制御データについては未使用として扱っています。将来、何か制御したいときに使うための「個人的な予約」です。
PICのC言語による実際のコーディングイメージは以下のようになっています。
static const uchar kcnv_t[59] = { 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x55,0x32, 0x3F,0x2F,0x27,0x23,0x21,0x20,0x30,0x38, 0x3C,0x3E,0xFF,0xFF,0xFF,0xFF,0xFF,0x4C, 0xFF,0x05,0x18,0x1A,0x0C,0x02,0x12,0x0E, 0x10,0x04,0x17,0x0D,0x14,0x07,0x06,0x0F, 0x16,0x1D,0x0A,0x08,0x03,0x09,0x11,0x0B, 0x19,0x1B,0x1C }; |
実際にこのテーブルをインデックスする際は、先頭が0x20に当たるため、ASCIIコードから0x20を減算してインデックスすればOK・・・簡単ですね

◆ スペースと未使用領域
スペース(0x20)は、実際には短点も長点も出ませんから省いてもいいんですが、例えば送出中の文字をLCDに表示させたり、EEPROMにメッセージを格納するときなどには無いと困る文字でもあるため含んでいます。もしスペースが不要なら、もう少しテーブル自体を小さく(先頭を「/」にするなど)しても良いでしょう。
未使用領域には「#」「$」・・・が眠っているわけですが、中には「.」(ピリオド)など、ひょっとしたらCWで送信するかも知れないコードもありますから、その場合は該当する位置に「送出したい文字のコード化されたデータ」として定義すれば済みます。
◆ この方法の欠点
この方法は、送りたい文字の送出データを簡単に拾い出すことにはかなり長けていて、オマケに必要な短点・長点のデータを取り出す処理も簡単で比較的高速になると思いますが、各データに2ビットほど無駄があるのが欠点です。
アルファベットと数字、それに幾つかの特殊文字を合計すると大凡40文字あれば良く、これを管理するためには「6ビット」もあれば事足ります。この辺り、例えばエレキー専用のPICを用意するのではなく、「何かの序でにこのPICの空き部分に入れちゃおう」といった場合や、特にメモリが小さいPICの場合には「デカ過ぎ

ただ、原理的には難易度が低いため、「そろそろ自作でエレキーを・・・」といった方なら、Mid Rangeの比較的容量のあるPICを採用すれば、少なくともASCII ⇒モールス符号データ変換は簡単に作れると思います
