Pololu デュアルG2ハイパワーモータドライバ18v22
ここでは、Pololu デュアルG2ハイパワーモータドライバ18v22を使ってSM方式とLAP方式を実装する方法を説明します。
SM方式
接続例
つぎのように、モータ、モータドライバ、Arduinoを接続します。
プログラム例
// pin9,10 PWM周波数を変える -> 31372.55 Hz
TCCR1B = (TCCR1B & 0b11111000) | 0x01;
pinMode(M1nSLEEP, OUTPUT);
digitalWrite(M1nSLEEP, 1);
for(int i = 0; i < 255; i++)
for(int i = 255; i > 0; i--)
for(int i = 0; i < 255; i++)
for(int i = 255; i > 0; i--)
#define M1PWM 9
#define M2PWM 10
#define M1nSLEEP 2
#define M2nSLEEP 4
#define M1DIR 7
#define M2DIR 8
void setup() {
// pin9,10 PWM周波数を変える -> 31372.55 Hz
TCCR1B = (TCCR1B & 0b11111000) | 0x01;
pinMode(M1nSLEEP, OUTPUT);
pinMode(M1DIR, OUTPUT);
analogWrite(M1PWM, 0);
digitalWrite(M1nSLEEP, 1);
}
void loop() {
// 停止->正転
digitalWrite(M1DIR, 1);
for(int i = 0; i < 255; i++)
{
analogWrite(M1PWM, i);
delay(5);
}
// 正転->停止
for(int i = 255; i > 0; i--)
{
analogWrite(M1PWM, i);
delay(5);
}
// 停止->逆転
digitalWrite(M1DIR, 0);
for(int i = 0; i < 255; i++)
{
analogWrite(M1PWM, i);
delay(5);
}
// 逆転->停止
for(int i = 255; i > 0; i--)
{
analogWrite(M1PWM, i);
delay(5);
}
}
#define M1PWM 9
#define M2PWM 10
#define M1nSLEEP 2
#define M2nSLEEP 4
#define M1DIR 7
#define M2DIR 8
void setup() {
// pin9,10 PWM周波数を変える -> 31372.55 Hz
TCCR1B = (TCCR1B & 0b11111000) | 0x01;
pinMode(M1nSLEEP, OUTPUT);
pinMode(M1DIR, OUTPUT);
analogWrite(M1PWM, 0);
digitalWrite(M1nSLEEP, 1);
}
void loop() {
// 停止->正転
digitalWrite(M1DIR, 1);
for(int i = 0; i < 255; i++)
{
analogWrite(M1PWM, i);
delay(5);
}
// 正転->停止
for(int i = 255; i > 0; i--)
{
analogWrite(M1PWM, i);
delay(5);
}
// 停止->逆転
digitalWrite(M1DIR, 0);
for(int i = 0; i < 255; i++)
{
analogWrite(M1PWM, i);
delay(5);
}
// 逆転->停止
for(int i = 255; i > 0; i--)
{
analogWrite(M1PWM, i);
delay(5);
}
}
LAP方式
接続例
つぎのように、モータ、モータドライバ、Arduinoを接続します。
プログラム例
// pin9,10 PWM周波数を変える -> 31372.55 Hz
TCCR1B = (TCCR1B & 0b11111000) | 0x01;
analogWrite(G2_DIR, 128);
for(int i = 128; i > 0; i--)
for(int i = 0; i < 255; i++)
for(int i = 255; i > 0; i--)
#define G2_PWM 9
#define G2_DIR 10
void setup() {
// pin9,10 PWM周波数を変える -> 31372.55 Hz
TCCR1B = (TCCR1B & 0b11111000) | 0x01;
pinMode(G2_PWM, OUTPUT);
analogWrite(G2_DIR, 128);
digitalWrite(G2_PWM, 1);
// 停止->逆転
for(int i = 128; i > 0; i--)
{
analogWrite(G2_DIR, i);
delay(10);
}
}
void loop() {
// 逆転->正転
for(int i = 0; i < 255; i++)
{
analogWrite(G2_DIR, i);
delay(10);
}
// 正転->逆転
for(int i = 255; i > 0; i--)
{
analogWrite(G2_DIR, i);
delay(10);
}
}
#define G2_PWM 9
#define G2_DIR 10
void setup() {
// pin9,10 PWM周波数を変える -> 31372.55 Hz
TCCR1B = (TCCR1B & 0b11111000) | 0x01;
pinMode(G2_PWM, OUTPUT);
analogWrite(G2_DIR, 128);
digitalWrite(G2_PWM, 1);
// 停止->逆転
for(int i = 128; i > 0; i--)
{
analogWrite(G2_DIR, i);
delay(10);
}
}
void loop() {
// 逆転->正転
for(int i = 0; i < 255; i++)
{
analogWrite(G2_DIR, i);
delay(10);
}
// 正転->逆転
for(int i = 255; i > 0; i--)
{
analogWrite(G2_DIR, i);
delay(10);
}
}