MENU
カタログクリップ
本ページはプロモーションを含みます。

AVRライタ usbaspをツェナーダイオードなしで、atmega328pと青色LEDでつくる

2017 1/09
広告
電子工作
2014年1月18日2017年1月9日

f:id:beiz23:20140113221601j:image:w360
久しぶりにAVRに書き込みをすることに。winavrを入れたら開発環境が全部入っていてすぐ書き込みができるようになりました。(昔秋月で買ったatmega88vが220円の袋に入っていましたが、今ググったら150円に値下がりしていました。)

しかし、この写真の、昔作ったAVRライタはFT232RL(USBシリアル変換)+ponyser(シリアルAVRライタ)USBaspを作りました。

USBasp以外にもいろいろ書き込みハードやソフトがあるようですが、個人で作成されているためそちらは触る気がおきませんでした。オープンソースでだれでも開発に参加できる、というふうではなくてオリジナルの開発者が自分のホームページで公開しているというだけだと、その人の仕事が忙しくなったとかで保守ができなくなることはよくありますので。

そういう意味では、USBaspはGNUGPLv2のもとファームソースが公開されているUSB AVRライタですし、デファクトスタンダード(と私は勝手思っている)でこちらもGNUGPLv2な書き込みソフトavrdudeから使えるというのは良いです。avrdudeはwindowsからでも使えますし、ubuntu gnu/linuxならapt-getでインストールできるのも楽です。さらにavrdudeは、WinAVRgoogle:winavrに標準で入っていて、programmers notepadという開発環境からAVR studio風にボタンひとつでコンパイル・ダウンロード(orプログラム)ができます。

さて、手元の部品で作成するにあたり3.3Vツェナー(Zener)ダイオードがありませんので、代わりに青色発光ダイオードの順方向電圧を使うことにしました。そんな電圧が不安定そうな(I-V特性が悪そうな)ものでよいのか、と思いましたが(定電圧)ツェナーダイオードのデータシートを読むと発光ダイオードの順方向とたいして不安定さは変わらず、十分代用できるように思えます。
その話題はここでも議論されています。http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Fnews25a#nc0d3993
実際に青色ダイオード(型番不明2種類)のI-V特性を測定してみますと、こんな感じでした。(なお緑色ダイオードは多くが~2.0 Vでしたが、一種類だけ青色ダイオード相当の3.0 Vのものがありました。)

@100 Ohm
Vin Vout
テープ青led
5.30 3.355
5.0 3.319
4.7 3.263
4.48 3.235
4.24 3.173
4.03 3.143
3.77 3.084
3.50 3.013
3.21 2.919
3.02 2.840
2.87 2.762
2.44 2.42
0.916 0.88

3mm青
2.796 2.731
3.036 2.866
3.280 2.989
3.562 3.088
3.979 3.206
4.365 3.295
4.548 3.320
4.761 3.359
5.020 3.401
5.377 3.459

f:id:beiz23:20140120161834p:image:w360
例えばルネサスの定電圧ダイオードのデータシートはこちらにありましたが、3.0 Vのダイオードで比較的リニアーなI-V特性のところを読むと、2 mA@3.0 V, 10 mA@3.5 V -> dV/dI = 0.063 mA で、LEDとくらべてたいして変わりません。
http://japan.renesas.com/products/discrete/diode/constant/Documentation.jsp

USBスレーブコントローラとしてAVRのatmega88vを12MHzにオーバークロックして使うつもりでいましたが、ヒューズビット(Hfuse)0xddをGUI経由で書き込みしたところ、GUIソフトが十六進表記を理解せず、Hfuse最上位ビットがプログラム(0)されてしまい、RESETピンがIOピンになってしまいました。高電圧パラレルライタを持っていないので、つまりatmega88vは死んでしまいました。
他にはatmega328pという大容量版があったのでこれを使うことにしました。88用のファームを書いたところ、動作しませんでした。そこで、ファームウェアをソースコードから384p用にコンパイルしなおしました。Makefileのターゲットをatmega328にしてmakeしただけです。

TARGET=atmega328
HFUSE=0xdd
LFUSE=0xff

そしてhfuse, lfuseは88と同じはずなので、これも0xdd, 0xffと書き込みました。
作成されたmain.hexを書き込んだところ、無事windowsに認識されました。
青色ダイオードの電圧を測ると、5 VをAVRがかけた時も、PCから3.3 Vが入った時も、~3.0 Vとなっており、ツェナーダイオードの代わりとして無事使えることが分かりました。

なお抵抗は68Ω ->100Ωとしています。2.2 kオームプルアップ抵抗は、1.5 kΩが正しいのでは?と思いますが、どちらもないので、1 kΩを差しています。3.3 kΩを並列するのが良いかもしれません。プルアップが強すぎると、データラインをGNDに落とすときに負荷が大きくなりますので。
クロックについては、USBはNRZIを情報の符号方法に使っていて、わりと正確なクロックが必要なので、10年前にデジットで買った水晶をさしています。
RESETピンのプルアップは、データシートを見ると実は内部プルアップされているので、外部でわざわざつけなくてもよいと思う。
f:id:beiz23:20140118112425j:image:w360
プルアップされている方のデータラインの青色ダイオードが強く光っています。
f:id:beiz23:20140118113331p:image:w360

 

基板に載せました。
f:id:beiz23:20140118204306j:image:w360
余っている蛇の目基板がなかったので、すでに使っている基板の端を割って使いました。

これをPCに差すと認識します。
しかし、avrdude 5.1で使おうとすると、このようなエラーが出て動いてくれません。

error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

どうもwindows の64 bit系のOSだと、署名されていないドライバはそのままでは使えないようです。そこでここで書かれているように、PCの再起動をしてwindows起動中にF8を押して出てくるメニューのところで、「ドライバの署名を強制しない」を選びました。
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=788666
そしたら無事使えるようになりました。
しかし、再起動すると無効になるので、起動のたびにこれをしないといけないのがめんどい。ということで、ドライバを作りなおしました。
最新のlibusb-win32をダウンロードして(ver. 1.2.6) usbaspを接続した状態で、bin/inf-wizard.exeを実行します。usbaspの装置情報を読み取って、勝手にinfファイルを作ってインストールしてくれます。これだと署名が無効といわれず、無事使うことができます。
f:id:beiz23:20140118205628p:image:w360

 trying to connect to device...

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0x1e950f
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed

         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "C:\data\ele\avr\tmp\led.hex"
avrdude: writing flash (934 bytes):

Writing | ################################################## | 100% 4.48s



avrdude: 934 bytes of flash written
avrdude: verifying flash memory against C:\data\ele\avr\tmp\led.hex:
avrdude: load data flash data from input file C:\data\ele\avr\tmp\led.hex:
avrdude: input file C:\data\ele\avr\tmp\led.hex contains 934 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 4.05s



avrdude: verifying ...
avrdude: 934 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

ターゲットのCLKが1MHzなので、slowモードで書き込みしていますが1 kB を、5 sec程度で読み書きできています。この速度だったら、いつもslowモードでも良さそうな気もする…

電子工作

関連記事

  • 購入前に知っておきたいUSB接続・PC接続型デジタルオシロスコープの利点と欠点。スタンドアロン型との違いは。
    2018年8月9日
  • SWR値はどのくらいまで大丈夫?SWR値から分かる反射波電力の割合。
    2018年7月23日
  • アマチュア無線用SWR計の選び方とダイヤモンド・コメット・ダイワの製品一覧。おすすめは?
    2018年7月23日
  • OWONのデジタルオシロスコープSDS5032Eの基本的な使い方。
    2018年7月10日
  • PCXpresso NXP LPC1769の評価ボード(OM13000)にmbedのバイナリを書き込む方法
    2017年5月13日
  • L, Cを測ることを考える
    2014年8月10日
  • Raspberry piで大気圧と温度を記録してグラフにして他のPCからグラフを見る
    2014年7月26日
  • raspberry pi を使って何かするメモ。
    2014年7月26日
カテゴリー
  • コンピューター
    • gnuplot & eps
    • mac
    • matplotlib
    • wordpress
  • ホーム・家電
    • アイロン
    • オーディオ
    • オーラルケア
      • ジェットウォッシャー
      • 音波振動歯ブラシ
    • カメラ
    • カー用品
    • クリーナー
    • テレビ、レコーダー
    • ドアホン
    • メンズ美容家電
      • ラムダッシュ
    • ルンバ
    • 一覧比較
    • 工具
    • 浄水器
    • 温水洗浄便座
    • 炊飯器
    • 空気清浄機・加除湿機
    • 空調・季節家電
    • 美容家電
      • フェイスケア
      • ヘアケア
      • ボディーケア
    • 血圧計
    • 調理器具
    • 電子レンジ
  • 健康
  • 家事
    • パン
    • 料理
    • 育児
    • 食品
      • おせち
      • コーヒー
  • 書籍
  • 知識
  • 趣味
    • ペン字
    • ロードバイク・クロスバイク
    • 車
    • 鉄道模型
    • 電子工作
サイト内検索
最近の投稿
  • モナークHGとモナークM7の4つの違い。[ニコン双眼鏡]
  • ニコン モナーク M7とM5の4つの違い。[双眼鏡]
  • Speed Wi-Fi DOCK 5G 01の実機使用レビュー。
  • RZ-760、GT-760、ST-760の違い。[ガス缶・CB缶]
  • RZ-730、RZ-730S、RZ-730SBK、RZ-730SWH、ST-Y450の違い。
  • TC-EA35WとTC-E123SBKの違いを比較。[スティッククリーナー]
  1. ホーム
  2. 趣味
  3. 電子工作
  4. AVRライタ usbaspをツェナーダイオードなしで、atmega328pと青色LEDでつくる
  • ホーム
  • プライバシーポリシー

© カタログクリップ
contact@beiznotes.org

目次