2008年10月12日

100円LCD 周波数カウンタ

HIDspxライターの方は、順調に改善が進んでいるようです。
10日間ほど出張して一昨日帰り、早速10月10日版に書き換えましたが、本日10月12日版がアップされており、またまた書き換えました。
(既に、10月12日b版になっています)
当局の作ったFRISKケースに入れたこのライターは、ケースに入れるためATTiny2313をICソケットを使用せず、基板に直接半田付けして
あります。
リセット端子などを入れ替える機能も付けてないので、ライターその
もののプログラムの書き換えは写真のように、ICクリップもどきで
書き換えを行いました。これでもなかなかGOODです。

DSC00965.jpg
この方法の問題は、ライターが二つ必要だということです(^^;

早速このライターを使って実際のプログラムを焼きこんでみました。

作ったのは、このライター基板を作った時に同時に作っておいた
100円LCDとATTiny2313を使用したローコスト周波数カウンタです。
当局が使用するAVR用のプログラム言語はBASCOM-AVR(BASIC)で
このライターからボタン1発で書き込みができます。
今までより早く書き込みができてるように思います。
次の写真は、実際にターゲットに書き込んでデバッグしている
様子です。

DSC00969.jpg
リセットの問題も、書き込み後のライター端子のハイインピーダン
ス切り替えも機能として取り込まれたので、ISPケーブルをつなげ
たまま、また電源はUSB側から供給してデバッグができ、これも
GOODです。

プログラムもゲート1秒だけ、前置アンプの最適化などはまだ手が
届いていませんが、とりあえずSGの信号で周波数がカウントできる
ようになりました。
次の写真は、単独で電池駆動で動作している様子です。

DSC00970.jpg

プログラムは以前作ったものを流用しただけなので、短時間でここ
までできましたが、最初はLCDに表示が出ず大変苦労しました。
わかってみれば簡単なことですが、LCDのFPCに使用したコネクタの
端子が酸化しており、接触不良のためマイコンの信号がLCDに届い
ていなかったのが原因でした。日米さんで購入したものですが、
何年前の物か不明ですからね!

まだ最終ではありませんが、現時点での回路図は下記のとおりです。

FrequencyCounter081012.BMP
posted by ja6irk at 19:01| Comment(4) | TrackBack(0) | AVR&BASIC

2008年09月28日

FRISKライター対応確認

手持ちの各種AVRでHIDaspx(FRISKライター)が書き込み読み込みできるか確認してみました。
既に、senshuさんが確認されているので動いて当たり前のChipばかりですが。

AT90S2313、ATTiny2313、ATTiny26L、AT90S4343、ATMega8、ATMega48、ATMega168、ATTiny45

posted by ja6irk at 18:29| Comment(0) | TrackBack(0) | AVR&BASIC

FRISKライター

先日から、各サイトの情報を頼りに製作と評価を続けているATTiny2313を使用したUSB AVRライターですが、昨日実験して紹介した基板を作ってみました。

DSC00858.jpg
ブルーシートを生基板に転写した様子です。

DSC00860.jpg
先週作った基板でのミスを修正したので今度はきれいに入ってます。

DSC00865.jpg
当局は手ごろな大きさから「FRISK」のケースをライター用として使用していますが、御覧のようにぴったりと入っています。

DSC00863.jpg
ケースの表のシールは、元の「FRISK」をそのまま活かしました。
元のケースをスキャナで取り込み、SWやLEDの部分の表示をそれらしく書き換えています。
それで、タイトルをFRISKライターとしました。
右上には小さく「HIDaspx AVR Writer」と書いてあります。
個人だからできる技です。この方法は、CMVさんに教えていただきました。ありがとうございました。
大変だったのは、位置合わせと穴あけです。綺麗な穴あけができていません。この辺りは何かノウハウが必要だと思っております。どなたかご教授いただければいいのですが.....。

DSC00861.jpg
USBケーブルとATTniy2313用のアダプタを接続した全景写真です。

製作した回路図、基板図、F/W、ライターS/W、BASCOM−AVRでの使用法等は、昨日の日記を参照ください。

http://blog.toshnet.com/article/20107802.html

posted by ja6irk at 10:21| Comment(10) | TrackBack(0) | AVR&BASIC

2008年09月27日

HIDaspx ローコストライター

先日から実験を続けている¥100で買えるATTiny2313を使ったAVR用ローコストライターですが、改善がめまぐるしく進んでいます。
多くの人が参加されて改善されており、一部ハードウェアとソフトウェアの互換性もなくなりつつあります。
最初の頃に課題とされていた書き込みスピードも大幅に改善が進み、ほぼ完成の域に達したようです。
このあたりについてはkumanさんが纏められており、現時点の最良バージョンとして互換性を含めてHIDaspxとして区別をしたネーミングに統一され整理されています。
原本や、改善に協力された皆様、経緯についてはkumanさんが記載されており、全部読んでいるとやはり混乱しますので、ここでは現時点の最終系のみ記載させていただきます。

http://www.geocities.jp/kuman2600/n6programmer.html#13


ライターの名前  :HIDaspx
作者       :senshu
AVRマイコン側のF/W:HIDaspx
PC側のライターS/W :hidspx

作者であるsenshuさんのサイトにある最新のF/W、S/W、回路図は
 
http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2FHIDasp#content_1_9

hidspx-0924.zip です。

早速これらを書き込み試してみましたが、「GOOD」が更に上がりました。

BASCOM−AVRからも、書き込みは簡単に行うことができます。
(あらかじめ設定してしまえば、書き込みボタンを押すだけ)
残念ながら、フューズビット等の設定はDOS窓からとなりますが、最初に行うだけなので、プログラム開発中はボタンを押すだけですので非常に便利です。
設定の仕方は、これもsenshuさんのサイトの掲示板で紹介されています。

http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Fnews27#s9331ff6

設定した様子は下記のとおりです。

BASCOM-AVR.JPG

更にこのライターには、外部CLK用の出力も搭載されており、書き込みするAVRが外付け発振子を使用する場合で書き込み時に外部発振子が接続されていない場合でもこのCLKを接続すれば、フューズビットを外部CLKに書き換えた後も動作を確認することができます。
(例)このライター自身のF/Wを書き込み、フューズビットを外部CLKに書き込むと、それ以降書き込まれたフューズビットの状態を確認できなくなりますが(外部発振子が接続されてない場合)、この外部CLK用出力を接続してあれば確認できます。

この機能は便利なので、当局もこのCLK出力が取り出せるようにしました。

DSC00857.jpg
上の写真は、CLKを取り出した様子です。

当局が採用しているISP端子はシングルラインの7Pinで誤挿入防止に、NC Pinを設けてあります。このNC PinからCLKを取り出すようにしました。
また、当局はAVRの電源はほとんど5Vしか使用しないのであまり気にしていませんでしたが、電池使用での3V等を考慮してターゲットからライターの電源を貰う場合と、ターゲット側にUSBからの5Vを供給する場合とが切り替えられるようにSWの配線を変更しました。

変更した回路図は下記のとおりです。

HIDsph080927.BMP

また、これに対応して基板のパターンも変更しました。そのうち基板を作りたいと思っています。

HIDaspx080927.pcb
PCBE基板図




posted by ja6irk at 13:25| Comment(0) | TrackBack(0) | AVR&BASIC

2008年09月23日

ATTiny2313 ¥100ライター その2

今日は祝日でしたが、当局の勤める会社の恒例で出勤日でした。
さて先日の日曜日に製作したATTiny2313を使用した安価なライターで
すが、日々改善が進められており、遅いとの評価だったこのライ
ターも、僅か数日の間に約3倍のスピードアップが実現されています。

帰宅して先ほどサイトをのぞいたら、既に最新ファームがアップさ
れていましたので、早速焼きこみし試してみました。

GOODです。

PC側のライターソフトもHIDspxとして対応されており、使用の自由度が高くなったようです。
これらのソフトは、プログラム一式はsenshuさんのページに
hidspx-0922a.zip として公開されています。
回路図も含まれています。

http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2FHIDasp



当局なりに書き直した回路図と基板図は下記のとおりです。

HIDsph080920.BMP

HIDsph080922.pcb
”PCBEのファイルです”


senshuさん、びんずめ堂さん、irukaさん、そしてkumanさん大変あ
りがとうございました。
posted by ja6irk at 23:05| Comment(6) | TrackBack(0) | AVR&BASIC

2008年09月21日

ATTiny2313 ¥100ライター

DSC00855.jpg  DSC00854.jpg


AVR用のライターとして、最近は以前に作ったUSBタイプを使ってい
ました。
これは、ATMega8を使ったものです。

http://blog.toshnet.com/article/5044131.html

これを作ったときに、¥100で買えるようになったATTiny2313で作
れないだろうかという話題が出ましたが、メモリーに入りきれない
という情報でした。
しかし、時間がたつとチャレンジする人がいるもので、実現されて
いるサイトを見つけ、早速作ってみました。
見つけたサイトは、AVRを使った実験を沢山やっておられて参考に
させていただいている、kumanさんのサイトです。

http://www.geocities.jp/kuman2600/n6programmer.html#13

原点は、「びんずめ堂」さんが作られたもののようですが、
「senshuさん」が改良を加えられたようです。
HIDsphとして、「森芳電子」さんが作り上げられたようですが、
使用に制限があり(非営業的であれは自由のようですが)、新たな
HIDaspというライターS/Wが出来上がったようです。
この数日で色々変化しています。
とりあえず、H/WとしてはHIDsphを作りました。
今回は、USBケーブルとしてライター側にUSBminiBコネクタを採用
してみました。ISP端子は先日見直した、逆挿入を防止した7Pinを
使用しました。

http://blog.toshnet.com/article/18022726.html

DSC00852.jpg

ライターS/Wは、まずHIDsphを使用して動作を確認しました。

hidsph.JPG


このライターの特徴は、¥100で購入できるATTiny2313を使ってい
る点、USB接続だが、PC側に特別なドライバーS/Wが必要ない点で
す。
全部の部品を集めても¥500はかからないでしょう!

確かに、以前作ったUSBaspより遅いかな?という感じはあります
が、実際の使用ではあまり問題にならないと思います。
当局的に唯一残念なのは、ライターS/WはDOS窓からのコマンドライ
ンと言うことです。
誰かWindowsのアプリと作ってくれないかな〜!

今回も基板を起こしましたが、ライターだけではなくATTiny2313を使用
した、周波数カウンタと、¥100miniLCDコントローラーの基板も
一緒にエッチングしました。そのうち、作ってみたいと思っていま
す。

DSC00851.jpg

posted by ja6irk at 22:39| Comment(5) | TrackBack(0) | AVR&BASIC

2008年08月31日

¥100 MiniLCD Frequency Counter

DSC00833.jpg

DSC00831.jpg   DSC00834.jpg

 先週はMiniLCDでの表示が可能となりましたので、¥100マイコンであるATTiny2313 1個と前置分周器(74AC393)で安価な周波数カウンタができないか試してみました。
 ATTiny2313を使った周波数カウンタは以前に作ってあるので、問題は2KBのメモリーの中にプログラムが書けるかということであると予測しましたが、その通りでした。
先週の表示プログラムと以前の周波数カウンタプログラムの合計でメモリー容量は150%で全く入りませんでした。
 そこで表示は数字表示のみにあきらめ、重複しているルーチンは、集約して、やっとカウントした周波数を表示につなげるプログラム領域がメモリー全体の6%ほど確保できました。
LCDの方は、表示する桁のデータを1文字ずつ処理しますので、カウンタの周波数の値を数値から文字列に変換し、その文字列を1文字ずつ処理して表示のルーチンに渡して表示するようにしました。
 ここで発生した問題は、変数の数が多すぎて、RAMエリアが足らないと言って来ました。
かなり悩みましたが、外部I/Fと違い、全て内部処理していますので桁毎の値を配列に持つ必要が無いことに気づき、桁毎に160bitの表示データに直接変換してゆくことで変数を減らすことができました。
 これで、やっと周波数が表示されるようになりました。
プログラムメモリー容量は99%となっており、ぎりぎりです。
 しかし、まだ問題がありました。
周波数の表示が左詰となり、低い周波数で読みにくい状態となっています。これの改善のためには更にプログラムメモリーを削減する必要があります。
 これには、奥の手を使いました。タイマー割り込みの処理ルーチンのアセンブラ化です。割り込み処理はBASICコンパイラはどのレジスタを退避すればよいかわかっていませんので、ほとんどのレジスタを退避しています。これがプログラムを肥大化させているわけです。(PUSH/POP命令)
ためしに、1個ずつレジスタの退避をしながら動作に影響が出ないか実験してみました。思ったとおりです。タイマー割り込みでは効果はありませんでしたが、カウンタ割り込みでは大幅に減らすことができ、結果として93%までとなりました。
 これで、表示位置を調整するプログラムを入れることができます。結果として、96%で右詰表示の周波数カウンタが完成しました。
 周波数は数字のみで桁を区切るコンマや、KHz/Hz表示などありませんが、小型のカウンタができて満足しています。
 カウントする範囲は、下限はわかりませんがHZ単位で、99MHz位まではいけると思います(過去に作ったカウンタの事例から)
 前段のアンプ部はまだ作っていませんが、秋月で売っている「1kHz〜30MHzオシレータ LTC1799モジュール」を接続し30MHzまでが表示可能であることを確認しています。
(ロジック出力なのでこういうとき便利です。簡易信号源としても有効だと思います)
写真は、信号源モジュールとカウンタの様子。14MHz付近を表示しているアップ。低い周波数を表示したときの右詰表示の様子を掲載してみました。

回路図:
100en MiniLCD FrequencyCounter080829.BMP

プログラム:
MiniLCDFrequencyCounter0800831.bas
posted by ja6irk at 17:05| Comment(2) | TrackBack(0) | AVR&BASIC

2008年08月24日

¥100 Mini LCD

DSC00811.jpg   DSC00825.jpg


昨日、今日はハムフェアで、ビッグサイトは賑あっていることでしょう。
今年は、自作品も出せず、本業も忙しくていけませんでしたが、今日は、夏休みから検討していた¥100で購入したMiniLCDの表示プログラムがほぼ出来上がりましたので日記で紹介することにしました。

このLCD自体はジャンク的に売っているもので、仕様が全く不明のものですが、ありがたいことにしっかり解析いただいた方がおられ、サイトで公開されています。当局もこれを参考にBASCOM−AVRで制御してみました。
nyaninyaさん、ありがとうございます。

http://blogs.yahoo.co.jp/nyaninya/40704212.html

LCDの表示制御は、160ビットのシフトレジスタに各セグメントデータを書き込むことによって行います。
セグメント番号とレジスタの160ビットの関係は、上記サイトで紹介されている通りですが、例えば、8桁の英数字を表示するのに、各桁データを各セグメントデータに変換するのに、あ〜でもない、こ〜でもないと、悩みながらやっとのことでそれらしく表示できるようになりました。

プログラムの概要は以下の通りです。
(1)8桁データの入力
 まず、8桁のデータをアスキーコード(8bit)でシリアル入力します。
 従って、トータルで64ビットのデータを取り込みます。
 これらは、桁ごとに8個の8ビットデータとして配列格納します。
(2)桁データの分析とセグメントデータへの変換
 次に、桁ごとに表示されるデータを分析し、そのデータに必要な桁ごとのセグメントを確定します。
(3)セグメントデータから送信データへの変換
 何桁目のどのセグメントを表示するか確定しましたので、LCDに送信する160ビットのどのデータに相当するのか1セグメント毎に変換します。
(4)8桁分の変換が完了したら、LCDに160ビットデータとして送信します。これで表示が完了です。

詳細はプログラムを参照ください。

回路図
MiniLCDTESTBoard080816.BMP

プログラム
MiniLCD0800824.bas

データ送信からのデータで表示動作中の動画



posted by ja6irk at 14:36| Comment(2) | TrackBack(0) | AVR&BASIC

2008年08月15日

AVR用ISP端子配列考 U

あまりコメントをいただくことがないため、見落としてしまっていましたが、JA9TTT/1 加藤さんより、以前に考えたAVR用のISP端子配列の誤挿入防止のためにNC(NonConection)ピンを追加した案をいただきました。以前にも議論してそのままになっていたのですが、具体的に提案いただきましたので、そのまま採用してゆこうと決めました(笑)
一般的には、2列配列の6Pinや10Pinが使用されていますが、配線をするときに非常に面倒です。基板を描くときはもっと面倒です。
幸いにも、AVR側のISP端子配列には規則性があり実際にISPと使用するときに配線しやすく、省スペースで実装できます。
今後のAVR使用時には、この配列で行きたいと思います。

変更したISP端子配列図は下記の通りとなります。

ISP端子配列U080815.pdf
posted by ja6irk at 23:16| Comment(6) | TrackBack(0) | AVR&BASIC

2008年01月29日

I2C もどき!

時間がたつのは早いものです。
今年ももう1/12が過ぎようとしています。
昨年から続けているATTiny2313を使ったI2Cインターフェースに
よる7SEG LEDのドライバですが、やっとのことでそれらしく
仕上がってきました。
結論から言うと、I2CではなくI2Cモドキです。
使用している言語であるBASCOM−AVRにはI2Cのマスター機能と
してのコマンドがあり、これを使ってスレーブ側のプログラム
を作って色々悩みながら進めてきましたが、どうしてもデータ
の取りこぼしがあり、約1ヶ月の試行錯誤の末の結論は、マス
ター側のコマンドには何かの癖があるようで、これも独自に
プログラムを作ってやることによって、無事動作を開始しまし
た。
マスターもスレーブも自分で作ったプログラムなので、正確に
I2Cの仕様に合わせる必要はなく、不必要で複雑な部分はカット
して、作り上げました。
これにより、ロータリーエンコーダーでカウントした値を、I2C
モドキで8桁の7SEG LEDドライバに送信して、目的の周波数表示
が行えるようになりました。
メインダイヤルノブを回転し、それ結果として周波数表示が
変化する様子を録画してみました。
あまり綺麗な映像ではありませんが。

MOV00516.MPG.AVI
posted by ja6irk at 23:07| Comment(0) | TrackBack(0) | AVR&BASIC

2008年01月03日

謹賀新年 今年の自作品

DSC00394.jpg    
遅ればせながら、明けましておめでとうございます。
自作品といっても完成品ではありません。
最近、検討を続けているI2CによるI/Fです。
今回は、秋月の青色7SEG LEDを使って周波数表示用に
ATTiny2313でのI2CスレーブI/Fを検討し、8桁のスタティック
表示基板を作りました。
Tiny2313 1個で2個の7SEG LEDを駆動していますので
8桁駆動で全部で4個の2313を使用しています。
4個といっても、1個¥120ですから、非常に安いI2C7SEG LED
ドライバーということになります。
将来の実装を考え、表示側とドライブ側(2313側)の2枚基板
構成としました。

DSC00397.jpg DSC00398.jpg


とりあえず4PIN(Vdd、GND、SCK、SDA)で表示ができるよう
になりました。
いつものように、基板を作ってからプログラムを作ったのです
が、正月の酒のせいでプログラムを作るのに時間が掛かりまし
た。実装用には、これからの詰めが必要です。

DSC00399.jpg DSC00400.jpg




posted by ja6irk at 23:07| Comment(0) | TrackBack(0) | AVR&BASIC

2007年12月16日

BASICでI2C スレーブ実験U

DSC00383.jpg

久しぶりにBASICでの、I2Cスレーブ実験の続きをやりました。
前回、LCDはだいたい駆動できたので、次は7SEGLEDのダイナミック駆動に挑戦しましたが、やはり、割り込み無しのソフト処理だけでは取りこぼしがあります。
50回に一回くらいのミスまでは詰められたのですが、エラーはなくなりません。
ダイナミック駆動は別の方法をそのうち考えようと、スタティック駆動に挑戦しました。
こちらは、LCDも動いていますし、I2Cのデータ読み込みに専念できますので、当然のことながら簡単に仕上がりました。
ATTiny2313は、I2Cの制御用PINに2本使いますので、残りの使用できるポートは15本です。
Dotを除けば、7SEGLEDが2個制御できることになります。
残りのポート1個は、2桁に1個だけDot表示できるようにすれば良いでしょう。
とりあえず、ブレッドボードで動いている様子を、写真と動画で紹介します。
数字の0から9までのデータを10ms置きに送るところからスタートし、200ms置きに送るところまでを撮影しました。

これで、I2C制御できる 7SEGLEDスタティックドライバー(2個駆動)が¥120でできたことになります。


posted by ja6irk at 22:50| Comment(0) | TrackBack(0) | AVR&BASIC

2007年12月09日

またまた、AVR USB ライター

DSC00376.jpg

BASCOM-AVRで使用するUSBライターとして、AVRaspを製作し、愛用してきましたが、kumanさんのサイトでATMELの提供する開発ツールであるAVRStudio4で使用できるUSB ライターの製作記事を見つけました。
名前がAVRISPMKUとなっており、もしかしてBASCOM−AVRでも使えるのではないかと期待して作ってみました。
kumanさんによれば、原典はATMega168でXTALが16MHzということで、kumanさんご自身でATMega8で12MHzXTALにプログラムを変更されており、お願いしてMega8用のプログラムを送っていただき、製作しました。
同時に、16MHzのXTALも大変お世話になっているOMさんに送っていただき、ATMega168 16MHzXTALも実験してみました。

DSC00372.jpg

いずれも快調に動いております。
しかし、肝心のBASCOM-AVRでは動きませんでした。
このライターは書き込みスピードではAVRaspを更に少しだけ上回っている感じです。
また、FUSE bitの設定がデバイス毎にチェックボックスでできるようになっており、視覚的で使いやすくなっています。
ライター部分のS/Wだけ独立させてBASCM-AVRのEXTERNAL Writerとして使用できないか検討してみましたが、残念ながらできないようでした。
AVRStudio4を使ってアセンブラでプログラムを作る方には、シンプルで安価な高速ライターとしてお奨めです。
今回も、FRISKケースで作りました。
今回は、基板パターンは書いたのですが、1台だけ蛇の目基板で作りました。
マイコンは、ソケットにしたため高さ方向で高くなり、FRISKの蓋は穴を開けてあります。

DSC00375.jpg

USBAVRminiProg.BMP
回路図

kumanさんのサイトの記事
http://www.geocities.jp/kuman2600/n6programmer.html#12

原典のサイトの記事
http://www.simonqian.com/en/AVRminiProg/index.html
posted by ja6irk at 15:30| Comment(0) | TrackBack(0) | AVR&BASIC

2007年11月24日

BASICでI2C スレーブ実験

DSC00346.jpg
実験の様子

今日は、途中で投げ出していたI2Cのスレーブ側のプログラムを
再度挑戦していました。
これまで、割り込みやら、シフト命令やら、ポート入力やら、色々
な方法で試していたのですが、どれもうまく行っていませんでした。
今回は、本当にマスター側からちゃんとした信号が出ているかなど
を、PCでのロジックアナライザを駆使しながら、一歩ずつやって
みました。
結果として、使用しているBASICのマスター命令での信号の出方
にも癖があり、それらを認識した上でスレーブ側(受信側)の
プログラムを作ればいいことがわかりました。
今回のテストプログラムは、割り込みなど使用せず、データと
クロックのポートをメインルーチンで監視しながら1ビットずつ
取り込む方法でスレーブ機能を実現しました。
受信したデータはアドレスとデータのそれぞれ8ビットずつです
が、設定したアドレスを認識し、送られたデータをLCDに表示でき
ています。

DSC00344.jpg
1行目がアドレス、2行目がデータ

I2CのパラレルI/O ICであるPCA9555と並列接続し、PCA9555用の
アドレスとデータ、今回作ったATTiny2313スレーブのアドレスと
データを送り、きちんと識別してデータの取り込みを行っています。
今回は、旨く行ったようです。

DSC00341.jpg
ATTiny2313に送られたデータの様子

posted by ja6irk at 19:31| Comment(0) | TrackBack(0) | AVR&BASIC

2007年10月14日

DDS直接駆動PSK31

PSK31TEST.JPG

 最近、海外のサイトで、KD1JV Stevenさんが設計されたATS-3 マルチバンドCWTRXを使ってPSK31の運用を実現する記事を見つけ、非常に気になっていました。
 それは、当局の自作するTRXのTX部分は、氏の設計がベースになっており、DDSも同じアナデバのAD9834、マイコンはAVRを使用しており、同じようにできるのではないかと思ったからです。
元々、ここ数年の自作の目的はPSK31の耳のいいTRXを作ることにありました。だいぶ遠回りしていますが.....。
 しかし、具体的にどうしてるのか?、PSK31のS/Wとどうインターフェースしているかなど、具体的な記事は見つかりません。
ATS-3の回路図は、入手していましたので、これから察するに、H/Wは何も手を加えず、S/Wだけでやっているように思えました。
 それならばと思い立ち、最近作った7MHz CW TRX「神護」をベースにPSK31対応のマイコンを検討してみました。

 PSK31は、BPSKとQPSKがありますが、S/Wが簡単だろうとBPSKに絞って見ました。BPSKは、信号の位相が180°反転するだけです。つまり、DDSの位相レジスタを制御すれば何とかなると考えました。
 PSK31に関する文献はそれほど多くなく、やっと見つけた日本語の文献から、32mS毎に"0"で位相反転、"1"で位相反転無しだということがわかりました。
 次は、Varicodeというやつです。これは、海外のサイトで定義されたVaricode表が簡単に見つかりました。
 後は力づくです。「神護」のマイコンはATTiny26で2KBしかありません。クロックも内蔵OSCを使用します。従って、仮に信号ができたとしても、受信側でちゃんと復調できるか?、クロックが悪いのか、S/Wが悪いのか判断が付くのか心配でした。
 昨日の夜から、今日一日、あ〜でもない、こ〜でもないと試行錯誤を繰り返し、やっとの思いで復調できる信号が完成しました。
 BASICで、内蔵OSCで、自分のコールサインが復調されるのをみて、久々に感激しました。AVRとDDSとBASICでのPSK31用送信エンジンの完成です。「神護」のH/Wは一切いじっていません。つまりバラモジもない単なるCWTXです。
 あとは、PSK31用のPC S/Wとのインターフェースを考えれば、非常にシンプルなTXが出来上がりそうです。
 StevenさんのATS-3も基本はCW TRXですので、同様のもののエンジンができたことになります。
 最終的に、TRXに仕上げるにはまだ時間が掛かると思いますが、久しぶりに有益な検討ができました。
 写真は、「神護」から送信されたPSK31の信号をIC706で受信し、PSK31用のS/Wである"PocketDigi”を使用して復調の様子を写したものです。


posted by ja6irk at 22:39| Comment(2) | TrackBack(0) | AVR&BASIC

2007年10月07日

IFシフト付ローコスト周波数カウンタ

DSC00267.jpg

先週は、¥120のATTiny2313と10個¥100の7SegLEDを使用した6桁周波数カウンタを製作しましたが、今週は、これを発展させ自作のトランシーバー等に搭載して使えるようにIFシフト機能を追加してみました。
その結果は、だいぶ以前に製作した7MHz CW TRX「善峰」に接続して確認してみました。
「善峰」は、VXOやBFOの信号出力を取り出すようにできていませんでしたが、今回追加しました。
信号の取り出し口にはRCAのピンジャックを使用し、VXOとBFOの信号をSWで切り替えて出力できるようにしました。
また、ケーブルには、TRX側から周波数カウンタの電源が取り出せるように、Cカットして電源重畳としました。

DSC00281.jpg

IFシフト機能は、まずTRXの信号出力をBFO側にして周波数を計測します。

DSC00275.jpg

この状態で、周波数カウンターのIFシフトメモリーSWを押します。

DSC00280.jpg

これでシフトするIF周波数が記憶されます。

DSC00278.jpg

次に、TRXからの出力信号をVXO側に切り替えます。
これで、IFシフトした分の周波数が補正されて、周波数表示されるようになります。

DSC00278.jpg   DSC00267.jpg

補正前のVXO周波数         補正後のVXO周波数 

この機能により、どんなIF周波数のTRXでも、周波数が測定できる範囲であれば補正をかけた周波数表示が可能になります。
「善峰」のようなVXOタイプのTRXで周波数表示をするには、非常に便利な周波数カウンターとして仕上がりました。
課題は、ATTiny2313のプログラムメモリーが2KBと小さく、基本機能しかプログラムできなかったことによる制限です。
VXOの周波数が受信周波数に対し、+IFなのか、−IFなのか、また、BFOがLSBかUSBかなのかについては、プログラムで書き換える必要があります。
最初に設定すれば、後は使わない機能ではありますが、プログラムメモリ容量が足りなくて汎用性は失われています。
4種類のプログラムを用意して選択して書き込めば用は足りますが。

DSC00274.jpg
ISPでプログラム書き込み中の様子

7SegLED_FrequencyCounter_IFShift071007.BMP
回路図

7segLedFrequencyCounterIFShift071007.pdf
プログラム(PDF)
posted by ja6irk at 15:09| Comment(0) | TrackBack(0) | AVR&BASIC

2007年09月03日

AVR用ISP端子配列考

ISP端子070814.JPG

既に一部で公表してますが、こちらにも書いておきます。
AVRのISP端子を基板に実装しようとする時、標準の6Pinや10Pinはパターンを引くのに決して合理的な配列にはなっていません。
当局が、いくつかのTRXなどを作る時に何気なく配列していたものを整理すると、意外にも主要なAVRにはISP関連のポートに規則性があり、うまく行くことがわかりました。
主要AVRの端子配列と合わせて、ご参考になれば!
PDFファイルはこちらです。

ISP端子070814.pdf

こちらにも掲載してます。

http://qrp-homebrewers.net/AVR_ISP.aspx
posted by ja6irk at 21:55| Comment(4) | TrackBack(0) | AVR&BASIC

2007年08月16日

USB AVR用 USBライターの製作 その2

昨日の製作編に回路図を掲載するのを忘れてしまいました。
また、ファームウェアの書き込みとか、ライターとして操作するためのソフトウェアとか、非常に長くなるので、HPの方に纏めました。

http://qrp-homebrewers.net/usbasp.aspx

こちらを参照ください。
posted by ja6irk at 19:56| Comment(0) | TrackBack(0) | AVR&BASIC

2007年08月15日

USB AVR AVR用 USBライターの製作

DSC00063.jpg

AVRのプログラムは基本的にBASIC言語であるBASCOM=AVRを使って作ってきましたが、プログラムの書き込みにはこのBASOCM−AVRから直接制御できる、抵抗だけを使った「Sample Programmer」や「SK200」のパラレルポートを使用するものを使ってきました。
しかし、最近のPCはUSBポートしかないものや、これまでのライターでうまく行かないことが頻繁に起きるようになり悩んでいましたが、この夏休みを使って、AVRマイコンだけを使用してUSBライターが作れるというFischlさんの「USBasp - USB programmer for Atmel AVR controllers」作ってみることにしました。
このライターは大学の研究室や色々な方が、使いこなしの検討を行っておられ情報もたくさんあります。

大元は、下記のWebサイトです。

http://www.fischl.de/usbasp/

これをコントロールするライタープログラムはDOS窓のコマンドライン入力からスタートしているようですが、最近では、WindowsのGUIとしてコントロールできるものも作られており、色々見た中でとりあえず下記のサイトのものを使うことにし、まず、ハードウェアを製作しました。

http://yuki-lab.jp/hw/avrdude-GUI/


AVRのマイコン開発で日常使用するものですから、小型で使い易いものでなければならないと、ケースサイズをお菓子の「FRISK」に入る大きさとしました。
また、動かなくなった時にまた1から作るのは面倒なので、基板を作ることにしました。
あとは、手持ちの部品や、USBケーブルには\100ショップのものを使用するなど、できるだけ安く仕上げることを目標にしました。

後は、いつものような自作工程です。

DSC00018.jpg
基板図の生基板への焼付けです。アイロンを使用します。

DSC00021.jpg
焼付け完了です。

DSC00032.jpg
レーザープリンタの印刷ムラで発生するスをマジックで修正します。

DSC00034.jpg
エッチングを始める道具達です。

DSC00037.jpg
沸騰した湯にエッチング液を混ぜてエッチングします。
濃い紅茶色位です。(湯とエッチング液が半々)

DSC00039.jpg
エッチングが終わると、真っ黒になります。3,5分で終了です。ちんちんのお湯を混ぜるのがミソです。

DSC00043.jpg
焼きつけたパターンマスクを磨いて除去します。これで基板は完成です。

DSC00045.jpg
FRISKのケースに収まるように出来上がりました。

DSC00052.jpg
殆どの部品が実装できました。

DSC00057.jpg
ケーブルも接続し、ケースにも入りました。

DSC00061.jpg
でもどうしても水晶の厚み分がケースに入らず、蓋に穴を開けました。

DSC00062.jpg
蓋に、ラベルを貼って完成です。
今日はここまでです。


posted by ja6irk at 23:36| Comment(5) | TrackBack(1) | AVR&BASIC

2007年06月10日

390円液晶

DSC01438.jpg

ヤフオクで16文字4行の液晶を390円で売っていましたので、
早速ゲットし、表示してみました。
コントラストも良く、表示ができています。
プログラムは、いつもの通りBASCOM−AVRです。
表示だけなので、プログラムは下記の通り、シンプルです。

表示の内容には意味はありません。
こんなのが作れたらいいな〜という文字を並べてみました。


Cls
Cursor Off
Lcd "ANTENNA ANALYZER"
Lowerline
Lcd " Made by JN3XBY"
Thirdline
Lcd "Freq.=7003KHz"
Fourthline
Lcd "R=50ohm X=-1000j"
End

posted by ja6irk at 19:36| Comment(0) | TrackBack(0) | AVR&BASIC