[ROBOT]/LineTracer2005. 7. 18. 22:57

Simple Lego Line Tracer Robot 제작

Simple Lego  Line Tracer Robot 제작



사용자 삽입 이미지



교육용으로 아주 간단하고 흥미 잃지 않도록 하기 위한 교육용 라인트레이서를 요구하는 학교가 있어 간단한 라인트레이서 컨트롤 보드를 제작했다.

컨셉은 정말 심플하고 쉽게 따라서 스터디 할수 있도록 하는것이다.
MCU는 8051, AVR이 가능하도록 했고 LCD, LED, Switch, 2개의 DC Motor Driver, 4개의 센서 입력 포트, 부져, Bluetooth, RF통신 모듈, Lego 연결 커넥터 등의 하드웨어 스펙을 가진다.


메인컨트롤 보드






적외선 라인 센서 보드







라인트레이서 테스트 동영상

Posted by nexp

댓글을 달아 주세요

[ROBOT]/Robot2005. 6. 2. 22:30

[RobotController] 스텝모터 가감속 제어 테스트 (AVR Robot Controller)

[RobotController] 스텝모터 가감속 제어 테스트 (AVR Robot Controller)

StepMotor Body(http://nexp.tistory.com/171) 조립후 스텝모터 가감속 제어 테스트를 했다.
스텝모터 가감속 테이블은 [스텝모터 가감속 테이블 생성기]를 이용했다.







스텝모터의 회전 속도는 스위칭 펄스의 주파수에 따라 결정되며 그림과 같은 특성을 가진다. 기동시 탈출 토크이상의 주파수로 구동하면 탈조가 된다. 따라서 기동시 낮은 주파수로 기동하여 점점 가속하여 정속 운전하고 정지시 점점 낮은 주파수로 기동하여 부드럽게 정지하는 가감속 구동법을 사용해야 한다. 로봇의 스텝모터는 기본적으로 가감속 구동을 하며 StmSetAcc()함수를 이용하여 기본 가감속, 등속, 사용자 정의 가감속을 설정할 수 있다. StmRun()함수는 스텝모터를 가감속 구동 방법으로 구동 하도록 한다.

엑셀을 이용하여 작성한 스텝모터 저속가감속 테이블 및 고속가감속 테이블의 그래프



소스코드



 

//=============================================================================

// Ez-RoboMaster Test Program - Step Test

//

// by nexp76@naver.com
// [.c]

//=============================================================================

/*

 - 사용자 정의 가감속 테이블 이용

 - 스위치1을 누르면 스텝모터를

 - 저속의 가감속 테이블을 이용하여 1000펄스동안 전진/후진 하고

 - 고속의 가감속 테이블을 이용하여 1000펄스동안 전진/후진 하고

*/

//Lib file head 추가

#include "c:\winavr\ezrobomaster\ezrmlib.h"

#include "step_table1.h"

#include "step_table2.h"

//이동할 거리 설정

#define DIST_MOVE                 3000

#define ROBOT_FORWARD           1

#define ROBOT_BACKWARD          2

void RobotMoveTo(unsigned char Status, unsigned int Distance);

void main(void)

{

        char flag = 0;

       

        //로보마스터 초기화

        SysInit();

        //스텝모터 초기화

        StmInit();

        //스텝모터의 최고 값 설정

        StmSetSpd(STEP_LEFT+STEP_RIGHT, 1160);

        StmSetAcc(STEP_LEFT+STEP_RIGHT, ACC_USER);

       

        LcdDspStr(0,0, "StepTest");

        LcdDspStr(0,1, "Press-SW1");

        while(1)

        {

                //스위치1이 눌러 지면..

                if(Sw1GetStat())

                {

                        //로봇 구동

                        flag = TRUE;

               

                        Delay(300);

                }

                if(flag)

                {                      

                        //저속 가감속 테이블 설정

                        StmSetAccTbl(m_TimeTable1, 500);

                        //로봇 구동 - 전진

                        RobotMoveTo(ROBOT_FORWARD, DIST_MOVE);

                        RobotMoveTo(ROBOT_BACKWARD, DIST_MOVE);

                        BzrTemp(100);

                       

                        //고속 가감속 테이블 설정

                        StmSetAccTbl(m_TimeTable2, 500);

                        //로봇 구동 - 후진

                        RobotMoveTo(ROBOT_FORWARD, DIST_MOVE);

                        RobotMoveTo(ROBOT_BACKWARD, DIST_MOVE);

                        BzrTemp(100);

                       

                        flag = FALSE;                    

                }       

        }

       

        return 0;

}

void RobotMoveTo(unsigned char Status, unsigned int Distance)

{

        switch(Status)

        {

                case ROBOT_FORWARD:

                        //스텝모터 방향 설정 -> 로봇 전진

                        StmSetDir(STEP_LEFT, DIR_CCW);

                        StmSetDir(STEP_RIGHT, DIR_CW);                    

                        break;

               

                case ROBOT_BACKWARD:

                        //스텝모터 방향 설정 -> 로봇 후진                    

                        StmSetDir(STEP_LEFT, DIR_CW);

                        StmSetDir(STEP_RIGHT, DIR_CCW);

                        break;

        }

        StmRunOutVol(STEP_LEFT+STEP_RIGHT, Distance );                      

}


 
Posted by nexp

댓글을 달아 주세요

  1. 박동천

    관리자의 승인을 기다리고 있는 댓글입니다

    2012.02.15 12:20 [ ADDR : EDIT/ DEL : REPLY ]

[AppBoard]/BasicBase2005. 5. 11. 20:08

[Basic Base Board] 관련 자료

[Basic Base Board] 관련 자료




기본 확장 보드로 내가 만든 대부분의 MCU보드를 확장할 수 있는 보드 이다.
기본적으로 포트는 모두 빠져서 확장할 수 있고, 시리얼 포트 LCD, LED등의 간단한 테스트를 할수 있다.
기본 동작 테스트나 포트 테스트에 유용하게 사용된다.
뿐만 아니라 확장 Application Board에 연결할 수 있는 커넥터가 있다.


회로도










PC인터페이스 실습 장치와 호환되어 기존 코드를 그대로 사용할 수 있도록 구성되어 있고 실제로 PC에서 돌리던 여러가지 예제를 동일한 코드로바로 실습해 볼 수 있다.

Posted by nexp
TAG AVR

댓글을 달아 주세요

[MyProject]/20052005. 4. 5. 17:01

피부자극기 개발

피부자극기 개발 (2005.4~2005.5)
    -회로 설계
    -펌웨어 작성
 


  • CPU : AVR Core (AVR Atmega48)
  • 디지털/아날로그 회로 설계 - 18V, 4Mhz 초음파  발생 회로
  • 펌웨어 작성


블럭도


 테스트 보드



Posted by nexp
TAG AVR

댓글을 달아 주세요

[MyProject]/20052005. 3. 25. 09:55

임베디드 로봇 컨트롤러 개발

임베디드 로봇 컨트롤러 개발
    -회로 설계
    -API작성
    -블루투스 통신보드 제작
    -자체 충전 보드 제작
    -응용 소프트웨어 작성
    -교재 작성
    -각 대학별 판매


  • CPU : AVR Core (Atmega128, Atmega8)
  • 2 Step Motor, 4 DC Motor, 8 ADC, Bat Charger, RF, IR, Bluetooth,
  • 펌웨어 작성, API, ActiveX
  • 블록도

* 2004년 7월 예전 회사 다닐때 만든 제품
테스트 보드








응용 작품
Amor Robot : StepMotor, DC Motor, IR Sensor, Ultra sonic Sensor, Camera Module 적용
 











서보모터를 이용한 조향 로봇




서보 모터를 이용한 로보팔 Amoro Robot
스텝모터, DC모터, 서보모터, 카메라 센서, 적외선센서, 초음파 센서 등을 이용하여 물체를 집어서 판단후 특정 위치에 가져다 놓는 로봇 제작

Posted by nexp

댓글을 달아 주세요