アナログ入力
マイクロコントローラはアナログ信号を読み取る際,ADC(アナログ-デジタル変換回路)を使って電圧をデジタル信号に変換する.
最も単純な変換は,単一入力の変換である.信号はデジタル信号に変換され,マイクロコントローラのレジスタに格納される.この値は配備されたコードがアナログ信号を再構築するのに使用される.
マイクロコントローラによっては,差動チャンネルを使い,変換の前に信号を増幅することができることもある.
| "c"<|"Type""Analog"|> | Ain |
| {"c+","c-"}<|…|> | ΔAin |
| "c+" <|…,"NegativeDifferentialInput""c-",…|> | Ain+,ただしAin-は0であると仮定する |
| "c+" <|…,"NegativeDifferentialInput" "c-"v,…|> | Ain+,ただしAin-は v であると仮定する |
| "c-" <|…,"PositiveDifferentialInput" "c+",…|> | Ain-,ただしAin+はRefであると仮定する |
| "c-" <|…,"PositiveDifferentialInput" "c+"v,…|> | Ain-,ただしAin+は v であると仮定する |
| c<|…,"Gain""g",…|> | 利得"g"を使用する |
| c<|…,spi,…|> | 指定 spi を使用する |
Needs["MicrocontrollerKit`"]MicrocontrollerEmbedCode[StateSpaceModel[{{}, {}, {}, {{1}}}, SamplingPeriod -> 0.01, SystemsModelLabels -> None], <|"Target" -> "ArduinoUno", "Inputs" -> "A4" -> "Analog", "Outputs" -> "9" -> "Analog"|>, "/dev/cu.usbmodem14101"]MicrocontrollerEmbedCode[StateSpaceModel[{{}, {}, {}, {{1}}}, SamplingPeriod -> 0.01, SystemsModelLabels -> None],
<|"Target" -> "ArduinoYun", "Inputs" -> "A4" -> <|"Type" -> "Analog", "Gain" -> 1, "PositiveDifferentialInput" -> "A5"|>, "Outputs" -> "9" -> "Analog"|>, "/dev/cu.usbmodem14101"]ADC変換において,オプションが追加で指定できることがある.そのようなオプションには"Reference"や"Prescaler"がある.
| "AVCC" or Automatic | アナログ電圧ピンAVCCにおける電圧Vcc |
| "AREF"aref | アナログ基準ピンAREFにおける電圧aref |
| "Internal" | 内部基準電圧 |
MicrocontrollerEmbedCode[StateSpaceModel[{{}, {}, {}, {{1}}}, SamplingPeriod -> 0.01, SystemsModelLabels -> None], <|"Target" -> "ArduinoUno", "Inputs" -> "A4" -> <|"Type" -> "Analog", "Reference" -> "AREF" -> 2.5|>, "Outputs" -> "9" -> "Analog"|>, "/dev/cu.usbmodem14101"]ADCはマイクロコントローラのシステムクロックと異なる周波数で動作する必要があることがある.適切な周波数に変換できるプリスケーラ(分周回路)がある.プリスケーラの値はシステムクロック周波数とデータシートの情報に応じて自動的に選ばれるが,明示的に指定することもできる.
ℳ = MicrocontrollerEmbedCode[StateSpaceModel[{{}, {}, {}, {{1}}}, SamplingPeriod -> 0.01, SystemsModelLabels -> None], <|"Target" -> "ArduinoUno", "Inputs" -> "A4" -> <|"Type" -> "Analog", "Prescaler" -> 128|>, "Outputs" -> "9" -> "Analog"|>, "/dev/cu.usbmodem14101"]ℳ["ADC"]