電卓の作り方


15

私はエレクトロニクスの初心者です。私は忙しいままにするために、シンプルなプロジェクトと副趣味として電卓をゼロから構築しようとしています。

私の目標は、科学的な計算機やグラフ計算機ではなく、単純な計算機を構築することです。

このための良いチュートリアルはありますか?どのように始めるべきですか?


2
ここでは、基本的な4機能電卓を構築するためのキットがあります:spikenzielabs.com/Catalog/...
jwygralak67

回答:


26

電子工学の知識があまりなくても構築できる計算機の例を次に示します。追加機能は含まれていませんが、フル機能です。

はい、私は冗談を言っています、これをあまり真剣に受け取らないでください


笑。それは何ですか?よくわかりませんが、見たことがあると思います。それらのいずれかを手に入れることができるかどうか非常に興味があります。それらの名前またはリンクがありますか?
-Philoxopher


これは私の質問に影響を与えました:electronics.stackexchange.com/questions/11263
markrages

@KerxPhilo-ハハハハハハハハハハハ......ああ、時代はどう変わるのか。
コナーウルフ

@markrages、あなたの質問への賛辞、非常に興味深い:)
Philoxopher

18

それは簡単なプロジェクトではありません。心配するべき多くの教育サブプロジェクトがあります。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言語を使用して各機能ブロックで作業することです。その一部は同等のソフトウェアソリューションよりもはるかに簡単になり、一部はソフトウェアソリューションよりも少し難しくなります。

あなたが考えていることについてより多くの情報を提供できる場合、ナンドゲートのボックスまたはマイクロコントローラベースのソリューション、またはあなたは何か他のものを考えていましたか?


7

構築できる最も簡単な電子計算機は、4機能のバイナリ計算機です。スイッチを使用して2進数を入力することで構築でき、7400ファミリの基本的なロジックエレメントは加算を処理する加算器を処理できます。個々のLEDを使用して出力の各2進数を表すか、またはいくつかの7セグメントディスプレイを使用して16進数で番号を表示できます。バイナリ計算機を構築すると、10進数からバイナリへのコンバータの構築を回避でき、デジタルエレクトロニクスの仕組みを理解するのに役立ちます。趣味としてデジタルエレクトロニクスを使用する予定がある場合は、Logisimを入手することを検討してください。Logisimは、回路を構築する前に回路をシミュレートできる無料のプログラムです。


2
ワオ。System-on-Chipの時代に、追加するために 1桁あたり20ゲートを配線するようにしたいですか?最初のハンドヘルド計算機でもそれをしませんでした。シングルチップ計算機は30年前から存在しています。
ロン

さて、74181を4ビットスライスに使用できます。他に何もないとしても、それは簡単です。
W5VO

1
はい、彼がソフトウェアで計算機を作成したい場合、これは1つまたは2つのチップで実行できます(この例のようなマイクロプロセッサを使用)。おそらく、ディスクリートコンポーネントを使用して電卓全体を構築するには時間がかかりすぎるかもしれませんが、ハードウェアを使いたい場合は、バイナリ電卓が出発点として適しています。
inventorM

これは実際には、バイナリビットの数学を適切に理解するための良いアイデアです。私はブレッドボードで部屋を使い果たしたときに、12歳の娘と半加算プロジェクトを行いました。彼女はMinecraftで事実上「ビルド」しました。彼女はゲートの概念を理解し、ビットを追加しました。これが全体のポイントでした。
ロンJ.

価値があるのは、電卓は(通常)バイナリおよび変換で内部的に動作せず、BCDで直接動作することです。ALUには4ビットのスライスで十分です(実際、Intel 4004の本来の仕事でした)。
スペロペファニー14年

6

これが私がやった方法です。

コンポーネントを選択:

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進数の精度と乗算と除算の点で)。

これが他の人の役に立つことを願っています。


5

開発キットを使用して、すでにボード上にあるすべてのものを使用して、ソフトウェアに集中できます。たとえば、http://www.microchip.com/stellent/idcplg? IdcService = SS_GET_PAGE&nodeId = 1406&dDocName = en024858&part = DM240001このキットには、PIC、LCD、およびいくつかのボタンがあります。追加のボタンを追加するためのヘッダーがたくさんあります。欠点の1つは、LCDが最初に使用するよりも大きいことですが、確実に使い始めることができます。

周りを検索すると、より小さな(そしてより安い)ものを見つけることができるかもしれません。

このようなキットを使用すると、コードがいくつかの例になるため、コードの記述を開始しやすくなり、すべて正しくセットアップされているため、ハードウェアの問題の問題がなくなります。もう1つの欠点は、このキットは電卓プロジェクトには過剰なハイエンドの写真を使用することですが、将来的に他のタスクを実行するために成長および変更する余地があります。また、将来的に独自のボードを作成するための出発点として使用する回路図も提供します。


5

私の棚には、フォレストM.ミムスIIIが編集したH.エドワードロバーツによる「電子計算機」があります。1974年。

それは人々がどのように使用したかについてかなり教育的ですプロトタイピング(電線の大きなスパゲッティ混乱)、上Rubylithを敷設PCB設計(の写真- 1974年、多くの写真でビルド電卓には、大量生産MITS計算の完全なライフサイクルであります製図台)、個々の部品、組立ライン、ウェーブはんだ付け機、およびトラブルシューティング。

ああ、それ以来多くのことが変わった。今日の本は、通常、大きなスパゲッティの混乱を見せないようにしています。今日の電卓では、電源電圧を電卓PCBに直接印加することは避けています。

多くのことはまだ同じです。人々は通常、プロトタイプを作成する際に、大きなスパゲッティを大量に作ります。


3

まず第一に、あなたが必要とする主要なコンポーネントについて考える必要があります。おそらく、マイクロコントローラー、キーパッド、およびLCDスクリーンが必要になります。これらのコンポーネントを選択すると、ファームウェアの開発と同じくらい簡単になります。


それ以上の詳細を提供できますが、エレクトロニクスの構築に関しては私はまったくの初心者であり、この挑戦​​を最初に受けたいと思います。上記で提供した情報を基に、素晴らしいスタートを切りましたが、どのマイクロコントローラーが必要かわかりません。また、ファームウェアの開発方法は?ファームウェアをCで記述してファームウェアにアップロードしますか、それともASMで記述する必要がありますか?
-Philoxopher

また、愛好家向けに非常に安価な価格で電子機器を販売する優れたWebサイトを提供できますか?あなたの支援に感謝!
-Philoxopher

2つの主な趣味のマイクロコントローラーは、PICとAVRです。これら両方のデバイス用のCコンパイラがあります。シンプルなマイクロコントローラーは、キーパッドとLCDとのインターフェースに十分な入力/出力ピンがある限り、プロジェクトに使用できます。趣味のエレクトロニクス向けの優れたWebサイトはSparkFun
Ryan


3

私はこれが良い最初の学習プロジェクトになると信じていますが、それは簡単なことではなく、あなたは途中でかなり学ぶ必要があります、そしてプロジェクトにはそれに沿って取り組むためのかなりの数のサブプロジェクトが含まれています仕方。

あなたが決定する必要がある最初の設計のハードルは、どの技術レベルでこれをしたいですか?マイクロコントローラー(大部分は自給自足のマイクロプロセッサー)の有無にかかわらず、演算ユニット(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サイトを参照してください。マイクロコントローラのために、そこから行きます。



0

ハードウェア要件

  • ユーザー入力用のキーパッド
  • 入力し、その結果を表示するためのLCD
    実際の電卓製品では、次のような特殊文字を表示するためのカスタムLCDを必要とする=-およびM(のためのMCMRMSの操作)の兆候。カスタムLCDデザインのコストは最大3000ドルですが、カスタムデザインのLCDは他の汎用LCDよりも経済的です。あなたのプロジェクトは趣味のためだけなので、KS0108コントローラーを備えた汎用LCDを使用することをお勧めします。
  • 非常に安価で機能のないマイクロコントローラー
    非常に単純なタスクを実行するため、非常に基本的なコントローラーが必要です。安価なPICマイクロコントローラーを使用できます。

設計手順

  • LCDの
    駆動LCDの駆動を管理します。その上にいくつかの数字を書きます。ソフトウェアインターフェイスを作成します。
  • キーパッドをテストする
    LCDで行ったのと同じ手順を実行します。キーパッドでソフトウェアを制御していることを確認してください。
  • 算術演算を行うアルゴリズムを作成
    する乗算と除算が可能なマイクロコントローラーを使用する場合、その演算を自分で行う必要はありません。しかし、マイクロコントローラーにもっとお金を払う必要がありますが、一方で、プロジェクト中に学ぶことは少なく、経験も少なくなります。

(平方根、サイン/コサイン計算など)より高度な算術機能を追加する場合は、ニュートン法またはテイラー級数展開を使用して関連する計算アルゴリズムを実装する必要があります。

それ以外の場合は、単純なプロジェクトになります。これまでの経験があまりない場合、主な課題はLCDとキーパッドの操作です。


野望のレベルに応じて、非常に粗雑なマイクロコントローラを構築するために、「ROM」(おそらくEPROMまたはパラレルフラッシュ)とともに、いくつかのシフトレジスタと小さなディスクリートロジックを使用できます。20個以下のチップを使用すれば、簡単な計算機が可能かもしれません。かなり大きなROMを使用する場合。典型的な命令は、「シフトレジスタ1の出力X、シフトレジスタ2のY、出力ストローブをZに設定し、いくつかのレジスタの値を定数Aに連結して形成されたアドレスから次の命令をフェッチします」です。
-supercat

BCD加算を実行するための回路は必要ありません。これらはすべてコード内で処理できます。2つの個別に制御可能なシフトレジスタがある場合は、必要に応じてそれらを進めてソースオペランドとデスティネーションオペランドを並べ、4つの命令を使用して、各値から取得した4ビットの値に基づいてCPUを20状態のいずれかに設定します。次の4つの命令は、各シフトレジスタから次の4ビットを取得し、そのうちの1つを計算結果の最初の4ビットで上書きできます。
-supercat

「カスタムLCD」要件に異議を唱えます。電卓LCDは、パッドピッチ、単純な対科学的(通常は8対10桁を意味します)のわずかなバリエーションを持つ商品アイテムの外観をすべて提供します。上記の特定の選択範囲内では、寸法やフォントスタイルがわずかに異なる場合でも、機能的に同等のアイテムは数百ではないにしても数十個あります。
クリスストラットン

@ChrisStratton:アナンシエーターのない8桁のディスプレイが必要な場合は、その説明に合う既製の部品を利用できます。私は、典型的な電卓の機能と同等の機能を備えた市販のディスプレイを見たことはないと思います。計算機はゼブラストリップ接続を使用する傾向があることに注意してください。これは、製造するピンよりも安価ですが、DIYプロジェクトでの作業が困難です。
supercat

@supercat-安価な電卓で使用されるLCDは、ゼブラストリップではなく、熱で活性化される接着剤が付いたリボンを使用する傾向があります。そして、それら主に標準の既製アイテムであり、製造工程間で交換できます。
クリスストラットン

0

計算機を実装する最も簡単な方法は、おそらくマイクロコントローラーを使用することでしょう。そのルートに進むことにした場合、最初のステップは、実際に計算を行うコードを見つけることです。オペランドと演算子を受け入れ、結果を出力するプログラムが必要です。Cで記述されたこの比較的単純な電卓モジュール何が必要なのかをあなたに教えてくれるはずです。加算、減算、乗算、除算、およびビットごとの演算が可能です。また、科学計算機のように逆ポーランド記法を使用すると、括弧内の部分式を解決できます。したがって、どのボタンが押されたかを読み取り、数字を実際の数値に変換するバッファーで各「トークン」を収集し、「=」ボタンを取得すると、トークンのリストをこの評価コードにフィードして、結果が単一の値になる式。


0

初心者向けに、プロジェクトに推奨されるBOMを次に示します。

  • Arduino UnoまたはLeonardoボードx 1、必要なマイクロコントローラーを搭載
  • 1倍 HD44780ユビキタスな16x2のようなベースのLCD
  • 1x 4x4マトリックスキーパッド

これにより、基本的な計算機を構築できます。

より高度な目的のために、ここに私の推奨BOMがあります。

  • 1x Arduino Mega 2560またはArduino Due(この場合、プログラムは大きくなります)
  • ST7920文字とグラフィックの両方をサポートする1x ベースのマトリックスLCD
  • キーボード用Arduino USBホストシールド(Mega 2560のみ、ネイティブUSBホスト機能を搭載)1x

これにより、TI-83 PlusやTI-nSpireシリーズのような手の込んだグラフ電卓を構築できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.