AVR Mega8을 사용한 PID제어 소스

AVR Project 조회 수 124582 추천 수 76 2003.09.06 15:04:17


http://www.circuitcellar.com/library/print/1002/eady147/index.htm
LCD에 보이는 것은 실제 조리기의 온도와 음식3개의 온도이다.
압전 경보기가 꺼져 있으면, 조리기의 온도는 5° 간격으로 180° 에서 400°F이다.
음식 경보는 100° 에서 220°F로 설정할 수 있다..

원래의 목표는 폐회로 온도조정기에 간단한 8 비트 마이크로칩을 쓰려고 했다,
요리 오븐을 만드고 나서, 온도설정 손잡이를 가진 콘트롤러를 원했다.
온도 센서는 세라믹 요리오븐의 실온도를 감시한다.
조정기는 공기흐름을 조절하여 실제온도를 구속토록 제어한다.
온도제어에 실패하면 경보를 울린다.
RS-232 포트는 조리와 음식의 온도를 로컬PC에서 원격으로 기록한다.
사진은 나의 최종 온도 조정기를 보여 주고있다.

-온도 감시
온도측정은 온도센서로 부터 아날로그로 측정한다.
마이크로 컴퓨터의 ADC를 써서 실제온도를 구하는 측정원리로 부터
디지털 값으로 변환한다.
온도센서는 2가닥의 전선으로 연결하는 열전대를 사용하였다.
다른 금속으로 접합된 끝은 온도에 비례하며,
다른 끝에서 온도에 따른 전압을 측정한다.

온도와 전압에 대한 특성,
이 프로젝트는 K열전대를 사용한다.일반적으로 K열전대는 2300°F까지의 온도에 사용된다.
절연재는 500°F 이하의 저가격 테프론과 900°용의 유리섬유로 사용된다.
그림3은 표준적인 열전대들이다, 간단하고 저렴하며, 인증된 특성을 갖는다.


사진3 - 비드타입 열전대 특성은 오븐에 쓰는데는 너무 빠르며,
음식 온도에 사용한 프로브는 스텐리스이며, 얇은 센서는 오븐 온도용이다.

-열전대 속성
K타입 열전대의 출력전압은 1°F 마다 약20 µV 이다. (예, 0.00002 V)
이것은 마이크로 컴퓨터의 ADC에서 쓰기 위해 반드시 증폭되어야 한다.
가장 알맞지 않는 증폭기로  범용의 OP암프는,
표준적으로 입력 옵셋 전압을 1mV 에서 5mV까지 가진다.
이것은 온도 오차를 100도까지 가져온다.
정밀한 OP AMP를 사용한 최대 옵셋오차는 겨우 5uV 이다. 1/4도 이내의 오차이다
증폭기의 이득은 111 배로 설정한다.

A/D REF에 2.5V 기준전압으로,
온도를 32° 에서 1000°F 까지 1°F 간격으로 측정할 수 있다.
물론 열전대 신호의 증폭에,
다른 잡음이 혼입되지 않도록 회로를 만들때에 주의한다,
32 ~ 256번 읽어서 평균하는 방법으로,
단일 온도 측정보다 노이즈를 효과를 저감할 수 있다.

두번째 열전대의 문제는 비직선이다.
전압-온도 변환을 간단히 할 수 없다.
일찌기 제어소프트에는 K타입의 전압-온도 테이블이 포함되었다.
[1] 0° 에서1000°F 의 온도는 비교적 직선구간이다.
주어진 온도범위 안에서 직선보정을 사용할 수 있다.

마지막으로 열전대의 문제는 상대출력이다.
열전대 끝의 전압은 절대출력이 아니다,
회로의 끝에 전선으로 접속된 전압측정 회로에서 전압으로 측정된다.  
프로브와 회로의 온도가 같을때 측정된 전압은 0 이다.
만일 프로브의 끝이 뜨거우면 +의 전압이 측정된다.
만일 프로브의 끝이 차가우면 -의 전압이 측정된다.

프로브 끝의 실지 온도를 알 필요가 있다.
32°F의 얼음통안에 회로의 끝을 유지하면 완전하다.
열전대의 접속과 측정에는 냉접점이라는 회로를 가져야 한다.
프로세스에서 접접온도는 냉접점 보상으로 참조된 실지 프로브의 온도로 계산된다.
IC온도센서에서 냉접점의 실지온도를 직접 측정할 수 있다.
냉접점 센서와 열전대가 만나는 물리적인 구리선의 접속점은 반드시 같은 온도로 한다.


Figure 1a—With no thermocouple connected, a test voltage applied to the op-amp produces a maximum output voltage. b—The low impedance of a connected thermocouple drastically reduces the test voltage, producing a much lower output voltage.

-온도 측정
You must complete several steps to make a single temperature measurement. First, select the channel to be read by setting the analog multiplexer to one of the four thermocouples. Then, see if there is actually a thermocouple connected by turning on the missing thermocouple test voltage and taking an ADC measurement. Remember that a single measurement is actually the average of 32 to 256 readings.

If the result is the maximum A/D value, then there is no thermocouple connected to that channel, so report a temperature value of zero. Otherwise, turn off the missing thermocouple test voltage, and measure the actual thermocouple output.

Using the A/D reading, the amplifier gain (111), and the A/D voltage reference value (2.5 V), compute the actual thermocouple voltage. A 10-bit A/D reading will be in the 0- to 1023-V range, so the actual voltage is equal to the following:

(AD reading x 2.5 ) / (1024 x 111)

Next, take and average multiple A/D readings of the cold junction temperature sensor, and convert that voltage to the cold junction temperature. Using the cold junction temperature and the type-K voltage/temperature table, compute the type-K voltage that’s equivalent to the cold junction temperature. Add the thermocouple voltage to the cold junction voltage. Using the type-K table, convert the summed thermocouple and cold junction voltages to the actual thermocouple temperature.

-측정 정도
There are several sources for error in this process, including the inherent inaccuracies of the thermocouple and cold-junction temperature sensor, how isothermal the cold junction and sensor really are, the accuracies of the A/D converter and voltage reference, and gain errors in the amplifier. A good reality check is to test the temperature of boiling water, because 212°F is actually within the range of the typical barbecue-cooking temperatures. The circuit and setup described here yielded a boiling water temperature of 213°F, which is good enough for barbecue purposes.

-설계 제한
The circuit has a design limitation. When the thermocouple probe is at a lower temperature than the cold junction, the voltage produced is negative. However, the circuit, as configured, is single-ended, so it treats a negative voltage as if it were 0 V.

Consequently, if the probe is colder than the cold junction, the computed temperature will be the cold junction temperature, not the actual probe temperature. There are several ways to correct this, but none were used, because I was only concerned with high temperatures, not low ones.

-전자 제어기
Figure 2 shows the schematic for the controller. The microprocessor is an ATmega8, which has 8 KB of flash memory for program storage and 1 KB of RAM. The on-board oscillator is used at its default setting of 1 MHz, so a crystal or clock circuit isn’t needed. Four of its six A/D channels are used for the thermocouple amplifier output, LM34 temperature sensor, and potentiometers needed for the cooker and food temperature settings. Digital lines are used for the LCD, which has an HD44780-type interface, fan, analog multiplexer channel select, piezoelectric alarm, missing thermocouple detection circuit, and RS-232 connections.


Figure 2—The goal is to build a system that is comparable to or better than a kitchen oven. Atmel’s ATmega8 microcontroller is at the heart of the controller.

The ATmega8 can be in-circuit programmed. Power is supplied through an unregulated 12-V wall wart or 12-V sealed lead-acid battery. Regulators are needed to convert this to 5 V for the electronics, a 2.5-V 0.2% precision reference voltage, and 12 V for the fan. The transistor that controls the fan must be rated according to the fan’s current requirements. The fan that I used draws 100 mA, so a 2N7000 MOSFET that can handle 200 mA is adequate. With a backlit LCD and the fan turned on, the current draw is only 120 mA, so a 7-Ah battery can power the controller for several days.

The RS-232 port is used primarily for data logging. Because the barbecue is usually outdoors and the computer indoors, a MAX232 and low data rate (i.e., 2400 bps) are used to allow for the greatest possible distance between the controller and data logger. Using six-conductor telephone cable with RJ11 to RS-232 modular connectors, distances of 100' are easily achieved. The alarm signal is also brought out on the RS-232 cable, so the outdoor on-board alarm can be muted at night, and a smaller piezo alarm that’s connected to the end of the cable can be placed indoors where someone is likely to hear it.

사진 6 - shows the electronics, which are mounted on the lid of a standard doublewide outdoor "wet location" electrical box. The box itself is mounted to the lower draft door of the cooker. The cover supplied with the box allows the controller to stay outdoors and mounted on the cooker at all times. Alternate packaging schemes are possible, such as mounting the fan on the draft door, with the electronics further away in a separate box. Or you could choose to mount nothing on the cooker itself and pipe the air to the cooker through a metal pipe or flex tubing.

-제어 소프트
The software was written with the ImageCraft ICCAVR C compiler.
Approximately half of the 8 KB of flash memory has been used so far.
The ATmega8’s flash memory is in-circuit programmed through an Atmel standard ISP header.
The ImageCraft IDE provides a programmer. In addition,
stand-alone programming software is widely available on the Internet.
ImageCraft also offers a free 30-day unrestricted trial period for its IDE and compiler.

-개폐(ON/OFF) 제어
If the cooker temperature is below the desired level, the simplest control algorithm is to turn on the fan fully. Turn it off if the cooker temperature is above the desired value. The resulting cooker temperature will tend to oscillate around the desired value, because the thermal inertia in the cooker will cause the temperature to continue to rising after the fan is turned off and falling after the its turned on. As long as the average temperature is what you want and the swings aren’t too big, this is perfectly acceptable. After all, this is how most kitchen ovens work, and the goal is to be as good as one of those.

-비례(PID) 제어
A more sophisticated approach is to set the fan to the exact speed needed to reach a given temperature, and then incrementally adjust the speed to maintain that temperature as conditions change. The PID algorithm uses proportional, integral, and derivative calculations to do just that.

A measure of current conditions, the proportional part of the calculation is based on the size of the error (i.e., the difference between the desired temperature and the actual temperature). The integral portion of the calculation is based on the sum of all the previous error values; it’s a measure of any longer-term error trend. The derivative part of the calculation is based on the change in the error, not the temperature, and it measures how quickly the error is changing.

Each of the three components can be given a different weighting factor. If the weighting factors are chosen correctly—through a process called "tuning"—the PID algorithm will adjust the fan speed to bring the actual temperature to the desired temperature with no overshoot, and it will maintain that temperature with little or no oscillation even if conditions change. Parallax’s Industrial Control Student Guide Version 1.1 provides a straightforward introduction to the PID algorithm.

Although the hardware was designed with a variable fan speed so that PID could be used, I ran the initial tests with an On/Off algorithm. The results are shown in Figure 3. The goal was to build a device that is as good as an indoor oven. But, even with a simple On/Off control, the ceramic cooker is considerably better. So, the final controller uses On/Off control, and the more complex PID algorithm isn’t needed.


실제 요리의 기록을 보인다, 고기요리에 요구는 참고로 최종온도 192°F로 17시간이 걸린다.
요리기의 온도는 225°F로 세트하였다. 3° 이내로 98% 이상이다.


그림 4—안정된 오븐의 온도 기록과 늦게 올라오는 고기의 온도(적색)
초기에 온도가 내려간 골짜기는 요리기에 음식을 넣으려고 문을 열었을 때이다.

-소스코드와 설명
이 자료 내려받기
http://www.circuitcellar.com/library/print/0503/moyer154/2305014-Moyer.pdf
수정된 회로도
http://www.circuitcellar.com/library/print/0503/moyer154/Figure2.pdf

캘리포니아 버클리 종합대학의 컴퓨터과학 학부의 John Moyer earned
는 마이크로 콘트롤러 기반의 계측제어 제품작업의 경험이 있다.
그는 현재 맥과 윈도우즈 그래픽 소프트웨어의 개발을 하고 있다.  
그와 만날 수 있다.  jmoyer@pacbell.net.

-참조문헌
[1] Omega Engineering, Inc., "Revised Thermocouple Reference Tables,"
http://www.omega.com/temperature.

이소스는 AVR시리즈 mega8을 사용한 온도 조정기이다.
4개의 K 열전대(thermocouple)를 사용하여, 오븐의 온도를 감시하고,
2개의 가변저항(potentiometer)을 사용하여,
사용자가 오븐의 온도설정과 요리의 완료설정을 한다.

열전대로 측정하여 44780타입의 16자2줄의 LCD에 표시된,
현재의 수치에 따라서 목표설정(setpoint)을 합니다.
만일 온브의 온도가 목표설정보다 낮으면,
작은 환풍기가 켜집니다, 더 많은 공기는 온도를 증가시키고,
만일 오븐의 온도가 높으면, 환풍기는 꺼진다.
좀더 세련된 제어방식(algorithms)도 가능합니만,
개폐제어(on/off cotrol)도 매우 잘 작동한다.

음식의 온도가 높거나 낮아서 음식온도 설정을 벗어나면, 알람을 울린다.
읽은것은 2400bps RS232C로 1초에 한번씩 출력합니다.
열전대는 접속단자에 고정된 LM35에 의해 공급되는 냉접점보상이 필요하다.  
증폭도 111의 외부증폭기에서 4ch을 읽는 아날로그 멀티플렉서로 연결된다.
이것 역시 전압소스로 멀티플렉서로 출력이 인가된다.

메가8에 내장된 10비트의 ADC는 기판의 가변저항과 LM25
그리고 열전대 증폭기의 출력을 읽는데 사용되었다.
외부 기준전압은 정도가 향상된 것을 사용하였다.
내장 타이머는 제어 알고리즘을 구동하는 1초간격을 측정하는데 사용하였다.
워치독 타이머는 발혀지지 않는 문제에서 회복하디 위해 사용하였다.

환풍기는 메가8의 8비트 펄스폭 변조기출력에 연결되었다.
그러나 가변속도는 사용하지 않았다.
MOS FET는 12V 환풍기의 제어에 사용하였다.
압전버저는 경보를 위해서 사용하였다.
I/O 포트로 직접 구동되도록 사용하였다.

컴파일러는  ImageCraft C를 사용하였다.
AVR로 44780타입의 액정(LCD)을 구동한다.
액정은 4비트 모드로 4개의 데이터 라인과 2개의 제어선이 요구된다.
busy 점검은 지연루틴으로 대신 사용하였다.
액정의 RW선은 반드시 접지시킨다.
IO와 데이터선들은 시차제어가 필요없다.
하나의 선은 임의의 포트와 핀을 제어한다.

포트와 핀의 정의는 아래와 같이 반드시 초기화 한다.
#ifndef BIT
#define BIT(x)        (1 << (x))
#endif

#ifndef STR
#define STR(X)        #X
#endif

-하드웨어 설정
액정은 4비트 모드이며, 3개의 제어선이 있으나.
읽기는 오직 busy만을 위한 것이므로,
사용된 다음과 같이 하드웨어 접속에 맞추기 바랍니다.
레지스터 값은 SBI와 CBI 명령이 사용되는 메모리주소로 사용합니다.

//액정 데이터 정의
#define        DB4_REG        STR(0x12)        // PORTD
#define        DB4_DIR        STR(0X11)        // DDRD
#define        DB4_BIT          STR(4)        // PIN 4

#define        DB5_REG         STR(0x12)        // PORTD
#define        DB5_DIR        STR(0X11)        // DDRD
#define        DB5_BIT          STR(5)        // PIN 5

#define        DB6_REG        STR(0x12)        // PORTD
#define        DB6_DIR        STR(0X11)        // DDRD
#define        DB6_BIT          STR(6)        // PIN 6

#define        DB7_REG         STR(0x12)        // PORTD
#define        DB7_DIR        STR(0X11)        // DDRD
#define        DB7_BIT          STR(7)        // PIN 7

//액정 RS 정의
#define        RS_REG          STR(0x12)        // PORTD
#define        RS_DIR        STR(0X11)        // DDRD
#define        RS_BIT        STR(2)        // PIN 2

// 액정 E 정의
#define        EN_REG        STR(0x12)        // PORTD
#define        EN_DIR        STR(0x11)        // DDRD
#define        EN_BIT        STR(3)        // PIN 3

//내부 클럭 1MHz 정의
#define CPU_FREQ        1000000L        // 1 MHz internal oscillator

//액정의 초기화 정의
#define LCD_8BitMode                0x3   // 8 비트 모드정의, 4 비트용
#define LCD_4BitMode                0x2   // 4 비트 모드 초기화, 4비트용

#define LCD_FunctionSet        0x28 // 4 비트 모드, 2줄모드, 5x8 문자
#define LCD_EntryMode        0x06 // 문자위치 자동증가, 시프트 안함

#define LCD_On                0x0C // 표시, 커서 ON, 깜빡임 OFF  
#define LCD_Off                0x08 // 표시,  커서 OFF, 깜빡임 OFF
#define LCD_CursorOn        0x0D // 표시, 커서 ON, 커서 깜빡임 ON
#define LCD_To00                0x02 // 커서 홈(행0,줄0)
#define LCD_Erase                0x01 // 문자 메모리 소거, 커서 홈

// 액정은 문자모드 혹은 다음의 코맨드로 제어한다.
// 초기화를 한 다음, 4비트로 보낸다
#define CMND                0     //다음에 보내는 코드는 코맨드 코드        
#define INIT                1     //다음에 보내는 코드는 초기화 코드        
#define CHAR                2     //다음에 보내는 코드는 문자 데이터

- UART의 설명
이 소스는 아트멜사의 응용노트 AVR306을 인용한
UART의 폴링 모드이며,
ICCAVR의 putchar() 와 getchar() 라이브러리와 비슷하다.

-ADC의 설명
ADC 채널 0에서 7로 표시된 ADC로 부터 수치를 구한다
폴링 모드이며, 인터럽트는 사용하지 않는다.
unsigned int  GetADC(unsigned char channel);

분할된 시간에 선택된 ADC를 읽는다.
그리고 평균된 값을 되돌린다.
이것은 노이즈 필터이며, 혼입되지 않는다.
unsigned int GetAveragedADC(unsigned char channel, unsigned int numToAverage);

데이터 시트에서, N이라는 뜻은,
ADC 클럭은 CPU의 클럭의 프리스케일 2^N 이다.
ADC클럭은 반드시 50 - 200 KHz의 범위 이내여야 하며,
1 MHz에서 4라는 숫치를 주면 62 Khz이다.
#define ADC_PRESCALE        4

ADC 기준전압은 외부기준이다
#define ADC_REF                        0
                                                
하드웨어 셋업
아날로그 입력 0 = 설정 가변저항
아날로그 입력 1 = 경보 가변저항
아날로그 입력 2 = LM35 온도(섭씨)
아날로그 입력 3 = 열전대 증폭기 Gain = 111
아날로그 기준 0 = 2.5 volt, 외부

#define SP_Channel                0
#define ALARM_Channel        1
#define CJTEMP_Channel        2
#define TC_Channel                3
#define AMPLIFIER_GAIN        111L

기준전압은 2.5볼트이다.
// 기준전압이 uV이면 (volts * 1,000,000) 이다.
#define ADCREF_Microvolts        2500000L

// 기준전압이 mV이면  (volts * 1,000) 이다.
#define ADCREF_Millivolts        2500L

// ADC의 범위는 10 bit 이다.
#define MAX_ADC                        1024

// 열전대 채널의 평균시간은 256 이다
#define TC_AVERAGE                256

// 다른 채널의 평균시간은 32 이다
#define ADC_AVERAGE                32

// 열전대 접속의 오픈검출은 최대치-16 이다
#define OPEN_TC_VALUE        (MAX_ADC - 16)

// 온도 설정의 최소치와 최대치의 범위는 화씨 175-400도 이다.
// 설정간격은 5도이다.(제어 정도는 아니다)
#define SP_MAX                400
#define SP_MIN                175
#define SP_STEP                5

// 경보설정의 최소치와 최대치는 화씨 98-220도 이다.
// 설정간격은 2도이다
#define ALARM_MAX                220
#define ALARM_MIN                98
#define ALARM_STEP                2

// 환풍기는 8비트 pwm의 속도를 사용한다
#define FAN_OFF                0
#define FAN_FULL                255
#define FAN_SPEED                OCR2

// 타이머1은 1/1024의 프리스케일러로 1초를 사용한다.
// 1 MH 클럭에서 1s / 1024us = 977 이다.
#define ONE_SECOND                977

-PID제어 상수(constant) 튜닝
+/- 50도의 범위를 비례시키기 위한 P
이것은 커다란 오차 범위이다. 그리고 환풍기를 ON/OFF 시켜야 한다.
50도의 오차에서 100%를 출력한다. 1도의 오차로 2%를 구동한다.
10으로 나눈 설정값을 제어는 2배의 감도로 한다
#define PID_P                5        /* try 0.5% instead proportional gain */

적분, 얼마나 빠르게 오차를 수정하는가이다.
이것은 얼마의 간격으로 오차를 수정하는가 이다.(scale factor * 누적오차)
적분은 눌-옵셋(null out offset)을 사용한다.
그래서 독립적인 옵셋 상수를 사용한다.
#define PID_I_FREQ                6        // 6 = 10회 /분이다
#define PID_I_INCR                1        // 1 = 10X /분이다 (100%가 10분이다)

미분, P보다 커지면 과도현상의 억제효과 (damping effect)가 있다.
온도 제어에서는 사용하지 않는다.
#define PID_D                0        // 5% 미분이득, 1도의 오차마다

K 열전대의 기전력 테이블, 화씨 32 - 1024도에서 32도 마다 1uV이다.
(1volts * 1000000 =1uV이다)
회로는 화씨 32도 이하를 측정하지 못한다.(하한검출 범위)
#define NUM_ENTRIES  32
static const unsigned int voltsTable[NUM_ENTRIES] =
{
    0,        // 32
    709,        // 64
    1430,        // 96
    2161,        // 128
    2897,        // 160
    3636,        // 192
    4372,        // 224
    5102,        // 256
    5824,        // 288
    6540,        // 320
    7251,        // 352
    7961,        // 384
    8672,        // 416
    9388,        // 448
    10108,        // 480
    10834,        // 512
    11565,        // 544
    12301,        // 576
    13040,        // 608
    13782,        // 640
    14526,        // 672
    15273,        // 704
    16022,        // 736
    16773,        // 768
    17526,        // 800
    18280,        // 832
    19035,        // 864
    19792,        // 896
    20550,        // 928
    21308,        // 960
    22066,        // 992
    22824        // 1024
};

-부품표
U1                        Max232 RS232 Driver/Receiver (Jameco)
U2                        Atmega8 Microprocessor (Digikey)
U3                        LTC 1050 Precision Op Amp (Digikey)
U4                        74HCT4052 Dual 4-1 Mux (Digikey)
U5                        LM34        Temperature Sensor (Jameco, Digkey)
U6                        7812 Voltage Regulator (Jameco)
U7                        78L05 Voltage Regulator (Jameco)
Q1, Q2                        2N7000 N Channel MOSFET (Jameco)
D1                        1N4001 Switching Diode (Jameco)
D2                        LT1009 2.5 V, 0.2% Voltage Reference (Digikey)
LCD                        2 line x 16 LCD with 44780 controller (Jameco)
C1 – C5                1.0 ufd, 35V  Tantalum cap (Jameco)
C6 – C8, C10, C12        0.1 ufd, 50V Ceramic cap (Jameco)
C9, C11                10 ufd, 35V Electrolytic cap (Jameco)
L1                        10 uh inductor         (Jameco)
R1                        5K Trimpot (Jameco)
R2                        10K 1/8 watt (Jameco)
R3                        11K, 1/8 watt, 0.1% (Mouser)
R4                        100, 1/8 watt, 0.1% (Mouser)
R5                        47K, 1/8 watt (Jameco)
R6, R7                        10K, linear taper pot (Jameco)
R8                        2.7K, 1/8 watt (Jameco)
J1                        14 pin  .100 inch male header (LCD) (Jameco)
J2                        10 pin  .100 inch male header (ISP) (Jameco)
J3                        2 pin .100 inch male header (Fan) (Jameco)
J4, J5                        8 pin .100 inch male header (Front Panel) (Jameco)
J6                        DB-9 Male Connector (Jameco)
S1                        SPST toggle switch (Jameco)
TC1 – TC4                Type K thermocouple front panel connector (Omega)
Thermocouples        1-4 Type K thermocouples (Omega)
Fan                        8 – 10 CFM, 40 mm, 12VDC fan (Jameco)
Alarm                        5-24 volt piezoelectric alarm (Jameco)
Power Supply                12VDC, 500 ma unregulated “wall wart” power supply (Jameco)
Enclosure        2 Gang Metallic Conduit Box with Weatherproof Cover (Home Depot)

-Parts sources:
Digi-Key Corporation 218-681-6674 http://www.digikey.com/
Jameco Electronics 650-592-2503 http://www.jameco.com/
Mouser Electronics Inc. (817) 804-3888 http://www.mouser.com/
OMEGA Engineering, INC (203)-359-1660 http://www.omega.com/

- 소스화일 다운로드
ZIP으로 압축되어 올려진 화일은 ATmega8을 사용한
10비트 ADC 4채널용 PID온도조정기의 C 소스입니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수

AVR Project PIC Based Serial Port Servo Controller file

http://www.digitalnemesis.com/ash/projects/picservo/ ◆ PIC Based Serial Port Servo Controller By Ashley Roll Ever wanted to use Servos in a robotics project? This project uses a PIC microcontroller and...

AVR 강좌 RS-232 란 무엇인가? file

RS-232 란 무엇인가...

AVR 강좌 하드웨어 기초 file [1]

윤덕용 새 페이지 1 외부 자료 Link 작성자 Thinking in C++, 2nd ed. Volume 1 Bruce Eckel Thinking in C++, 2nd ed. Volume 2 ...

AVR Project FT245AM을 사용한 USB 인터페이스 설계 file

http://www.eix.co.uk/Ethernet/USB/ FT245AM을 사용한 USB 인터페이스 설계 USb는 생각보다 빠르다. USB는 PC의 저속에서 중속의 주변장치에서 새로운 방법을 제공한다. 새로운 USB 표준은 RS232C와 비교하면 보다 ...

AVR Project VHF 무선 데이터 수신기 file

http://jaichi.virtualave.net/avr-prog-e.htm 새 페이지 1 VHF 무선 데이터 수신기 ■ 회로: 이 수신기는 증폭도과 함께 크리스털 세트보다 작습니다. 작동전압 범위는 3V 에서 5V입니다. 나의 책상위에서는 2.5V이하로 작동합니다....

AVR Project VHF 무선 데이터 송신기 file

http://users.cableaz.com/~cappels/dproj/LCRFLINK/TRRxmtr/TRFxmtr.htm 새 페이지 1 산뜻한 생각으로 대략 접근하는 무전원의 송신기를 그렸다. 쓰기 시작하기 전에. 디커플링 캐패시터를 너무 크게 만들지 않도록 주의하라 그래서, ...

AVR Project AVR 6디지트 50MHz 주파수 카운터 file

http://www.myplace.nu/avr/countermeasures/index.htm AVR 6디지트 50MHz 주파수 카운터 ■ 개요 이것은 필요에 충족하는 또 다른 프로젝트이다. 나는 TTL 칩들을 이용해 간단히 주파수 카운터를 조립한적이 있다. 그것은...

AVR Tool AVR JTAG ICE file

Description: The Atmel AVR® JTAG ICE is an In-circuit Emulator for Atmel's megaAVR® Flash microcontrollers with 16K or more program memory. The JTAG ICE talks to the On-Chip debug module on the...

AVR Project PIC 전자식 그림간판의 제작(AVR로 응용가능) file

http://www.interq.or.jp/japan/se-inoue/e_pic6_2.htm 16F84A의 전자식 그림간판 메세지는 오른쪽에서 왼쪽으로 흐르며 표시한다. 128 개의 LED를 이 기판에 사용하였다. 이 장치의 소프트웨어는 다음과 같은 기술을 사용하...

AVR Project AVR JTAG 에뮬레이터의 제작 file

http://avr.openchip.org/bootice/index.html ■ BootICE(아트멜 AVR JTAG ICE와 호환)를 만들자 아직도 JTAG ICE를 많은 돈을 주고 구입하십니까? 여기에 완전하게 호환되는 BootICE의 완전한 설계(회로도,기판,소...

AVR Tool AVR Studio V4.07 설정방법 및 디버거 사용방법 file

http://www.atmel.com/ipstack AVR Studio V4.07 설정방법 및 디버거 사용방법 (1) 다음 사이트를 방문하여 AvrStudioV4.07을 받는다. http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 그림과 같은 CD모양의...

AVR Project CMOS 카메라 Treva의 PC화상표시 file

http://www.paken.org:8080/aaf/treva/index.htmlipstack CMOS 카메라 Treva의 PC화상표시 feel H용 이미지 캡쳐유닛 Treva를 범용 CPU로 접속합니다. 입력과 출력을 1가닥의 신호선으로 OK!가장 간단한? 이미지 센서입니...

AVR Project AT90S2313 디지털 용량계 file

http://elm-chan.org/works/cmc/report.htmlipstackAT90S2313 디지털 용량계 이것은 용량을 빨리 측정하는 간단한 용량계이다. 용량의 측정 원리는 임피던스 브릿지나 딥메터처럼 용량을 한번에 측정한다. 요즈음의 표준 용량계는 Cx에...

AVR Project AVR로 만드는 3채널 다이오드 온도계 file

http://elm-chan.org/works/temp3/report_j.html 다이오드로 온도를 측정하는 3채널 온도계의 제작 고정도 써미스터를 사용하여 무조정으로 ±0.5℃の 온도정도를 실현을 하였습니다만, 최근의 프로세서는 다이온도를 직접 모니터하...

AVR Project Treva or DMR-C1 Serial Camera Interface file [3]

http://homepage3.nifty.com/mujirushi/ews/dmrc1/ipstackTreva Serial Camera Interface 이 페이지에는 독자적으로 해석한 내용이 포함되어 있으므로, 반드시 내용을 보증하는 것이 아닙니다. 이용에 있어서는 자기책임으로 하여 주시기...

AVR Project Treva를 Blutooth에 연결한 무선이동 카메라 file

http://www.asahi-net.or.jp/~qx5k-iskw/robot/blue.htmlipstack ■ Treva를 Blutooth에 연결한 무선이동 카메라 모듈의 VCC, VCC_IO, ON단자에 3.3V를 공급하고, TxD, RxD를 PC의 직렬포트에 접속합니다. 이제 모듈을 ...

AVR Project AVR90S2313과 Treva 카메라 file

http://stk500.hp.infoseek.co.jp/treva.htmlipstack 최근 마이콤등으로 움직이는 방법이 증가하고 있는 FeelH용 CMOS 카메라인 Treva입니다. STK500에는 부속된 2선식 케이블로 Vcc-GND, SCK-DO의 형태입니다. Treva와 STK500의 ...

AVR Project AT90S2313을 사용한 IR to USB 모듈 file

http://www.cesko.host.sk/IgorPlugUSB/IgorPlug-USB (AVR)_eng.htm Universal USB interface & USB Infrared Interface with microprocessor AT90S2313-10 : 마이크로 콘트롤러로 USB를 완성 : IgorPlug-USB (AVR) 이기사의 ...

AVR 강좌 AVR Mega128 퓨즈비트 설정방법 file

http://www.tns-tech.co.kr128 퓨즈비트 설정방법...

AVR Project AVR Mega8을 사용한 PID제어 소스 file

http://www.circuitcellar.com/library/print/1002/eady147/index.htm LCD에 보이는 것은 실제 조리기의 온도와 음식3개의 온도이다. 압전 경보기가 꺼져 있으면, 조리기의 온도는 5° 간격으로 180° 에서 400°F이다. 음...