概要
俺言語をやってみた。
avrにアセンブラで実装してみた。
3軸、サーボモータをぐりぐり。前編。
環境
avr studio 4
attiny85 1mhz
tera term
usb-serial
調査1
SG90サーボモータ
コントロール周波数 50Hz 20ミリ秒
角度 | 時間 |
---|---|
-90度 | 0.5ミリ秒 |
0度 | 1.45ミリ秒 |
90度 | 2.4ミリ秒 |
電圧 4.5Vから5.0V
消費電流 100mAから600mA(起動時)
PWMでコントロールが一般的
調査2
attiny 85 PWMピン配置
ピン | タイマー0 | タイマー1 |
---|---|---|
PB0 | OC0A | OC1A_ |
PB1 | OC0B | OC1A |
PB2 | - | - |
PB3 | - | OC1B_ |
PB4 | - | OC1B |
PB5 | - | - |
タイマーは、2個。3軸は、無理。
調査3
タイマー0、比較Aの周波数
CS02 | CS01 | CS00 | 周期 |
---|---|---|---|
0 | 0 | 1 | 1us |
0 | 1 | 0 | 8us |
0 | 1 | 0 | 64us |
8マイクロ秒の比較A割り込みなら、10倍で80マイクロ秒、
20ミリ秒は、250となる。
調査4
ADCで6ボタン(3軸)の入力
抵抗を5本、直列にする。
回路図
実装案
変数e,f,gを導入する。
タイマー0の比較A割り込みで、カウントして、設定分でPB2,PB3,PB4を、ON、OFFする。
'=16で、割り込み設定。
実行ループで、割り込みを許可する。
ループからブレークで割り込み禁止する。
角度 | 設定値 |
---|---|
-90度 | 6 |
0度 | 18 |
90度 | 30 |
以上。