[Arduino]PC電源でミニ四駆を動かしたい

とりあえずモータが届いたので、ミニ四駆のモータ電源をarduinoから供給できるようジャンプワイヤーを無理やりミニ四駆に接着します。

dav

単三電池だと上手く動くが、arduinoだと動かないのは何故だろう??
Arduinoのデジタルピンの電流は40mAなので、どうやらモーターで必要な200mAに足りていないらしい。

※tech specのDC current per I/O Pinってところが出力電流らしい。

電流を増幅するにはトランジスタを使うみたいね。
ん? また部品買うのか? 全然進まねー、もうやだああああああああああああああああああああ

### 考察
ミニ四駆をマイコンで制御する場合、モーターのオンオフや回転数ぐらいしか制御できない
右折、左折をコントロールするには前輪タイヤにステアリング機能を付けないといけない
※ミニ四駆では前輪、後輪共に直線
ステアリングは、arduinoの電圧を変えると、向きが左右に動くようにしなければならない
モータを制御できるということは、他の駆動系(電車、飛行機、ドローンなど)も理論上はarduinoで動かせるが、ステアリング同様に、その仕組みを作るらなければならず、機能を理解して資材をゼロから用意してハードルが高い
一通り部品を用意していざ動かしてみても、問題が発生し、それが部品に起因している場合は、また資材を買わなければならず、時間がかかる
ステアリング付きのミニ四駆にカメラを装着すれば、理論上は自動運転も不可能ではない筈

### 対策
自分で想像して作るよりも、完成物を分解して作った方が時間の節約になる

しかし、ミニ四駆って、自分が子供だった頃と殆ど変わってないけど、この仕組みをこの低単価で提供しているTAMIYAは偉大な会社なんだと理解しました。

FPGA

FPGAとは?
-> Field Programmable Gate Arrayの略
-> 現場で書き換え可能な論理回路の多数配列:ハードウェア言語で修正が出来るデバイス

ハードウェア言語とは一般的に半導体の回路記述をする際に用いる言語
論理回路とはデジタル信号を扱う回路のこと
論理合成と配置配線はハードウェア言語で記述された回路をFPGAに書き込む為のデータに変換すること

CPLDは汎用ロジックIC数百個~数千個分の回路を内部で構成できる
LSIを超える規模の回路を簡単に構成できる
PLGの一種

【組み込み系の開発工程】
要求分析→要件定義→基本設計・詳細設計→RTL設計(Verilog、VHDLなどを用いてコーディング) →論理合成→動作シミュレーション→配置配線

ビッグデータのデータ処理やディープラーニング向けの並列計算等にFPGAやASICが使われることもある

Raspberry Piの基盤とOSインストール

SoC(System-on-a-Chip)と呼ばれるLSIはCPU、GPU、メモリを含む

Raspberry Pi 3 model BのCPUはARM社
– Broadcom BCM2837
– 1.2GHz 64-bit quad-core ARMv8 Cortex-A53
– メモリ1GB LPDDR2 SDRAM

DSI(Display Serial Interface)を備えたディスプレイは、タッチ操作が可能

取り敢えず、macからmicrobで電源供給して、OSインストールまでは出来た^^
ヒャッホー

sdr

USBキーボードがないとInputが出来ないので、キーボード待ちだけど、IoTコミュニティーに入る第一歩は踏み出せたかな。
がはははは

ROMの電子回路の仕組み

### マスクROM
メモリセルの内部回路の開放と短絡によって1, 0を記憶する
半導体製造工程には写真の感光技術が利用されるが、基板を覆うマスクパターンによってデータが記録される
データ線ADとデータ線Dが短絡しており、AD=HとなるとD=Hとなる
アドレス線を開放状態にすると、AD=HとしてもD=Lのままである H, Lに0と1を割り当てて、1ビットを記憶することができる
バイポーラトランジスタを使ったマスクROMはこの原理で動作させてることができる
実用的には消費電力の少ないMOSFETを半導体スイッチとして用いている
マスクROMはIC製造段階で情報を書き込むのでデータを変更することができない

### PROM
一度だけ書き込み可能なROMをPROMという
ヒーズをトランジスタのエミッタ端子とデータ線の間に設けて、これを溶断するかどうかによってH、Lを記憶する
PROM出荷時には全ヒューズが繋がっている
セルにLを記憶するには、電源電圧Vccを高く設定し、ヒューズが溶断されるとLが記憶される
ヒューズ以外にもダイオードを挿入し、pn接合を破壊・短絡してH, Lを表す方法もある

### EPROM
データの正気と再書き込み可能なROMをEPROMという
データの消去に紫外線を使うUV-EPROMと電圧を使うEEPROMがある
装置固有の設定データや利用者情報などの記憶、書き換え頻度の少ない用途に適している

– 書き込み方法
p型半導体基板上にn型半導体を二つ設け、これに電極ドレイン(D)とソース(S)をつける
更にドレイン・ソース間に絶縁層を設け、その上にゲート電極(G)をつける
n型半導体は自由電子が含まれた物質で自由電子の流れが電流
p型半導体は自由電子を含んでいない
ゲートに電圧を加えない状態では電流は流れない(nMOSがオフ)
ゲートに電圧を加えるとゲート、ソース間はコンデンサとして働き、正の電荷がゲート電極に蓄えられる
-> nチャンネルを作り、半導体スイッチとなる Vgs > Vthでオン、Vgs < Vthでオフ FGの帯電量によってMOSFETのオンオフを決定でき、ROMとして1ビットを記憶させることができる 一度入り込んだ負電荷は電源を切っても消えないので、半永久的にこの状態を保持できる - データ消去 UV-FPROMは紫外線をFGゲートに照射させることで内部電子のエネルギーを増大させ、FGゲートから放出させる このため、IC上部には紫外線照射窓がある EEPROMは電圧によってFGゲートの電子を放出させる FGゲートの帯電動作と逆 ゲート電圧を0とし、ドレイン電圧を高く設定するとFGゲートの電子がドレイン側に逃げ出して0となる EEPROMは電圧制御によって1ビット単位で行うことができるが、セルにMOSFETが追加されるため面積が大きくなり大容量化が難しくなる ### フラッシュメモリ メモリセルを幾つかの集合に分割し、消去をブロック単位で行うようにした セルの消去用トランジスタをなくすことでセル面積を抑え、大容量化を図っている 電源を切ってもデータが保持できるので応用は急速に広がっている マザーボードのBIOS、スマホのストレージはフラッシュメモリー UBS, SSDなどもNAND型のフラッシュメモリー フラッシュメモリはTranscend(台湾)、Silicon-Power(ドイツ)、ELECOM、I-O DATA、SanDisk、BUFFALO、GREEN HOUSEなどが生産 EPROMの仕組みは、p型半導体と、s,dのn型半導体に挟まれた絶縁体のゲートでできてるのね。 1ビットでこの仕組みが必要なのに、500GBのSSDって、どれだけpnとデータ線、アドレス線をどうやって少量化して詰め込んでるんやろうか、全く想像が付かない。CPUもそうだけど。 ICメモリの仕組みがわかったところで、アプリケーションの品質には直接は影響はないけど、興味深いところではある。

ICメモリ

記憶装置には大きく分けて外部記憶装置と内部記憶装置がある

### 外部記憶装置
外部記憶装置にはハードディスク、CD、DVDなど
-> 機械的な駆動部分が存在するため読み書き速度が遅い

### 内部記憶装置
ICメモリは小型の回路部品であり、基板内部に組み込まれる為、内部記憶装置と言われる
記憶容量では劣るが、機械駆動部が少ない為高速
CPU周りの高速処理にICメモリが使われている

### ICメモリの内部構造
大量の2値情報を記憶する
IC内部の最小記憶単位をセルと良い、通常は1ビットを記憶する 
セルは平面上に配列されており、アクセスするためにアドレス(固有の識別番号)が使われている
行アドレスと列アドレスがあり、アドレス線の電圧がH(アクティブ)になり、列アドレスが入力されると、特定のデータ線が選ばれ、セルが読み書きの対象となる
読み書きの制御信号R/WがHになると、記憶データが出力され、Lになると記憶される

### ICメモリの分類
ROM: 読み込み専用、電源を切っても内容保持 R/W制御信号は取り除かれ、出力のみ
RAM: 読み込み書き込み自由、電源を切ると内容も消える R/W信号に応じて双方向通信に対応

メモリっていうと、文字データ、画像データなどを記憶しているように思っていたが、実際には0、1の2値データを持ってるだけなのね。えらい勘違いをしていたみたいだ。

A/D, D/A変換

アナログからデジタルに変換するのをanalog to digital conversionでA/D変換という
逆に、2値信号をアナログ信号に変換する作業をdigital to analog conversion, D/A変換という

#### D/A変換の原理
ほとんどの電子回路は電圧を情報として扱うので、アナログ電圧量に変換すると捉える
-> 2進数を10進数に変換し、この10進数に比例した電圧量を得ること
e.g. X=1011(2)の時、Y=11 11に比例した電圧が現れる仕掛けを用意すればD/A変換したと言える
ビット重みに比例した電流を流す仕掛けと、得られた電流から電圧変換する作業を行えば良い
-> 複数の抵抗網と演算増幅器を用いることが多い

– 演算増幅器
マイナス端子とプラス端子電位差を増幅する
重み付け抵抗あるいはラダー抵抗で1/8R, 1/4R, 1/2R, Rとすれば、ビットの大きさに比例した電流を得られる

### A/D変換器の原理
A/D変換の原理は積分型と比較型に分けられる

– 二重積分型A/D変換器
積分器、コンパレータ、クロックパルス発生器、ゲート、カウンタ、制御回路が含まれている
電圧の大きさ -> 時間の長さ -> パルスのカウント数 という変換作業によって電圧信号をデジタル化する
クロック周波数、積分期間が長いほど大きくなる
– 逐次比較型A/D変換
二分法と言われる探索手法
あらかじめ想定される電圧範囲を二分し、この閾値電圧と入力電圧を比較してデジタル変換する

nビットの2進変換をしたい場合は、nビット対応のD/A変換器を用意してn回繰り返し動作によって求めることができる

A/D, D/Aも2進数の変換をどう扱うかってことやな
世の中の複雑なアルゴリズムが全て2進数で処理されているってのは未だに信じられない

パルス回路(pulse)

ディジタル回路で扱う矩形波信号(非正弦波形の基本的な一種)をpulseという
信号伝送の過程でパルスが歪んだりノイズで乱れたりするので、パルス波形を加工・整形する操作が必要になる
インバータとはNOTのことで、1を0に、0を1に反転する
判定基準となるVtを閾値という
シュミットトリガー型インバータでは、Viの大きさだけでなく、それまでの変化の過程(履歴)を考慮して判定されるヒステリシス特性をもつ。これによりノイズが混入していても本来の動作を行うことができる

### マルチバイブレータ(multibibrator)
回路の二つの電圧状態を交互に行き来することによりパルスを発生させる回路
無安定型(入力不要)、単安定型、双安定型がある
-> Viが徐々に増加し、インバータの閾値で反転しV=0となりViが徐々に低下 そして再度充電すると周期的に充電放電を繰り返すのでパルス出力を得る

### 遅延回路
RC回路を使ってバッファ入力することで、波形を遅らせることができる。バッファとは信号波形を整形し、出力インピーダンスを低下させるゲート回路のこと

### パルス整形回路
信号波形が歪んだ場合に整形する操作
クリップ回路は入力波形をあるレベルで切り取る働きをするため、信号の最大値や最小値を設定するときに使われる
-> ダイオードがオン(導通)、オフ(非導通)で電流が流れたり流れなかったり制御できるので、出力電圧V0を制限できる
クリッパ回路(電圧の最大値制限)、リミッタ(最大値と最小値を制限)、スライサ、クランパ(直流再生回路)

東日本”50Hz”、西日本”60Hz”のこのプラスとマイナスが入れ替わる周波数がパルスで、このパルスを加工したり整形できるってことやね。つまり、パルスの電子の移動を制御できるってことかね?

組み合わせ論理回路

### エンコーダ
複数の入力信号のうち一つが1となった時、これに対応する2進符号を出力する論理回路を指す
e.g. パソコンのキーボード…押しボタンスイッチで文字情報を送付

10進数1桁を2進数4桁(B3,B2,B1,B0)に変換するエンコーダ
2進数4桁で表現された10進数をBCDコード(binary coded decimal code)という

BCDエンコーダの内部回路

BCDデコーダの内部回路

### マルチプレクサ
複数の信号を1つの信号に合成する装置(制御信号がAとBに加え、S=0 or S=1がある)
S=0の時Aを通過させるにはF=!S・Aとし、S=1の時Bを通過させるにはF=S*B

### デマルチプレクサ
1つの信号を複数の信号に分割する、出力選択回路と言われる
A = !S・F, B = S・B(2出力)

### 一致回路
二つのデータが等しいかどうかを判定する回路

### 比較回路
二つのデータの大小を判定する回路を比較回路という

### 加算回路
半加算回路: 1ビット処理
全加算回路: 2ビット以上の場合は下位ビットの桁上げ情報を考慮する
減算は2の補数を用いて加算操作で済ますことができる… 全ビットをNOTゲートで反転させる
ただし、補数を用いた減算で負の結果の場合は、さらに2の補数を求める操作が必要

なるほど、入力値から論理に基づいた出力値になるように、AND,OR,NOR,EXORなどを組み合わせてダイオードの電子回路を引くわけだな。
ロジックだな、電子回路の意味が大分わかってきた。

電圧とダイオードによる論理演算の仕組み

数理論理学では文字や記号で表現する
A = T -> B = T, A = F -> B = F

論理積OR
0,0 -> 0
0,1 -> 1
1,0 -> 1
1,1 -> 1

論理積AND
0,0 -> 0
0,1 -> 0
1,0 -> 0
1,1 -> 1

論理否定…インバータ
0 -> 1
1 -> 0

[ドモルガンの定理]
ある恒等式が成立していることがわかっていれば、その恒等式に含まれる0を1に、1を0に変換し、論理和を論理積に、論理積を論理和に変換して得られる式も恒等式として成り立つ

### 加法標準法
論理和を結合し、入力状態のうち、いずれか一つが起きた時に、F=1となるよう式を組む
### 乗法標準法
論理積で結合し、入力状態のうち、いずれか一つが起きた時に、F=0となるよう式を組む

### カルノー図
入力変数の値の組み合わせをもとに作成した行と列に出力の値を書き込んだ一覧
論理関数(4入力1出力、3入力2出力)などを簡素化できる

### 論理ゲート
基本回路を論理ゲート(logic gate)といい、通常一つの回路記号で表される
電圧が低い状態(Low)を0に、電圧が高い状態(High)を1に対応させる
どの半導体素子もデジタル回路ではオンとオフを伴ったスイッチの役割を担っている

### ダイオード
P形半導体(電子が不足)からの端子をアノード、N形半導体(余った電子がP原子の周りを回っている)からの端子をカソードといい、アノードからカソードの流れる電流のみを通して、その逆はほとんど通さない
P型は+の電圧、N型は-の電圧
整流作用があり、スイッチと同じ役割を持つ。順バイアスの電圧でオン、逆バイアスの電圧でオフとなり、半導体スイッチという

バイポーラトランジスタも IB>0 or IB = 0でスイッチの役割を果たす(Transistor Transistor Logicで広く使用)
論理回路出力に接続可能な最大ゲート数をファインアウトという

### MOSFET
ゲート、ドレイン、ソース
ゲート、ソース間が絶縁された小容量コンデンサ(直流通過、電荷を蓄える)と等価の構造担っている
一度充電されると、電流はほとんど流れずにオン状態を維持することができる為、電力消費が小さい

### CMOS
二つのMOSFETを直列に接続した構造(complementary MOS)
CMOSでは電源電圧Vccが出力端子から分離される為電流が流れず原理上電力損失は起こらない
CMOS回路では原理上電圧降下が生じない為、より多くのゲートを同時に接続できる

– ORゲート…論理和を実現する論理回路 いずれかがHの場合、ダイオードがオン
– ANDゲート…論理積を実現する回路 両者がHの場合はダイオードがオフ
– NOTゲート…バイポーラトランジスタで実現 AがLのとき、抵抗Rは電流が流れない為F=H 逆にA=Hにすると抵抗Rに電流が流れて電圧が低下する為F=Lとなる

NORゲート(ORとNOTゲートを組み合わせる) …AND, OR, NOTの基本ゲートを全て表現できる
NANDゲート(ANDとNOTゲートを組み合わせる) …AND, OR, NOTの基本ゲートを全て表現できる

なるほど、パソコンって、pn接合のダイオードで電圧処理してるのか
こりゃ、エンジニアは電子回路勉強した方が絶対いいな