こんにちは16のマッキーです。
この記事はrogy Advent Calendar 2018の15日の記事です。
タイトルの通りですが、AdC(Advent Calendar)ということでADC(Analog Digital Converter)を作ってみました。
ADCはマイコンとかを使う人はおなじみの機能だったりすると思うのですが、それを使うのではなく自分で作ろうといったところです。
そんな感じで作ったものを紹介します。
ADCの概要についてはここ → https://www.rohm.co.jp/electronics-basics/ad-converters/ad_what1 などを見ると以下の説明もだいたいわかると思います。
今回はフラッシュ型と逐次比較型のADCを作りました。とりあえず動作すればいいかなということで性能は特に気にして作ってませんが、最終的にAD変換したものをLEDにレベルメーターのように出力できればいいかなと思ったのでどちらも5bitのADCにしました。
フラッシュ型
なんかできた pic.twitter.com/ecWNlNqKyp
— マッキー (@mmaakkyyii) 2018年12月3日
回路自体もコンパレータを大量に並べただけなのでシンプルでいい感じですね。
逐次比較型
とりあえずこんな感じになった
逐次比較型のADC的なもの pic.twitter.com/KIAHyFCoEx— マッキー (@mmaakkyyii) 2018年12月15日
本当はサンプルホールド回路が入るのですが、時間が足りなかったのでついてません。ただ人がLEDのメーターを見る分には問題なさそうです。(動画は1Hzの三角波)
二分探索 pic.twitter.com/94hi7kIkGI
— マッキー (@mmaakkyyii) 2018年12月15日
二分探索してる様子です。青い信号(DACの出力)が少しずつ黄色い入力電圧に近づいてます。
比較部分のロジックはFPGAを使いました。
またそのためのHDLのコードをMATLABのHDL Coderというツールを使ってみました。このため、コードは書かずにブロックをごちゃごちゃいじってHDLを生成できました。
↑Simulink上の回路の雰囲気
FPAG周りの回路はユニバーサル基板上に作りました。(こんな感じの配線は初めてやったけど意外とできることが分かった)
まとめ
- AdCでADC作ったっていうのができてよかった(これが一番やりたかった)
- AD変換ができたっぽかったのでよかった
- なんかFPGA使いたかったので使えてよかった
- MATLAB最高だった
- はんだ付け楽しかった
- 他の変換方式もやろうと思ってたけど時間が足りなくて悲しかった