BASIC4MCU | 질문게시판 | 답변 : 아두이노 스텝모터(리니어 액추에이터) 제어 질문 드립니다.
페이지 정보
작성자 master 작성일2018-08-09 12:01 조회7,370회 댓글2건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=5279
작성일
본문
![]()
모터 전압은 20~50V로 되어 있는데요
토크가 충분하다면 20V 가까운 전압을 공급하는 것이 좋습니다.
모터 전류는 2A정도인데요
2상여자 또는 1-2상여자로 구동하면 두배정도 소요되니
DC24V 5A 이상의 SMPS를 사용해야겠습니다.
![]()
제품 케이스에 전류 설정과
서브디비젼(마이크로스텝) 설정이 있습니다.
200 적힌 것은 200스텝에 1회전 한다는 얘기이고 (일반적인 스텝모터 구동)
400 부터는 마이크로 스텝입니다. (400 펄스(스텝) 1회전)
값이 클 수록 미세하게 회전합니다.
신호는 3개인데요
PU(PILSE) - 펄스, 위에 적은 것처럼 200 펄스를 주면 1회전 합니다.
DR(DIR) - 회전 방향
MF(MOTOR FREE) - 모터 이네이블(ON/OFF)
直线模组及成套配件产品使用说明
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-08-09 오후 12:04:30// by Ok-Hyun Park//int PU=13;int DR=12;int MF=11;int L_limit=10;int R_limit=9;//int dir=0;//void setup(){digitalWrite(PU,1); pinMode(PU,OUTPUT);digitalWrite(DR,1); pinMode(DR,OUTPUT);digitalWrite(MF,1); pinMode(MF,OUTPUT);digitalWrite(L_limit,1); // 내부 풀업저항 사용digitalWrite(R_limit,1); // 내부 풀업저항 사용Serial.begin(9600);//digitalWrite(MF,0); // MOTOR ON}//void loop(){Serial.println("LEFT");while(digitalRead(L_limit)){ // L_limit=1 이면digitalWrite(DR,1); // 모터 왼쪽으로 1스텝씩 이동digitalWrite(PU,0); delay(5); digitalWrite(PU,1); delay(5);}//Serial.println("RIGHT");while(digitalRead(R_limit)){ // R_limit=1 이면digitalWrite(DR,0); // 모터 오른쪽으로 1스텝씩 이동digitalWrite(PU,0); delay(5); digitalWrite(PU,1); delay(5);}}위 소스를 돌려보시고
물건을 직접 제어하면 별 것 아닌데
물건없이 글로만 작성 해드리는 것은 한계가 있습니다.
해결이 안되는 경우 외주 처리하는 것이 나을겁니다.
댓글 2
조회수 7,370rickio님의 댓글
rickio 작성일
우선 빠른 답변 정말로 감사드립니다.
위에 적어주신 소스 테스트 진행해보려고 하는데 다운로드 과정에서
while(digitalRead(L_limit)){ // L_limit=1 이면
부분에서 L_limit was not declared in this scope 오류가 뜨는데 어떤 부분을 수정해야되는지 알 수 있을까요?
master님의 댓글
master
수정했으니 다시 돌려보세요