안녕하세요 Jimae입니다.
오늘은 모터드라이버를 사용하는 방법에대해 알아볼까합니다.
정확히는 라이브러리를 추가해서 사용하는 방법이지만요.
이것은 라이브러리가 들어간이상 생각보다 제어하기 쉬워집니다.
https://github.com/RobTillaart/DRV8825
이런 라이브러리가 있는대요.
예전에 제가 사용한거랑 약간틀리내요.
이 라이브러리로 나중에 실험하면 좋겠지만 기존에 사용했던 라이브러리를 가져오도록 하겠습니다.
https://github.com/laurb9/StepperDriver
생각보다 많이 변했내요.
기존에는 A4988, DRV8825 드라이버를 취급을 했었지만 생각보다 많이 늘었습니다.\
2년전까지 관리가 되었내요.
#include "DRV8825.h"
#define MOTOR_STEPS 200
#define RPM 120
#define DIR 8
#define STEP 9
#define SLEEP 13 // optional (just delete SLEEP from everywhere if not used)
#define MODE0 10
#define MODE1 11
#define MODE2 12
DRV8825 stepper(MOTOR_STEPS, DIR, STEP, SLEEP, MODE0, MODE1, MODE2);
void setup() {
/*
* Set target motor RPM.
*/
stepper.begin(RPM);
// if using enable/disable on ENABLE pin (active LOW) instead of SLEEP uncomment next line
// stepper.setEnableActiveState(LOW);
stepper.enable();
// set current level (for DRV8880 only).
// Valid percent values are 25, 50, 75 or 100.
// stepper.setCurrent(100);
}
void loop() {
delay(1000);
/*
* Moving motor in full step mode is simple:
*/
stepper.setMicrostep(1); // Set microstep mode to 1:1
// One complete revolution is 360°
stepper.rotate(360); // forward revolution
stepper.rotate(-360); // reverse revolution
// One complete revolution is also MOTOR_STEPS steps in full step mode
stepper.move(MOTOR_STEPS); // forward revolution
stepper.move(-MOTOR_STEPS); // reverse revolution
/*
* Microstepping mode: 1, 2, 4, 8, 16 or 32 (where supported by driver)
* Mode 1 is full speed.
* Mode 32 is 32 microsteps per step.
* The motor should rotate just as fast (at the set RPM),
* but movement precision is increased, which may become visually apparent at lower RPMs.
*/
stepper.setMicrostep(8); // Set microstep mode to 1:8
// In 1:8 microstepping mode, one revolution takes 8 times as many microsteps
stepper.move(8 * MOTOR_STEPS); // forward revolution
stepper.move(-8 * MOTOR_STEPS); // reverse revolution
// One complete revolution is still 360° regardless of microstepping mode
// rotate() is easier to use than move() when no need to land on precise microstep position
stepper.rotate(360);
stepper.rotate(-360);
delay(5000);
}
예제 소스를 가져왔습니다.
우선
DRV8825 stepper(MOTOR_STEPS, DIR, STEP, SLEEP, MODE0, MODE1, MODE2);
를 보게되면 각핀과 MODE 핀까지 연결이 되어있내요. 스탭을 어떤각도로 설정할건지를 여기서 다 설정을 합니다.
#define MOTOR_STEPS 200
#define DIR 8
#define STEP 9
#define SLEEP 13 // optional (just delete SLEEP from everywhere if not used)
#define MODE0 10
#define MODE1 11
#define MODE2 12
그런 다음 setup 함수에서 시작을 하죠.
stepper.begin(RPM);
begin 함수를 부르면 속도 설정을 하는대요.
#define RPM 120
120으로 설정하고
stepper.enable(); 을 사용하여 모터를 움직일 준비를 합니다.
stepper.setMicrostep(1); // Set microstep mode to 1:1
// One complete revolution is 360°
stepper.rotate(360); // forward revolution
stepper.rotate(-360); // reverse revolution
// One complete revolution is also MOTOR_STEPS steps in full step mode
stepper.move(MOTOR_STEPS); // forward revolution
stepper.move(-MOTOR_STEPS); // reverse revolution
/*
* Microstepping mode: 1, 2, 4, 8, 16 or 32 (where supported by driver)
* Mode 1 is full speed.
* Mode 32 is 32 microsteps per step.
* The motor should rotate just as fast (at the set RPM),
* but movement precision is increased, which may become visually apparent at lower RPMs.
*/
stepper.setMicrostep(8); // Set microstep mode to 1:8
// In 1:8 microstepping mode, one revolution takes 8 times as many microsteps
stepper.move(8 * MOTOR_STEPS); // forward revolution
stepper.move(-8 * MOTOR_STEPS); // reverse revolution
// One complete revolution is still 360° regardless of microstepping mode
// rotate() is easier to use than move() when no need to land on precise microstep position
stepper.rotate(360);
stepper.rotate(-360);
그리고 나서 rotate, move 를 이용해서 모터를 움직이고
setMicrostep 를 이용해서 속도를 조절하고 있죠.
이 모터는 각도로 움직이기때문에 이런식으로 하고있고 라이브러리로 되어있어 편하게 할수있습니다.
물론 처음에 올렸던 라이브러리가 제가보기에는 더편하게 쓸수있을것 같내요.
오늘은 여기까지 다들 좋은 하루 되세요.
극한의 아두이노 DIY생활 - RC카1
극한의 아두이노 DIY생활 - RC카2
극한의 아두이노 DIY생활 - RC카3
극한의 아두이노 DIY생활 - RC카4
극한의 아두이노 DIY생활 - RC카5
극한의 아두이노 DIY생활 - RC카6
극한의 아두이노 DIY생활 - RC카7
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Google is paying $27485 to $29658 consistently for taking a shot at the web from home. I joined this action 2 months back and I have earned $31547 in my first month from this action. I can say my life has improved completely! Take a gander at what I do... https://www.old.richpath8.com
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit