SG92RサーボモータとArduino Nano

◆実動作


◆ソースコード
Arduino IDEにもスケッチの例として存在するsweepを利用して動作確認をした
https://github.com/esp8266/Arduino/blob/master/libraries/Servo/examples/Sweep/Sweep.ino
/* Sweep
by BARRAGAN <http://barraganstudio.com>
This example code is in the public domain.
modified 28 May 2015
by Michael C. Miller
modified 8 Nov 2013
by Scott Fitzgerald
http://arduino.cc/en/Tutorial/Sweep
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
void setup() {
myservo.attach(2); // attaches the servo on GIO2 to the servo object
}
void loop() {
int pos;
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
◆Sweepが前提とする配線
https://www.arduino.cc/en/Tutorial/Sweep
上記の説明では9pinとなっているがソースコードはなぜか2pinであるので注意が必要
◆ふまえた配線

◆Servoライブラリの解説(英語)
https://www.arduino.cc/en/reference/servo
 On boards other than the Mega, use of the library disables analogWrite() (PWM) functionality on pins 9 and 10, whether or not there is a Servo on those pins. 

Servoライブラリの仕様(恐らくservo.hのインクルード時)によってanalogWrite() 関数で9,10pinが使えなくなると読める。
サンプルはSweepがワイヤのみで動作確認できる。D9にアタッチするソースになっている。またD2に対してもアタッチして正常に動作が確認できた。
https://www.arduino.cc/en/Tutorial/Sweep

◆Servoライブラリのソース
https://github.com/arduino-libraries/Servo/blob/master/src/avr/Servo.cpp
digitalWriteを利用しているのが分かる。

◆SG92Rのデータシート(英語)
http://www.ee.ic.ac.uk/pcheung/teaching/DE1_EE/stores/sg90_datasheet.pdf
ここからデューティーサイクルが1-2ms PWM period 20ms(50Hz)というのが分かる

◆SG92Rのケーブル
秋月電子通商に色ごとの説明がある。茶色がGND 赤が+ オレンジが制御信号
http://akizukidenshi.com/img/goods/2/M-08914.jpg

◆Arduino Nanoのデータシート(英語)
https://components101.com/microcontrollers/arduino-nano
D3,5,6,9,10,11がPWM pinとなっている。AnalogWire関数の説明でもPWM pinに関する説明がある。またpinによってもデューティー比、周波数に特色があるという記述がある。Servoライブラリ(digitalWrite)を使う限りはPWM pinは意識しなくてもよさそう。
http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=2153

◆ご購入
※購入は自己責任でよろしくお願いしたい。

  

◆参考にさせていただいたリンク
http://workpiles.com/2016/01/blueninja-servo-sg92r/
https://blog.cles.jp/item/10600
https://sanuki-tech.net/micro-bit/make/servomotor/
https://modalsoul.hatenablog.com/entry/2018/10/08/231947
http://nomolk.hatenablog.com/entry/2017/04/09/222415
https://sites.google.com/site/memorandumjavaandalgorithm/raspberry-pi-jiang-zuo7-servo-sg90-sg92
http://www.zeatec.jp/efellows/susume/tyuukyuu1-16.php
https://deviceplus.jp/hobby/entry057/
https://makers-with-myson.blog.so-net.ne.jp/2014-04-24
http://usicolog.nomaki.jp/engineering/avr/avrPWM.html

Comments

Popular posts from this blog

28BYJ-48 ステッピングモーターとULN2003とArduino Nano

ARLISSのロケットデザインについて ARLISS-M Design Guide ブースター