Category Archives: 電子回路 カテゴリ "電子回路"のRSS  

[電子回路入門]DCモータとは

2012年7月29日 (カテゴリ: 電子回路基礎:)

今回は、直流電源で稼動するDCモータについて説明します。 DCモータと書くと難しそうですが、乾電池直結で動かす事が出来る以下のようなモーターをイメージしてもらえれば良いです(子供向けのラジコンとかに入ってそうなモノです)。 GP.256 ハイパーダッシュ2モーター 15256 (グレードアップパーツシリーズ No.256) モータの分類 モータを使用することで電気エネルギーを機械的な動作に変換することが出来ます。 モータにはDCモータ、ACモータ、ステッピングモータなど色々なものがあり、それぞれ以下の特徴を持っています。 DCモータ 直流電源を与える事でモータを回転させることが出来ます。 コイ…


続きを読む

ダイオードを回路に入れると,電圧が0.6V下がる理由は?

2012年7月29日 (カテゴリ: 電子回路基礎:)

ダイオードはアノードからカソードにのみ電流を流すことが出来るけど、逆方向に流す事は出来ません。 この特性の事を、整流作用と呼びます。 ダイオードを作るためには、シリコン(珪素:けいそ)を使用した半導体を使用することが多いですが、シリコンダイオードはアノードからカソードへ電気を流しても、両端の電位差が0.6V以上ないとほとんど電流を流す事が出来ません。 この電圧のことを順方向電圧と呼びます。 一方、電位差が0.6Vを超えると、ダイオードは非常に大量の電流を流す事が出来ます。 オームの法則はE=IRなので、0.6V以下で電流がほとんど流れないという事はダイオードの抵抗が非常に高く、0.6Vを超える…


続きを読む

[PIC]TRISA,TRISBレジスタの”TRIS”って何?

2012年7月28日 (カテゴリ: PIC:)

PICのレジスタ一覧を見ると、TRISA/TRISBレジスタというものが有ります。 このレジスタは、それぞれPORTA/PORTBの入出力を決定するもので、役割は分かっているのですが、”TRIS”が何の略なのか語源が気になったので調べてみました。 答えは、MPASMのユーザガイドに記載されていました。 Mnemonic TRIS r   Description Tristate port rMnemonic TRIS r Description Tristate port r と言うわけで、TRISはTristate(トライステート)の略でした。 TRISA,…


続きを読む

[C#]Pic16f84シミュレータを作成する

2012年7月28日 (カテゴリ: C#, PIC:)

これまで1ヶ月ほど掛けて、パタヘネ本でCPUの動作原理を勉強してみたり、PICによるアセンブラプログラムの作成を行ってきました。そこで、今回は勉強した成果として、Microchipから発売されているPic16f84のシミュレーターを作成してみます。 いきなり全部作ると大変になるので、今回は大枠を作るために、ADDLW(Wレジスタの加算)とGOTO命令しか解析できない最低限のCPUシミュレータを、C#で構築します。 このシミュレータは、C#上ではクラス(Pic16f84Simulatorクラス)として実装していきます。 まずはプロパティの定義を行います。 class Pic16f84Simula…


続きを読む

セラロックの波形をオシロスコープで確認する

2012年7月28日 (カテゴリ: PIC, 電子回路基礎:)

ムラタから発売されているセラロックは、主に小規模向けマイコンでクロック生成用の安価なパーツとして使用されています。 この、セラロックが作り出しているクロック波形が気になったので、オシロスコープで確認してみました。 今回の確認で使用したパーツは、8MHz出力のCSTLLS8M00G56です。 まずは、手始めにセラロックをPICマイコンの16F84Aに接続し、動作している状態での波形を確認してみました。 画像がぼやけていて見づらいですが、縦横軸のメモリが波形の下に表示されており、横は1メモリが10nsec,縦は1メモリが1Vです。周期も画面右下に出ているのですが、7.96MHzとほぼ仕様値どおりの…


続きを読む

半加算器をNANDとNORだけで構成する

2012年7月27日 (カテゴリ: 論理回路基礎:)

半加算器(Half adder)というのはは、2つの1桁2進数に対する足し算を行い、和(Sum)と繰り上げ(Carry)を求める回路です。 今回は、半加算器の論理回路をNANDとNORだけで構成する方法について説明します。 まず、半加算器の振る舞いを押さえる為に、”NANDとNORだけ”という話は一旦おいといて、真理値表を確認します。 –半加算器の真理値表– in | out X Y | C S —–+—– 0 0 | 0 0 0 1 | 0 1 1 0 | 0 1 1 1 | 1 0in | out X Y | C S —–+…


続きを読む

[デジタル回路]組合せ回路と順序回路の違い

2012年7月26日 (カテゴリ: 論理回路基礎:)

デジタル回路には、組み合わせ回路と順序回路が有ります。 組み合わせ回路は、入力から出力が決定するものです。 一方、順序回路は、入力値と内部状態から出力が決定します。 順序回路の代表的な例としては、以下の様なものがあります。 ラッチ(latch) RSラッチ Dラッチ   フリップフロップ(flip flop) Dフリップフロップ JKフリップフロップ   加算器(adder) 全加算器 半加算器 並列加算器   カウンタ 5進カウンタ 10進カウンタ 24進カウンタ 60進カウンタ … グレイコードカウンタ   タイマ ワンショットタイマ/インターバ…


続きを読む

[MPLAB]エラー”Argument out of range. Least significant bits used.”が出る時にチェックすべき事

2012年7月25日 (カテゴリ: PIC:)

MPLABでアセンブル時、Warning[202] Argument out of range. Least significant bits used.エラーが出る場合があります。 このワーニングは、セットした値を代入したとき代入先に値が入りきらないという警告です。 warningなのでhexファイルは作成されますが、値が意図したとおりセットされず、プログラムの動作は期待したものとは異なってしまうため、修正が必要です。 問題が発生する状況を分かりやすい例で言うと、以下のコードはWarning[202]が発生します。 MOVLW 0x100 MOVLW 0x100 Wレジスタは8ビットなので最…


続きを読む

[電子回路]コンデンサの基礎知識

2012年7月24日 (カテゴリ: 電子回路基礎:)

コンデンサとは コンデンサは、電気をためておくことが出来るパーツです。 コンデンサの両端の端子に電圧をかけると、コンデンサの容量分、電気を貯めておく事が可能です。 コンデンサの両端子は電気的につながっていない為、直流成分を通す事が出来ないという特徴が有ります。 この特徴を利用して、特定の周波数成分を取り除くフィルタや、電源近くにコンデンサを置く事でノイズを除去することが出来ます。 他にも、コンデンサがバッファとして使用することで、特定の入力信号に対して、遅延を掛けて出力を行わせる事が出来ます。 これによって、例えばマイコンの初期処理(電源ONするまでの間リセット端子をActiveにする等)の簡…


続きを読む

コンプリメンタリ・トランジスタとは何か?

2012年7月23日 (カテゴリ: 電子回路基礎:)

トランジスタのデータシートを見ると、以下のように”コンプリメンタリ・トランジスタ”というものが指定されている場合があります。 ここで言うコンプリメンタリ・トランジスタとは何のことでしょうか? トランジスタは製造方法によって、PNP型とNPN型というものが有ります。 コンプリメンタリトランジスタというのは、この型(PNP/NPN)だけが逆で、他の特性は同様となるトランジスタの事を指します。 例えばルネサスが発売しているトランジスタである、2SC2334のデータシートを見ると、コンプリメンタリトランジスタとして2SA1010と記載されています。 確認のため、これら2つのトラ…


続きを読む

縦向きのトグルスイッチは,上下どちらをONにすべきか

2012年7月23日 (カテゴリ: 電子回路基礎:)

電子回路を作成する際、回路をON/OFFする為にトグルスイッチを使用する場合があります。 トグルスイッチには対象機器の特性や、スペース、想定する設置場所等によって、上向きや縦向きなど、様々な設置方向がありますが、縦置き式のトグルスイッチを設けた場合、上下どちらをONにすべきでしょうか? トグルスイッチを縦置きで設置するする場合、モノがぶつかったりした時にスイッチが下に変わってしまう危険があります。 この為、トグルスイッチを上下どちらがONにすべきかを考える時は、”上でON、下でOFF”にするのが一般的です。 これは、地球には重力があるので、下方向に押し下げられる可能性の…


続きを読む

[PIC]アセンブラで数値を記述する場合は基数指定が必須です

2012年7月22日 (カテゴリ: PIC:)

PICのアセンブラで基数を明示せずに数字を指定すると、通常は16進数として認識されます。 例えばPIC16F84で、以下のコードを実行すると… LIST P=16F84 INCLUDE P16F84A.INC ORG 0   MAIN MOVLW 0x10 GOTO MAIN   END LIST P=16F84 INCLUDE P16F84A.INC ORG 0 MAIN MOVLW 0x10 GOTO MAIN END このように、Wレジスタに0x10(10進数で”16″)がセットされます。 ですがMPLABを使用している場合、この振…


続きを読む

[C#]PIC16シリーズのバイナリを逆アセンブルする

2012年7月22日 (カテゴリ: C#, PIC:)

前回、MPLABで生成されたhexファイルを解析するプログラムをC#で用意しました。 今回はこのバイナリ(機械語)を元に、逆アセンブルするプログラムを作成します。 というわけでプログラムです。 13bitの2進データをみて文字列に変換するだけなので、単純に力技です。 今回は分かりやすいように全命令の処理を列挙しましたが、PICの機械語命令は、命令の各bitに何の情報を持たせるかの構成パターン数が少ないので、最適化させればもう少しシンプルに書けそうです。 PICアセンブラ入門 using System;   class Pic16f84 { //***************…


続きを読む

C#でintelのhexファイルフォーマットを解析する

2012年7月21日 (カテゴリ: C#, PIC:)

C#でintelのhexファイルフォーマットの解析プログラムを作成したので,公開しておきます。 hexファイルフォーマットはアスキー形式の可変長テキストですが、シンプルな作りになっているので読み込みは簡単です。 ファイルフォーマットの詳細が知りたい場合は、以下のエントリで説明しています。興味があれば参考にしてください。 MPLABで作成されたhexファイルのフォーマットを解析する ここで読み込んだ情報を元にPIC16F84A用のバイナリを逆アセンブルしてみる予定ですが、本クラス自体はターゲットデバイス非依存な作りです。 (pic以外用のROMデータでも解析できるはずです) というわけで、解析処…


続きを読む

74HC4511とBQ-N516RDで,4桁の7セグLEDをコントロールする

2012年7月16日 (カテゴリ: 論理回路基礎:)

7セグのLEDであるBQ-N516RDと、BCDから7セグLED用デコーダICの74HC4511を組み合わせて、PIC等のマイコンからLED表示を行わせる回路を作成します。 今回は、PIC部分後回しにして、BQ-N516RDと74HC4511の仕様とピンアサインをチェックします。 まずは価格のチェックです。 どちらもマルツパーツ館で購入できます(ネットからも買えます) BQ-N516RD 7セグメントLED(4桁・赤・カソードコモン) 472円/個 74HC4511 BCD-to-Seven Segment Latch/Decoder/Driver 157円/個 それでは、各パーツのスペックを…


続きを読む

ラッチとフリップフロップの違い

2012年7月11日 (カテゴリ: 論理回路基礎:)

論理回路では、入力信号の状態を保持したい場合がある。 このような場合の最もプリミティブな機構として、ラッチやフリップフロップがある。 RSラッチ 1ビットの状態保持を行う事ができる。 入力状態が直ぐに出力へ反映される。 RとSを同時にアサート状態にすることは出来ない。 Dラッチ RSラッチと基本的に同じで1ビットの状態保持を行う事ができるが、ゲートピンがEnableの時のみ出力が変更される。 Dフリップフロップ CK信号が立ち上がりのタイミングの入力を保持する。 同期式回路を組むときに使う。 現実は電子的な遅延があるので、実際はCK信号のちょっと前(セットアップ時間)から入力を安定させておき、…


続きを読む

PICkit3のファームを手動でアップデートする

2012年7月8日 (カテゴリ: PIC, 未分類:)

MPLABでPICkit3を使用している場合、通常は初回接続時に自動でファームアップデート処理が走ります。 正常にプログラムが書き込めない等、PICkit3の動作が安定しない場合は、手動でファームを更新させると上手くいく場合があります。 ファームの手動アップデートは、以下の手順で行う事が出来ます。 メニューバーのProgrammer->Settingsを選択します。 Configrationタブを選択し、Manual Downloadボタンをクリックします。 ※MPLABをデフォルトの場所にインストールした場合、PICkit3のファームは以下の場所にあります。 C:\Program Files…


続きを読む

[PIC]TMRモジュールを使用する(タイマー割り込み)

2012年7月6日 (カテゴリ: PIC:)

PICにはTimer0モジュールというものがあり、このモジュールはカウンタやタイマー処理として使用できます。 今回はPI15F84におけるタイマー処理について説明します。 Timer0モジュールの仕組み Timer0モジュールは、カウンタ又はタイマーのどちらか一方として使用することが出来ます。 どちらのモードとして使うかはオプションレジスタ(0x81:OPTION_REG)の5ビット目にあるT0CSビットで指定することが可能で、このビットは以下の意味を持ちます。 OPTION_REG.T0CS(bit5)   1:RA4/T0CKI -> カウンタモード 0:内部クロック -&…


続きを読む

[PIC]内蔵EEPROMへアクセスする

2012年7月4日 (カテゴリ: PIC:)

PICには電源を切ってもデータを保存して置ける領域としてEEPROM(Electrically Erasable Programmable ROM)が用意されています。 PIC16F84Aの場合EEPROMのサイズは、データ長8bitのものが64個で計64byteの領域が存在します。 このEEPROMですが、その特性上書き込み回数の上限値が決まっており、仕様上は1000万回までの書き換えが保証されています。一見すると1000万回なんて到達しなさそうですが、PICの動作速度が速い為、頻繁に書き換えると、意外とすぐに上限に達してしまいます。 計算してみると、1回の書き込みは10msec程度で終わる…


続きを読む

[PIC16シリーズ]ピン数別の機能・評価一覧

2012年7月3日 (カテゴリ: PIC:, )

PICはシリーズが多すぎて各チップの機能が分かりづらいのが難点ですが、価格と特徴を上手く整理してくれているものがあったので備忘録としてメモっときます。 PIC16ではなく18シリーズについて知りたい場合は、下記の記事を参考にして下さい。  [PIC18シリーズ]ピン数別の機能・評価一覧 【Pickit3】PIC専用のスレPart21【速度3倍?】 http://uni.2ch.net/test/read.cgi/denki/1228312753 より ——————————&#…


続きを読む