반응형

 

 

 

 

 

스탭모터의 가속 제어가 필요하여 검색하던 중 유용한 자료 발견!

스탭모터를 처음부터 빠른 속도로 돌리면 탈조가 나서 동작하지 않는 주파수대가 된다.

이것은 스탭모터 특성 그래프 참고! ^^

 

그래서 가속을 구현해야 하기에 아래 코드를 참고하여 구현해 보았다.

 

STM32 스탭 모터 Scurve 가속 코드 구현.

www.programmersought.com/article/85951804968/

 

STM32 stepper motor S curve acceleration code implementation - Programmer Sought

Equation of the S-curveThe graph in [-5, 5] is shown below: If you want to apply this curve to the acceleration and deceleration of the stepper motor, you need to translate the equation in the XY coordinate system and pull the curve up and down: The A comp

www.programmersought.com

자세한 내용은 위 링크 자료 참고.

이 사이트에 많은 좋은 자료가 있다. ^^

 

아래의 공식을 코드로 구현한 것이다.

 

 

온라인 컴파일러로 코드를 테스트 해 보았다.

 

 

아래는 결과를 그래프로 나타내 본 것.

이것을 역으로 적용하면 가속 구간으로 적용할 수 있다.

STM32의 출력 Period 를 반대로 주어야 하는 상황이라서 데이터를 반대로 나타내었다. ^^

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Online C compiler to run C program online
#include <stdio.h>
#include <math.h>
 
int main() {
    
    float fre[100];
    unsigned short period[100];
    float  len = 100;
    float fre_max = 18000;
    float fre_min = 1900;
    float flexible = 4;
    
    int i=0, j=0;
    float deno ;
    float melo ;
    float delt = fre_max-fre_min;
    for(; i<len; i++)
    {
        melo = flexible * (i-len/2/ (len/2);
        deno = 1.0 / (1 + expf(-melo));
        //expf is a library function of exponential(e) 
        fre[i] = delt * deno + fre_min;
        period[i] = (unsigned short)(10000000.0 / fre[i]); 
        // 10000000 is the timer driver frequency
        //printf("%d\n", period[i]);
        printf("%.0f, ", fre[i]);
        j++;        
        if(j > 9) {
            printf("\n");
            j = 0;            
        }
    }
 
    printf("\n");
 
    for(i=99; i>=0; i--)
    {
        printf("%.0f, ", fre[i]);
        j++;        
        if(j > 9) {
            printf("\n");
            j = 0;            
        }
    }
    
    return 0;
}
cs

 

 

 

 

 

728x90
반응형
반응형

 

 

 

 

 

X-NUCLEO-IHM01A1 Stepper Motor driver expansion board

NUCLEO-F401RE에 적용하여 테스트.

 

아래에 관련 자료를 모아서 압축하여 링크

관련 소스 자료. X-CUBE-SPN1

 

en.x-cube-spn1.vol1.egg
10.00MB
en.x-cube-spn1.vol2.egg
2.28MB

 

추가로 X-NUCLEO-IHM01A1 자료 묶음. (Steppter motor driver L6474 datasheet 포함)

 

x-nucleo-ihm01a1.zip
3.79MB

 

Compiler는 무료인 System Workbench for STM32 를 사용하였다.

 

X-NUCLEO-IHM01A1 보드에 모터를 연결하고 모터 전원을 인가하고 NUCLEO-F401RE 을 USB cable로 PC와 연결한다.

 

 

NUCLEO-F401REX-NUCLEO-IHM01A1를 연결하고 NUCLEO board에 USB로 연결하면 PC에서는 위와 같이 인식된다.

 

 

압축을 풀면 생성되는 STM32CubeExpansion_SPN1_V1.10.0 폴더내의 아래 위치를 소스를 컴파일러에서 열어서 테스트.

STM32CubeExpansion_SPN1_V1.10.0\Projects\Multi\Examples\MotionControl\IHM01A1_ExampleFor1Motor\SW4STM32\

컴파일러에 맞는 소스를 열면 된다.

 

 

소스에 아무런 수정도 하지 않고 컴파일하여 Debug folderSTM32F401RE-Nucleo.bin 파일이 생성되었다.

이 파일을 USB로 인식된 드라이버에 복사하면 Firmware가 자동으로 다운로드 되고 실행된다.

 

모터가 일정시간 정회전, 일정시간 역회전 하는 것을 확인할 수 있다.

 

 

 

 

 

 

728x90
반응형

'공부 > HW' 카테고리의 다른 글

210316 Serial EEPROM CAT24C32  (0) 2021.03.16
210310 스탭모터 S curve 가속 코드 구현  (0) 2021.03.12
210209 NFC tag NTAG213  (0) 2021.02.25
210223 엑셀로 오실로스코프 파형 분석  (0) 2021.02.24
210222 서보모터 인코더  (0) 2021.02.23
반응형

 

스텝 모터 드라이버 (TB6560AHQ)를 사용하는데 설정하는 excitation mode.

 

 

 

Full step, Half step, micro step (1/4, 1/8, 1/16) 으로 표시되지 않고 phase로 표시되어 있다.

전기적 특성표를 보면 phase와 theta로 알수 있다.

 

 

 

그러나 더 알아보기 쉬운 방법으로 다른 device는 아래와 같이 표시되어 있다.

이것을 보면 driving mode를 이해하기가 더 쉽다.

 

C.f.) Step motor driver AD1231

 

 

 

 

 

728x90
반응형

'공부 > HW' 카테고리의 다른 글

201013 백래시  (0) 2020.10.13
200928 SystemWorkbench - 문자열 연결  (0) 2020.09.28
200319 산요 팬 속도 제어  (0) 2020.09.25
200923 SystemWorkbench - Source folder copy  (0) 2020.09.24
180124 Absolute vs. Incremental encoder  (0) 2020.09.22

+ Recent posts