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 | |
} | |
} | |
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
Post a Comment