GAZ-53 GAZ-3307 GAZ-66

PIC 인터럽트. 펄스 발생기. PIC16F84A 및 AD9850의 발생기 - 마이크로컨트롤러의 장치 - 마이크로컨트롤러의 장치 구성표 마이크로컨트롤러의 직사각형 펄스 발생기 pic

옛날 옛적에 [L.1]에서는 ATTiny2313 마이크로컨트롤러의 제어된 TTL 레벨 구형파 발생기가 설명되었습니다. 31개의 고정 주파수(0.1Hz ~ 4MHz)를 생성할 수 있으며 매우 간단한 다이어그램그리고 사료에 의해 통제됨 바이너리 코드입력을 제어합니다. 5개 제어 비트의 논리 수준에 따라 생성기는 프로그램에 미리 설정된 주파수 중 하나를 생성했으며, 그 수는 이러한 제어 입력을 접지 또는 전원 버스에 연결하여 설정되었습니다. 아마도 이 회로는 독립적인 장치로 만들어진 것이 아니라 요소, 다른 개발에 사용하기 위한 모듈(예: 주파수 측정기, 시계, 크리스마스 트리 화환 등의 마스터 발진기) - 따라서 분명히 그다지 편리하지 않은 제어 방법 - 회로 작성자는 다음을 가정해야 합니다. 주파수는 회로를 포함하는 완성된 장치의 설계 단계에서 한 번 설정됩니다.

나는 간단한 실험실 발전기로서 이 회로에 관심이 있었습니다. 물론 이것은 심각한 산업용 장치에 대한 대안은 아니지만 일부 장소에서는 이러한 "마이크로 컨트롤러 멀티바이브레이터"가 유용할 수 있습니다(특히 단순성, 정확성 및 저렴한 비용을 고려할 때). 예를 들어 주파수 측정기 교정에 적합합니다. 일부 규모를 조정해야 하는 유사한 경우; 실험 중에 사용할 수 있습니다. 디지털 회로또는 펄스 전원의 출력단; 변압기 및 점화 코일 테스트(적절한 트랜지스터 스위치를 통해 강력한 전류원에 연결), 다양한 필터 등 예, 그리고 설치 오류가 발생한 경우 즐겨 사용하는 MP-3 플레이어나 "태블릿"이 아닌 직접 만든 생성기의 입력에 신호를 적용하여 새로 조립된 ULF가 제대로 작동하는지 확인하는 것이 더 안전합니다(예: 예를 들어 공급 전압이 ULF 입력으로 누출되는 경우) 최악의 경우 값 비싼 "장난감"이 아닌 값싼 출력 트랜지스터가 파괴됩니다.

그러나 설명된 회로에는 실험실 장치로 사용하기 어렵게 만드는 여러 가지 단점이 있었습니다. 첫째, 이미 언급한 제어 불편함(버튼 이 경우더 적절할 것입니다); 둘째, 선택한 모드에 대한 표시가 없습니다. 셋째, 변압기나 네트워크 필터를 사용할 때 때때로 필요한 출력 주파수 중 주전원 주파수(50Hz)가 없습니다. 넷째 - 조정되지 않은 출력 전압 레벨(동일한 ULF를 테스트할 때 때때로 필요함)입니다. 따라서 [L.1]에 주어진 방식을 " 기술적인 업무", 위의 요구 사항을 충족하는 새로운 장치와 펌웨어를 개발했습니다. 결과 다이어그램은 다음과 같습니다. 그림 1 .

이는 원작과 마찬가지로 주기가 1:1인 안정된 주파수의 구형파(즉, 50% 충전된 구형파)를 생성하는 생성기인데, 생성되는 주파수의 개수가 42개로 늘어났다. 생성된 주파수의 대부분은 [L.1]의 주파수와 다릅니다. 또한 거의 발생하지 않는 1Hz 미만의 주파수 수가 감소했습니다. 장치에서 생성된 모든 주파수 목록은 다음과 같습니다. 1 번 테이블 (기사 끝 부분에서).

회로의 기본은 널리 보급된 ATTiny2313 마이크로 컨트롤러이며, 클록 주파수는 10MHz에서 석영으로 안정화되어 출력 신호 오류를 최소화합니다. 출력 펄스는 "일치 시 재설정" 모드에서 작동하는 16비트 내부 타이머 카운터 T1을 사용하여 MC 클록 주파수를 나누어 생성되며 하드웨어에 의해 마이크로 회로의 핀 15로 출력됩니다. "우연 시 재설정" 모드에서도 작동하는 내부 8비트 타이머 카운터 T0은 HG1 표시기의 숫자를 전환하는 간격을 형성하여 동적 표시를 실현합니다. 동적 표시 출력은 MK의 라인 PB0 및 PB1이며 증폭됩니다. 트랜지스터 스위치 VT1 및 VT2에서.

핀 15 MK에서 생성된 출력 신호는 이미터 팔로워 회로에 따라 연결된 VT3 트랜지스터에 조립되는 전류 증폭기로 공급됩니다. 증폭 단계를 사용하면 MC 출력을 부하에서 분리하고 예상치 못한 상황(예: 단락 또는 장치 출력에 전압을 인가하는 것)으로부터 MC 출력을 보호할 수 있습니다. 가변 저항 R12를 사용하면 출력 신호의 레벨을 0에서 거의 공급 전압까지 조정할 수 있습니다. 저항 R13은 트랜지스터를 통과하는 전류를 안전한 수준(약 125mA)으로 제한하여 부하 단락 시 트랜지스터의 고장을 방지합니다. 저항 R14는 출력을 접지 전위로 "당깁니다". 이는 우선 디지털 로직 작업에 필요합니다. 입력에 전압이 없는 것으로 알려져 있습니다(그리고 핀 15 MK에 log.0이 있는 경우 트랜지스터). VT3이 닫혀 있고 이미 터에 전압이 없습니다) 대부분의 디지털 마이크로 회로는 이를 논리 1로 해석합니다. 저항 R14는 VT3이 닫히는 순간 장치의 출력을 접지로 "풀"하며, 이는 이 출력에 연결된 디지털 미세 회로에 의해 log.0으로 확실하게 인식됩니다. 이 장치에는 S1 버튼으로 출력 신호를 끌 수 있는 기능이 있습니다. 이 상태에서는 핀 15에 펄스가 없으며 트랜지스터 VT3이 닫히고 로그 0이 항상 장치 출력에 나타납니다. S1을 다시 누르면 출력 신호가 켜집니다. LED HL1은 출력 펄스가 있음을 나타냅니다.

장치는 3.5-5V 전압의 안정화된 전원에서 전원을 공급받습니다. 5V를 초과하는 전압의 전원(예: 크로나 또는 게임 콘솔의 전원 공급 장치)에서 장치에 전원을 공급해야 하는 경우 ) 그런 다음 적절한 출력 전압을 가진 안정기를 회로에 삽입해야 합니다. 예를 들어 7805 유형 마이크로 회로에 통합되거나 제너 다이오드 및 트랜지스터에 파라메트릭을 삽입해야 합니다. 다이오드 VD1은 전원 공급 장치가 우발적으로 역전되는 것을 방지합니다. 전류가 150mA 이상인 무엇이든 가능합니다(개인적으로는 이를 위해 오래된 주식의 "희귀" D226 또는 D7을 사용합니다. 어딘가에 넣어야 합니다. )). 전원 커넥터의 설계상 극성이 바뀌지 않도록 설계된 경우(또는 전원을 연결할 때 실수하지 않을 것이 확실한 경우)에는 다이오드를 설치할 필요가 없습니다. 원하는 경우 전원 스위치를 추가할 수도 있습니다.

장치 작업 알고리즘은 다음과 같습니다. 전원을 켜면 MK의 핀 15에 펄스가 없으며 HL1 LED가 켜지지 않고 선택한 모드의 번호가 HG1 디스플레이에 표시됩니다. . 장치 출력에 펄스가 나타나게 하려면 S1 버튼을 눌러야 합니다. 그러면 HL1이 켜지고 MK의 핀 15에 펄스가 나타남을 알립니다. S1을 다시 누르면 출력 신호가 다시 꺼집니다(즉, S1이 트리거처럼 작동함). S1 버튼을 사용하여 출력 신호를 켜고 끌 때 장치의 작동 모드를 전환할 수 있습니다. 버튼 S2는 증가하고 S3은 모드 번호를 감소시킵니다. 모드는 원으로 전환됩니다. 모드 번호 42(5MHz) 이후에는 OF 모드(출력 신호 없음)가 됩니다. S2를 다시 누르면 모드 1번(0.5Hz)이 켜집니다. 버튼 S3은 유사하게 작동하지만 반대 방향(1-OF-42번)으로만 전환됩니다. 선택한 모드의 값은 비휘발성 메모리(EEPROM)에 저장되므로, 다음 번에 기기를 켜면 전원을 끄기 전 기기가 작동하던 모드가 활성화됩니다. 출력 상태는 기억되지 않습니다. 전원을 켤 때마다 출력 신호가 항상 없습니다. 이는 발전기에 연결될 회로를 모든 종류의 사고로부터 보호하기 위해 수행됩니다. 먼저 필요한 모드를 설정해야 합니다. 최소 출력 전압을 입력한 다음 S1 버튼으로 출력 신호를 켭니다.

MK용 펌웨어는 순수 어셈블러(이 칩 제조업체에서 자유롭게 배포한 AVR Studio-4 환경 사용)로 작성되었으므로 플래시 메모리에서 602바이트만 차지합니다. PonyProg 프로그램에서 퓨즈 셀 설치는 다음과 같습니다. 그림 2 . (주목!직렬 프로그래밍을 사용하는 경우 비트를 만지지 마십시오.스파이엔그리고RSTDISBL - 새 것과 동일해야 합니다.MK - 그렇지 않으면 MK를 더 이상 재프로그래밍할 수 없습니다! 간단히 말해서, 프로그래밍하기 전에 다음을 고려하십시오.퓨즈- "신선한" MK 세포(보안 그리고 구성 비트 -> 읽다), 새 값을 쓸 때 비트를 그대로 두십시오.스파이엔그리고RSTDISBL읽은대로.)


장치에 사용되는 저항은 크기가 작고 전력이 0.125W입니다(R13 제외 - 0.25W). 그들의 저항은 상당히 넓은 범위 내에서 지정된 저항과 다를 수 있습니다. 장치의 모든 트랜지스터는 스위칭 모드에서 작동하므로 국내 및 해외 모두 저전력 NPN 구조가 될 수 있습니다. VT3가 장치의 최대 출력 주파수(5MHz)에서 자신있게 작동할 수 있다는 것이 중요합니다. HG1에서는 공통 양극을 사용한 동적 표시를 위해 이중 7세그먼트 표시기를 사용할 수 있습니다. 이중 표시기가 없으면 HG1을 "고대"ALSxxx까지 두 개의 단일 표시기로 조립할 수 있습니다. 가장 중요한 것은 모든 세그먼트의 공통 단자가 양극이라는 것입니다. LED HL1 - 마음에 들지 않는 것 :). 모든 버튼은 고정되지 않고 스프링으로 작동됩니다. 출력 커넥터는 "아시아" 유형입니다.

오실로스코프에 연결된 발전기의 모습은 다음과 같습니다. 그림 3 (왼쪽은 전원 공급 장치이며 9V (Dendy 유형 셋톱 박스에서)이지만 케이스에 7805 유형의 통합 안정 장치가 설치되어 결과적으로 출력은 5V입니다.) 그림 4 , S1-19B 오실로스코프를 사용하여 촬영한 출력 신호의 오실로그램 - 켜짐 그림 5 . 장치의 "내부" 사진을 찍지 않았습니다. 왜냐하면... 꽤 오래전에 조립해서 글루로 뚜껑을 씌웠는데 하우징을 분해(부수는)하기는 싫은데... 이 발전기 하우징은 개방형 전기배선용 정션박스를 사용했는데, 다른 옵션도 가능합니다. 조작의 용이성을 위해 모드 표를 인쇄하고 양면 테이프로 장치 본체에 붙이는 것이 좋습니다 (뒷면에 있는데 사진에는 보이지 않습니다). "펌웨어" 작성을 위해 프로그래머에게 쉽게 전송할 수 있도록 마이크로 컨트롤러를 소켓에 설치해야 합니다. (저는 일반적으로 회로 내 ISP 프로그래밍용 커넥터를 만들지 않습니다. 마이크로 회로를 프로그래머 소켓으로 전송해도 개인적으로 문제가 발생하지 않습니다. 어떤 불편이라도). 설치 유형은 무엇이든 가능합니다(SMD까지). 나는 인쇄된 고전적인 것을 사용했지만 보드 그림을 제공하지 않았습니다. 왜냐하면... 그것은 상당히 "비뚤어진" 것으로 밝혀졌습니다 (실질적으로 반복됩니다) 개략도); 좋은 선택- 구멍(크기 ~80x80mm)이 있는 "레이아웃"으로 모든 것을 조립합니다.

문학:

1. Gorchuk N.V.- 디지털 제어 기능이 있는 발전기, zh. "Radioconstructor", 12-2009, p.

1 번 테이블:

발전기 모드 목록

주파수(Hz)

주파수(Hz)

주파수(Hz)

주파수(Hz)

필요한 주파수 값이 키보드를 사용하여 설정되는 측정 발생기는 잡지 독자들에게 알려져 있습니다(예를 들어 Piskaev A. "Radio", 2002, No의 "Frequencymeter-generator-clock" 기사 참조). 7, 31, 32페이지). 일반적으로 이러한 장치는 마이크로 컨트롤러에서 만들어지며 생성되는 주파수 범위는 수 메가헤르츠로 제한되며 정확한 주파수 값을 얻는 것은 불가능합니다. 기사에 설명된 생성기에는 마이크로 컨트롤러도 포함되어 있지만 특수 마이크로 회로인 AD9850 주파수 합성기를 제어하는 ​​데에만 사용됩니다. 이 초소형 회로를 사용하면 생성된 주파수 범위를 1Hz에서 60MHz까지 확장할 수 있으며, 이 범위 내에서 1Hz의 정확도로 모든 주파수 값을 얻을 수 있습니다.

SB1-SB16 키보드를 폴링하고 HG1 LCD 표시기에 정보를 표시하며 주파수 코드 값을 계산하고 직렬 인터페이스를 통해 DD2 신디사이저로 전송합니다. 사운드 이미터 HA1은 키보드 버튼이 눌렸는지 확인하는 역할을 합니다. 표준 연결에는 AD9850(DD2) 칩이 사용됩니다. 필터 Z1은 DAC 출력에서 ​​켜집니다. 필터 후에 정현파 신호가 소켓 XW2와 DD2 칩 비교기 입력(핀 16)에 공급됩니다. 후자의 출력에서 ​​직사각형 신호가 소켓 XW1에 공급됩니다. G1 석영 발진기는 DDS용 클록 생성기로 사용됩니다. 트리머 저항 R7은 HG1 표시기의 이미지 대비를 조정합니다.
마이크로컨트롤러를 재설정한 후 HG1 LCD 표시기는 정보 기록에 필요한 입출력 라인 수를 줄이기 위해 필요한 4비트 버스 교환 모드로 구성됩니다.



발전기는 SB1-SB16 버튼으로 구성된 키보드를 사용하여 제어됩니다. 모든 포트 B 입력 라인은 저항기를 통해 전원 공급 장치에 연결되므로 포트 RB4 - RB7을 전원 라인으로 끌어올리기 위해 외부 저항기가 필요하지 않습니다. 저항 R3-R6은 실수로 여러 버튼을 동시에 눌렀을 때 마이크로컨트롤러 출력이 과부하되지 않도록 보호합니다.
필요한 주파수는 키보드에서 설정됩니다. 이렇게 하려면 해당 숫자가 있는 버튼을 클릭하고 원하는 값(헤르츠 단위)을 입력한 후 "*" 버튼을 누르십시오. 주파수가 최대 허용치를 초과하지 않으면 잠시 동안 표시기에 "OK"라는 메시지가 나타나고 발전기는 작동 모드로 들어갑니다.초과 - 메시지 "오류". 이 경우 "C"("재설정") 버튼을 누르고 올바른 값을 다시 입력해야 합니다. 주파수 입력 과정에서 오류가 발생한 경우에도 마찬가지입니다. 이 버튼을 두 번 누르면 장치가 이전에 설정된 주파수 값으로 작동 모드로 전환됩니다.
작동 모드에서는 표시기의 가장 오른쪽 부분에 별표 기호가 깜박입니다. 현재 주파수 값이 외부 제어 장치(예: 컴퓨터)에서 입력된 경우 표시기에 표시된 주파수로 돌아가려면 "*" 버튼을 누르기만 하면 됩니다.
"U"(위 - 위) 및 "D"(아래 - 아래) 버튼을 사용하면 발생기의 출력 주파수를 단계적으로 변경하여 각각 소수점 자리 값을 1씩 늘리거나 줄일 수 있습니다. 필요한 소수점 자리는 "L"(왼쪽-왼쪽) 및 "R"(오른쪽-오른쪽) 버튼을 사용하여 커서를 이동하여 선택합니다.
"*" 버튼을 누르면 주파수 값과 커서 위치가 마이크로 컨트롤러의 비휘발성 메모리에 저장되므로 다음에 전원을 켤 때 중단된 작동 모드가 자동으로 복원됩니다. 마이크로 컨트롤러의 컴퓨팅 기능은 제한되어 있으므로 출력 주파수는 대부분의 경우에 충분한 약 1Hz의 정확도로 설정됩니다. 신디사이저의 기능을 완벽하게 구현하려면 PC를 사용하여 제어할 수 있습니다. 이를 위해서는 그림 1에 표시된 다이어그램과 같은 장치를 추가하여 발전기를 수정해야 합니다. 3. PC(또는 기타 제어 장치)가 콘센트에 연결되어 있습니다.
XS1. 주소 입력 A의 논리 레벨이 낮으면 DD3 칩의 멀티플렉서는 합성기 제어 입력을 마이크로 컨트롤러 DD1에 연결하고 논리 레벨이 높으면 외부 장치에 연결합니다. 제어 신호는 XS1 소켓의 "ENABLE" 접점을 통해 공급됩니다. 저항 R19는 제어 장치가 연결되지 않은 경우 DD3의 주소 입력에 낮은 논리 레벨을 제공합니다.
발전기는 브레드보드에서 조립 및 테스트됩니다. DD2 칩용 SSOP 하우징용 보드를 구입할 수 없는 경우 직경 0.2mm의 짧은(10-15mm 길이) 주석 도금 와이어 조각을 사용하여 핀을 해당 패드에 연결할 수 있습니다. 핀 1,2,5,10,19, 24, 26, 27, 28은 더 긴 길이의 공통 와이어에 연결됩니다.
LCD 표시기 HG1 - 1TM1601(컨트롤러 내장형 16자 단일 라인). HA1 - 5V 전압용으로 설계된 생성기가 내장된 모든 압전 사운드 방출기. 마이크로어셈블리를 클록 생성기로 사용할 수 있음(G1) 수정 발진기최대 125MHz의 주파수에서는 개별 요소에 석영 안정화 기능이 있는 유사한 장치를 사용하는 것이 허용됩니다.
마이크로컨트롤러의 제어 프로그램은 클록 생성기의 주파수에 따라 달라집니다.
마이크로 컨트롤러를 프로그래밍할 때 구성 단어에 생성기 유형(OSC) - RC 비트 값이 설정됩니다. 감시 타이머(WDT) - 비활성화됨, 전원 공급 지연(PWRTE) - 활성화됨.

이 프로젝트는 회로의 복잡성에도 불구하고 적어도 단순한 회로에 비해 매우 광범위한 기능을 갖추고 있어 조립 비용을 정당화하는 고품질의 범용 함수 발생기입니다. 9개의 서로 다른 파형을 생성할 수 있으며 펄스 동기화와도 작동합니다.

MK 발전기의 개략도

기기 설정

  • 주파수 범위: 10Hz - 60kHz
  • 3단계로 디지털 주파수 조정
  • 파형: 사인, 삼각, 사각, 톱니, H-펄스, L-펄스, 버스트, 스윕, 노이즈
  • 출력 범위: 사인 및 삼각 모드의 경우 15V, 기타 모드의 경우 0-5V
  • 펄스 동기화를 위한 출력이 있습니다.

이 장치는 78L15 및 79L15의 정상 작동에 필요한 충분히 높은(18V 이상) DC 전압을 제공하는 12V AC에서 전원을 공급받으며 이는 양극성 15V 회로를 형성하여 LF353 마이크로 회로가 출력될 수 있도록 수행됩니다. 1kΩ 부하에 대한 전체 신호 범위.

레벨 컨트롤러는 ALPS SRBM1L0800을 사용했습니다. 회로는 허용 오차가 ±1% 이상인 저항기를 사용해야 합니다. LED 전류 제한기 - 4306R 시리즈 저항기. 연주자의 선호도에 따라 밝기를 높일 수 있습니다. 발전기는 알루미늄 전면 및 후면 패널이 있는 178x154x36mm 플라스틱 케이스에 조립됩니다.

많은 접점 구성 요소가 전면 및 후면 패널(버튼, 손잡이, RCA 커넥터, LED 어셈블리, 전원 커넥터)에 장착됩니다. 인쇄 회로 기판은 플라스틱 스페이서가 있는 볼트로 하우징에 부착됩니다. 발전기의 다른 모든 요소는 인쇄 회로 기판에 장착되며 전원 공급 장치는 별도입니다. 가운데 왼쪽 버튼은 모드 변경, 오른쪽 버튼은 모드 주파수 선택입니다.

발생기는 다양한 신호를 생성하고 "선택" 키를 사용하여 선택하고 3개의 상단(다이어그램) LED로 표시되는 세 가지 모드로 작동합니다. 회전 제어 장치는 다음 표에 따라 신호 매개변수를 변경합니다.

모드 1로 설정한 직후에는 Sine 발생이 발생합니다. 그러나 시작 주파수는 매우 낮으며 이를 높이려면 인코더를 한 번 이상 클릭해야 합니다. 보드에는 프로그래밍용 장치를 연결하기 위한 접점이 있어 필요한 경우 신호 발생기의 기능을 빠르게 변경할 수 있습니다. 모든 프로젝트 파일 - PIC16F870 펌웨어, 보드 도면이 위치합니다.

라디오 아마추어와 회로 엔지니어는 펄스 카운터, 타코미터, 오실로스코프 등과 같은 일부 디지털 장치를 구성해야 하는 경우가 있습니다. 아니면 작동하는지 알아보세요. 다양한 주파수의 직사각형 펄스를 생성하는 생성기를 사용하는 것이 매우 편리합니다.

나는 그러한 발전기에 대한 프로젝트를 제안하고 싶습니다.

먼저 펄스 발생기 회로:

이 장치는 널리 사용되는 마이크로컨트롤러를 기반으로 합니다. ATmega8 아트멜에서.

계획에 대한 설명. 전체 회로는 5V의 전압으로 전원이 공급됩니다. 마이크로 컨트롤러는 8MHz의 주파수로 클록되며 X1 석영에 의해 안정화됩니다. 펄스를 생성하기 위해서는 타이머/카운터 1번을 사용합니다. 인코더는 PC3, PC4 및 PC5 핀에 연결된 다이어그램에서 버튼 형태로 표시됩니다. 외부 버튼 2개는 회전 중 인코더 전환을 대체하고, 가운데 버튼은 축을 누르면 닫히는 인코더 버튼입니다. 진폭 5V의 인코더를 사용하여 설정된 주파수의 직사각형 펄스가 타이머 1(OCR1A)의 출력에서 ​​제거됩니다. 출력 주파수를 표시하기 위해 마이크로 컨트롤러의 포트 D에 연결된 16자 단일 라인 LCD 디스플레이 WH1601이 사용됩니다. HD44780 드라이버를 기반으로 한 디스플레이도 일반적입니다. 저항 R1은 디스플레이의 대비를 조정합니다. MK와 디스플레이 간의 데이터 교환은 4선 버스를 사용하여 구성됩니다. MK의 회로 내 프로그래밍을 위한 커넥터 J1.

이제 마이크로 컨트롤러 프로그램에 대해 알아보겠습니다.

프로그램은 개발 환경에서 작성되었습니다. 코드비전AVR. 이 환경에는 디스플레이 작업을 위해 미리 만들어진 라이브러리가 포함되어 있으며 MK 설정은 명확하고 간단합니다. 출시 전 버전을 사용했어요 CodeVisionAVR 버전 3.12.다음을 사용하여 코드를 생성하는 것은 약간 다릅니다. Wizarda.그러나 기본적으로 모든 것이 동일합니다. 아래에는 작업 예를 사용하여 모든 것이 설명되어 있습니다. CodeVisionAVR 버전 3.12.인터넷에는 이 환경을 연구할 수 있는 링크가 가득합니다. 예를 들면 다음과 같습니다. 통합 개발 환경 학습 코드비전AVR.

CVAVR을 실행해 보겠습니다. 우리는 창조한다 새 프로젝트 (새 프로젝트). 프로그램은 프로젝트 생성 마법사를 사용하라는 메시지를 표시합니다.

우리는 동의한다. 그런 다음 컨트롤러 제품군을 선택합니다.

I/O 포트 구성. 포트 B(PB1)의 비트 1을 출력으로 만들어야 합니다. 생성된 주파수는 여기에서 가져옵니다. 지금은 포트 D를 그대로 둡니다. 그리고 인코더 상태를 읽을 핀(PC3, PC4, PC5)을 입력( 데이터 방향: 있음) 내부 전원 공급 장치를 켭니다( 풀업/출력 값- 의미 ).

탭으로 이동 타이머/카운터. 여기서 타이머 2개를 구성해야 합니다. 타이머0그리고 타이머1, 나머지 타이머는 비활성화된 상태로 둡니다( 시계 값: 중지됨).

주파수 설정 타이머0 125kHz. 이 타이머는 인코더 상태를 주기적으로 폴링하는 데 필요합니다. 타이머가 상위 값에 도달할 때마다 폴링이 발생합니다. 왜냐하면 타이머0 8비트이면 상위 값은 255입니다. 컨트롤러가 메인 프로그램의 실행을 중단하여 인코더를 폴링하려면 오버플로 인터럽트를 활성화해야 합니다. 타이머0 (오버플로 인터럽트).

설정하기 타이머1. 모드( 방법) CTC (비교 시 타이머 지우기– 일치하는 항목이 있으면 재설정합니다. 이 모드에서는 타이머 출력이 로그로 전환됩니다. 계수 기록의 내용이 0이 되는 즉시 TCNT1성냥갑 OCR1A. 레지스터의 값을 변경하여 OCR1A출력 펄스의 주파수를 변경하겠습니다. 회로는 타이머 1의 출력 A를 사용합니다. 이에 대한 값을 선택해야 합니다. 비교 일치 켜기(일치하는 것이 있으면 다른 상태로 전환합니다). 일반적으로 그림을보십시오.

다음 단계는 디스플레이를 연결하는 것입니다. 안에 코드비전AVR디스플레이가 연결될 MK의 포트를 나타내는 것으로 충분합니다. 포트 D를 선택합니다.

이제 프로그램 코드를 생성해야 합니다. 딸깍 하는 소리 프로그램 -> 생성, 저장 및 종료

이제 설정으로 들어가야 합니다 프로젝트 -> 구성 MK 유형과 해당 클럭 주파수가 올바르게 설정되어 있는지 확인하십시오.

CVAVR을 위한 준비된 프로젝트

(316.0 KiB, 670 히트)

MK 펌웨어를 플래시하려면 확장자를 가진 파일이 필요합니다. .마녀. 완성된 프로젝트에서 이 파일은 다음과 같습니다. Gen_mega8.hex. 폴더에 위치해있습니다 릴리스/Exe/.

처음부터 프로그램을 작성하려는 경우 프로젝트에는 어떤 명령이 필요한지에 대한 설명이 있습니다. 또는 파일에서 완성된 코드를 붙여넣기만 하면 됩니다. gen_mega8.c.그리고 이를 변경하여 완성된 장치에 어떻게 반영되는지 확인하세요. MK 펌웨어 파일을 생성하려면 버튼을 눌러야 합니다. 프로젝트를 빌드합니다.확장자가 있는 파일 .마녀폴더에 생성됩니다 릴리스/Exe/.
컨트롤러의 퓨즈 비트는 그림에 따라 외부 8MHz 석영 공진기와 함께 작동하도록 프로그래밍되어 있습니다.

이제 펄스 발생기를 제어하는 ​​방법에 대해 설명합니다.

전원이 인가되면 디스플레이와 엔코더가 초기화됩니다(엔코더가 연결된 핀이 구성됩니다). 다음으로 막대가 디스플레이를 가로질러 실행되고(선택적 "트릭", 교육 디스플레이 출력을 위해 만들어짐) "발전기 꺼짐"이라는 문구가 표시됩니다. 2초 후에 디스플레이가 지워집니다. 엔코더 손잡이를 돌리면 출력 주파수가 나타나며 헤르츠 단위로 변경됩니다. 엔코더 버튼을 0.5초 정도 길게 누르면 화면에 "버튼을 떼세요"라는 메시지가 표시됩니다. 그 후 엔코더 손잡이를 돌리면 주파수가 수십 헤르츠 단위로 변경됩니다. 주파수를 수백(수천) 헤르츠 단위로 변경하려면 인코더 버튼을 다시(2회) 눌러야 합니다. 그런 다음 모든 것이 Hertz 단위로 다시 시작됩니다.

발전기의 부하 용량을 늘리기 위해 트랜지스터를 통해 MK 출력을 켤 수 있습니다.

출력 주파수의 정확도에 대해.

출력 주파수 값은 오실로스코프로 확인되었습니다. 최대 약 200Hz의 낮은 주파수에서는 값이 오실로스코프에서 측정된 값과 일치하며, 주파수가 높을수록 오류가 커집니다(이는 비교 레지스터에 기록된 정수가 아닌 숫자로 인해 발생함). 배열의 상수를 비교 레지스터에 입력하면 정확도가 높아질 수 있습니다(고주파가 필요하지 않았고 숫자를 계산하고 배열에 입력하기에는 너무 게으르다). 높은 주파수에서는 정확도를 높이려면 다른 타이머 주파수를 사용해야 합니다.

저는 최근에 주파수(최대 9.999MHz)를 측정하는 데 사용할 수 있는 매우 편리하고 컴팩트한 멀티미터를 구입했습니다. 여기있어 비디오 리뷰 . 그리고 다음과 같이 주문할 수 있습니다. 이 링크 .

마이크로 컨트롤러는 특수 프로그래머로 플래시할 수도 있고 간단한 프로그래머를 직접 만들 수도 있습니다. 예를 들어 프로그래머를 성공적으로 사용했습니다. USBasp. 이 프로그래머에 대한 내용은 다음에서 읽을 수 있습니다.

이 프로젝트는 다이어그램을 기반으로 합니다. 함수 발생기 Mondo 웹사이트에 설명되어 있습니다. 나는 아주 사소한 변경만 했고 다이어그램의 몇 가지 명백한 오타를 수정했습니다. 코드는 Microchip 구문에 맞게 다시 작성되었습니다.

발전기 특성:
주파수 범위: 11Hz - 60kHz
3단계로 디지털 주파수 조정
파형: 사인, 삼각, 사각, 펄스, 버스트, 스윕, 노이즈
출력 전압 범위: 사인 및 삼각의 경우 ±15V, 기타의 경우 0-5V
동기화: 펄스 신호에 대한 출력.

이 장치는 상당히 높은 전압(18V 이상)을 제공하는 12V 변압기로 전원을 공급받습니다. 일정한 압력, 안정 장치 78L15 및 79L15의 정상적인 작동에 필요합니다. LF353 출력 증폭기가 1kΩ 부하에서 전체 범위의 신호를 제공하려면 ±15V의 전원 공급 장치가 필요합니다. ±12V 전력을 사용하는 경우 이 저항은 최소 3kΩ이어야 합니다.

제가 사용한 회전센서(로터리 엔코더)는 도면에서 원 안에 스위치 2개가 있는 형태의 ALPS SRBM1L0800 이었습니다. 작성자는 아마도 다른 것을 사용했을 것이므로 컨트롤러 프로그램 코드에 일부 변경이 필요했습니다. 내 센서에는 OFF와 ON(로터가 해당 방향으로 움직일 때)의 두 가지 접점 그룹이 있습니다. 따라서 핀 쌍 중 하나가 단락되면 PORTB 인터럽트의 변경이 생성되어야 합니다. 이는 프로그램에서 상태 변경을 확인하는 PIC16 핀(RB4 - RB7)에 두 접점 그룹을 연결함으로써 달성됩니다. 다행히 원래 디자인에서는 RB4가 사용되지 않았기 때문에 RB3를 RB4로 리디렉션했습니다. 또 다른 수정은 로터리 인코더 사용으로 인해 발생하므로 펌웨어 인터럽트를 약간 변경했습니다. 원래 설계에서는 10회 측정이 아닌 100회 연속 측정 동안 조정기가 상태를 유지하도록 만들었습니다. 일부 PIC 핀은 PCB 레이아웃을 단순화하기 위해 +5V를 리디렉션하는 데 사용되므로 포트 입력으로 구성됩니다.

인쇄 회로 기판은 세 개의 저항기 어셈블리를 제공합니다. 하나 – R/2R – Bourns 4310R 시리즈의 DAC용. 위 다이어그램에 따라 개별 저항기를 사용하여 DAC 저항기 어셈블리를 구축할 수도 있습니다. 허용 오차가 ±1% 이상인 저항기를 사용해야 합니다. LED 제한 저항기 Bourns 4306R 시리즈. 제한 저항의 저항을 220~330Ω으로 변경하면 LED의 밝기를 높일 수 있습니다.

발전기는 알루미늄 전면 및 후면 패널이 있는 179x154x36mm 플라스틱 케이스에 들어 있습니다. 출력 신호 레벨은 가변 저항 Alfa 1902F 시리즈에 의해 조절됩니다. 다른 모든 구성 요소는 전면 및 후면 패널(버튼, 커넥터, LED 어셈블리, 전원 커넥터)에 설치됩니다. 보드는 플라스틱 스페이서가 있는 6mm 볼트로 케이스에 부착됩니다.

발생기는 9개의 서로 다른 파형을 생성하고 "선택" 버튼을 사용하여 선택하는 세 가지 모드로 작동하며 해당 표시는 다이어그램에 따라 상단 3개의 LED에 표시됩니다. 회전 센서는 다음 표에 따라 신호 매개변수를 조정합니다.


방법\형태

삼각형

방법 1

방법 2

방법 3

스위치를 켜는 즉시 발생기는 모드 1로 들어가 사인파를 생성합니다. 그러나 시작 빈도는 매우 낮으며 컨트롤을 한 번만 클릭하면 시작 빈도가 높아집니다.

추신 제가 직접 추가하겠습니다. 작성자의 인쇄 회로 기판을 사용하여 장치를 반복할 때 장치가 시작을 거부했으며(인쇄 회로 기판에 오류가 있을 수 있음) 브레드보드에 장착하면 발전기가 즉시 작동하기 시작했습니다. .

아래에서 asm 소스, 펌웨어 및 PCB 파일을 다운로드할 수 있습니다. ()

방사성 원소 목록

지정 유형 명칭 수량 메모가게내 메모장
발전기 회로.
마이크로컨트롤러PIC16F8701 메모장으로
시프트 레지스터

CD74HC164

1 메모장으로
연산 증폭기

LF353

1 메모장으로
멀티플렉서/디멀티플렉서

CD4053B

1 메모장으로
선형 레귤레이터

LM7805

1 메모장으로
선형 레귤레이터

LM78L15

1 메모장으로
선형 레귤레이터

LM79L15

1 메모장으로
정류다이오드

1N4002

3 메모장으로
콘덴서22pF2 메모장으로
콘덴서51pF1 메모장으로
콘덴서100pF1 메모장으로
콘덴서1000pF1 메모장으로
콘덴서0.1μF1 메모장으로
1μF2 메모장으로
전해콘덴서4.7μF1 메모장으로
전해콘덴서100μF2 메모장으로
전해콘덴서500μF1 메모장으로
저항기

470옴

6 메모장으로
가변 저항기1k옴1 메모장으로
저항기

2.7k옴

1 메모장으로
저항기

4.7k옴

1 메모장으로
저항기

10k옴

4 메모장으로
저항기

15kΩ

1 메모장으로
저항기

22k옴

1