180 likes | 324 Views
チャタリング, AD 変換. 新堀 押村 奥崎. ON. OFF. SW_OFF. SW_OFF. SW_ON. SW_ON. ON. OFF. キー処理. 押している間の処理 if (!P7DR.BIT.B7) 押した瞬間の処理. SW_OFF. SW_ON. ON. OFF. フラグを使用したキー処理. if (!P7DR.BIT.B7) { if (!flag) { 処理を記述 } flag = 1; } else flag = 0;. 0. 0. 0. 0. 0. 1. 1. 1. 1. 1. 1.
E N D
チャタリング,AD変換 新堀 押村 奥崎
ON OFF SW_OFF SW_OFF SW_ON SW_ON ON OFF キー処理 • 押している間の処理 • if (!P7DR.BIT.B7) • 押した瞬間の処理
SW_OFF SW_ON ON OFF フラグを使用したキー処理 if (!P7DR.BIT.B7) { if (!flag) { 処理を記述} flag = 1; } else flag = 0; 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0
SW_OFF SW_ON チャタリング • スイッチの接点がバウンドし、ON/OFFを繰り返してしまう現象 • スイッチを押した瞬間/放した瞬間に発生 • 簡単なフィルタ処理が必要となる チャタリング
SW_OFF SW_ON 0 0 0 0 0 1 0 0 0 0 1 2 3 4 0 0 0 0 SW_OFF SW_ON 0 0 0 0 1 1 チャタリングの処理 • チャタリングの誤作動防止 • 簡単なフィルタリング処理
5.0V 2.5V 0.0V 0 512 1023 A/D変換 • 入力されたアナログ値を10bitのデジタル値に変換 • 0~5Vの電圧値を0~1023の数値に変換
5V 0V 0 1 2 3 4 5 6 7 逐次比較方式 • 3ビット変換機の例 5(V)/7×4=2.857(V) 5V 0V 入力値
A/D変換の使い方 • 初期設定 • モードの設定 • 入力チャネルの設定 • A/D変換のスタート • メインループ • A/Dエンドフラグの確認 • A/Dデータレジスタの値の取得
R/W 初期値 R/W* 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 0 R/W R/W 0 A/Dコントロールレジスタ • モードの選択 • 1 スキャンモードを選択 • チャネルセレクト • 011AN0,AN1, AN2, AN3を選択 ADCSR - - - SCAN - CH2 CH1 CH0
R/W 初期値 R/W* 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 0 R/W R/W 0 A/Dコントロールレジスタ • A/D変換の開始/停止を選択します • 1にセットすると開始 • 0にクリアすると停止 ADCSR - - ADST - - - - -
R/W 初期値 R/W* 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 0 R/W R/W 0 A/Dステータスレジスタ • A/D変換の終了を確認 • A/D変換が終了するとフラグが1にセットされる. • 手動で0にクリアする必要がある. ADCSR ADF - - - - - - -
A/Dデータレジスタ • A/D変換の結果を格納 • 左詰めの 10bit に格納される • ADDRA チャネル0(温度計) • ADDRB チャネル1(加速度計 X軸) • ADDRC チャネル2(加速度計 Y軸) • ADDRD チャネル3(加速度計 Z軸) ADDRA AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 - - - - - - 初期値 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 R/W R R R R R R R R R R R R R R R R
A/D変換を用いたもの • 温度センサ(サーミスタ) • 温度によって変化する抵抗値から、温度を測定するもの • 使用例:温度計など • 加速度センサ • 速度が変化するときの慣性力から、加速度を測定するもの • 使用例:Wiiリモコン、車のエアバックなど 「Wikipedia : Wiiのコントローラ」より転載
温度センサ(サーミスタ)の特性 y = -0.63x + 25.83
サーミスタの回路 VCC(5V) A/D変換値が520のとき 520 : (1023-520) = y : 10kΩ 503y = 5200kΩ y = 5200 / 503 = 10.33kΩ 10.33= -0.63x + 25.83 0.63x = 15.50 x = 24.60℃ Resistor 10kΩ P70 Thermistor 可変 GND(0V)
加速度センサの軸 Z軸 Y軸 X軸
加速度の求め方 加速度(G) = (A/D変換値 - 512) × 10000 / 2048 • A/D変換値 • センサから取得した値をA/D変換したもの • 512 • オフセット(0G時の電圧をA/D変換した値) • 10000 • 小数点を取るためにかける • 2048 • 1G当たりの数値である204.8を10倍して少数点を取ったもの