제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 3 |
|
|
이 프로젝트는 10Hz ~ 50kHz 범위의 간단한 오실로스코프를 만드는 방법을 설명합니다. 장치가 외부 디지털-아날로그 변환기 칩을 사용하지 않고 Arduino만 사용한다는 점을 고려할 때 이는 매우 넓은 범위입니다.
결과는 128x64 픽셀의 비교적 큰 LCD 화면(ST7920)에 표시됩니다. 측정 표시 영역은 96x64이고 정보 표시 영역은 32x64이며 테스트 신호 주파수, Vpp 등을 표시합니다.
매우 간단하게 구축할 수 있으며 몇 가지 구성 요소로 구성됩니다.
- 아두이노 나노
- 128x64 해상도의 ST7920 LCD디스플레이
- 3개의 순간 스위치
- 2개의 전위차 이성질체
- 1개의 커패시터 100μF
이 장치에는 자동 트리거(매우 안정적인 표시), 스캔 속도:0.02ms/div~10ms/div, 1-2-5에 따라 9개의 레벨로 캐리 및 분할 및 홀드 기능:디스플레이 파형 및 매개변수 고정과 같은 여러 기능이 있습니다. 이 프로젝트는 원본 코드를 찾을 수 있는 Wu Hanqing의 블로그에 게시됩니다. 이전 프로젝트 중 하나의 하드웨어를 기반으로 오실로스코프를 구축하고 있었기 때문에 최소한의 변경만 했습니다. 영상에서 볼 수 있듯이 큰 화면으로 인해 악기의 시야가 매우 깨끗하고 자동 트리거도 놀라울 정도로 좋습니다. 이미지의 수직 위치는 50kohm의 전위차계로 조정되고 대비는 10kohms 전위차계로 조정됩니다. 사인 및 직사각형 신호 발생기로 오실로스코프를 테스트했습니다.
마지막으로, 전문적이거나 매우 유용한 기기는 아니지만 교육 목적으로 또는 실험실에서 저주파 신호를 테스트하는 데 사용할 수 있습니다. 특히 기기를 만들기가 매우 쉽고 매우 저렴하다는 것을 알고 있기 때문입니다.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">#include섹션>U8GLIB_ST7920_128X64_4X u8g(6, 5, 4); 정수 입력 =A0; 정수 Key_add =8; 정수 Key_sub =9; 정수 Key_hold =10; 정수 x, y; int i,i1,i2,V_min,V_max,V_mid,t,t0,t1,sta,Key=1,hold=0; 긴 주파수; 부동 Vpp; 정수 Y[96]; 정수 버퍼[192]; 상수 uint8_t L[] PROGMEM ={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0, 0x0, 0x0, 0x00, 0x00, 0x00, 0x0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x000, × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00,하는 0x01, 0xE0, 0 × 00, 0 × 00, 0x30에, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00,가 0x1c, 0x00으로, × 00, 0xc0과, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00,은 0x03, 0x00으로,은 0x03, 0x00으로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0x80으로,은 0x04, 0x00으로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00,는 0x60, 0x08에서, 0x00으로, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00,은 0x10, 0x10, 명령 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, × 00, 0 × 00, 0 × 00, 0 × 00,은 0x10, 0x10, 명령 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 즉 0x08, 0x10으로, 0 × 00, 0 × 00, 0 × 00, × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 즉 0x08, 0x10으로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00, 0x0 0x00, 0x01, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0x03, 0xFF, 0xFF, 0xE 0x08, 0x10, 0x00, 0x00, 0x03, 0x8F, 0xFF, 0x00, 0x01, 0xE3, 0x1B, 0xB6, 0x,0,0x6D, 0x9B, 0x80, 0x080, 0x 0x33, 0x31, 0xB6, 0x6C, 0xB1, 0x80, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x03, 0x 3, 0x31, 0xB6, 0x6C, 0xB1, 0x80, 0x00, 0x08, 0x10, 0x00, 0x00, 0xB, 0,0,0x03, 0xFF, 0xFF, 0x00, 0x06, 0x13, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x06, 0x1B, 0x1F, 0xBE, 0x6C, 0x8F, 0x00, 0x00, 0x08, 0x10, 0x0 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x, 0x08, 0x10, 0x00, 0x030, 0x × 00, 0 × 00, 0 × 00, 즉 0x08, 0x10으로, 0 × 00, 0 × 00,은 0x03, 0xFF로, 0xF8, 0x00으로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 즉 0x08, 0x10, 명령 0x0C, 0x00으로, 0x0F의, 0xF8, × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 즉 0x08, 0x10, 명령 0x0C, 0x00으로, 0x0F의, 0xFC, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0x00, 0x08, 0x10, 0x0C, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0 x08, 0x10, 0x0E, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0x1E, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 00x08 0x0D, 0x93, 0x6E, 0xCD, 0x90, 0x00, 0x00, 0x08, 0x10, 0x0F, 0x87, 0x0F, 0xF9, 0x80, 0x00, 0x00, 0xCF 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x03, 0xB0, 0xC6, 0xCF, 0x00, 0x,0,0x00, 0x00, 0x08, 0x10, 0x 0x6C, 0xCD, 0xB0, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x0,0x00, 0x00, 0x07, 0x9C, 0x03 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF, 0x03 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0xFF, 0xFF, 0xE0, 0x × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 즉 0x08, 0x10, 명령하는 0x00에서 0x7F, 0xFF로, 0x80으로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x,0,0,0x00, 0x00, 0x00, 0x00, 0x00, 0x080, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 즉 0x08, 0x10, 명령하는 0x00 0x07 인, 0xCF, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 즉 0x08, 0x10, 명령 × 00, 0x07 인, 0xCF, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 즉 0x08, 0x10, 명령하는 0x00에는 0x07, 0x83, 0x00으로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 즉 0x08, 0x10, 명령하는 0x00에는 0x07, 0x83, 0x00으로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 즉 0x08, 0x10, 명령하는 0x00 0x06 일, 은 0x03, 0x00으로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 즉 0x08, 0x10, 명령하는 0x00에는 0x07, 0x83, 0x80으로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0, 0x0, 0x0, 0x00, 0x00, 0x00, 0x0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0x10, 명령은 0x04, 0x00으로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, × 00,가 0x20, 0x02로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 40,하는 0x01, 0x80으로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00,하는 0x01, 0x80으로, 0 × 00, 0x60으로, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0 × 00, 0x0E, 0x00으로, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, FFx, 0x00, FFx, 0x00, 0x00, 0x70, 0x00, 0x70, 0x000, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0 x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0,0,0,0,0,0,0,0x00,0x00,0x00,0x 0x00, 0x00, 0x00, 0x00}; 무효 설정() { pinMode(Key_add,INPUT); digitalWrite(Key_add,HIGH); 핀모드(키_서브,입력); digitalWrite(Key_sub,HIGH); 핀모드(키홀드, 입력); digitalWrite(Key_hold,HIGH); ADMUX=0x60; ADCSRA=0xe2; u8g.setFont(u8g_font_5x7); u8g.firstPage(); do { u8g.drawBitmapP( 0, 0, 16, 64, L); } 동안( u8g.nextPage() ); 지연(2000); } 무효 루프( ) { 샘플( ); 측정하다( ); 변환( ); 키 스캔( ); if(hold==0) { u8g.firstPage( ); { 무승부( ); } 동안( u8g.nextPage( )); } } 무효 샘플() { for(i =0;i <192;i++) { 버퍼[i] =ADCH; switch(Key) { 경우 1:중단; 사례 2:delayMicroseconds(4); 부서지다; 사례 3:delayMicroseconds(10); 부서지다; 사례 4:delayMicroseconds(23); 부서지다; 사례 5:delayMicroseconds(60); 부서지다; 사례 6:delayMicroseconds(123); 부서지다; 사례 7:delayMicroseconds(248); 부서지다; 사례 8:delayMicroseconds(623); 부서지다; 사례 9:delayMicroseconds(1247); 부서지다; 기본값:중단; } }}무효 측정(){ V_max=버퍼[0]; V_min=버퍼[0]; for(i=0;i<192;i++) { if(Buffer[i]>V_max) V_max=Buffer[i]; if(버퍼[i] =V_mid) { i1=i; 부서지다; } } for(i=i1+1;i<98+i1;i++) { if(Buffer[i] =V_mid) { i2=i; 부서지다; } } t=i2-i1; if(t>0) 주파수 =8000/t; else Freq=0;} 무효 Transform( ) { for(sta=0;sta<96;sta++) { if(Buffer[sta]<128&&Buffer[sta+2]>128) break; } for(i =0;i <96;i++) Y[i] =63-(버퍼[i+sta]>>2); } 무효 그리기( ) { for(x =0;x <95;x++) u8g.drawLine(x,Y[x],x,Y[x+1]); u8g.drawFrame(0,0,97,64); u8g.drawLine(48,0,48,63); u8g.drawLine(0,32,96,32); for(x=0;x<96;x+=8) u8g.drawLine(x,31,x,33); for(y=0;y<64;y+=8) u8g.drawLine(47,y,49,y);for(x=8;x<96;x+=8) { for(y=8;y<64;y+=8) u8g.drawPixel(x,y); } u8g.drawStr(98,7,"MS/div"); u8g.drawStr(98,23,"V/div"); u8g.drawStr(98,30,"0.324"); u8g.drawStr(98,40,"Vpp"); u8g.setPrintPos(98, 47); u8g.print(Vpp); u8g.drawStr(118,47,"V"); u8g.drawStr(98,55,"F(HZ)"); 스위치(키) { 사례 1:u8g.drawStr(98,14,"0.02"); u8g.setPrintPos(98, 62); u8g.print(주파수*50); 부서지다; 사례 2:u8g.drawStr(98,14,"0.05"); u8g.setPrintPos(98, 62); u8g.print(주파수*20); 부서지다; 사례 3:u8g.drawStr(98,14," 0.1"); u8g.setPrintPos(98, 62); u8g.print(주파수*10); 부서지다; 사례 4:u8g.drawStr(98,14," 0.2"); u8g.setPrintPos(98, 62); u8g.print(주파수*5); 부서지다; 사례 5:u8g.drawStr(98,14," 0.5"); u8g.setPrintPos(98, 62); u8g.print(주파수*2); 부서지다; 사례 6:u8g.drawStr(98,14," 1"); u8g.setPrintPos(98, 62); u8g.print(주파수); 부서지다; 사례 7:u8g.drawStr(98,14," 2"); u8g.setPrintPos(98, 62); u8g.print(주파수/2); 부서지다; 사례 8:u8g.drawStr(98,14," 5"); u8g.setPrintPos(98, 62); u8g.print(주파수/5); 부서지다; 사례 9:u8g.drawStr(98,14," 10"); u8g.setPrintPos(98, 62); u8g.print(주파수/10); 부서지다; 기본값:중단; }}무효 Key_scan(){ if(digitalRead(Key_add)==LOW) { while(digitalRead(Key_add)==LOW); 키++; if(키==10) 키=9; 지연(10); } if(디지털읽기(키_서브)==낮음) { 동안(디지털리드(키_서브)==낮음); 열쇠--; if(키==0) 키=1; 지연(10); } if(digitalRead(Key_hold)==LOW) { 동안(digitalRead(Key_hold)==LOW); 보류 =~ 보류; 지연(10); }}
제조공정
구성품 및 소모품 Arduino UNO × 1 DHT22 온도 센서 × 1 I2C 배낭 모듈이 있는 파란색 16×2 LCD 모듈에 흰색 – 5V × 1 무납땜 브레드보드 전체 크기 × 1 9V 배터리(일반) × 1 5.5mm/2.1mm 플러그가 있는 Adafruit 9V 배터리 클립 × 1 USB-A 대 미니 USB 케이블 × 1 남성/여성 점퍼 와이어 × 1 남성/남성 점퍼
구성품 및 소모품 Arduino UNO × 1 Adafruit RGB 백라이트 LCD - 16x2 × 1 브레드보드(일반) × 1 저항 220옴 × 1 SparkFun 푸시버튼 스위치 12mm × 1 점퍼 와이어(일반) × 1 USB-A-B 케이블 × 1 앱 및 온라인 서비스 Arduino IDE 이 프로젝트 정보 필요한 부품은 위의 그림과