태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

티스토리 툴바




죽은 아트메가를 살려라

아트메가 인공호흡법

준비물
죽은 avr(ATMega128 등)
 4(8)Mhz짜리 오실레이터

방법
아트메가와 오실레이터에 전원, GND 등을 연결해준다. (당연한거겠지만..둘은 같은 레퍼런스를 사용합니다)
오실레이터 출력핀을 XTAL1 핀(ATMega128은 24번핀)에 살짝 대준다.

이제 살아났을 겁니다. 그렇다면
AVR Studio 등을 이용해서 퓨즈비트를 설정해줍니다. 퓨즈비트 설정을 어떻게 하는 지 잘 모르겠으면 살아있는 AVR 칩을 연결해서 퓨즈비트가 어떻게 설정되어있나 봐도 되고, 인터넷에 찾아봐도 나올겁니다.

이렇게 했으면 전원을 끄고 -> 오실레이터를 제거하고 -> AVR 전원을 넣어봅니다..

안살아났으면 될 때 까지 다시 반복해봅니다.... 여러번 해도 안되면..버리세요-_-...



저작자 표시 비영리 변경 금지




usb-serial converter의 모델명을 모를 때는

내컴퓨터 > 속성 > 장치관리자 > 알 수 없는 장치 [오른쪽 클릭] > 등록정보 > 자세히 탭

가보면 아이디를 알 수 있다.




if you don't know the model name of your converter, you can easily check by following below

My Computer(right click) > Hardware tab> Manager(short cut "d") > unknown hardware(right click) > 
properties > details tab > you'll see the model name

most of all usb-serial converter use this driver.

PL2303_Prolific_DriverInstaller_v110
저작자 표시 비영리 변경 금지



1. 조종스틱

조종스틱은 가변저항에 위와같이 스틱(발사나무)를 연결하고,
가변저항 양단에 5V를 인가해주면,
가운데 핀에 걸리는 전압이 가변저항 회전에 따라 바뀌게 된다.
이 때 걸리는 전압을 ATMega128의 ADC 입력으로 연결하고 ADC 입력을 받으면,
스틱이 얼마나 움직였는지를 쉽게 읽어올 수 있다.

이러한 방식으로 하나의 스틱은 차량 운전을(전후, 좌우 ADC 2개 사용)
또 하나는 자동차에 달린 무기를 컨트롤(역시 상하 좌우 ADC 2개) 하였다.


2. 외관


외관은 여자친구가 천사점토를 이용해서 만들어 주셨다^__^



Spec.
processor : ATMega 128
  used func. : ADC, PWM, external interrupt
Wheel/Steering : 2 DC Motors
Arm : 2 Servo Motors
발사나무
Switch : Siren

저작자 표시 비영리 변경 금지
패리티란ㅐ리
컴퓨터에서, 패리티는 데이터가 저장장치 내의 한 장소에서 다른 장소로 이동되거나, 컴퓨터들간에 전송될 때, 데이터가 유실 또는 손상되었는지 여부를 점검하는 기술과 관련된 용어이다.

패리티란 사전적 의미는 아래와 같다

명사(pl. -ies)

1.[U] ~ (with sb/sth) | ~ (between A and B) (격식) (특히 보수・지위의) 동등함

Prison officers are demanding pay parity with the police force.play

교도관들이 경찰관들과 동등한 보수를 요구하고 있다.

2.[U , C] (금융) (국가들 간 통화 단위상의) 동등성, 패리티

to achieve parity with the dollarplay

달러와의 동등성을 달성하다


출처: 네이버 사전


그렇다면 우리가 알고싶어하는 패리티비트란?

패리티 비트(Parity bit)는 정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가된 비트이다. 전송하고자 하는 데이터의 각 문자에 1 비트를 더하여 전송하는 방법으로 2가지 종류의 패리티 비트(홀수, 짝수)가 있다. 패리티 비트는 오류 검출 부호에서 가장 간단한 형태로 쓰인다.(출처: 위키피디아)


우리가 보내려는 정보가 제대로 가고 있는지를 알게 해주는게 패리티 비트이다.... 라고는 하지만..
잘 이해가 안될 수도 있으니, 좀 더 쉽게 설명하기위해 한 가지 개념을 더 짚고 넘어가자

홀수 패리티 : 한 프레임(신호전송 구조)에 들어있는 1의 갯수를 홀수개로 맞춰준다
짝수 패리티 : 한 프레임에 들어있는 1의 갯수를 짝수개로 맞추어 준다.

자..홀수, 짝수 패리티에 대해서 알게되었으니, 조금 더 머리가 복잡해졌을 수도 있겠다.
하지만 이제 거의 다 왔다!!

만약 내가 4bit로 이루어진 데이터 [0000]을 전송하려고 한다고 치자, 이 때 내가 보단 데이터 [0000]을 받은 수신부에서 [0000]을 받았다고 하더라도 수신부에서는 송신부에서 실제로 [0000]이라는 데이터를 보냈는지 아니면 중간에 오류가 생겨서 왜곡된 정보인지를 체크할 수가 없다.



그래서 생긴 개념이 패리티 비트!!!

4bit의 데이터를 보낼 때 체크를 하기위한 bit를 하나 더 추가해서 보낸다. 즉
[0000:0]  이렇게 5bit의 데이터를 보내는 것이다.

이 때 마지막 체크용 비트를 어떻게 보내느냐?

이 때 짝수 패리티라면, 1의 갯수가 짝수가 되도록, 
홀수 패리티라면, 1의 갯수가 홀수가 되도록 체크용 비트를 설정해준다.


그렇다면 [0000]을 보낼 때 패리티 비트는?

홀수 패리티에서 0000 이라는 신호가 가면 0000:1 을 보내야 하지만
짝수 패리티에서 0000 이라는 신호가 가면 0000:0 을 보내면 된다.



여기서 나타나는 짝수패리티와 홀수패리티의 차이점!!

짝수패리티에서 0000 이라는 신호를 전송할 때는 패리티비트역시 0으로 보낸다
즉, 1이라는 신호가 갈 필요가 없어진다는 것

홀수 패리티는 전체 신호에 1이라는 신호가 없을 수가 없다!!
하지만 짝수 패리티 방식에서는 전체 신호가 0으로만 이루어질 수도 있다는 것!!

이게 짝수패리티가 홀수패리티에 비해 갖는 장점이다!
저작자 표시 비영리 변경 금지
L298을이용한 
DC모터 드라이버 회로도


L298 Datasheet


L298을 이용한 DC모터 드라이버: DC모터 두 개를 제어하는 회로도



L298을 이용한 DC모터 드라이버: DC모터 한 개를 제어하는 회로도
PIC18f452는 프로세서임, ATMega128을 사용하는 경우 그에 맞는 핀에 연결.

저작자 표시 비영리 변경 금지




EICRA(External interrupt control resister A)

7

6

5

4

3

2

1

0

ISC31

ISC30

ISC21

ISC20

ISC11

ISC10

ISC01

ISC00

EICRA(External interrupt control resister B)

7

6

5

4

3

2

1

0

ISC71

ISC70

ISC61

ISC60

ISC51

ISC50

ISC41

ISC40



ISCn1

ISCn0

 Setting

0

0

Occur event low level of INTn       (INTn : Inuterrupt NO. n)

0

1

Reserved

1

0

Occur event on falling edge

1

1

Occur event on rising edge

 

EIMSK(External Interrupt mask resister)

7

6

5

4

3

2

1

0

INT7

INT6

INT5

INT4

INT3

INT2

INT1

INT0

 

Seting >>   1 = enable external interrupt , 0= disable external interrupt


EIFR(External Interrupt Flag Resister)

7

6

5

4

3

2

1

0

INTF7

INTF6

INTF5

INTF4

INTF3

INTF2

INTF1

INTF0

 

INTFn will be set to “1” by external interrupt. 



저작자 표시 비영리 변경 금지



오늘 AVR Studio4를 이용해서 임베디드대회에 나갈 차량에 사용할 프로그램을 만들고 있었다.
ADC 두 개채널로 값을 입력받고, PWM파형을 만들고..문제없이 진행되다가 갑자기 심각한 문제가 생겼다.
외부인터럽트를 입력하면 인터럽트가 실행된 직후에 변수값들이 다시 원래대로 돌아오는 것이었다.

레지스터 설정에 문제가 있다고 생각하고, 세 시간정도 삽질을 한 것 같다.
답답한 마음에 AVR에 관련된 책을 읽기시작했다. 외부인터럽트에 대한 이론설명이었다.
(사실 외부인터럽트는 레지스터 설정도 쉽고, 자주 사용하던 기능이라 이론설명부분을 읽지 않고있었다)

그 때...눈에 들어온 문구.

WIN AVR GCC는 프로그램 오류를 막기위해 사용자가 지정하지 않은 인터럽트가 발생할 경우 프로그램을 reset한다.

젠장-_-...그리고 이러한 기능때문에 생기는 문제를 처리하기위해 설정되지 않은 인터럽트가 발생 시 이를 무시하도록 하는 명령어가 있었던 것이다.



EMPTY_INTERRUPT(BADISR_vect);     // for empty interrupt (important)

이 한줄... 이 한 줄만 추가시키면 해결될 일을 세 시간이나 삽질을 하고있었다 -_-;;;


이러한 기능은 코드비젼에서는 없는 기능이기때문에 이런 황당한 일을 겪은 것 같다.

저작자 표시 비영리 변경 금지

저작자 표시 비영리 변경 금지
AVR Studio 4,WinAVR,PonyProg2000
다운로드 및 설치



이번 하드웨어 세미나에서 ATMega128을 위해 사용할 프로그램은 코드비젼이 아닌 AVR Studio4 입니다.
AVR Studio4와 WinAVR 그리고 PonyProg2000을 사용하게됩니다.

아래 링크에서 다운받으면 됩니다.

WinAVR

http://sourceforge.net/projects/winavr/files/WinAVR/20090313/WinAVR-20090313-install.exe/download

AVR Studio 4 (개인정보입력없음)

http://www.atmel.com/forms/download_splash.asp?referer=http://blog.naver.com/PostList.nhn?blogId=onetoforever&fn=aStudio4b589%2Eexe

PonyProg2000

http://sourceforge.net/projects/ponyprog/files/PonyProg%20Windows%20setup/2.07c/PonyProg_V207c.zip/download
저작자 표시 비영리 변경 금지

하드웨어 세미나 숙제 #1

자기전엔 전기전자/Hardware 2009/09/21 11:58 Posted by 나는 준혁 superZUN
다음에 대해 조사하시오.

LPF(Low pass filter)

 

위와같이 생긴 회로를 LPF라고 부른다. LPF는 아래와 같은 특성을 가지는데,  
특정 주파수(cut off frequency) 이상의 신호가 인가되면 신호의 증폭률이 급격히 떨어져
그 주파수의 성분을 무시할 수 있도록 해 주는 회로이다.

cut off frequency가 10이라고 했을 때 주파수가 sinπx + sin(20πx) 의 신호가 인가됐을 경우, 
sin(20πx)의 성분은 사라져 sinπx 의 성분만 남게되는 것이다.



<우리가 사용하게되는 경우>
각종 센서를 통해  값을 입력받게되는 경우에 사용하게 되는데, 거리센서를 예를 들어보기로 한다.
10~20cm의 거리를 감지하는 센서가 있고, 거리가 10cm일 때 5V가 출력되고, 20cm일 때 0V가 출력되는 이상적인 선형센서라고 했을 때, 출력되는 센서의 값은 
(D - 10)*0.5   10<D<20, D: distance

센서와 물체와의 거리가 일정하면 일정한 값이 나와야 한다.
하지만 실제로 센서의 출력을 오실로스코프로 찍어보면 계산값의 근처에서 흔들리고 있다. 노이즈의 영향을 받기때문인데,
이러한 노이즈는 항상 고주파수의 형태로 존재한다. 그리고 우리가 원하는 센서의 출력값은 DC성분으로 주파수가 0이라고 볼 수 있기때문에, LPF를 사용하면 우리가 원하는 DC성분만을 출력으로 얻을 수 있다.
<LPF의 주파수-증폭률 그래프>

하지만 실제로 LPF는 위 그림과 같이 cut off frequency 이상의 성분을 완벽하게 없애지는 못하며,
완벽에 가까운 필터를 설계하기위해서는 조금 더 복잡한 회로의 설계가 요구된다.

HPF(High pass filter)
 

LPF와 반대되는 개념으로 DC성분을 없애고, AC 성분만을 가져오는 회로이다.

라인트레이서를 제작할 때 수광/발광센서를 5~10쌍을 사용하게 되는데, 이 센서를 계속 켜놓게 된다면 전류부족으로 인한 문제점이 생길 수 있다.
(LM2575 regulator에도 1A~3A까지 공급하는 소자가 있지만 우리는 1A를 공급하는 소자 사용)
그렇기 때문에 발광부를 순간적으로 켜고 이에 수광소자가 반응할 수 있는 시간이 지난 후 발광부를 끈다.
이런 식으로 1쌍씩 켰다 껐다를 반복하게되면 수광/발광 센서를 10조 사용한다고 해도 전류는 1조만큼의 전류를 사용하게 되어 전류를 좀 더 효율적으로 사용할 수 있다.



이 경우 우리는 수광소자의 on/off여부만을 확인하면 되기때문에 고주파노이즈에 대해 크게 신경쓰지 않아도 된다.
하지만 이 때 출력파형을 오실로스코프로 찍어보면 일정한 주기의 구형파(pulse wave)형태를 띠게 되는데,
이 신호를 받을 때 HPF를 사용하면 정확한 on/off 을 판별하기위한 신호를 얻을 수 있다.



바이패스와 커플링에 대한 이론은 세미나 참석자들이 2학년생이 대부분임을 감안해 간단하게 설명함.

바이패스 캐패시터(By pass Capacitor)
LPH에 달린 capacitor가 바이패스 캐패시터이며, AC 성분을 ground로 연결시켜 소거해주는 역할을 한다.


커플링 캐패시터(coupling Capacitor)
DC성분을 차단한 상태로, AC성분을 전달시키기위해 사용하는 capacitor, 바이패스 캐패시터의 반대개념이라고 이해하면 쉽다.



디지털회로에서 스위치의 정환한 값을 입력하기위해 사용하는 회로가 pull up resistor, pull down resistor이다.



풀업저항(Pull Up Resistor)


위와 같은 회로는 굉장히 잘못된 스위칭회로라고 할 수 있다. 스위치가 오픈되는 순간 input pin에는 알 수 없는 값(float)이 인가되게 되며, 이는 oscillation(발진), 높은전력소비 혹은 물리적인 손상까지 일으키는 상황을 초래하게될 수도 있다.


위와 같이 pull up resistor를 단 스위치회로의 경우, 스위치를 열면 input pin에 인가되는 전압은 Vcc에 근접한 값이 된다.
입력 임피던스가 굉장히 높기때문에 전류가 적게 흐르고, 이는 저항에서의 전압강하가 거의 일어나지 않게됨을 의미한다.

반대로 스위치를 닫으면 전류는 저항과 스위치를 통과해 Ground로 흐르게 된다. 이 때는 input pin에 인가되는 전압은 Ground에 가까운 값이 된다.


풀다운저항(Pull down Resistor)

Pull up Resistor와 비슷한 용도로 사용되며, 스위치를 열었을 때 Ground에 가까운 값을 입력시키도록 해 주는 회로이다.

reference: wikipedia(http://wikipedia.org)
mad science notebook(www.madsciencenotebook.com)
저작자 표시 비영리 변경 금지