ADC의 해상도가 높을수록 입력 신호의 전압 분해능은 정밀해 진다. 이 때 같은 해상도라도 ADC의 동작 전압 범위에 따라 최하위 1비트(1 LSB, Least Significant Bit)가 가지는 전압의 정밀도는 차이가 나게 된다. 예를 들어 ADC의 동작 전압 범위가 0V ~5V 이고, 8비트의 해상도를 가진다면, 1 LSB가 가지는 전압 해상도는 5V/(2^8) = 0.0195V가 된다. 즉, 이 ADC에서 1 LSB는 19.5mV를 의미한다. 따라서 AD 변환값이 123이 나왔다면, 123 x 0.195V = 2.402V의 계산 결과를 얻을 수 있다. 마찬가지로 ADC의 동작 전압이 3V 이었다면, 3V 일 때 1 LSB의 전압 해상도는 3V/2^8 = 0.0117V가 된다. 따라서 같은 AD 변환값 123일지라도 실제 전압은 123 x 0.0117 = 1.441V가 된다.


아래 표는 비트와 동작 전압별 1 LSB가 가지는 전압값을 정리한 것이다. 동작 전압 영역이 좁거나 ADC의 해상도가 올라가면 1 LSB가 표시하는 전압이 작아지는데 uV 단위(10^-6V)까지 내려가기도 한다. 물론 이런 해상도의 ADC를 사용하면 보다 정밀하게 인가 신호의 전압 레벨을 파악할 수 있겠지만, ADC 동작 전원에 포함되어 있는 잡음이 1 LSB가 표시하는 전압보다 높을 경우 이런 고해상도의 ADC를 사용하는 것이 별 의미가 없게 된다. 일반적인 전원선에서 발견되는 잡음은 수 십 ~ 수 백 uV 이다. 따라서 응용 분야에서 이러한 고정밀도를 요구한다면, ADC의 동작 전압에 노이즈가 포함되지 않도록 최대한 주의를 요한다.



 

8 bit 

10 bit 

12 bit 

14 bit 

16 bit 

20 bit 

 39.1 mV

9.77 mV 

2.44 mV 

610  uV

 153 uV

9.53 uV 

 

 19.5 mV

4.88 mV 

1.22mV 

 305 uV

76.3 uV 

4.77 uV 

 

 11.7 mV

2.93 mV 

 732 uV

183 uV 

45.8 uV 

2.86 uV 



출처 : http://withrobot.com/technicalreport30/

'project > Coaxial copter' 카테고리의 다른 글

분해능 / 샘플링 이란?  (0) 2016.04.12
거리 측정 센서 선정  (0) 2016.04.12
가변저항 원리  (0) 2016.04.11
모터, 프로펠러, 배터리 선정  (0) 2013.12.20
프로펠러와 모터, rpm/v(Kv) 관계  (0) 2013.12.19
Posted by 나무길 :

가변저항은 반고정저항, 포텐셔미터, 트리머 포텐셔미터, 볼륨, 배리어블 레지스터, VR등등 여러 가지 명칭으로 불리워진다.

저항치가 변하는 저항기라는 큰 뜻에서는 모두 같은 것을 의미한다.

우리가 흔히 많이 알고 있는 볼륨이라는 명칭은 옛날에 라디오나 전축에서 음량을 바꾸는 손잡이(VOLUME)에 사용되었던 부품에서 유래된 일본식 영어로 입니다.

영어로는 VARIABLE RESISTOR 또는 TRIMMER POTENTIOMETER라고 불리워집니다..

가변저항은 “분압기”라고 하여 조절슬라이더를 회전시키거나 이동시켜서 회로에 전압을 변화된 저항치에 따른 그 분압비를 바꿈으로써 다양한 전압을 얻도록 합니다.

저항이란 말그대로 전기의 흐름을 방해하는 부품입니다.

저항은 전기회로 안에서 전기의 흐름을 제한하여 회로 안에서의 전류(또는 전압)의 크기를 바꾸는데 전류 또는 전압의 크기를 바꾼다는 말은 저항을 통과한 전기의 흐름에서 전압 또는 전류의 크기가 바뀐다는 것을 의미합니다.

저항 자체가 제한하는 것은 전기의 흐름 즉, 전류이지만 그 결과로 저항을 통과하면 전압이 떨어지는 결과를 가져옴니다.

이때 저항과 전압과 전류의 관계는 가장 기본적인 전기 공식인 옴의 법칙 V=I x R로 표시할 수 있으며 저항의 크기 단위는 Ω으로 표시하고 오옴(ohm)으로 읽습니다.

실제 회로에서 사용되는 저항의 범위는 0Ω에서 수M(메가)Ω에 이르기 까지 다양합니다.

가변저항의 일반적인 구조는 아래와 같습니다.


                  < 가변저항기의 구조와 회전형 가변저항기의 구조도> 


가변저항기는 보통 3개의 핀을 사용하며 축을 회전시키거나, 손잡이를 앞뒤로 밀거나 당겨서 희망하는 저항값을 얻습니다. 1번핀과 3번핀사이는 고정저항이고 그위에 2번핀(조절슬라이더)의 위치가 이동하면서 저항값을 변화시킵니다.

 예를 들어 5Kohm 가변저항이라고 한다면 1번핀과 3번핀의 저항값을 측정해보면 5Kohm 고정저항치가 측정되고 1번핀과 2번핀사이의 저항치를 측정하여 2Kohm이라는 저항치가 나온다면 3번핀과 2번핀 사이의 저항치는 3Kohm이 될 것입니다.

 이때 이 회로에 5V의 전압이 흐른다면 옴의 법칙 V=I*R에 따라서 전류는 당연히 1mA일것이고 5V의 전압은 각각 2V와 3V로 분압됩니다. 이때 분압비는 2:3이 됩니다. 전압이 어떻게 바뀌어도 저항치가 바뀌지 않으면 그 비율은 바뀌지 않습니다.


<회전각에 따른 저항출력 변화값>

 가변 저항은 축의 회전 각도에 따른 저항값의 변화방법에 위 그래프와 같이 3종류로 구분 합니다. A형은 축을 오른 쪽으로 회전하는 경우 처음에는 저항값이 천천히 변화하고 후반은 급에 변화하는 타입 으로서 라디오 의 음량 조절(볼륨) 등에 사용 됩니다. 인간의 귀의 특징(작은 소리의 변화에는 민감하고 큰 소리의 변화는 무딘)에 적합 하기 때문 입니다. B형은 축의 회전과 저항값의 변화가 직선적으로 변화 하는 것 으로 회로중의 저항값 설정, 밸런스 회로등의 목적으로 사용 되며, C형은 A형과 반대로 회전의 초기는 저항값이 급격하게 변화하고 후반은 완만한 변화를 하는 타입으로서 일반적인 용도로는 사용되지 안습 니다. 시판되고 있는 가변 저항는 대부분이 A형 또는 B형 입니다.



출처:http://blog.naver.com/PostView.nhn?blogId=jinhongcokr&logNo=220036112456&redirect=Dlog&widgetTypeCall=true


'project > Coaxial copter' 카테고리의 다른 글

거리 측정 센서 선정  (0) 2016.04.12
ADC의 전압별 비트 분해능  (0) 2016.04.12
모터, 프로펠러, 배터리 선정  (0) 2013.12.20
프로펠러와 모터, rpm/v(Kv) 관계  (0) 2013.12.19
프로펠러 선정  (0) 2013.12.19
Posted by 나무길 :

개발환경 : CodeVisionAVR (Version : 2.05.0 Evaluation)


------------------------------------- mov_avg_recursion.h -----------------------------------


#ifndef __MOV_AVG_RECURSION__

#define __MOV_AVG_RECURSION__


#define MOV_FILTERSIZE  4

#define CHANNEL         4



void MovAvgRecursion(int input);




#endif //__MOV_AVG_RECURSION__


------------------------------------------------------------------------------------------


------------------------------------- mov_avg_recursion.c -----------------------------------


#include "my_header.h"


int average;


void MovAvgRecursion(int input)

{

    static int data[MOV_FILTERSIZE];

    unsigned char i;    

    int temp;

    

    

    temp = input - data[0];    

    

    if (temp < 0) temp += 3;

    average += temp >> 2;

    

    for (i = 0; i < MOV_FILTERSIZE - 1; i++)

        data[i] = data[i+1];

        

    data[i] = input;

}


------------------------------------------------------------------------------------------



위 코드중에 빨간색 친 부분을 보면 음수일 때 또다른 연산을 해준다. 그 이유는 '/' 와 '>>' 음수 부분에서 차이점이 있는데

'/' 연산은 음수에서 버림같은 느낌이고 '>>' 연산은 같은 나눗셈이지만 올림같은 느낌이다.


예를 들면 Data 를 4로 나누기(/) , 2 로 쉬프트(>>) 시킨다고 했을때 아래 표와 같은 결과가 나온다.



Data

 0

-1 

-2 

-3 

-4 

-5 

-6 

-7 

-8 

Device

 0

-1 

-1 

-1 

-1 

-2 

 Shift

 0

-1 

-1 

-1 

-1 

-2 

-2 

-2 

-2 


쉬프트 연산과 같이 올림 연산을 하게되면 오차가 누적이 되는데 이동평균 필터는 조그만 오차라도 누적이되기 시작하면 나중에 그 오차들이 없어지는 것이 아니라 유지된다. 그래서 위에 빨간색과 같은 음수부분에서 연산을 해줘야 한다.




* 쉬프트 연산으로 3배, 9배, 15배, 60배 하는 방법 (쉬프트 연산은 기본적으로 2에 승수배씩 연산을 할 수 있다.)


3배 : (a << 1) + a;

9배 : (a << 3) + a;

15배 : (a << 4) - a;

60배 : (a << 6) - (a << 2);



'project > 씨름로봇' 카테고리의 다른 글

2. 이동평균필터와 재귀식  (0) 2015.11.02
1. 평균필터와 재귀식  (0) 2015.11.02
ATmega128 전원부 캐패시터와 콘덴서 역할  (0) 2015.10.24
DC 모터 주파수 설정  (0) 2015.10.21
분해능과 분주비  (0) 2015.10.21
Posted by 나무길 :