이 프로젝트에서는 ATMEGA8 마이크로 컨트롤러와 화재 센서를 사용하여 화재 경보 시스템 을 만들 것 입니다. 화재 센서는 모든 유형이 될 수 있지만 우리는 IR (적외선) 기반 화재 센서를 사용하고 있습니다. IR 기반 화재 센서는 대부분 부정확하다는 단점이 있지만 화재 를 감지 하는 가장 저렴하고 쉬운 방법 입니다.
IR 기반 화재 센서는 감지 비전이 낮으므로 화재 센서를 서보 모터에 장착 할 것입니다. 서보는 180도 진자 회전을합니다. 화재 센서를 장착하면 270도 이상의 화재 감지 비전을 얻을 수 있습니다. 서보는 지속적으로 회전하여 완전한 실내 화재 경보 시스템을 제공합니다. 정확도를 높이기 위해 시스템에 연기 센서를 추가 할 수 있습니다. 이를 통해 더 높은 정확도를 얻을 수 있습니다.
회로 구성 요소
하드웨어: + 5v 전원 공급 장치, 서보 모터 (sg90), ATMEGA8, BUZZER, 버튼, 10KΩ 저항, 1KΩ 저항, 220Ω 저항, 100nF 커패시터, AVR-ISP PROGRAMMER.
소프트웨어: Atmel studio 6.1, progisp 또는 flash magic.
회로도 및 작동
서보 샤프트가 완전히 왼쪽으로 이동하려면 1/18 턴온 비율을 제공하고 샤프트가 왼쪽 끝까지 회전하려면 2/18의 듀티 비율로 PWM을 제공해야합니다. 우리는 ATMEGA8을 프로그래밍하여 서보 샤프트를 180으로 회전시킨 다음 특정 지연 후에 0으로 회전시키는 PWM 신호를 제공 할 것입니다.
완료 시간 동안 화재 센서가 켜지고 컨트롤러가 완전 경보 상태가됩니다. 화재가 발생하면 센서는 컨트롤러에 의해 감지 될 때이 펄스가 높은 펄스를 제공하여 경보를 설정합니다. 알람은 연결된 리셋 버튼을 누르면 꺼집니다.
3 개의 PWM 채널에 대한 atmega8에서는 3 개의 핀을 지정했습니다. 이 핀에서만 PWM 출력을 얻을 수 있습니다. PWM1을 사용하고 있으므로 OC1A 핀 (PORTB 첫 번째 PIN) 에서 PWM 신호를 가져와야 합니다. 회로도에서 보듯이 서보 신호를 OC1A 핀에 연결합니다. 여기서 또 다른 것은 3 개의 PWM 채널에 대한 것이며, 2 개는 8 비트 PWM 채널과 1 개의 16 비트 PWM 채널입니다. 여기서는 16 비트 PWM 채널을 사용하겠습니다.
ATMEGA에는 PWM을 생성하는 몇 가지 방법이 있습니다.
1. 위상 보정 PWM.
2. 빠른 PWM.
여기서 우리는 모든 것을 단순하게 유지할 것이므로 FAST PWM 방법을 사용하여 PWM 신호를 생성 할 것입니다.
먼저 PWM의 주파수를 선택합니다. 이것은 일반적으로 LED의 경우 50Hz보다 큰 주파수가 수행하는 응용 분야에 따라 다릅니다. 따라서 우리는 카운터 클럭 1MHZ를 선택하고 있으므로 프리 스칼라를 선택하지 않습니다. 프리 스칼라는 더 적은 카운터 클럭을 얻기 위해 선택된 숫자입니다. 예를 들어 발진기 클럭이 8Mhz 인 경우 '8'의 프리 스칼라를 선택하여 카운터 용 1MHz 클럭을 얻을 수 있습니다. 프리 스칼라는 주파수에 따라 선택됩니다. 더 많은 시간주기 펄스를 원하면 더 높은 프리 스칼라를 선택해야합니다.
이제 ATMEGA에서 50Hz 클록의 FAST PWM을 얻으려면 " TCCR1B "레지스터 에서 적절한 비트를 활성화해야합니다.
여기, CS10, CS11, CS12 (YELLOW) — 카운터 클럭을 선택하기 위해 프리 스칼라를 선택합니다. 적절한 프리 스칼라에 대한 표는 아래 표에 나와 있습니다. 따라서 하나의 프리 스케일링 (오실레이터 클럭 = 카운터 클럭).
그래서 CS10 = 1, 다른 두 비트는 0입니다.
RED (WGM10-WGM13): 빠른 PWM을 위해 아래 표에 따라 파형 생성 모드를 선택하도록 변경되었습니다. WGM11, WGM12 및 WGM12가 1로 설정되어 있습니다.
이제 PWM이 듀티 비율이 다르거 나 턴온 턴 오프 시간이 다른 신호임을 알 수 있습니다. 지금까지 PWM의 주파수와 유형을 선택했습니다. 이 장의 주요 주제는이 섹션에 있습니다. 다른 듀티 비율을 얻기 위해 0에서 255 사이의 값을 선택합니다 (8 비트이므로 2 ^ 8). 카운터가 0부터 계산을 시작하고 값 180에 도달하면 값 180을 선택하면 출력 응답이 트리거 될 수 있습니다. 이 트리거는 반전 또는 비반 전일 수 있습니다. 즉, 출력이 카운트에 도달하면 풀업하도록 지시하거나 카운트에 도달하면 풀다운하도록 지시 할 수 있습니다.
GREEN (COM1A1, COM1A0):이 풀업 또는 풀다운 선택은 CM1A0 및 CM1A1 비트에 의해 선택됩니다.
표와 같이 비교시 출력이 높아지고 출력은 최대 값까지 높게 유지됩니다. 이를 위해 반전 모드를 선택해야하므로 COM1A0 = 1; COM1A1 = 1.
아래 그림과 같이 OCR1A (출력 비교 레지스터 1A)는 사용자가 선택한 값을 저장하는 바이트입니다. 따라서 OCR1A = 180을 변경하면 카운터가 0에서 180에 도달하면 컨트롤러가 변경 (높음)을 트리거합니다.
OCR1A는 180 도의 경우 19999-600이고 0 도의 경우 19999-2400이어야합니다.