https://cafe.naver.com/easyrobot/7062
A4988은 간편한 작동을 위해 변환기가 내장 된 바이폴라 스테퍼 모터를 제어하기위한 마이크로 스텝 드라이버입니다. 즉 컨트롤러에서 2 핀만으로 스테퍼 모터를 제어 할 수 있으며 회전 방향을 제어하고 다른 하나는 계단을 제어 할 수 있습니다.
드라이버는 풀 스텝, 하프 스텝, 쿼터 스텝, 8 스텝, 16 스텝의 5 단계의 분해능을 제공합니다. 또한 전류 출력,과 온도 열 셧다운 및 크로스 오버 전류 보호를 조정하기위한 전위차계가 있습니다.
이 제품의 로직 전압은 3 ~ 5.5V이며 양호한 추가 냉각이 제공되면 위상 당 최대 전류가 2A이며 방열판이나 냉각없이 위상 당 1A의 연속 전류가됩니다.
A4988 스테퍼 드라이버 핀아웃
이제 드라이버의 핀아웃을 자세히 살펴보고 스테퍼 모터와 컨트롤러를 연결해 봅시다. 그래서 우리는 드라이버의 전원을 공급하기 위해 버튼 오른쪽에있는 2 개의 핀, 3 ~ 5.5V의 전원 공급 장치에 연결해야하는 VDD 및 접지 핀, 그리고 우리의 컨트롤러 인 Arduino 5 V를 공급할 보드. 다음 4 개의 핀은 모터 연결 용입니다. 1A 및 1B 핀은 모터의 한 코일에 연결되고 2A 및 2B 핀은 모터의 다른 코일에 연결됩니다. 모터에 전원을 공급하기 위해 우리는 다음 2 핀 인 Ground와 VMOT을 사용하여 8 ~ 35V 전원 공급 장치에 연결해야하며 드라이버 보드를 전압 스파이크로부터 보호하기 위해 47uF 이상의 디커플링 커패시터를 사용해야합니다.
다음 두 개의 2 개의 핀인 Step과 Direction은 모터 움직임을 제어하기 위해 실제로 사용하는 핀입니다. 방향 핀은 모터의 회전 방향을 제어하며 마이크로 컨트롤러의 디지털 핀 중 하나에 연결해야합니다.이 경우에는 Arduino 보드의 핀 번호 4에 연결합니다. 스텝 핀을 사용하여 모터의 mirostep을 제어하고이 핀으로 보내지는 각 펄스로 모터가 한 단계 이동합니다. 따라서 복잡한 프로그래밍, 위상 시퀀스 테이블, 주파수 제어 라인 등을 필요로하지 않습니다. A4988 드라이버의 내장 변환기가 모든 것을 처리하기 때문입니다. 여기에 우리는 또한이 2 개의 핀이 내부적으로 어떤 전압으로도 끌어 당겨지지 않았 음을 언급 할 필요가 있습니다.
다음은 슬립 핀이며, 로직 로우는 모터가 사용되지 않을 때 전력 소모를 최소화하기 위해 보드를 슬립 모드에 놓는다.
다음으로 RESET 핀은 변환기를 미리 정의 된 홈 상태로 설정합니다. 이 홈 스테이트 또는 홈 마이크로 스텝 위치는 A4988 데이터 시트의이 그림에서 볼 수 있습니다. 따라서 이들은 모터가 시작되는 초기 위치이며 마이크로 스텝 분해능에 따라 다릅니다. 이 핀의 입력 상태가 로직 로우이면 모든 STEP 입력은 무시됩니다. 리셋 핀은 플로팅 핀이므로 프로그램에서 제어하려는 의도가 없다면 슬립 핀에 연결하여 높은 상태로 만들고 보드를 활성화해야합니다.
다음 3 핀 (MS1, MS2 및 MS3)은 위의 진리표에 따라 5 단계 해상도 중 하나를 선택하기위한 핀입니다. 이 핀들은 내부 풀다운 저항을 가지고 있기 때문에 연결을 끊어두면 보드는 풀 스텝 모드로 동작 할 것이다.
마지막으로 ENABLE 핀은 FET 출력을 켜거나 끌 때 사용됩니다. 따라서 로직 하이는 출력을 디스 에이블 상태로 유지할 것이다.
다음은 완벽한 회로도입니다. 나는 풀 스텝 모드에서 드라이브를 사용할 것이므로 3 개의 MS 핀을 분리하고 Arduino 보드의 3 번과 4 번 핀에 드라이브의 Direction과 Step 핀을 연결하고 Ground와 5V를 연결합니다 보드에 전원을 공급하기위한 핀. 또한 디커플링을 위해 100μF 커패시터를 사용하고 모터에 전원을 공급하기 위해 12V, 1.5A 어댑터를 사용합니다. NEMA 17 바이폴라 스텝퍼 모터를 사용하고 A와 C 선은 1A와 1B 핀에 연결되고 B와 D 선은 2A와 2B 핀에 연결됩니다.
전류 제한
모터를 연결하기 전에 드라이버의 전류 제한을 조정하여 전류가 모터의 현재 한계 내에 있는지 확인해야합니다. 보드상의 전위차계를 사용하여 기준 전압을 조정하고이 방정식을 고려하여이를 수행 할 수 있습니다. 전류 제한 = VRef x 2
그러나이 방정식은 A4988 드라이버 보드의 제조업체가 다르기 때문에 항상 정확하지는 않습니다. 여기에 필자의 사례가있다. 전위차계를 조정하고 0.6V의 기준 전압을 측정했다. 따라서 전류 제한은 0.6 * 2, 즉 1.2 A의 값이어야합니다.
이제는 풀 스텝 모드에서 드라이버를 사용하고 있으며이 모드에서 A4988 데이터 시트에 따르면 권선 전류는 전류 제한의 70 %에 도달 할 수 있으며 1.2A * 0.7은 0.84A와 같을 것이다. 이를 확인하기 위해 연속적인 로직을 스텝 핀으로 보내는 간단한 코드를 업로드하여 (전류를 더 잘 알아볼 수 있도록) 모터의 한 와인딩과 직렬로 연결된 제 미터를 연결하고 전원을 켰습니다. 내가 얻은 것은 0.5A 였는데 이는 방정식이 내 경우에 맞지 않다는 것을 의미합니다.
- / * 간단한 스테퍼 모터 제어 Exaple 코드
- *
- * Dejan Nedelkovski, www.HowToMechatronics.com
- *
- * /
- // 핀 번호를 정의합니다.
- const int stepPin = 3 ;
- const int dirPin = 4 ;
- void setup ( ) {
- // 두 핀을 출력으로 설정합니다.
- pinMode ( stepPin, OUTPUT ) ;
- pinMode ( dirPin, OUTPUT ) ;
- }
- void loop ( ) {
- digitalWrite ( dirPin, HIGH ) ; // 모터가 특정 방향으로 움직일 수있게합니다.
- // 하나의 전체 사이클 회전을 만들기 위해 200 개의 펄스를 만듭니다.
- for ( int x = 0 ; x < 200 ; x ++ ) {
- digitalWrite ( stepPin, HIGH ) ;
- delayMicroseconds ( 500 ) ;
- digitalWrite ( stepPin, LOW ) ;
- delayMicroseconds ( 500 ) ;
- }
- delay ( 1000 ) ; // 1 초 지연
- digitalWrite ( dirPin, LOW ) ; // 회전 방향을 변경합니다.
- // 2 회 전체 순환을 위해 400 펄스를 만듭니다.
- for ( int x = 0 ; x < 400 ; x ++ ) {
- digitalWrite ( stepPin, HIGH ) ;
- delayMicroseconds ( 500 ) ;
- digitalWrite ( stepPin, LOW ) ;
- delayMicroseconds ( 500 ) ;
- }
- delay ( 1000 ) ;
- }
루프 섹션에서 먼저 방향 핀을 높은 상태로 설정하여 모터가 특정 방향으로 움직일 수있게 할 것입니다. 이제이 for 루프를 사용하여 모터를 전체 사이클 회전으로 만듭니다. 드라이버가 풀 스텝 모드로 설정되어 있고 스테퍼 모터의 스텝 각이 1.8도 또는 200 스텝이기 때문에 스텝 핀에 200 펄스를 보내어 전체 사이클을 1 회 회전해야합니다. 따라서 for 루프는 200 회 반복되며 매번 펄스를 만들기 위해 스텝 핀을 높게, 그리고 낮게 설정합니다. 각 digitalWrite 사이에 모터의 속도가 의존하는 지연을 추가해야합니다.
이 전체주기 회전 후에 우리는 1 초 지연을하고 dirPin을 낮은 상태로 설정하여 회전 방향을 변경하고이 반복 400 회 반복으로 2 전체 순환 회전을 만듭니다. 결국 두 번째 지연이 더 있습니다. 이제 코드를 업로드하고 코드가 어떻게 작동하는지 살펴 보겠습니다.
이 튜토리얼에서는 포텐셔미터를 사용하여 모터의 속도를 제어하는 또 다른 예제를 만들었습니다. 이 예제의 소스 코드는 다음과 같습니다.
- / * 간단한 스테퍼 모터 제어 Exaple 코드
- *
- * Dejan Nedelkovski, www.HowToMechatronics.com
- *
- * /
- // 핀 번호를 정의합니다.
- const int stepPin = 3 ;
- const int dirPin = 4 ;
- int customDelay, customDelayMapped; // 변수를 정의합니다.
- void setup ( ) {
- // 두 핀을 출력으로 설정합니다.
- pinMode ( stepPin, OUTPUT ) ;
- pinMode ( dirPin, OUTPUT ) ;
- digitalWrite ( dirPin, HIGH ) ; // 모터가 특정 방향으로 움직일 수있게합니다.
- }
- void loop ( ) {
- customDelayMapped = speedUp ( ) ; // 사용자 지정 speedUp 함수에서 사용자 지정 지연 값 가져 오기
- // 모터의 속도가 의존하는 전위차계에 따라 커스텀 딜레이로 pule을 만든다.
- digitalWrite ( stepPin, HIGH ) ;
- delayMicroseconds ( customDelayMapped ) ;
- digitalWrite ( stepPin, LOW ) ;
- delayMicroseconds ( customDelayMapped ) ;
- }
- // 포텐쇼미터를 읽는 기능
- int speedUp ( ) {
- int customDelay = analogRead ( A0 ) ; // 전위차계를 읽습니다.
- int newCustom = map ( customDelay, 0 , 1023 , 300 , 4000 ) ; // 포텐셔미터의 읽기 값을 0에서 1023까지 원하는 지연 값 (300에서 4000)으로 변환합니다.
- return newCustom;
- }
'프로세싱+아두이노+안드로이드' 카테고리의 다른 글
a4988 스텝 모터 드라이버 알아보기 ( 스테퍼 / 스테핑 / 모터 / 드라이버 / 초퍼 모터드라이버 / 설정 ) (0) | 2022.05.23 |
---|---|
How To Control a Stepper Motor with A4988 Driver and Arduino (0) | 2022.05.23 |
A4988 Driver 와 28BYJ48 Step Motor를 이용한 아날로그 시계 초침구현하기 (0) | 2022.05.23 |
Adafruit GFX Graphics Library (0) | 2022.05.14 |
Understanding the Pull-up/Pull-down Resistors With Arduino (0) | 2022.05.14 |
댓글