PICマイコンでサーボモータを動かしたい方
本記事ではPICマイコン(12F1822)を使ってサーボモータを動かす方法について紹介します。
arduinoなどのマイコンボードを使用するより小型化ができ、タイマーICやバイブレーター回路などより安定した動きができます。
サーボモータを動かすには一番良い方法かもしれません。
- サーボモータSG92Rの仕様
- PICマイコン(12F1822)の仕様
- コードの作成
- 配線(PICマイコンとサーボモータの接続方法)
サーボモータSG92Rの仕様
今回は「SG92R」というサーボモータを動かしていきたいと思います。
SG92Rは橙色の配線に制御信号を入力することで角度を指定します。
各スペックは下記の通りです。
- PWMサイクル:20ms
- 制御パルス:0.5ms~2.4ms
- 制御角:±約90°(180°)
- 配線:茶=GND、赤=電源[+]、橙=制御信号 [JRタイプ]
- トルク:2.5kgf・cm
- 動作速度:0.1秒/60度
- 動作電圧:4.8V
- 温度範囲:0℃~55℃
- 外形寸法:23×12.2x27mm
- 重量:9g
スペックに書いてあることから
20msに1サイクルのPWM波形(50Hz)を作り、パルス幅(HIGHとなる部分の長さ)を0.5ms~2.4msと変化させることにより -90°~+90° の合計 180°動く角度を変化させられることがわかります。

下記にパルス幅ごとの角度表を添付します。
ms | us | 角度 |
0.5 | 500 | -90 |
0.6 | 600 | -80.53 |
0.7 | 700 | -71.05 |
0.8 | 800 | -61.58 |
0.9 | 900 | -52.11 |
0.975 | 975 | -45 |
1 | 1000 | -42.63 |
1.1 | 1100 | -33.16 |
1.2 | 1200 | -23.68 |
1.3 | 1300 | -14.21 |
1.4 | 1400 | -4.74 |
1.45 | 1450 | 0 |
1.5 | 1500 | 4.74 |
1.6 | 1600 | 14.21 |
1.7 | 1700 | 23.68 |
1.8 | 1800 | 33.16 |
1.9 | 1900 | 42.63 |
1.925 | 1925 | 45 |
2 | 2000 | 52.11 |
2.1 | 2100 | 61.58 |
2.2 | 2200 | 71.05 |
2.3 | 2300 | 80.53 |
2.4 | 2400 | 90 |
PICマイコン(12F1822)の仕様
今回使用するPIC12F1822には8個のピンがあります。ピンの配置はMICROCHIP社が発行しているデータシートで確認できます。データシートにはピン配置以外にもいろいろな情報に乗っています。ネットで検索すれば出てくるので確認してみましょう。
番ピン(VDD)は電源のプラス、8番ピン(VSS)は電源のマイナスになります。また、2~7番ピンのRA0~5はIOピンとなっており、入出力ができるピンになっています。2~7番ピンには他にも機能が多くあり、それらはでデータシートで確認できます。
コードの作成
サンプルコードを下記に示します。
RA3及びRA4を入力ピンとし、ともにプルアップさせています。
何もしていないときにはRA3,4ともにHIGHになっているため、サーボモータを0°にする波形を出力します。
RA3をLOWにすると180°回転する波形をRA2から出力し、RA4をLOWにすると90°回転する波形をRA2から出力します。
コードをPICマイコンに書き込む方法は別の記事
にて紹介してますので参考にしてください。
配線(PICマイコンとサーボモータの接続方法)
配線は下の写真のようになります。
黒のボタンを押すとプルアップされている4番ピン(RA3)がLOWになり、サーボモータが180°回転します。
また、茶色いボタンを押すとプルアップされている3番ピン(RA4)がLOWになり、サーボモータが90°回転します。
何も押していないとサーボモータが0°になります。