私はエレクトロニクスの初心者です。私は忙しいままにするために、シンプルなプロジェクトと副趣味として電卓をゼロから構築しようとしています。
私の目標は、科学的な計算機やグラフ計算機ではなく、単純な計算機を構築することです。
このための良いチュートリアルはありますか?どのように始めるべきですか?
私はエレクトロニクスの初心者です。私は忙しいままにするために、シンプルなプロジェクトと副趣味として電卓をゼロから構築しようとしています。
私の目標は、科学的な計算機やグラフ計算機ではなく、単純な計算機を構築することです。
このための良いチュートリアルはありますか?どのように始めるべきですか?
回答:
電子工学の知識があまりなくても構築できる計算機の例を次に示します。追加機能は含まれていませんが、フル機能です。
それは簡単なプロジェクトではありません。心配するべき多くの教育サブプロジェクトがあります。1つはボタンとデバウンスです。もう1つは、ディスプレイに文字を書き込むことです。これをどのように実装するかについての決定があります。nandゲートの大きな箱からそれを作ることに興味がありますか、マイクロコントローラまたは他のプロセッサを取り、ソフトウェアを書きたいですか?fpgaを使用して、RTLですべての計算を行うことに興味がありますか?問題をそれらのコンポーネントに分解し、一度に1つのコンポーネントを処理/学習してから、それらを結合する必要があります。たとえば、コア数学エンジンが実際にマイクロコントローラー上のソフトウェアである場合、1つのタスクには、デスクトップにキーストロークを送り、最終的にディスプレイに表示される文字を出力できるC関数を記述することが含まれます。以前にプログラムしたことがない場合は、簡単なタスクです。
私がやろうとしている教育プロジェクトとして、それぞれ5ドル以下のmsp430 launchapadを数個、またはそれぞれ約12ドルでSTM32バリューラインディスカバリー(stm32 / armベースの1つ)を取得します。多くの人々があなたをarduinoに誘導します。それは素晴らしいプラットフォームでもあり、長所と短所があります。最初のマイクロコントローラーとしては使いません。シンプルな2行の液晶パネルを購入します。アース液晶は以前は良い場所でしたが、sparkfunに行くだけかもしれません。1つのマイクロコントローラーボードを液晶パネルに接続し、ディスプレイに文字を配置する方法を学びます。その後、マイクロコントローラでUARTを使用する方法を学びます。これは、多くの場合、バイトを爆発させて開始し、その後受信してエコーします。uartレシーバーを使用してディスプレイに表示するものを受信し、ダム端末(パテ、ハイパーターム、minicom)からコンピューターにフィードを送り、機能することを確認します。次に、別のマイクロコントローラーを使用し、uart in and outの経験を使用して、コア数学エンジンで作業します。コンピューターから0-9、+、-、=をフィードし、最初に乗算と除算を追加し、十分に勇気がある場合は浮動小数点を追加しますそのため(または適合するライブラリを持っている)。数学モジュールからの出力は、=が送信されたときなどに入力番号をエコーし、結果を出力します。次に、ボタンの処理方法を見つけ、ボタンの配列を見つけ、それらを3番目のマイクロコントローラーに送り、デバウンスして、 uartから0-9、+、-、=数学マイクロコントローラーへ。次に、中間のuartを使わずに、これらすべてを単一のマイクロコントローラーに減らします。あなたのuart inとout経験を使用して、コア数学エンジンで作業し、コンピュータから0から9、+、-、=にフィードしてから、乗算と除算を追加し、それに対して十分な勇気がある場合は浮動小数点を追加します(または持っている適合するライブラリ)。数学モジュールからの出力は、=が送信されたときなどに入力番号をエコーし、結果を出力します。次に、ボタンの処理方法を見つけ、ボタンの配列を見つけ、それらを3番目のマイクロコントローラーに送り、デバウンスして、 uartから0-9、+、-、=数学マイクロコントローラーへ。次に、中間のuartを使わずに、これらすべてを単一のマイクロコントローラーに減らします。あなたのuart inとout経験を使用して、コア数学エンジンで作業し、コンピュータから0から9、+、-、=にフィードしてから、乗算と除算を追加し、それに対して十分な勇気がある場合は浮動小数点を追加します(または持っている適合するライブラリ)。数学モジュールからの出力は、=が送信されたときなどに入力番号をエコーし、結果を出力します。次に、ボタンの処理方法を見つけ、ボタンの配列を見つけ、それらを3番目のマイクロコントローラーに送り、デバウンスして、 uartから0-9、+、-、=数学マイクロコントローラーへ。次に、中間のuartを使わずに、これらすべてを単一のマイクロコントローラーに減らします。数学モジュールからの出力は、=が送信されたときなどに入力番号をエコーし、結果を出力します。次に、ボタンの処理方法を見つけ、ボタンの配列を見つけ、それらを3番目のマイクロコントローラーに送り、デバウンスして、 uartから0-9、+、-、=数学マイクロコントローラーへ。次に、中間のuartを使わずに、これらすべてを単一のマイクロコントローラーに減らします。数学モジュールからの出力は、=が送信されたときなどに入力番号をエコーし、結果を出力します。次に、ボタンの処理方法を見つけ、ボタンの配列を見つけ、それらを3番目のマイクロコントローラーにフィードし、デバウンスして、 uartから0-9、+、-、=数学マイクロコントローラーへ。それから、これらすべてを、中央のuartのものなしで単一のマイクロコントローラーに減らします。
もう1つの方法は、knjn.comまたはラティスブレビアからrs-232 fpgaボードの1つ(これで十分ですか?)または他の多くのものを入手し、RTL言語を使用して各機能ブロックで作業することです。その一部は同等のソフトウェアソリューションよりもはるかに簡単になり、一部はソフトウェアソリューションよりも少し難しくなります。
あなたが考えていることについてより多くの情報を提供できる場合、ナンドゲートのボックスまたはマイクロコントローラベースのソリューション、またはあなたは何か他のものを考えていましたか?
構築できる最も簡単な電子計算機は、4機能のバイナリ計算機です。スイッチを使用して2進数を入力することで構築でき、7400ファミリの基本的なロジックエレメントは加算を処理する加算器を処理できます。個々のLEDを使用して出力の各2進数を表すか、またはいくつかの7セグメントディスプレイを使用して16進数で番号を表示できます。バイナリ計算機を構築すると、10進数からバイナリへのコンバータの構築を回避でき、デジタルエレクトロニクスの仕組みを理解するのに役立ちます。趣味としてデジタルエレクトロニクスを使用する予定がある場合は、Logisimを入手することを検討してください。Logisimは、回路を構築する前に回路をシミュレートできる無料のプログラムです。
これが私がやった方法です。
コンポーネントを選択:
Input Device
(私の場合は4x4キーパッド。数字用に10個のキー、演算子用に4個、「=」用、「reset / refresh」用に1個)
Processor
(8ビットAVR)
Output device
(16x2 LCD)
Power supply
(9ボルトのバッテリーを備えたLM7805レギュレータ)
BreadBoard
(動作を開始した後にPCBを作成します)
私はアセンブリでプログラムすることを選択しました(学ぶために)、個人的な選択の問題。IDEとしてAVR Studio 4を使用し、16進数をAVRにフラッシュするために自家製のlptベースの「ISP」プログラマーを使用しました。
その後、LCDとキーパッド用のドライバーを作成しました。入力を取得して出力を生成できる場合、10進数と演算子の解析を開始してから、式を解析して約、Infix、Postfix、およびPrefixメソッド。私はアセンブリで作業を行ったので、「FLOATデータ型のサポート」はなく、最終的にカスタムデータ型(15桁の10進精度を維持するためのBCDベースのデータ型はRAMに多大な無駄がありました!)
これですべて完了しました。計算機の準備ができました(BUBと名付けました!)。
私は1MHzで動作し、casio_991MSを上回ることができました(10進数の精度と乗算と除算の点で)。
これが他の人の役に立つことを願っています。
開発キットを使用して、すでにボード上にあるすべてのものを使用して、ソフトウェアに集中できます。たとえば、http://www.microchip.com/stellent/idcplg? IdcService = SS_GET_PAGE&nodeId = 1406&dDocName = en024858&part = DM240001このキットには、PIC、LCD、およびいくつかのボタンがあります。追加のボタンを追加するためのヘッダーがたくさんあります。欠点の1つは、LCDが最初に使用するよりも大きいことですが、確実に使い始めることができます。
周りを検索すると、より小さな(そしてより安い)ものを見つけることができるかもしれません。
このようなキットを使用すると、コードがいくつかの例になるため、コードの記述を開始しやすくなり、すべて正しくセットアップされているため、ハードウェアの問題の問題がなくなります。もう1つの欠点は、このキットは電卓プロジェクトには過剰なハイエンドの写真を使用することですが、将来的に他のタスクを実行するために成長および変更する余地があります。また、将来的に独自のボードを作成するための出発点として使用する回路図も提供します。
私の棚には、フォレストM.ミムスIIIが編集したH.エドワードロバーツによる「電子計算機」があります。1974年。
それは人々がどのように使用したかについてかなり教育的ですプロトタイピング(電線の大きなスパゲッティ混乱)、上Rubylithを敷設PCB設計(の写真- 1974年、多くの写真でビルド電卓には、大量生産MITS計算の完全なライフサイクルであります製図台)、個々の部品、組立ライン、ウェーブはんだ付け機、およびトラブルシューティング。
ああ、それ以来多くのことが変わった。今日の本は、通常、大きなスパゲッティの混乱を見せないようにしています。今日の電卓では、電源電圧を電卓PCBに直接印加することは避けています。
多くのことはまだ同じです。人々は通常、プロトタイプを作成する際に、大きなスパゲッティを大量に作ります。
まず第一に、あなたが必要とする主要なコンポーネントについて考える必要があります。おそらく、マイクロコントローラー、キーパッド、およびLCDスクリーンが必要になります。これらのコンポーネントを選択すると、ファームウェアの開発と同じくらい簡単になります。
私はこれが良い最初の学習プロジェクトになると信じていますが、それは簡単なことではなく、あなたは途中でかなり学ぶ必要があります、そしてプロジェクトにはそれに沿って取り組むためのかなりの数のサブプロジェクトが含まれています仕方。
あなたが決定する必要がある最初の設計のハードルは、どの技術レベルでこれをしたいですか?マイクロコントローラー(大部分は自給自足のマイクロプロセッサー)の有無にかかわらず、演算ユニット(ALU)、プログラマブルロジック(CPLD、FPGA)の有無にかかわらずディスクリートロジック(AND、OR、NORゲート、フリップフロップなど)言及も考慮もされていません。これは、計算を行うために使用される技術について最初にする必要があります。入出力制御は、主に美観やコストに影響される二次決定(LED 7セグメントディスプレイ、LCDパネル)です。
デジタル計算について学習するための潜在的に有用な出発点の1つは、非常にアクセスしやすい本、風変わりなClive MaxfieldによるHow Computers Do Math(ISBN:0471732788)です。これは「ソフト」-プログラミングまたは論理レベルで書かれており、実際に計算を行うために理解する必要があります。
他の誰かがuWatch(-micro -Watch)プロジェクトを例として挙げており、1970年代に独自の計算機を構築した電気技術者(またはEE学生)へのインターネット上の言及があります。FPGA(プログラマブルロジックデバイス)ベースの計算機の構築に関する詳細もあります。
エレクトロニクス(またはデジタルエレクトロニクス)を初めて使用する場合は、micrcontrollerを設計の出発点として使用することをお勧めします。プログラミングの複雑さ(プログラミングの経験があまりない場合)については、前述の本のWebサイトを参照してください。マイクロコントローラのために、そこから行きます。
VisualTFTデザイナーには、その例の1つとして単純なタッチスクリーン計算機があります。そのソフトウェアは、Mikroelektronika Pascal、AVR、PIC、ARM、8051マイクロコントローラー用のBasicおよびCコンパイラー用のコードを生成します。
=
、-
およびM
(のためのMC、MRとMSの操作)の兆候。カスタムLCDデザインのコストは最大3000ドルですが、カスタムデザインのLCDは他の汎用LCDよりも経済的です。あなたのプロジェクトは趣味のためだけなので、KS0108コントローラーを備えた汎用LCDを使用することをお勧めします。(平方根、サイン/コサイン計算など)より高度な算術機能を追加する場合は、ニュートン法またはテイラー級数展開を使用して関連する計算アルゴリズムを実装する必要があります。
それ以外の場合は、単純なプロジェクトになります。これまでの経験があまりない場合、主な課題はLCDとキーパッドの操作です。
計算機を実装する最も簡単な方法は、おそらくマイクロコントローラーを使用することでしょう。そのルートに進むことにした場合、最初のステップは、実際に計算を行うコードを見つけることです。オペランドと演算子を受け入れ、結果を出力するプログラムが必要です。Cで記述されたこの比較的単純な電卓モジュール何が必要なのかをあなたに教えてくれるはずです。加算、減算、乗算、除算、およびビットごとの演算が可能です。また、科学計算機のように逆ポーランド記法を使用すると、括弧内の部分式を解決できます。したがって、どのボタンが押されたかを読み取り、数字を実際の数値に変換するバッファーで各「トークン」を収集し、「=」ボタンを取得すると、トークンのリストをこの評価コードにフィードして、結果が単一の値になる式。
初心者向けに、プロジェクトに推奨されるBOMを次に示します。
HD44780
ユビキタスな16x2のようなベースのLCDこれにより、基本的な計算機を構築できます。
より高度な目的のために、ここに私の推奨BOMがあります。
ST7920
文字とグラフィックの両方をサポートする1x ベースのマトリックスLCDこれにより、TI-83 PlusやTI-nSpireシリーズのような手の込んだグラフ電卓を構築できます。