2011年1月29日土曜日

【AVR】AVR Keyer Part 1

AVR Electric Keyer】AVRマイコンを使ったエレキー
 エレキーはマイコン工作の定番の一つだろう。エレキーはもともと簡単な「論理回路」で実現されていたからワンチップ・マイコン向きなのである。マイコン式のエレキーはTTLとかC-MOSで作るキーヤーの後で扱うつもりだったが、必要があって製作したのでBlogネタにした。

 写真はAVRマイコン、ATtiny26Lを使ったエレキー基板だ。マイコン:1個、トランジスタ:1個、発光ダイオード(LED):1本、抵抗器:2本、基板の外付けで可変抵抗器:1個、コンデンサ:3本、ISPコネクタ、ICソケット、基板、端子などで構成された簡単なハードウエアである。マイコンを使わずに製作すればICはずいぶん多くなるし、伴って配線もずっと複雑になる。 たったこれだけで立派にエレキーが作れるのは流石にワンチップ・マイコン式だ。

【AVR Electric Keyer】配線面
 部品総数が少ないのだから、配線も非常に簡単である。主に端子へ引き出すための配線であり、部品相互を繋ぐものはわずかだ。 マイコンさえあればごく短時間で製作できる。

 この例ではプログラムを作成し、書込んでテストする機能を持たせているのでエレキーとしては不要な部品を含んでいる。 使うためだけの製作なら不要な部品、不要な配線もあるのでそれらを省けば一層簡単に作ることができる。

 例によって配線はお見せするような物でもないが製作の参考になるかもしれないので。

AVR Keyer Ver.1.0.1】開発用回路
 キーイング・スピードの加減は可変抵抗:VRで行なう。よりマイコンらしくパドル操作でスピードの加減をする方法もあるが、使い勝手を考えるとVR式の方が優れるように感じる。(これは好み)
 プログラムはオンボード書込み・・・要するにこの基板にマイコンチップ(ATtiny26L)を載せたままで書き換えをするのでそのためのコネクタが付いている。 図の左上あたりにあるISPコネクタはキーヤーとしては不要な部分だ。なお、ISPコネクタには7ピン一列式を使っているが各自の開発環境に合わせる。

 消費電流はわずかなので電源は乾電池が良い。電源電圧を安定化する必要は無くて実験では下限2.5Vくらいまで動作した。電源電圧の上限は5.5Vなので注意を。マンガン型単3乾電池3本で連続1,000時間以上動作する計算だ。乾電池の終止電圧は1本あたり0.9Vなので、3本直列で使うと電池がカラになるまできっちり動作してくれる。或は小型化するならリチウム乾電池(1個)も向いている。

AVR Keyer Ver.1.0.1D】製作版回路
 上記回路図からISPコネクタを除去しただけの回路図。 書込み済みのマイコンからスタートするならこの回路で良い。

 一層の省部品で試すなら、C2:0.1μF、C3:10μF/16Vが省ける。またReset端子のPull-up抵抗(R1:10kΩ)はなくても動作する。LEDとその直列抵抗(R2:2200Ω)もエレキーとしては必要ない部分だ。テストをするだけなら省いても良いだろう。
 このように非常に少ない外付け部品でも動作する。もちろん、そうした部品はまったく不要と言う訳ではない。より安定で確実な動作をさせるにはあった方が良いのは勿論である。LEDも動作の確認に役立つものだ。

 サイドトーン付きである。圧電スピーカは必要に応じて追加し不要なら端子を遊ばせておくだけで良い。 なお、普通のスピーカ(ダイナミック・スピーカ)も使えなくはないが、1kΩ:8Ω程度のマッチング・トランスを間に入れるべきだ。 サイドトーンは矩形波なのでブザーチックな音がする。 多くのRigはサイドトーン・オシレータを内蔵している。不要なことも多いからON/OFFできるようSWを付けた方が良い。 


デジタル・トランジスタ】DTC114YA
 HAMには馴染みの無い部品かもしれない。この型番に拘る必要はなく、ほかにも使える『デジトラ』はたくさんある。 増幅ではなくスイッチ的な回路に使うには数個の抵抗器が省略できて便利なトランジスタだ。 上記のエレキー回路ではキーイング・トランジスタに使用している。

 もちろん、2SC1815(Y,GR,BL)のような汎用(はんよう)トランジスタと抵抗器2本で代替しても良い。 手持ちにDTC114YA(ROHM製)があったので使ったまで。 デジトラは増幅系には向かないので持て余し気味で、こうしたマイコン回路に率先して使わないと出番はない。

プログラムの話し
 マイコンと言えばプログラムの話しが大半を占めることになる。何から何までプログラムで処理しているからこそ回路が簡単になっている。プログラミングの話しが主役になるのは当然だろう。 ここでは、JN3XBY岩永さんの解説記事(←リンク)を参照させて頂くことにしてプログラムの話しは省略させてもらった。 ステップ・バイ・ステップで実験しながら進める丁寧な解説記事があってBASCOM-AVRで作るマイコン式エレキーの開発過程が詳しくわかる。

 AVRマイコンのプログラム開発用ツール:BASCOM-AVRの愛用者なら解説を読みながら自身で容易にできるだろう。 最終回のソースリストからコピぺでいきなり作ることもできる。 AVRマイコンの鬼門(?)の一つ、ヒューズビットの書き換えはしなくて良い。購入したままで良いから初心者でも安心だ。(注:内部の1MHzクロックで動作している)

 しかしBASCOM-AVRの開発環境が無いと少々面倒かもしれない。 以下のリストは処理済みのHEXリストである。ここからスタートすれば、BASCOM-AVRは必要としない。 以下のリストをそっくりコピーして、「メモ帳」か「ワードパッド」のようなテキストエディタに貼付け、たとえば『keyer.hex』のような拡張子が.hexの(任意の)名前でセーブする。

 プログラムライタはAVRマイコンに書込みできる物なら、例えばHIDaspxでもUSBaspでも何でも良い。 それを使いGUI環境かコマンド・プロンプト(DOS窓)からセーブしておいた.hexファイルを書込めば出来上がる。
 ライターにHIDaspxを使い書込みソフトはhidspxを使うとすれば『hidspx keyer.hex』のコマンド一発で書込める。非常に簡単だ。keyer.hexはhidspxと同じディレクトリに置いておくこと。 BASCOM-AVRの環境がなくてもエレキー用マイコンが作れる訳だ。試してはいないが、Macintoshの環境でもできるはず。

 長短点メモリ付き、スクイーズ機能も付いている。マイコン学習用のお遊び習作品ではなくて、オンエアの実戦に使える本格機能を持ったエレキーである。もし良いエレキーが欲しいと思っているなら是非お薦めできる製作だ。

:100000000BC018951895189518951895D5C0189582
:1000100018951895189518958FED8DBFC0ECE8EBE5
:100020004E2EDD275D2EA89584B7082E877F84BFCE
:1000300088E1992781BD91BDEEE7F0E0A0E6B0E050
:1000400088278D933197E9F7662480E08ABB80E8A2
:100050008BBB8FE187BB80E688BB84E88FBD82E0E5
:1000600083BF89B7826089BF7894C49A84E690E0A0
:100070002FD1C498379A07B1007E006007B937D1F5
:10008000AAE68D939C9393E0AAE63AD106E910E0A4
:10009000AAE64D915C91041B150BAAE60D931C93E7
:1000A0003798379A07B1007E016007B920D1A2E6E0
:1000B0008D939C9393E0A2E623D10DEA10E0A2E693
:1000C0004D915C91041B150BA2E60D931C93379880
:1000D000A2E68C918CBDA2E68C918BBDAAE68D9197
:1000E0009C91A4E68D939C93A4E60D911C91A4E6AB
:1000F0004D915C91040F151FA6E60D931C93A6E687
:100100000D911C91A4E64D915C91040F151FA6E67C
:100110000D931C93A4E68D919C91A8E68D939C93DE
:1001200000916E00013009F001C013D000916E0003
:10013000023009F001C021D000916C00013009F0BB
:1001400001C007D000916C00023009F001C015D049
:1001500091CF80E080936E0000916D00013009F036
:1001600001C0089581E080936D00C49A80E180BF52
:10017000A4E68D919C91ACD014C080E080936E0079
:1001800000916D00023009F001C0089582E0809373
:100190006D00C49A80E180BFA6E68D919C9198D0B5
:1001A00000C0C49880E280BFA8E68D919C9190D059
:1001B00080E080936D0008950F921F922F923F92DE
:1001C0004F925F927F92AF92BF920F931F932F93A4
:1001D0003F934F935F936F937F938F939F93AF93CF
:1001E000BF93CF93DF93EF93FF938FB78F931CD081
:1001F0008F918FBFFF91EF91DF91CF91BF91AF9121
:100200009F918F917F916F915F914F913F912F912E
:100210001F910F91BF90AF907F905F904F903F9054
:100220002F901F900F90189506B340E60423A1E687
:100230000C9300916100003409F001C015D00091C9
:100240006100003209F001C01BD000916100003054
:1002500009F001C021D000916100003609F003C00F
:1002600080E080936C00089500916D00023009F0E9
:1002700003C081E080936E0081E080936C0008955C
:1002800000916D00013009F003C082E080936E00A0
:1002900082E080936C00089500916D00013009F0B8
:1002A00003C082E080936C0000916D00023009F081
:1002B00003C081E080936C000895F894FFCF3197DC
:1002C000F1F70895689462F80895E89462F8089543
:1002D000EF93FF93EE27E82BE92B31F0EAEFF0E004
:1002E0003197F1F70197D1F7FF91EF910895369A81
:1002F0003699FECF369A3699FECF84B195B10895DE
:10030000903041F00D911C91169507959A95E1F763
:060310001C930E930895FA
:00000001FF

以上、先頭が:で始まる行をそっくりそのままコピペして『keyer.hex』ファイルを作成する。プログラムのソースはJN3XBY岩永さんの物と基本的に同じだ。好みで少しだけパラメータを変えてみたが本質は違わない。ソース・プログラムをいじってみたいならオリジナルの記事を参照されたい。なお上記hexファイルを個人の用途以外で使いたいなら連絡を。

 上記は実際に動作しているものなので大丈夫なはずだ。もしも旨く行かない時はまずはご自身で考えて自己解決の努力も。(ご質問も可)

:上記プロフラムはPart 2で紹介のVer.2。サイドトーン周波数の可変機能あり。オートスリープ機能はナシ。対象のMPUはATyiny26Lである。 オートスリープ機能付きはVer.3以降なので、別のBlogを参照。

 プログラム済みのエレキーチップが欲しいだけならこれさえ面倒かもしれない。 この際AVRマイコンで遊んでもらいたいと思うが、マイコンに興味はなくてエレキーが必要なだけのお方に書き込み済みの頒布も計画したい。(詳しくは続きで)

次回は本格的な外付けキーヤとしてもう一歩話しを進めてみよう。de JA9TTT/1

つづく)←リンク


10 件のコメント:

JG1EAD 仙波 さんのコメント...

加藤さん、こんにちは。
そういえば私も4~5年ほど前にPIC BASIC Proでキーヤーのプログラムを書き始めたのですが、長点・短点メモリの処理手順が思いつかずにそのまま放り投げてしまったままです。hi

JA6IRK@岩永 さんのコメント...

TTT/加藤さん、こんにちは。
AVRでのエレキーが突然出てきて驚いています。V-I変換とはだいぶ趣が違いますからね!
それもまた、ベースは当局のプログラムということで、これまた驚いております。
ご活用いただき大変ありがとうございます。おそらく加藤さん流にだいぶ使いやすくいじられているのではないかと思います。
しかし、更なる驚きは、昨晩、AVRのA/D変換で調べたいことがあってネットサーフィンしていたら、今回リンクの当局のキーヤーにあたったのでした。
このサイトは、既に更新をやめているので、当局のサイトからはどこからもリンクがなく当局でさえも覗くことが殆ど無かったからです。同じページを本日リンクしていただいており、本当にびっくりといった所です。
頒布もご計画との事ですが、だいぶ以前にLVE・高橋さんに誘われて共同購入した中国通販でこの26Lを購入していますので、もし必要であれば当局もご支援いたしますよ!
多分手元に30個以上あると思いますので。(使い切れない(笑))
455KHzのセラフィルもデッドストックになっています。

次回はどのように仕上がるのか楽しみにしております。

JG6DFK さんのコメント...

こんにちは。

Intel HEXは久しぶりに見ました。マイコン関係はそれだけご無沙汰ということですが… 昨年末にたまたま見つけたVFD時計のキットもAVRベースで、未書き込みなのでソフトを焼かないとできないのですが、いろいろあって全然手が付けられていません。

さて、ご紹介の装置をハードロジックで実現するとなれば、規模もさることながら論理を考えるのに苦労しますが、プログラムベースならかなり柔軟かつ容易に実現できるので、マイコンの普及はありがたいことです。もっとも、難しいことに挑戦するほど頭の体操にはなりますが…

私が某社新入社員の時代はゲートアレイを使ったりもしましたが、私は論理回路設計が全然ダメなので、それを設計した当時の先輩などは尊敬に値します。その人はデジタル回路が専門だったものの、アナログ回路の知識もありました。当時一流だった技術者にはそういう人が多かったように思います。

本題とは関係のない話ですみません。

T.Takahashi JE6LVE/JP3AEL さんのコメント...

こんばんは~

AVRでエレキーを作られていたのですね。
エレキーはスクィーズや短点・長点のメモリが面倒そうだなあと思ってます。Hi
PICのように8ピンAVRで作ることが出来ればコンパクトに出来るのですが・・

秋月でATtiny26Lの後継のATtiny861Aが200円で発売されてますからそちらの方が入手が楽かもしれませんね。

TTT/hiro さんのコメント...

JG1EAD 仙波さん。こんばんは。 今日は午後からS社の液晶TVの修理サービスがきていました。 バックライトの光拡散シートが劣化故障でした。そう言う故障もあるのですねえ・・。無償でしたが夕方まで掛かったのでそれから買物に。 帰宅したら夜でした。hi hi

さっそくのコメント有難うございます。
> 長点・短点メモリの処理手順が思いつかずに・・・
岩永さんの方法はタイマー割り込みでパドルをセンスする方法で実現していますね。 ポートの変化で割り込みを掛ける方法でも可能だと思いますが、タイマー割り込み式が有利な印象を持ちました。

アルゴリズムは共通だと思いますのでご研究されてPICマイコンで再挑戦されては如何でしょうか?

TTT/hiro さんのコメント...

JN3XBY 岩永さん、こんばんは。  黙ってリンクして申し訳なかったかも知れませんね。

コメント有難うございます。
> 当局のプログラムということで、これまた驚いて・・・
ビックリさせてスミマセンでした。記事を拝読してわかり易かったです。更に使ってみてエレキーとしてもFBでしたのでリンクさせて頂きました。

> このサイトは、既に更新をやめているので・・・
エレキーの記事はたいへんFBでした。更新はストップしていても参照できないのは勿体ないと思います。

> 中国通販でこの26Lを購入していますので・・・
どうも有難うございます。 希望者多数の場合にはお願いするかも知れません。 ATtiny26Lを使うのは今回が初めてでした。私もまだ10個ほど残っています。マイコンはすぐに陳腐化しますね。 買い込むのはほどが良いようです。hi hi

TTT/hiro さんのコメント...

JG6DFK/1 児玉さん、こんばんは。

コメント有難うございます。
> Intel HEXは久しぶりに見ました。
組み込み系のプログラム開発では今でも現役で使われているようですね。中身はTEXT形式ですからこうした公開には向いているように感じます。

> 柔軟かつ容易に実現できるので、マイコンの普及はありがたい・・・
コンピュータとして見るのではなくて、プログラマブルな論理ICと捉えるのが良さそうですね。 人間が相手の超低速論理回路ならワンチップマイコンのパワーで十分です。

今でも組込み系のソフトを書く人はアナログ回路の知識を要求されますが、そう言う人は少なくなっています。本当に良い製品が作れるのか少し心配ですね。

TTT/hiro さんのコメント...

JE6LVE/3 高橋さん、こんばんは。

コメント有難うございます。
> ・・・や短点・長点のメモリが面倒そうだ・・と
この辺り、岩永さんのプログラムは旨く考えられていますね。思っていたよりずっとシンプルな構造なのでビックリしました。hi hi

> 8ピンAVRで作ることが出来ればコンパクトに・・・
必要なポート数と内部機能から見て作れそうなのですが、ATtiny26と完全に同じではないので実験が必要そうでした。 今回は8ピンでなくても良いので、まずは26Lでやって見ました。

> ATtiny861Aが200円で発売されてます・・・
BASCOM-AVRも対応しているようですから、新規に購入するならtiny861Aでしょうね。 数割があるとなお良いのですけれど。(笑) 更にピン数は多いのですが、品種統一のためにはmega8系で作るのも良さそうです。

JA6IRK@岩永 さんのコメント...

TTT/加藤さん、おはようございます。
もうお昼ですね!
いえいえ、リンクしていただいて光栄です。過分なコメントもいただきまして、反って恐縮してます。
エレキー実現の方法は色々あると思うのですが、我流でやってますので、果たしてどのレベルの仕上がりなのかは?です。

このエレキーは、パドル入力端子にINT0を使っていますので、プログラムを加えれば使用していない時に、自動的にスタンバイモードにして電池の節約をすることが可能ではないかと思いながら、ピン配置を決めたような記憶があります。実際にはやっていませんが(笑)
その時には、VRの値も大きくしてVRでの消費電流も抑えないと意味がありませんが。
8PinのAVRはATTiny45Lがあり、これもAD内蔵なので試したことがあるのでですが、何せPinga少ないのでADを使うためには、何かの操作が必要なようで、その方法を見つけられずに途中で挫折しています。
その当時のBASCOM-AVRがうまく対応できていなかったのもしれませんが(笑)

当局は、このエレキーより先に
http://www.jn3xby.toshnet.com/h/page023034.html
なるものも作っております。
自作トランシーバを制御できるように、ミュート信号や、電源制御信号、セミブレークイン時間なども調整できるようにしています。
サイドトーンの周波数も、設定が可能です。
ピン配置はだいぶ違いますが、同じ26Lを使っているので、入れ替えは簡単だと思います。
しかし、よく見たらHEXファイルしかアップしていませんね!
ソースを探しておかないと(^^;
使っていただける方が多いといいのですが。

TTT/hiro さんのコメント...

JN3XBY 岩永さん、こんにちは。

再度コメントを頂き有難うございます。
> 果たしてどのレベルの仕上がりなのかは?
暫くキーイングしてみて、扱い易く感じましたのでFBな仕上がり具合だと思いました。 実用十分でしょう。

> スタンバイモードにして電池の節約をする・・・
電池消耗対策にSleep機能があるとFBですね。Sleepと再起動の方法を検討したい感じです。VRの問題もあるので、多少外付け部品を使う方が有利かも知れませんね。

> その方法を見つけられずに途中で挫折して・・・
機能的にはtiny45でも行けそうなのですが、何かあるようですね。判明したら教えて下さい。但し、8pinのAVRはポピュラーではないので安価なチップが良いのかも知れません。

> サイドトーンの周波数も、設定が可能です。
この機能だけはもう間もなく公開されるPart2で対応しています。(笑) 送受制御(トランシーバ制御)はリグの組込用には欲しいですね。メモリは余っていますので追加すると良さそうです。

> 使っていただける方が多いといいのですが。
エレキーは昨年CQ誌のオマケがあったお陰で、市販のキーヤーが淘汰されてしまいました。お陰で、入手しにくくなっていますのでニーズはあると思います。それでエレキーが必要な人に頒布で対応することに。(笑)