網路資源
零件清單
1.Arduino UNO
2.步進馬達28BYJ-48 5v DC
3. 驅動板
#include
#define STEPS 200 //定義步進馬達每圈的步數
//steps:代表馬達轉完一圈需要多少步數。如果馬達上有標示每步的度數,
//將360除以這個角度,就可以得到所需要的步數(例如:360/3.6=100)。(int)
//如果步進馬達只會往一個方向轉動,不會反轉把 pin 2 與 pin3 要交換接
Stepper stepper(STEPS, 9, 10, 11, 12);
void setup(){
stepper.setSpeed(140); // 將馬達的速度設定成140RPM 最大 150~160
}
void loop(){
stepper.step(1600);//正8圈
delay(1000);
stepper.step(-1600);//反8圈
delay(1000);
}
Part 2
1.Arduino UNO
2.直流馬達 DC Motor
3.ARDUINO MOTOR SHIELD L293D
網路資源 網路資源2 網路資源3 網路資源4
在Arduino UNO 對應腳位Pine
#define MOTO_M1_A 2
#define MOTO_M1_B 3
#define MOTO_M2_A 1
#define MOTO_M2_B 4
#define MOTO_M3_A 5
#define MOTO_M3_B 7
#define MOTO_M4_A 0
#define MOTO_M4_B 6
// Arduino pins for the PWM signals.
#define MOTOR1_PWM 11
#define MOTOR2_PWM 3
#define MOTOR3_PWM 6
#define MOTOR4_PWM 5
#define SERVO1_PWM 10
#define SERVO2_PWM 9
//使用直流馬達範例 DC Motor
#include //呼叫該函式庫
AF_DCMotor motor(4, MOTOR12_64KHZ); // AF_DCMotor 變數名稱(第幾個馬達控制, 頻率)
// Motor1 & Motor2 有這幾個頻率:
// MOTOR12_64KHZ, MOTOR12_8KHZ,
//MOTOR12_2KHZ, MOTOR12_1KHZ
//
// Motor3 & Motor4 有這幾個頻率:
// MOTOR12_64KHZ, MOTOR12_8KHZ, MOTOR12_1KHZ
//
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Motor test!");
motor.setSpeed(200); // set the speed to 200/255
}
void loop() {
Serial.print("tick");
motor.run(FORWARD); // turn it on going forward
delay(1000);
Serial.print("tock");
motor.run(BACKWARD); // the other way
delay(1000);
Serial.print("tack");
motor.run(RELEASE); // stopped
delay(1000);
}
AF_DCMotor motor(4, MOTOR12_64KHZ); // AF_DCMotor 變數名稱(第幾個馬達控制, 頻率)
// Motor1 & Motor2 有這幾個頻率:
// MOTOR12_64KHZ, MOTOR12_8KHZ,
//MOTOR12_2KHZ, MOTOR12_1KHZ
//
// Motor3 & Motor4 有這幾個頻率:
// MOTOR12_64KHZ, MOTOR12_8KHZ, MOTOR12_1KHZ
//
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Motor test!");
motor.setSpeed(200); // set the speed to 200/255
}
void loop() {
Serial.print("tick");
motor.run(FORWARD); // turn it on going forward
delay(1000);
Serial.print("tock");
motor.run(BACKWARD); // the other way
delay(1000);
Serial.print("tack");
motor.run(RELEASE); // stopped
delay(1000);
}
//使用步進馬達 Step Motor
`stepsPerRevolution` 必須設定為你的馬達實際上一圈會有多少步,如果是 28BYJ-48 5V DC 的話,規格上寫著,步進角為 `5.625 / 64`,因此這馬達轉一圈需要的步數是 `360 / (5.625 / 64)`,也就是 `4096` 步,這是一/二相激磁才會有的步數,Stepper 程式庫原始碼它是採二相激磁的實作方式,因此,使用這個 Stepper 程式庫實際上要設的 `stepsPerRevolution` 是 `2048` 步
PWR Jumper 短路(套上)的話會對 Arduino UNO 板供電5V
#include
#include
#define SERVO1_PWM 10
#define SERVO2_PWM 9
double passos_total = 2048; //Numero de passos para 1 rotacao total
int porta_motor = 2; //1 para motor em M1/M2 e 2 para motor em M3/M4
int angulo = 30; //Angulo de rotacao do eixo
double numero_de_passos = 0; //Armazena o numero de passos que o motor vai girar
AF_Stepper arduino(passos_total, porta_motor); //Define os parametros do motor
Servo servo_1;
void setup()
{
arduino.setSpeed(10); //Define a velocidade de rotacao
Serial.begin(9600);
servo_1.attach(SERVO1_PWM);
}
void loop()
{
//Calcula a quantidade de passos, baseado no angulo determinado
numero_de_passos = angulo / (360 / passos_total);
//170.67/步
servo_1.write(0);
delay(1000);
servo_1.write(180);
delay(2000);
//Mostra no serial monitor o numero de passos calculados
Serial.println(numero_de_passos);
//Move o motor. Use FORWARD para sentido horario,
//BACKWARD para anti-horario
for(int i=0;i<=5;i++){
arduino.step(numero_de_passos, FORWARD, SINGLE);
arduino.release();
}
delay(2000);
for(int i=0;i<=5;i++){
arduino.step(numero_de_passos, BACKWARD, SINGLE);
arduino.release();
}
delay(2000);
}
//---------------------------------------------------------
#include
AF_Stepper motor(48, 2); //48表示每圈的步數(360度/步距角,48的步距角為7.5度)
//2表示第二路步進電機(共支持兩路)
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Stepper test!");
motor.setSpeed(10); // 10 rpm
motor.step(100, FORWARD, SINGLE);
motor.release();
delay(1000);
}
void loop() {
motor.step(100, FORWARD, SINGLE);
motor.step(100, BACKWARD, SINGLE);
motor.step(100, FORWARD, DOUBLE);
motor.step(100, BACKWARD, DOUBLE);
motor.step(100, FORWARD, INTERLEAVE);
motor.step(100, BACKWARD, INTERLEAVE);
motor.step(100, FORWARD, MICROSTEP);
motor.step(100, BACKWARD, MI
}
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Stepper test!");
motor.setSpeed(10); // 10 rpm
motor.step(100, FORWARD, SINGLE);
motor.release();
delay(1000);
}
void loop() {
motor.step(100, FORWARD, SINGLE);
motor.step(100, BACKWARD, SINGLE);
motor.step(100, FORWARD, DOUBLE);
motor.step(100, BACKWARD, DOUBLE);
motor.step(100, FORWARD, INTERLEAVE);
motor.step(100, BACKWARD, INTERLEAVE);
motor.step(100, FORWARD, MICROSTEP);
motor.step(100, BACKWARD, MI
}
沒有留言:
張貼留言