KR100286043B1 - 속도검출 시스템 및 그 방법 - Google Patents

속도검출 시스템 및 그 방법 Download PDF

Info

Publication number
KR100286043B1
KR100286043B1 KR1019990006538A KR19990006538A KR100286043B1 KR 100286043 B1 KR100286043 B1 KR 100286043B1 KR 1019990006538 A KR1019990006538 A KR 1019990006538A KR 19990006538 A KR19990006538 A KR 19990006538A KR 100286043 B1 KR100286043 B1 KR 100286043B1
Authority
KR
South Korea
Prior art keywords
encoder
clock
interrupt
pulse
buffer
Prior art date
Application number
KR1019990006538A
Other languages
English (en)
Other versions
KR20000056840A (ko
Inventor
유호선
Original Assignee
윤종용
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윤종용, 삼성전자주식회사 filed Critical 윤종용
Priority to KR1019990006538A priority Critical patent/KR100286043B1/ko
Publication of KR20000056840A publication Critical patent/KR20000056840A/ko
Application granted granted Critical
Publication of KR100286043B1 publication Critical patent/KR100286043B1/ko

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01PMEASURING LINEAR OR ANGULAR SPEED, ACCELERATION, DECELERATION, OR SHOCK; INDICATING PRESENCE, ABSENCE, OR DIRECTION, OF MOVEMENT
    • G01P3/00Measuring linear or angular speed; Measuring differences of linear or angular speeds
    • G01P3/42Devices characterised by the use of electric or magnetic means
    • G01P3/44Devices characterised by the use of electric or magnetic means for measuring angular speed
    • G01P3/48Devices characterised by the use of electric or magnetic means for measuring angular speed by measuring frequency of generated current or voltage
    • G01P3/481Devices characterised by the use of electric or magnetic means for measuring angular speed by measuring frequency of generated current or voltage of pulse signals
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B23MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
    • B23KSOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
    • B23K26/00Working by laser beam, e.g. welding, cutting or boring
    • B23K26/08Devices involving relative movement between laser beam and workpiece
    • B23K26/0869Devices involving movement of the laser head in at least one axial direction
    • B23K26/0876Devices involving movement of the laser head in at least one axial direction in at least two axial directions
    • B23K26/0884Devices involving movement of the laser head in at least one axial direction in at least two axial directions in at least in three axial directions, e.g. manipulators, robots
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01DMEASURING NOT SPECIALLY ADAPTED FOR A SPECIFIC VARIABLE; ARRANGEMENTS FOR MEASURING TWO OR MORE VARIABLES NOT COVERED IN A SINGLE OTHER SUBCLASS; TARIFF METERING APPARATUS; MEASURING OR TESTING NOT OTHERWISE PROVIDED FOR
    • G01D5/00Mechanical means for transferring the output of a sensing member; Means for converting the output of a sensing member to another variable where the form or nature of the sensing member does not constrain the means for converting; Transducers not specially adapted for a specific variable
    • G01D5/12Mechanical means for transferring the output of a sensing member; Means for converting the output of a sensing member to another variable where the form or nature of the sensing member does not constrain the means for converting; Transducers not specially adapted for a specific variable using electric or magnetic means
    • G01D5/244Mechanical means for transferring the output of a sensing member; Means for converting the output of a sensing member to another variable where the form or nature of the sensing member does not constrain the means for converting; Transducers not specially adapted for a specific variable using electric or magnetic means influencing characteristics of pulses or pulse trains; generating pulses or pulse trains
    • G01D5/24404Interpolation using high frequency signals

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Optics & Photonics (AREA)
  • General Physics & Mathematics (AREA)
  • Robotics (AREA)
  • Plasma & Fusion (AREA)
  • Mechanical Engineering (AREA)
  • Control Of Electric Motors In General (AREA)

Abstract

본 발명은, 속도검출시스템 및 그 방법에 관한 것으로, 본 발명에 따른, 엔코더를 구비한 속도검출시스템에 있어서, 상기 엔코더로부터 발생되는 엔코더펄스의 수를 계수하는 엔코더펄스카운터와; 소정 주기로 속도검출인터럽트가 발생되면 그 시점에서의 상기 엔코더펄스카운터의 계수값을 저장하는 엔코더펄스버퍼와; 소정 클럭펄스발생기로부터의 클럭펄스를 계수하는 클럭펄스카운터와; 상기 엔코더로부터 엔코더펄스발생신호가 수신되면 그 시점의 상기 클럭펄스카운터의 클럭계수값을 저장하는 제 1버퍼와; 상기 엔코더펄스발생신호가 수신되면 그 시점의 상기 제 1버퍼에 저장된 상기 클럭계수값을 수신받아 저장하는 제 2버퍼와; 상기 속도검출인터럽트가 발생되었을 때, 상기 인터럽트 발생주기, 상기 엔코더카운터버퍼에 저장된 엔코더펄스계수값 및 상기 제 1버퍼에 저장된 값에 기초하여 속도를 연산하는 상기 인터럽트를 실행하며, 상기 속도검출인터럽트의 발생시점에서부터 상기 속도검출인터럽트의 실행시점까지의 이행시간내에 상기 엔코더로부터 새로운 엔코더펄스가 발생되는 경우에는 상기 제 1버퍼에 저장된 클럭계수값 대신에 상기 제 2버퍼에 저장된 클럭계수값을 사용하여 속도를 연산하는 연산부를 포함한다. 이에 의해 속도검출인터럽트 발생시점에서부터 실제 실행시점 사이에 엔코더로부터 펄스가 입력되어 속도검출을 위한 데이터에 오류가 발생되는 경우 이를 보상할 수 있는 알고리즘이 마련되어 있음으로써 높은 정밀도의 회전속도를 검출할 수 있는 속도검출시스템이 제공된다.

Description

속도검출 시스템 및 그 방법{speed detecting system and method thereof}
본 발명은, 속도검출시스템 및 그 방법에 관한 것으로, 특히 속도검출센서로서 엔코더를 구비한 속도검출시스템 및 그 방법에 관한 것이다.
기존의 서보 모터 드라이버나 벡터제어 인버터 등 엔코더가 부착되어 있는 모터의 고성능 제어시스템에서는 고정밀도(high precision)의 회전속도검출을 위하여 연산부(CPU)의 외부에 별도의 하드웨어칩으로서 ASIC(application-specific integrated circuit)을 추가로 탑재하여 속도검출기능을 전담하도록 하였다. 여기서 ASIC이란 특별한 목적을 위해 디자인된 칩의 일종으로, 일정한 기능을 갖고 대량생산되어 널리 사용되는 범용칩에 대응된다.
도 1은 종래 ASIC을 이용하여 모터의 회전속도를 검출하는 속도검출시스템의 제어블럭도이다. 도시된 바와 같이, 종래의 속도검출시스템은 모터의 회전축에 동축적으로 결합된 엔코더(1)와, 엔코더(1)로부터 발생하는 펄스(A,B)와 외부클럭으로부터 클럭펄스를 수신하는 ASIC부(3), 및 ASIC부(3)으로부터 인터럽트요구와 속도검출에 필요한 데이터를 수신하는 연산부(CPU)(5)를 포함한다.
엔코더(1)는 모터의 회전속도를 검출하기 위해 널리 사용되는 것으로, 모터의 회전속도에 비례하는 수의 펄스(A,B)를 발생시킨다. 모터의 회전속도검출을 위해서는, 소정시간동안 엔코더로부터 발생된 펄스의 수를 계수하거나 펄스의 발생간격을 측정하는 방법이 통상 사용되는 바, ASIC(3)은 외부의 클럭신호를 입력받아 소정시간(t)동안 엔코더(1)로부터 발생되는 펄스(A,B)의 수를 계수하거나, 펄스(A,B)의 발생간격을 측정하여, 모터의 회전속도검출에 필요한 데이터인 시간(t)과 이 시간(t)동안에 엔코더(3)로부터 발생된 펄스 수(m), 및 속도검출을 위한 인터럽트 요구를 연산부로 송신한다. ASIC(3)으로부터 속도검출을 위한 인터럽트 요구를 수신한 연산부(5)는 현재 진행중인 작업을 일시 중단하고 인터럽트로부터 지정된 장소로 분기하여 속도검출 인터럽트를 실행한다.
그러나, 위와 같은 속도검출방법은 다음과 같은 문제점을 갖는다.
먼저, 소정시간동안 펄스 수를 계수하여 속도를 검출하는 방법은 모터의 속도가 저속일 때 엔코더로부터 입력되는 펄스 수가 적어서 속도검출의 정밀도가 낮아 신뢰성을 보장할 수 없게 된다. 이를 극복하기 위해 계수시간을 늘리면, 속도검출 간격이 넓어지게 되어 특히 고속운전시 모터의 제어응답이 늦어지게 된다. 엔코더의 1회전 당 발생펄스 수는 엔코더 제작시 결정되는 것으로 발생펄스 수가 많을수록 가격이 높을뿐더러 이의 증가는 엔코더의 특성상 한계를 갖는다.
또한, 펄스간격측정방법에 있어서는, 모터의 고속회전시 발생펄스의 간격이 매우 좁아지게 되므로 계수되는 클럭펄스의 간격은 상대적으로 넓어지게 되어 이에 의해 계수되어 측정되는 펄스간격은 오차가 크고 따라서 검출된 속도의 정밀도가 낮아지게 된다.
이러한 문제점을 해결하기 위한 방법들 중 하나로서 미국특허No.4,584,528에서는 속도검출을 위한 펄스계수시간값을 구하는데 있어 속도검출인터럽트 발생주기로부터 소정시간을 가감하여 펄스의 발생시점(예를 들면, 상승에지)에서부터 마지막 펄스의 발생시점까지의 시간값을 사용하며, 설정된 인터럽트발생주기가 모터의 회전속도에 따라 변경될 수 있게 함으로써 속도검출의 정밀도를 높인 속도검출방법을 개시하고 있다.
그러나, 상기와 같은 방법 역시 ASIC을 이용하여 구현된 것이므로, ASIC칩의 설계, 제작, 관리에 많은 비용이 소요된다. 또한, ASIC칩의 추가탑재에는 상당한 공간이 필요하므로 하드웨어의 소형화에 한계를 갖는다.
또한, ASIC에 입력되는 외부클럭펄스에 의해 엔코더로부터 발생되는 펄스 간격을 계수하여 측정하며, 이 클럭주파수는 데이터의 정밀도에 비례하므로 1MHz 정도의 고주파 외부 클럭이 추가로 필요하다. 그러나, 클럭주파수가 높을수록 계수할 카운터의 비트수가 동시에 증가하게 되므로 카운터 구현비용이 상승하게 된다.
한편, 모터의 회전속도 검출시스템을 구현하기 위해 ASIC을 사용함으로 인한 상술한 바와 같은 문제점을 해결하기 위해, 별도의 ASIC을 탑재하지 않고, 다종 양산되어 판매되는 원칩콘트롤러(one-chip controller)를 사용하여 연산부 내에서 직접 엔코더펄스를 처리할 수 있는 방법이 제안되고 있다.
그러나, 일정한 주기로 속도검출인터럽트가 발생하여 실제로 연산부에 의해 상기 속도검출인터럽트가 실행되기까지의 이행시간동안에 엔코더로부터 또 다른 펄스가 발생되어 연산부의 속도연산을 위한 데이터에 오차가 발생될 수 있다. 모터가 고속으로 회전하면 엔코더로부터 발생되는 펄스의 주파수는 높아지고 따라서 상기 이행시간 내에 엔코더로부터 펄스가 발생될 가능성은 더욱 커진다. 모터가 저속으로 회전하면 상기 이행시간 내에 엔코더로부터 펄스가 발생될 가능성은 낮아지지만, 상기 펄스의 주파수가 낮으므로 속도감지를 위한 데이터의 오차는 더욱 커지게 된다.
그러나, 이러한 경우가 고려되어 있지 않아, 즉 데이터 상의 오차를 보상하지 않고 그대로 사용함으로써 정확한 속도값을 얻을 수 없게 되고, 따라서 이에 기초한 모터의 제어는 불안정하고 부정확해지는 문제점이 있다.
따라서, 본 발명의 목적은, 속도검출인터럽트 발생시점에서부터 실제 실행시점 사이에 엔코더로부터 펄스가 입력되어 속도검출을 위한 데이터에 변화가 발생되는 경우 이를 보정할 수 있는 알고리즘을 부가함으로써 높은 정밀도의 회전속도를 검출할 수 있는 속도검출시스템을 제공하는 것이다.
본 발명의 다른 목적은, 원칩콘트롤러에 구현되어 비용절감과 회로설계의 단순화 및 이에 따른 부피감소를 도모할 수 있으며, 필요에 따라 사양변경이 용이한 속도검출시스템을 제공하는 것이다.
도 1은 종래 ASIC을 이용하여 회전속도를 검출하는 속도검출시스템의 제어블럭도,
도 2는 본 발명에 따른 원칩콘트롤러에 구현된 속도검출시스템의 주요부,
도 3은 엔코더로부터 발생한 엔코더펄스와 엔코더펄스카운터 및 클럭펄스카운터의 타임블럭도,
도 4는 연산부(20)의 속도연산과정을 나타낸 순서도,
도 5는 이행시간(Δt) 내에 새로운 엔코더펄스가 수신되는 경우의 엔코더펄스카운터(12)와 클럭펄스카운터(15)의 타임블럭도이다.
<도면의 주요 부분에 대한 부호의 설명>
1 : 엔코더 3 : ASIC
5 : 연산부 10 : 에지검파회로
12 : 엔코더펄스 카운터 13 : 엔코더펄스 버퍼
15 : 클럭펄스 카운터 16 : 인터럽트 버퍼
18 : 제 1버퍼 19 : 제 2버퍼
20 : 연산부 21 : 메모리
상기 목적은, 본 발명에 따라, 엔코더를 구비한 속도검출시스템에 있어서, 상기 엔코더로부터 발생되는 엔코더펄스의 수를 계수하는 엔코더펄스카운터와; 소정 주기로 속도검출인터럽트가 발생되면 그 시점에서의 상기 엔코더펄스카운터의 계수값을 저장하는 엔코더펄스버퍼와; 소정 클럭발생기로부터의 클럭펄스를 계수하는 클럭펄스카운터와; 상기 엔코더로부터 엔코더펄스발생신호가 수신되면 그 시점의 상기 클럭펄스카운터의 클럭계수값을 저장하는 제 1버퍼와; 상기 엔코더펄스발생신호가 수신되면 그 시점의 상기 제 1버퍼에 저장된 상기 클럭계수값을 수신받아 저장하는 제 2버퍼와; 상기 속도검출인터럽트가 발생되었을 때, 상기 인터럽트 발생주기, 상기 엔코더카운터버퍼에 저장된 엔코더펄스계수값 및 상기 제 1버퍼에 저장된 값에 기초하여 속도를 연산하는 상기 인터럽트를 실행하며, 상기 속도검출인터럽트의 발생시점에서부터 상기 속도검출인터럽트의 실행시점까지의 이행시간내에 상기 엔코더로부터 새로운 엔코더펄스가 발생되는 경우에는 상기 제 1버퍼에 저장된 클럭계수값 대신에 상기 제 2버퍼에 저장된 클럭계수값을 사용하여 속도를 연산하는 연산부를 포함하는 것을 특징으로 하는 속도검출시스템에 의하여 달성된다.
여기서, 상기 클럭펄스카운터는 상기 연산부클럭발생기에 따라 동작하거나, 상기 클럭펄스카운터를 위한 클럭발생기를 더 포함하여 상기 클럭발생기에 따라 동작 하는 것이 바람직하며, 상기 엔코더로부터 발생되는 엔코더펄스는 에지감지회로를 통해 상승에지(rising edge)를 검파하여 계수하는 것이 효과적이다.
그리고, 상기 연산부는 다음의 수학식에 의해서 속도(V)를 계산한다.
여기서, Tc는 인터럽트 발생주기, Tk-1은 k-1번째 인터럽트 발생시점 이전에 상기 엔코더로부터 발생된 마지막 펄스입력시점에서부터 k번째 인터럽트 발생시점까지의 시간, Tk는 k번째 인터럽트 발생시점 이전에 상기 엔코더로부터 발생된 마지막 펄스입력시점에서부터 k+1번째 인터럽트 발생시점까지의 시간, m은 상기 인터럽트 발생주기동안 상기 엔코더로부터 발생된 펄스의 수, k는 비례상수이다. 이하 동일한 기호는 동일한 의미를 가지므로 중복된 설명을 생략한다.
또한, 상기 목적은, 본 발명에 따라, 엔코더를 구비한 속도검출시스템에 의한 속도검출방법에 있어서, 상기 엔코더로부터 발생되는 엔코더펄스의 수를 계수하는 단계; 소정 주기로 속도검출인터럽트를 발생시키는 단계; 상기 속도검출인터럽트 발생시점에서의 상기 엔코더펄스계수값을 저장하는 단계; 소정 클럭발생기로부터의 클럭펄스를 계수하는 단계; 상기 엔코더로부터 엔코더펄스발생신호가 수신되면 그 시점의 상기 클럭계수값을 저장하는 단계; 상기 엔코더펄스발생신호가 수신되면 저장된 상기 클럭계수값을 수신받아 저장하는 단계; 상기 속도검출인터럽트가 발생되었을 때, 상기 인터럽트 발생주기, 상기 엔코더카운터버퍼에 저장된 엔코더펄스계수값 및 상기 제 1버퍼에 저장된 값에 기초하여 속도를 연산하는 상기 인터럽트를 실행하며, 상기 속도검출인터럽트의 발생시점에서부터 상기 속도검출인터럽트의 실행시점까지의 이행시간내에 상기 엔코더로부터 새로운 엔코더펄스가 발생되는 경우에는 상기 제 1버퍼에 저장된 클럭계수값 대신에 상기 제 2버퍼에 저장된 클럭계수값을 사용하여 속도를 연산하는 단계를 포함하는 것을 특징으로 하는 속도검출방법에 의해서도 달성된다.
여기서, 상기 클럭발생기는 연산부클럭발생기와 상기 클럭펄스카운터를 위한 클럭발생기 중 어느 하나이다.
또한, 상기 엔코더로부터 발생되는 엔코더펄스를 계수하는 단계는 소정 에지감지회로를 통해 상승에지(rising edge)를 검파하여 계수하는 것이 바람직하다.
그리고, 상기 속도(V)를 연산하는 단계는 다음의 (수학식 1)에 의한다.
V=k*m/(Tc+Tk-1-Tk)
본 발명에 따른 속도검출시스템을 구현하기 위해서는 내부에 주변기기(peripheral device)로서 타이머와 카운터유닛이 구비된 원칩콘트롤러가 필요한 바, 최근에 널리 사용되는 원칩콘트롤러는 대부분 이러한 사양을 만족하고 있다. 본 실시예에서는 히다찌(Hitachi)사의 SH704X모델의 원칩콘트롤러를 사용하여 속도검출시스템을 구현하였다.
이하에서는 첨부도면을 참조하여 본 발명에 대해 상세히 설명한다.
도 2는 본 발명에 따른 원칩콘트롤러에 구현된 속도검출시스템의 주요부이고 도 3은 엔코더로부터 발생한 엔코더펄스와 엔코더펄스카운터 및 클럭펄스카운터의 타임블럭도이다.
본 발명에 따른 속도검출시스템은, 엔코더로부터 발생된 펄스(A,B)를 계수하고 소정신호에 기초하여 엔코더펄스계수값(m)을 저장하는 엔코더펄스카운터부(11)와, 소정 클럭펄스를 계수하고 엔코더펄스(A,B)의 입력신호에 기초하여 엔코더펄스(A,B)입력시점을 저장하며 연산부(CPU)(20)에 소정주기로 속도검출인터럽트를 발생하는 클럭카운터부(14), 소정 데이터에 기초하여 모터의 회전속도를 연산하는 연산부(20) 및 소정 데이터를 저장하는 메모리(21)를 포함한다.
엔코더펄스카운터부(11)는 엔코더로부터 발생된 펄스(A,B)를 입력받아 에지를 검파하여 입력시점을 감지하는 에지검파회로(10)와, 상기 에지검파회로(10)로부터의 펄스입력신호에 기초하여 펄스(A,B)의 수를 계수하는 엔코더펄스카운터(12)와, 소정의 명령에 따라 그 순간의 엔코더펄스카운터(12)의 펄스계수값을 저장하는 엔코더펄스버퍼(13)를 포함한다.
또한, 클럭카운터부(14)는 소정 클럭펄스를 계수하는 클럭펄스카운터(15)와, 소정인터럽트 발생주기를 저장하는 인터럽트버퍼(16)와, 에지검파회로(10)로부터의 신호에 기초하여 클럭펄스카운터(15)의 클럭계수값을 저장하는 제 1버퍼(18), 및 에지검파회로(10)로부터의 신호에 기초하여 제 1버퍼(18)의 클럭계수값을 저장하는 제 2버퍼(19)를 포함한다.
이상과 같은 구성에 의하여, 모터가 회전하면 모터의 회전축에 동축적으로 결합된 엔코더(도시 않음)로부터 모터의 회전속도에 비례하여 펄스(A,B)가 발생한다. 통상 엔코더는 2개의 서로 다른 위상을 갖는 펄스(A,B)를 발생시키는데, 그 중 하나의 펄스를 통해 속도의 절대값을 검출하며, 양 펄스의 위상차를 통해 회전방향을 감지한다. 엔코더로부터 발생된 펄스(A,B)는 에지검파회로(10)로 입력된다. 에지검파회로(10)는 펄스의 상승에지를 검파하여 펄스입력시점(a)을 검파해낸다. 물론, 에지검파회로(10)는 펄스의 하강에지를 검파하여 펄스입력시점을 검파해낼 수도 있다.
에지검파회로(10)는 펄스입력시점(a)을 알리는 신호를 엔코더펄스카운터(12)와 제 1버퍼(18) 및 제 2버퍼(19)로 송신한다. 펄스입력시점(a)을 알리는 신호가 입력되면 엔코더펄스카운터(12)는 펄스입력수를 계수한다. 이 때, 펄스입력수는 모터의 회전속도에 비례하므로, 모터가 고속으로 회전하면 펄스입력수는 증가하게 되고 저속으로 회전하면 감소하게 된다.
한편, 엔코더펄스카운터(12)는 모터가 회전함에 따라 이에 동기하여 원칩콘트롤러에 내장된 내부클럭을 계수한다. 본 실시예에서 사용된 히다찌(Hitachi)사의 원칩콘트롤러인 SH704X는 28,636MHz의 시스템클럭을 내장하고 있다. 그러나, 내부클럭 대신 모터회전속도범위에 따라 적절한 외부클럭을 사용할 수도 있다.
에지검파회로(10)로부터 엔코더에서 발생된 펄스입력신호가 수신되면 펄스입력시점(a)의 클럭펄스카운터(15)에 의해 계수된 클럭계수값이 제 1버퍼(18)에 저장된다. 에지검파회로(10)로부터 다음 펄스입력신호가 수신되면 그 펄스입력시점(b)의 클럭펄스카운터(15)의 클럭계수값이 제 1버퍼(18)에 새로이 저장되고, 제 1버퍼(18)에 저장되었던 클럭값은 제 2버퍼(19)로 시프트되어 제 2버퍼(19)에 저장된다. 마찬가지로, 에지검파회로(10)로부터 다음 펄스입력신호가 수신되면 그 펄스입력시점(c)의 클럭펄스카운터(15)의 클럭계수값은 다시 제 1버퍼(18)에 저장되고, 제 1버퍼에 기저장되어 있던 클럭값은 제 2버퍼(19)로 시프트되는 과정을 반복하게 된다.
한편, 인터럽트버퍼(16)에는 소정의 속도검출인터럽트발생주기(Tc)가 저장되어 있다. 따라서, 클럭펄스카운터(15)의 클럭계수값이 인터럽트버퍼(16)에 저장된 속도검출인터럽트 발생주기(Tc)에 이르게 되면 리셋됨과 동시에 엔코더펄스버퍼(13)에 엔코더펄스카운터(12)의 펄스계수값(m)을 저장하도록 하는 신호를 송신하고, 연산부(20)에 속도검출인터럽트를 발생한다.
엔코더펄스카운터의 계수값을 저장을 명령하는 신호를 수신받은 엔코더펄스버퍼(13)는 그 시점의 엔코더펄스카운터(12)의 펄스계수값(m) 을 저장하며, 속도검출인터럽트를 발생받은 연산부(20)는 정확한 모터 회전속도 연산을 위해, 엔코더펄스의 상승에지에서부터 상승에지까지의 소요시간(Tc-Tk+Tk-1)과 이시간 동안에 계수된 펄스의 수(m, 상승에지의 수)를 기초로 속도연산을 수행한다. 이를 위해 필요한 데이터는, 엔코더펄스버퍼(13)에 저장되어 있는, 속도검출인터럽트 발생주기(Tc) 동안 엔코더로부터 발생한 펄스의 수(m)와, 제 1버퍼(18)에 저장되어 있는, 속도검출인터럽트 발생시점이전에 마지막으로 발생된 엔코더펄스의 입력시점(e)의 클럭계수값(cpo), 및 인터럽트버퍼(16)에 저장되어 있는 속도검출인터럽트 발생주기(Tc)이다.
그런데, 연산부(20)가 속도검출인터럽트 발생에 따라 속도검출인터럽트의 실행, 즉 속도연산을 하기 위해서는 현재 수행중인 작업을 중단하고 속도검출인터럽트가 지정한 지점으로 분기하여 상기 필요한 데이터를 독출하여 이에 기초하여 속도검출인터럽트를 실행하여야 한다. 따라서, 속도검출인터럽트 발생시점에서부터 실행시점까지는 수μsec 내외의 이행시간(Δt)가 필요하다.
그러나, 상기 이행시간(Δt) 내에 새로운 엔코더펄스가 수신되면, 이 펄스의 입력시점이 제 1버퍼(18)에 저장되고, 제 1버퍼(18)에 기저장되었던 값은 제2버퍼(19)로 시프트되므로, 이러한 경우 연산부(20)가 독출하여야할 데이터의 위치가 상기 이행시간(Δt) 내에 새로운 엔코더펄스가 수신되지 않은 경우와 달라지게 된다.
따라서, 연산부(20)는 속도연산을 실행하기에 앞서 먼저 상기 이행시간(Δt) 내에 엔코더펄스가 입력되었는지 여부를 판단하여야 한다.
도 4는 연산부(20)의 속도연산과정을 나타낸 순서도이다.
연산부(20)는 상기 이행시간(Δt) 내에 새로운 엔코더펄스가 입력되었는지 여부를 판단하기 위해 엔코더펄스카운터(12)에 엑세스하여 엔코더펄스카운터값(12)을 첵크한다(100). 앞서 살펴본 바와 같이, 새로운 엔코더펄스가 수신되었는지 여부는 속도검출인터럽트가 발생됨과 동시에 엔코더펄스카운터(12)가 리셋된다는 사실로부터 알 수 있다. 즉, 상기 이행시간 내에 엔코더펄스가 수신되지 않으면 엔코더펄스계수값은 리셋상태를 그대로 유지하고 있으므로 0이지만, 엔코더펄스가 수신되면 엔코더펄스카운터(12)는 이를 계수하고 따라서 엔코더펄스계수값은 1이 된다.
따라서, 엔코더펄스계수값이 0인 경우에는 엔코더펄스버퍼(13)에 저장된 엔코더펄스계수값(m)과, 제 1버퍼에 저장된 엔코더펄스의 클럭계수값(cpo)를 독출한다(101).
이어, 연산부(20)는 인터럽트발생주기(Tc)로부터 클럭계수값(cpo)을 빼서 Tk값을 구한 후(104), 메모리(21)에 저장되어 있는 바로 직전의 인터럽트 발생주기에서 속도연산에 사용했던 Tk-1값을 독출한다(107).
다음으로, 연산부(20)는 다음의 수학식1을 이용하여 모터의 속도(V)를 연산한다(108).
여기서 k는 비례상수로서, 모터의 동특성, 정특성, 및 응답특성 등에 따라 달라진다.
속도 연산이 끝난 연산부(20)는 이어지는 다음단계의 인터럽트주기에서의 속도 연산을 위해 Tk값을 메모리에 저장한다(109).
이행시간(Δt) 내에 새로운 엔코더펄스가 수신되는 경우, 즉, 엔코더펄스카운터의 펄스계수값이 1인 경우에 있어서 연산부의 속도연산은 다음과 같다.
도 5는 이행시간(Δt) 내에 새로운 엔코더펄스가 수신되는 경우의 엔코더펄스카운터(12)와 클럭펄스카운터(15)의 타임블럭도이다. 도시된 바와 같이, 이행시간 (Δt)내에 새로운 엔코더펄스가 수신되면 제 1버퍼(18)에는 엔코더입력시점(e')의 클럭펄스카운터(15)의 클럭계수값(cpo)이 저장되고 기저장되어 있던 클럭계수값(cp1)은 제 2버퍼(19)로 시프트된다. 그런데, 만약 Tk를 구하기 위해서 이행시간(Δt) 내에 새로운 엔코더펄스가 수신되지 않은 경우와 마찬가지로 제 1버퍼(18)에 저장된 값을 사용하면 데이터에 오류가 생기게 되고 모터의 정확한 속도를 연산해낼 수 없다. 따라서 Tk를 구하기 위해서는 제 2버퍼(19)에 저장된 값을 사용하여야 한다. 따라서, 연산부(20)는 엔코더펄스버퍼(13)에 저장된 엔코더펄스계수값(m)과, 제 2버퍼에 저장된 엔코더펄스의 클럭계수값(cp1)를 독출한다(103). 이어, 인터럽트 발생주기(Tc)에서 제 2버퍼(19)에 저장된 클럭계수값(cp1)을 감하여 Tk값을 구한다(105).
다시, 연산부(20)는 메모리(21)에 저장된 Tk-1값을 독출하고(107), 엔코더펄스 계수값 m을 소요시간 Tc­Tk+Tk-1로 나눈 값에 소정의 비례상수를 곱하여 모터의 회전속도(V)를 연산해낸다(108).
[수학식 1]
속도 연산이 끝난 연산부(20)는 이어지는 다음단계의 인터럽트주기에서의 속도 연산을 위해 Tk값을 메모리(21)에 저장한다(109). 본 실시예에서 Tk값은 원칩콘트롤러에 마련되어 있는 메모리에 저장하였으나, 버퍼를 사용하여 저장할 수도 있다.
본 발명에 따른 다른 실시예에 따르면, 연산부(20)는 상기 이행시간(Δt) 내에 새로운 엔코더펄스가 입력되었는지 여부를 판단하기 위해, 엔코더펄스계수값(m)에 따라, 엔코더펄스카운터(12)값을 첵크하는 것과 제 1버퍼(18)와 제 2버퍼(19)의 값을 비교하는 것을 병용할 수도 있다.
엔코더펄스버퍼에 저장된 엔코더펄스계수값(m)이 0이거나 1인 경우에는 상기 첫 번째 실시예와 동일한 방법을 취한다.
그러나, 엔코더펄스계수값(m)이 2보다 크거나 같은 경우를 중고속이라고 정의할 때, 상기 이행시간(Δt) 내에 새로운 엔코더펄스가 수신되면 에지검파회로(10)로부터 펄스입력신호가 제 1버퍼(18)에 수신되고 펄스입력신호를 수신한 제 1버퍼(18)는 펄스입력시점(e')의 클럭펄스카운터(15)의 클럭계수값(cpo)을 저장한다. 따라서, 제 1버퍼에 저장된 클럭계수값(cp1)은 클럭펄스카운터(15)가 리셋된 후 첫 번째 입력된 엔코더펄스의 입력시점까지의 계수값(cpo)이 되므로 제 2버퍼에 저장된 클럭계수값(cp1)보다 작게 된다.
그러나, 상기 이행시간(Δt) 내에 새로운 엔코더펄스가 수신되지 않으면 제 1버퍼(18)에는 엔코더펄스입력시점 d에서의 클럭계수값이 저장되어 있고, 제 2버퍼(19)에는 엔코더펄스입력시점 c에서의 클럭계수값이 저장되어 있으므로 제 1버퍼(18)에 저장된 클럭계수값이 제 2버퍼(19)에 저장된 클럭계수값보다 크다.
따라서 제 1버퍼(18)에 저장된 값과 제 2버퍼(19)에 저장된 값을 비교하면 이행시간(Δt) 내에 새로운 엔코더펄스가 수신되었는지 여부를 판단할 수 있다.
상기 두 실시예에서는 속도검출인터럽트 발생시점에서부터 실행시점까지의 이행시간(Δt) 내에 1개의 엔코더펄스가 입력되는 경우만을 가정하여 속도검출시스템을 구성하였다. 실제로, 통상 사용되는 엔코더는 600ppr(pulse per revolution), 1024ppr, 2048ppr의 펄스를 발생하며, 인터럽트 실행에 필요한 이행시간은 수μsec 내외이므로 모터를 고속으로 회전시킨다고 하더라도 2개 이상의 엔코더펄스가 입력되는 경우는 현시점의 통상적인 기술수준에 있어서 거의 없다. 그러나, 모터의 회전속도가 더욱 커지고 엔코더의 펄스발생 수가 증가하여 2개 이상의 엔코더펄스가 입력될 수 있다면, 예상 입력 수 많큼 엔코더펄스입력시점을 저장하는 버퍼의 수를 늘리고, 상술한 바와 마찬가지로 적절한 버퍼저장값을 사용하여 데이터의 오차를 보정할 수 있다.
만약, 엔코더펄스입력시점을 저장하는 버퍼의 수를 증가함으로 인해 하드웨어적 구성이 복잡해진다면, 속도인터럽트실행시점 직전에 마지막으로 입력된 엔코더펄스의 입력시점을 저장하는 하나의 버퍼만을 사용하여 속도검출시스템을 구성할 수도 있다. 이 경우, 버퍼에 저장된 클럭펄스카운터의 클럭계수값은 인터럽트 발생시점에서부터 마지막으로 입력된 엔코더펄스의 입력시점까지의 소요시간을 나타내므로 이 값에 인터럽트발생주기(Tc)를 더한 값을 구한 후, 엔코더펄스버퍼에 저장된 엔코더펄스계수값과, 인터럽트실행시점의 엔코더펄스카운터의 펄스계수값을 독출하여 더한 값을 총 엔코더펄스값을 사용하여 속도를 연산하면 된다. 여기서 인터럽트실행시점의 엔코더펄스카운터의 펄스계수값은 이행시간 내에 입력된 엔코더펄스의 수를 나타한다.
이상에서 설명한 바와 같이, 본 발명에 따르면, 원칩콘트롤러에 구현되어 비용절감과 회로설계의 단순화 및 이에 따른 부피감소를 도모할 수 있으며 필요에 따라 사양변경이 용이할 뿐 아니라, 속도검출인터럽트 발생시점에서부터 실제 실행시점 사이에 엔코더로부터 펄스가 입력되어 속도검출을 위한 데이터에 오류가 발생되는 경우 이를 보상할 수 있는 알고리즘이 마련되어 있음으로써 높은 정밀도의 회전속도를 검출할 수 있는 속도검출시스템이 제공된다.

Claims (10)

  1. 엔코더를 구비한 속도검출시스템에 있어서,
    상기 엔코더로부터 발생되는 엔코더펄스의 수를 계수하는 엔코더펄스카운터와;
    소정 주기로 속도검출인터럽트가 발생되면 그 시점에서의 상기 엔코더펄스카운터의 계수값을 저장하는 엔코더펄스버퍼와;
    소정 클럭펄스발생기로부터의 클럭펄스를 계수하는 클럭펄스카운터와;
    상기 엔코더로부터 엔코더펄스발생신호가 수신되면 그 시점의 상기 클럭펄스카운터의 클럭계수값을 저장하는 제 1버퍼와;
    상기 엔코더펄스발생신호가 수신되면 그 시점의 상기 제 1버퍼에 저장된 상기 클럭계수값을 수신받아 저장하는 제 2버퍼와;
    상기 속도검출인터럽트가 발생되었을 때, 상기 인터럽트 발생주기, 상기 엔코더카운터버퍼에 저장된 엔코더펄스계수값 및 상기 제 1버퍼에 저장된 값에 기초하여 속도를 연산하는 상기 인터럽트를 실행하며, 상기 속도검출인터럽트의 발생시점에서부터 상기 속도검출인터럽트의 실행시점까지의 이행시간내에 상기 엔코더로부터 새로운 엔코더펄스가 발생되는 경우에는 상기 제 1버퍼에 저장된 클럭계수값 대신에 상기 제 2버퍼에 저장된 클럭계수값을 사용하여 속도를 연산하는 연산부를 포함하는 것을 특징으로 하는 속도검출시스템.
  2. 제 1 항에 있어서,
    상기 클럭펄스카운터는 상기 연산부클럭발생기에 따라 동작하는 것을 특징으로 하는 속도검출시스템.
  3. 제 1 항에 있어서,
    상기 클럭펄스카운터의 동작을 위한 클럭발생기를 더 포함하는 것을 특징으로 하는 속도검출시스템.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 엔코더로부터 발생되는 엔코더펄스는 에지감지회로를 통해 상승에지(rising edge)를 검파하여 계수하는 것을 특징으로 하는 속도검출시스템.
  5. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 연산부는 다음의 수학식에 의해서 속도(V)를 계산하는 것을 특징으로 하는 속도검출시스템.
    V=k*m/(Tc+Tk-1-Tk)
    여기서, Tc는 인터럽트 발생주기, Tk-1은 k-1번째 인터럽트 발생시점 이전에 상기 엔코더로부터 발생된 마지막 펄스입력시점에서부터 k번째 인터럽트 발생시점까지의 시간, Tk는 k번째 인터럽트 발생시점 이전에 상기 엔코더로부터 발생된 마지막 펄스입력시점에서부터 k+1번째 인터럽트 발생시점까지의 시간, m은 상기 인터럽트 발생주기동안 상기 엔코더로부터 발생된 펄스의 수, k는 비례상수이다.
  6. 엔코더를 구비한 속도검출시스템에 의한 속도검출방법에 있어서,
    상기 엔코더로부터 발생되는 엔코더펄스의 수를 계수하는 단계;
    소정 주기로 속도검출인터럽트를 발생시키는 단계;
    상기 속도검출인터럽트 발생시점에서의 상기 엔코더펄스계수값을 저장하는 단계;
    소정 클럭펄스를 계수하는 단계;
    상기 엔코더로부터 엔코더펄스발생신호가 수신되면 그 시점의 상기 클럭계수값을 저장하는 단계;
    상기 엔코더펄스발생신호가 수신되면 저장된 상기 클럭계수값을 수신받아 저장하는 단계;
    상기 속도검출인터럽트가 발생되었을 때, 상기 인터럽트 발생주기, 상기 엔코더카운터버퍼에 저장된 엔코더펄스계수값 및 상기 제 1버퍼에 저장된 값에 기초하여 속도를 연산하는 상기 인터럽트를 실행하며, 상기 속도검출인터럽트의 발생시점에서부터 상기 속도검출인터럽트의 실행시점까지의 이행시간내에 상기 엔코더로부터 새로운 엔코더펄스가 발생되는 경우에는 상기 제 1버퍼에 저장된 클럭계수값 대신에 상기 제 2버퍼에 저장된 클럭계수값을 사용하여 속도를 연산하는 단계를 포함하는 것을 특징으로 하는 속도검출방법.
  7. 제 6 항에 있어서,
    상기 클럭펄스를 계수하는 단계는 연산부클럭에 따라 계수하는 것을 특징으로 하는 속도검출방법.
  8. 제 6 항에 있어서,
    상기 클럭펄스를 계수하는 단계는 소정 외부 클럭에 따라 계수하는 것을 특징으로 하는 속도검출방법.
  9. 제 6 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 엔코더로부터 발생되는 엔코더펄스를 계수하는 단계는 소정 에지감지회로를 통해 상승에지(rising edge)를 검파하여 계수하는 것을 특징으로 하는 속도검출방법.
  10. 제 6 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 속도(V)를 연산하는 단계는 다음의 수학식에 의하는 것을 특징으로 하는 속도검출방법.
    V=k*m/(Tc+Tk-1-Tk)
    여기서, Tc는 인터럽트 발생주기, Tk-1은 k-1번째 인터럽트 발생시점 이전에 상기 엔코더로부터 발생된 마지막 펄스입력시점에서부터 k번째 인터럽트 발생시점까지의 시간, Tk는 k번째 인터럽트 발생시점 이전에 상기 엔코더로부터 발생된 마지막 펄스입력시점에서부터 k+1번째 인터럽트 발생시점까지의 시간, m은 상기 인터럽트 발생주기동안 상기 엔코더로부터 발생된 펄스의 수, k는 비례상수이다.
KR1019990006538A 1999-02-26 1999-02-26 속도검출 시스템 및 그 방법 KR100286043B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990006538A KR100286043B1 (ko) 1999-02-26 1999-02-26 속도검출 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990006538A KR100286043B1 (ko) 1999-02-26 1999-02-26 속도검출 시스템 및 그 방법

Publications (2)

Publication Number Publication Date
KR20000056840A KR20000056840A (ko) 2000-09-15
KR100286043B1 true KR100286043B1 (ko) 2001-03-15

Family

ID=19575190

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990006538A KR100286043B1 (ko) 1999-02-26 1999-02-26 속도검출 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR100286043B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114527832B (zh) * 2022-01-02 2024-04-02 深圳市禾望电气股份有限公司 脉冲信号边沿测量方法及装置、存储介质及微控制单元

Also Published As

Publication number Publication date
KR20000056840A (ko) 2000-09-15

Similar Documents

Publication Publication Date Title
US5051688A (en) Crossed coil meter driving device having a plurality of input parameters
KR20050053863A (ko) 전자나침반의 자동 보정 방법
JPH0291513A (ja) ジャイロの零点補正方法及びその装置
EP2177917B1 (en) Velocity detection method and motor control device using the method
JP3173174B2 (ja) 速度検出装置
JPS5913957A (ja) 速度検出回路
KR100286043B1 (ko) 속도검출 시스템 및 그 방법
JPH04344466A (ja) エレベータの速度検出装置
JPH07229910A (ja) パルスカウンタ回路
EP0401757A2 (en) Method of detecting the number of revolutions
JP3339214B2 (ja) サーボモータの制御装置
US6310458B1 (en) Blended velocity estimation
JPH04346069A (ja) 速度信号生成回路
KR100314445B1 (ko) 가변참조클럭 측정법을 이용한 차륜속도 측정방법 및 장치
JPH03289567A (ja) 回転速度検出装置
JP2002311040A (ja) 速度検出装置
KR100233990B1 (ko) 전기 자동차 시스템 제어기를 위한 차륜 회전 속도측정방법
JP3248209B2 (ja) 位置検出方法
JP2523207Y2 (ja) 回転数検出装置
KR19990001541A (ko) 속도검출방법 및 장치
JP3310716B2 (ja) エンコ―ダの移動速度検出装置
JP2744880B2 (ja) パルス幅計測装置、および、回転速計測装置
JPH0351764A (ja) 速度・加速度検出装置
JPH0719849A (ja) 位置読み取り装置及び位置読み取り方法
CN117191076A (zh) 运动传感器校正方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20090102

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee