東京工業大学 ロボット技術研究会

東京工業大学の公認サークル「ロボット技術研究会」のブログです。 当サークルの日々の活動の様子を皆さんにお伝えしていきます。たくさんの人に気軽に読んでもらえると嬉しいです。
新歓特設ページ        ロボット技術研究会 HP        ロボット技術研究会 twitter公式アカウント

電子工作

「ロボット技術研究会」通称「ロ技研」は、その名前の通りロボットの制作や研究はもとより、電子工作や機械工作、プログラミングなどの幅広い分野にわたるものつくり活動を行っています。

カテゴリ一覧: loading

トランジスタで作った時計

井土です。

先週ロボット技術研究会の役員が交代し、1年間の部長としての役割が終わりました。
今年度になって部員数は200人を突破し、色々ありましたが無事に終わりました。
これも支援してくださった皆様のおかげです。どうもありがとうございました。


さて、今回の本題は

トランジスタで作った時計
      (トランジスタ時計)


についてです。

id研の井土・齋藤・大貫・中村の4人で製作しました。

まず、完成品なのですがこんな感じです。
make


Maker Faire Tokyo2014(MFT2014)のロボット技術研究会ブースで展示をしました。
トランジスタとして2N7000(Nch MOS-FET)を640個使用しています。 
マイコンや74系のICは使わずに、クロックの分周器・カウンタ・7segデコーダは
すべてディスクリートのトランジスタで作りました。


◯なぜ作ったのか
話は 1 年前にさかのぼります。
昨年は論理演算であるNANDのみを用いて時計 (NAND 時)を製作し、
MFT2013で展示しました。(以前、少し紹介しました) 

すると
「トランジスタでやってみてよ (笑)」
「あっちにリレーだけの時計があるよ」
という意見・煽りを多く頂きました。

「あの人たちをを見返してやりたい」
「そうだ次はトランジスタだけで作った時計を展示しよう」


そこから、トランジスタだけで時計を作るプロジェクトは始まりました。



さて、ここからは設計・製作の過程を紹介していきます。
◯おおまかな構成
各機能を図にするとこんな感じです。
block

基板は全部で17枚(切削によるプリント基板)で、
各基板一枚で10進カウンタなどの機能を一つが完結しています。
 
図にはありませんがカウンタの桁上りのところにスイッチが入れてあり、
強制的にクロックを送ることで時刻合わせの機能を実装しています。
このスイッチのチャタリング防止にシュミットトリガー回路をつけているのですが、
これももちろんトランジスタ(2SC1815)でできています。
 

◯トランジスタによる論理演算
カウンタやデコーダはすべてAND,OR,NOTなどの基本的な論理回路の組み合わせでできます。
ということでまずは基本的な論理回路をトランジスタで作りました。

簡単に作れるNOT・NAND・NORはこんな感じです。
負荷の抵抗は10kΩで、50kHzくらいまでなら問題なく動きます。
59


バイポーラトランジスタだとベース電流がまあまあ必要で、
この回路が数百個もあると消費電流が大きくなってしまうので、FETを選択しました。
 
また、プッシュプルにしないのかと思われる人もいるとは思いますが、
PchのFETが安く手に入らなかったのでNchFETと抵抗で作ることにしました。
チップのFETを許せばPchの低価格なものもあるのですが、
どうしてもDIPで作りたかったのでこのような回路になりました。
(DIP部品で基板がでごちゃごちゃしてるほうが好きなので) 


◯デコーダの設計
論理回路はNANDもしくはNORだけで全部作れます。
去年はそれに基づき、NANDだけで時計を作ったわけです。

今年はトランジスタでせっかくなのでNANDではなくNORを作り、
そのNORを基本として組み合わせて上位のカウンタやデコーダを作っていきました。

デコーダはどうやって作るのでしょうか。
小さいものなら以下の手順が簡単です。
1.真理値表を書く
2.論理式(加法標準形)にする
3.カルノー図を使って論理式を簡単化する

簡単化についてはここがわかりやすいです。
http://akita-nct.jp/yamamoto/lecture/2003/2E/karnaugh_diagram/node1.html

論理式を式変形して項の数を減らせると、回路が小さくなるので簡単化をします。
もちろん論理式上での簡単=トランジスタ数が少ないではありませんが、
論理式の簡単化くらいしかわからなうのでとりあえず簡単化を行います。

去年のNAND計はカルノー図を使って、すべて手作業で行いました。
今回はクワインマクラスキー法というアルゴリズムを使ってコンピュータでこの作業を行いました。
クワインマクラスキー法で論理回路を簡単化するツールをC++で自作し、
それによってデコーダ・カウンタの設計を自動化したのが今回の設計における特徴です。

この簡単化ツールは真理値表に当たるデータの書かれた入力ファイル(画像では 37dec.txt)を用意すれば
自動でその真理値表をみたす論理式を出し、論理式の簡単化を行ってくれます。
真理値表を読み取って論理式にしたものが画像のinputに表示され、
それを簡単化したものがoutputのところに表示されます。

1,2,3...は変数のA,B,C、-は否定を意味しています。
input1の例だと、真理値表は
1
で、それを簡単化すると
2

になるという意味です。
05

真理値表のdon't careにもちゃんと対応をしていて、don't careを考慮した上で簡単化をしてくれます。
また、簡単化した結果が複数個あるときはそれらを全部出してくれます。

このツールによってデコーダの設計がとても楽になりました。
この時点でデコーダはNOT,AND,ORで構成されているので、
それらをNORにしてNOR特有の簡単化などを行ってデコーダの完成です。


◯カウンタの設計
カウンタはD-FFを元に設計をしていきます。
フリップフロップならなんでもいいんですが、D-FFだと考えるのが楽なのでD-FFを選択しました。
そのD-FFはトランジスタでNORを作り、それらを以下のように組み合わせることで実現します。
dff


長くなるので省略しますが、下の図のような感じで
D-FFの出力→組み合わせ回路→D-FFとやってやることで順序回路が作れます。
cnt

ここでも組み合わせ回路(デコーダ)を作る必要があるのですが、
先ほどと同様に、自作の簡単化ツールを使うことで自動で小さい回路を設計することができます。


◯実装
設計ができたら今度は実装です。
本当はユニバーサル基板でやりたかったのですが、
MFTに間に合いそうになかったのでプリント基板を使いました。
学校のものつくり支援センターには基板切削機があるので、それを使って片面のプリント基板を作ります。

そのために設計した論理回路たちをトランジスタレベルでCADに入力し、配線図を作成します。
最終的に6種類くらいの基板を設計しました。

参考までに、これが4bitの2進数を入力して7segLED用のデータを出すデコーダの配線図です。
標準ロジックでいう7447と同じような機能です。
22


基板データができたら基板切削機に基板を作ってもらい、はんだ付けをするのみです。
材料は大量のトランジスタと抵抗、少しの電解コンデンサとコネクタのみです。
31

できた基板の一部を並べるとこんな感じです。

トランジスタの森
44

整列するトランジスタたち
08


最後に組み上げて、コネクタを圧着しまくって配線したら完成です。

54




◯おわりに
MFT2014にトランジスタ時計を展示した結果、まぁまた煽られますね。
次は真空管らしいです。
 

アクリルをレーザー加工

id研の井土です。

レーザー加工機でアクリルを加工したので、今回は作ったものとその制作の様子を紹介します。
まずレーザー加工機なのですが、東工大にはものつくり支援センターという学生が自由に使える大きな工場があり、そこにおいてあります。
ものつくり支援センターには、ボール盤旋盤フライス盤など、金属加工ではおなじみの工作機械はもちろんのこと、基板切削機レーザー加工機などもおいてあり、講習を受けることでだれでも使えるようになります。

今回もそこにお世話になりました。

レーザー加工機はCADで作った二次元の図面どおりにレーザーでアクリルやMDFを切断してくれる機械です。なので、まずは加工したものをCADで設計します。

データができたらそれをレーザー加工機に送り、アクリル板をセットすれば準備完了です。
あとはスタートボタンを押すと勝手に加工が始まります。

写真の板には、傷防止用の紙が貼ってあるので茶色ですが、透明のアクリルを加工してます。
07

作りたいものをいっぱい並べとくと、同時にいっぱい出来ます。
01

動画はこんな感じです。
割と早く動いてくれます。


続いて、作ったものの紹介です。今回は2種類のものを作りました。
1つ目は以前このブログに書いたRaspberryPIによるミュージックサーバのケースです。
45

以前はHDDを使っていたのですが、割と発熱するのと配線がごちゃごちゃするという理由から64GBのmicroSDに全て入れることに変更しました。

こんな感じで立ちます。
25


もう一つ作ったのはユニバーサル基板を保護する板です。
ユニバーサル基板ではんだ付けをすると、裏面にゴミが入ってショートしたり、裏面の配線を引っ掻いた時に断線してしまったりします。それを防ぐために保護用の板とかが欲しいなと思っていたので作りました。

ユニバーサル基板の裏面に取り付けるとこんなかんじになります。
透明で見難いですが、これで引っ掻いたりしても大丈夫です。
あと、ちょっとだけ見栄えがよくなります。
24
57

サイズは秋月電子のユニバーサル基板に合わせてあり、Aサイズ、Bサイズ、Cサイズの3種類を作りました。
これでユニバーサル基板が捗ります。
36

アクリルをレーザー加工機で加工して何か作る場合、作業としてはCADで設計するのみなのでとても楽です。
その上見栄えがいいのでオススメです。


 

MakerFaireTokyo2014に出ます

部長の井土です。
今回は皆様に報告があります。


東京工業大学ロボット技術研究会として、
MakerFaireTokyo2014への出展が決定しました

電子工作・ロボットをいっぱい展示する予定です。 
今年は11/23,11/24に東京ビッグサイトで行われます。
ぜひ見に来て下さい。 公式ページ http://makezine.jp/event/mft2014

あと、見たいものがあれば教えてください。
製作者が展示してくれるかもしれません。 



ちなみに私、井土は
トランジスタ(MOSFET)のみで時計を作って展示 する予定です。

去年のMFTはNANDのみで作った時計(NAND計)を展示しました。
展示してたらなんか煽られたので今年はトランジスタです。

38

NAND計自体に実用性とかは皆無ですが、

ユニバーサル基板に密と並ぶ部品・配線の美しさ
無駄に遠回りして作った達成感

まさに趣味の電子工作

と言った感じで、作っていても見ても楽しいです。(私は)

03


これをトランジスタで作ったらもっと楽しいはずです。

現在は設計・検証段階ですが、進み次第ブログにもなんか書いてく予定です。 

それではまた 

100W級ソーラーシステム自作

どーも。椋けり(twitter:@Ryokeri14)です。id研です。
そう、秋月バイトの彼です。

夏休みにもかかわらず、バイトを入れすぎて
全然遊んでないじゃないか!

じゃあ電子工作をしよう!

秋月電子で稼いだお金は秋月電子で使おう。そう、還元。
ということで、どん!
 
あれ?こんなの秋月では売ってないぞ?
はい。これはAmazonでポチりましt…
お値段
¥13,800
高いよぉ

秋月での買い物はこちら。 
ソーラー充電コントローラー(12/24V)10/10A CXN10-1.1
ソーラー充電コントローラー[CXN10-1.1]
http://akizukidenshi.com/catalog/g/gM-02824/
¥6,000

ソーラー充電コントローラー用リモートディスプレイCXM-1.2
ソーラー充電コントローラー用リモートディスプレイ[CXM-1.2]
http://akizukidenshi.com/catalog/g/gM-02826/
¥4,000

完全密封型鉛蓄電池(12V22Ah) WP22-12
鉛蓄電池12V22Ah[WP22-12]
http://akizukidenshi.com/catalog/g/gB-00020/
¥4,500

ソーラーパネルの設置には
近くのホームセンターで売っていた
「イレクターパイプ」という金属パイプを使用。
あとはステンレス製のワイヤーで固定。
パイプ、ジョイント、ワイヤー、VVFケーブル代
¥5,166

さらにAmazonで36Ahの鉛蓄電池を増設。¥5,000

とまあ、システムに必要なものをはこんな感じ。

★作り方★
イレクターパイプを切って組み立てる。
VVFケーブルでソーラーパネルと鉛蓄電池をつなぐ
終わた\(^o^)/

はい、できました!
IMG_1703
IMG_1705
 ↑ベランダにイレクターパイプを使って設置。

IMG_2233
 ↑部屋ではこんな感じ

下の配電盤にはDCジャックがずらりと並んで
様々な機器に電気を供給する。
IMG_2239
真ん中のつまみは机の照明の明るさ調整用の可変抵抗。
PICを使ってPWM制御だぜ!
IMG_2244
これが机の照明。1WのパワーLEDを18個も使ってチョー明るい!

次にこれがUSB電源出力
IMG_2248
IMG_2249
DCDCコンバーターを使って5Vに安定化している。
IMG_2247
最高6Aまで出力できる超優れものだ。

あと、電気が余ってるときは
DC/ACインバータを使ってAC100Vを作る。
IMG_2253
この形になれば、パソコンでもテレビでもなんでも使える!
ただし、やりすぎるとすぐに鉛蓄電池が空になるから注意。

ここまでは2Fの自分の部屋の中で電気を使っていた。

次に出窓の穴とアンテナの穴をとおして
電源を1Fに通す。 
IMG_2252
このへんはテキトーに。
これで1Fのリビングでも充電可能に。
IMG_1215
IMG_1217
IMG_1216
こちらのUSB電源給電器には、アナログ電流計が取りつけてあって
リアルタイムで充電電流を見ることができる。
充電が終わると電流計もちゃんと0を指していてなかなかおもしろい。 

今回のシステムの概要図です。
SCN_0001


まあ、今のところはこんなとこですかね
費用はシステムづくりに3万円程度ってところ。
照明用LED代を含めると恐ろしい金額に( ;∀;)
発電でこの分を賄うのは何十年先のことやら…
やはり、重要なのは自分で使う電気を自分で作り出すことですね
さあ、これからも電子工作の毎日だ!

FPGAでプロセッサを作ろう vol.1

誰か代わりにアブスト書いてくれ!!
現実逃避中です.すいぼうです.

今回はFPGAで何故任意の回路を作ることが出来るのかという点について,簡単に説明しようと思います.
使ってる用語は情報工学科2年で聞くものがほとんどだと思います.
詳しくは末尾に参考サイトとしてリンクを貼って置きますので,そちらの方へどうぞ.

FPGAには内部RAMやI/Oなどユーザが任意のICを作成する上で使う機能が予め備わっています.
これらの機能をどのように接続してどのようなタイミングで動作させるのか,ユーザはこれを指定してあげることで任意の回路を作り出すわけです.

例えば,4ビットの入力に対応した16進数表示を7セグメントディスプレイ(以下7セグ)で行いましょう.
小数点部分は使わないので,表示パターンは以下の16通りですね.

7seg

この7セグは7つのLEDで構成されているので,ユーザは入力に対して計7本の出力を切り替えるような論理回路を組む必要があります.
FPGAのどのピンから入力するのか,どのピンから出力するのかも定義しなくてはなりません.
出力が1の時に対応したLEDは点灯し,0の時に消灯するように7セグとFPGAが接続されていることにします.
中央の横棒に注目しましょう.
0,1,7,cの時は0,それ以外では1を出力する必要があります.
対応した入力は0000, 0001, 0111, 1100ですね.
[]内の数字が小さいほうがLSB(least significant bit:最下位ビット)側として書くと,

中央の横棒 = ~((~input[3] & ~input[2] & ~input[1] & ~input[0]) |
                        (~input[3] & ~input[2] & ~input[1] & input[0]) |
                        (~input[3] & input[2] & input[1] & input[0]) |
                        (input[3] & input[2] & ~input[1] & ~input[0]));

となります.
これを人間ならカルノー図,コンピュータならクワイン・マクラスキー法なんかを使って簡単化します.
(~input[3] & ~input[2] & ~input[1] & ~input[0]) | (~input[3] & ~input[2] & ~input[1] & input[0])

~input[3] & ~input[2] & ~input[1]
みたいな感じです.
ツールがやってくれるんで,そこまで気にしなくても大丈夫ですけどね.

FPGAにはフリップフロップとLUT(ルックアップテーブル)をいくつか含んだセルがたくさん入っています.
XilinxならSlice,AlteraならALMというように呼び方は異なりますが.
このLUTはSRAMで構成されています.
今回の場合,このSRAMのアドレス線にFPGA外からの入力信号を,SRAMのデータを先程の論理式(もどき)に対応した値にします.
もしかしたら,16-1のマルチプレクサと同じ動きというように説明した方が分かりやすいかもしれません.
図にするとこんな感じです.

srammulti
↑黄色の部分をユーザが定義する.0,1,7,cの時に出力が0になる.

このSRAMからの出力を,FPGAの出力する部分に繋げればいいわけです.
こんな感じで残る6つを設定すれば,7セグの表示が出来そうですね.

先程も述べたようにFPGAにはセルがたくさん入っているので,この組み合わせによって様々な論理回路を構成できるようになります.

とまぁ,今回はここまで.
何故任意の回路を作れるのか,少しは疑問が解決できたでしょうか?
全く知らずに触れるよりは……と一番疑問となりそうな部分を説明してみました.
これより詳しくは触れないつもりですので,気になる人は調べてみてください.
面白いですよ(そしてハマりました).

次回は,早速Xilinxでの開発環境(PlanAhead)を入れてみたいと思います.
バックアップとってアンインストールして……と少し手間なので,遅くなるかも?

訂正や要望,質問等はコメントにどうぞ.

<< vol.0                vol.2 >>


参考サイト
半導体技術解説:いまさら聞けない FPGA入門 (2/3) - MONOist(モノイスト)
http://monoist.atmarkit.co.jp/mn/articles/0609/20/news118.html
ギャラリー
  • 自作キーボードを作ろうver1.0
  • 自作キーボードを作ろうver1.0
  • 自作キーボードを作ろうver1.0
  • 自作キーボードを作ろうver1.0
  • 第14回ROBO-ONE Light 結果報告
  • ロボット技術研究会紹介
  • ロボット技術研究会紹介
  • rogy2016冬合宿 in 戸狩
  • rogyサバゲ:†革命†をもっと
記事検索
最新コメント