2014년 12월 26일 금요일

[번역] 산업용 이미지 센서 포멧과 렌즈 규격

1. 1 인치 비디오 포멧의 의미는 ?

실제 영상 사이즈(active area)는 영상의 대각선 길이가 16mm인 12.8mm x 9.6mm의 영역을 일컬음. 공통 포멧으로 사용되는 1인치(25.40mm)의 수치는 Videcon Tubes의 시대에서 비롯된 것으로 실제 영상 사이즈를 일컫는 것이 아니고 tube의 대각선 길이를 묘사 하는데 사용되어졌다.

2. 2/3 인치 비디오 포멧의 의미는 ?

실제 영상 사이즈(active area)는 영상의 대각선 길이가 11mm인 8.8mm x 6.6mm의 영역을 일컬음. 공통 포멧으로 사용되는 2/3인치 (16.93mm)의 수치는  Videcon Tubes의 시대에서 비롯된 것으로 실제 영상 사이즈를 일컫는 것이 아니고 tube의 대각선 길이를 묘사 하는데 사용되어졌다.

3. 1/2 인치 비디오 포멧의 의미는 ?

실제 영상 사이즈 (active area)는 영상의 대각선 길이가 8mm인 6.4mm x 4.8mm의 영역을 일컬음. 공통 포멧으로 사용되는 1/2인치 (12.70mm)의 수치는 Videcon Tubes의 시대에서 비롯된 것으로 실제 영상 사이즈를 일컫는 것이 아니고 tube의 대각선 길이를 묘사 하는데 사용되어졌다.

4. C-Mount란 무엇인가 ?

C-Mount는 16mm 필름 카메라 뿐만 아니라 CCD/CMOS 디지털 카메라에서 널리 볼 수 있는 카메라/렌즈의 표준 규격이다. C-mount 명세는 그것과 관련된 몇 가지의 치수들을 가지고 있다.

Mounting 나사산 = 1 inch x 32 tpi(Threads per Inch) UN 2A
렌즈 나사산의 길이 = 3.8mm
렌즈의 Flange Focal Distance = 17.52mm
Camera Depth (C-mount 면에서 영상까지의 거리) = 17.52mm

위의 치수들은 어떤 렌즈와 어떤 카메라의 조합도 적절히 영상화되기 위해서 C-Mount 카메라 제조사 뿐만 아니라 모든 C-Mount 렌즈 제조사들에 의해서 따라진다.

5. "C-Mount"와 "CS-Mount" 사이의 차이점은 무엇인가 ?


두 mount 간의 유일한 차이점은 Camera Depth (5mm의 차이)뿐이다.

C-Mount의 Camera Depth (마운트 접촉면에서 상이 맺히는 공간까지의 거리) = 17.52mm
CS-Mount의 Camera Depth = 12.52mm

참고 - 어떤 표준 C-Mount 렌즈도 5mm 확장 튜브를 단순히 적용하면 CS-Mount 카메라에 사용할 수 있다. 그러나, 표준 CS-Mount 렌즈는 C-Mount 카메라에 사용할 수 없다. CS-Mount의 모든 다른 특징들은 C-Mount 특성과 동일하다.

6. F-Mount란 무엇인가 ?

F-Mount는 Nikon사에 의해서 개발되었고 렌즈 제조사에게 뿐만 아니라 수많은 산업용 카메라 회사를 위한 산업 표준이 되었다:

Mounting Interface = Nikon F-Mount Bayonet
Camera Depth (F-Mount 접촉면에서 영상이 맺히는 곳까지의 거리)  = 46.5mm
렌즈의 Flange Focal Distance = 46.5mm

7. T2 나사산 이란 ?

T2 나사산 (미터법 나사산)은 카메라와 렌즈를 결합하는데 일반적으로 사용되는 M42 x 0.75pitch의 나사산을 의미한다.

8. Pentax 나사산 이란 ?

Pentax 나사산 (미터법 나사산)은 카메라와 렌즈를 결합하는데 일반적으로 사용되는 M42 x 1.0 pitch의 나사산을 의미한다.

9. Leica 나사산 이란 ?

Leica 나사산은 나사산의 pitch에 인치 규격을 채용할 뿐만 아니라 나사산의 직경에서 미터법을 채용한 하이브리드 나사산이다:

M39 x 26Gg

주의 - 26Gg pitch는 1mm pitch에 매우 가깝다. 실제 Leica 나사산 (피치가 26Gg 인) 은 정확하게 pitch가 1mm는 아니다.

10. 렌즈의 "Back Focal Distance"와 "Flange Focal Distance"사이의 차이점 ?

렌즈의 Back Focal length 는 렌즈의 맨 마지막 유리 부품 (최외각의 외부와 맞닿는 돌출부)에서 상이 맺히는 곳까지의  거리.

Flange Focal Distance 는 렌즈의 mount 부 (나사산의 초입 면)에서 상이 맺히는 곳 까지의 거리.

11. 가시광 영역에 해당하는 것은 ?

일반적으로 가시광에 해당하는 파장 영역은 사람의 눈이 볼 수 있는 400nm 에서 700nm (파랑에서 빨강 영역)이다.

참고로 - 1 nanometer (nm) = 1 x 10-9meters

12. 일반적인 CCD 센서가 영상을 생성할 수 있는 파장 영역은 ?

어떤 특수한 파장 제한 필터를 적용하지 않은 일반적인 CCD 혹은 CMOS 센서는 가시광에서 근적외선 영역까지의 빛을 영상화 할 수 있다:

400nm 에서 1200nm까지

참고로 - 1 nanometer (nm) = 1 x 10-9meters

13. CCTV는 무엇의 약자인가?

CCTV 는 Closed Circuit Television의 약자이다.

14. Spot 필터는 무엇인가 ?

Schneider 렌즈의 모터로 움직이는 조리게 버전들은 Spot 필터와 같이 공급된다.

Spot 필터가 있는 렌즈를 통해 보면, Spot 필터는 렌즈의 정중앙에 아주 작은 검은 점으로 나타난다.

Spot 필터는 반사체 (파장에 독립적인)의, Neutral Density (고른 밀도), 원판의, graident 필터이다.이것은 optical stop surface (조리개의 날개가 위치하는)에 동일평면상에 위치하도록 유리면에 도포된다. Spot 필터는 즉각적인 광 민감도 적응을 하도록 한다. 외각에 비해 순수하게 어두운 중앙의 Spot 필터를 통과하는 빛은 100% 사라지게 된다. 그래서, 조리개의 날개가 약간이라도 움직이면, 렌즈를 통한 빛의 최종적인 밝기에 아주 지대한 영향을 준다.

모터로 움직이는 렌즈는 spot 필터 없이도 구매 되어 질 수 있지만, 가격의 차이는 없다. 대부분의 모든 고객들이 이것이 무엇인지 이해한다면 spot 필터를 원한다. 용도가 빛이 적은 곳에서 시작하는 곳 일 경우에만 모터로 움직이는 조리개 렌즈에 spot 필터를 원하지 않는 고객들을 보았다.
   

[출처] https://www.schneideroptics.com/info/faq/industrial.htm

2014년 10월 31일 금요일

지역명으로 본 한국 원전 이름

  • 고리 1-4호기, 신고리 1-2호기   : 부산 기장 1-4호기, 부산 기장 신1-2호기
  • 한빛 1-6호기                           : 전남 영광 1-6 호기
  • 월성 1-4호기, 신월성 1호기      : 경북 경주 1-4호기, 경북 경주 신 1호기
  • 한울 1-6호기                           : 경북 울진 1-6호기

주거지를 수도권과 중 서부 지역으로 토끼 몰이 하는 상황이 아닌가 의심스럽다.


 가장 최악은 경상 남북도에 사는 것인가...
잠시 구경가는 것은 괜찮겠지만, 거주지를 경상도로 정하는 것은 되도록 피해야 할 듯 싶다.

부산이 제2의 도시에서 쪼그라든 이유를 설명할 수 있는 이유 중 하나 일듯.

2014년 10월 9일 목요일

이건희는 안 죽었다는데

이건희는 안죽었다는데
 (http://www.viewsnnews.com/article/view.jsp?seq=114668)

주가는 떨어지고, 환율은 오르고,
(http://www.viewsnnews.com/article/view.jsp?seq=114676)

박근혜는 "통일 이전에 남북 경제격차 줄여야"라고 하고
(http://www.viewsnnews.com/article/view.jsp?seq=114686)

경제는 수렁으로 빠져 엊 비슷하게 가고.
(http://www.viewsnnews.com/article/view.jsp?seq=114682)

2014년 9월 15일 월요일

원격의료 대비, 동네 의원들이 사용해 볼만한 E-health 시스템

안되는 것도 없고 되는 것도 없는 대한민국에서 원격 의료는 되지 않는 듯하면서 될 것 같다. 이것 또한 대부분의 의사(동네 의원) 및 서민들에게는 해택이 없다. 오히려 소외 될 것이다. 이러한 상황에 개미들이 대처하는 할 수 있는 방법은 원격 의료에 사용할 수 있는 저렴하고 공개된 시스템을 구성해서 대기업의 의욕을 꺽는 방법 뿐이다. 아래의 시스템은 소위 아두이노 기반의 플랫폼에 연결할 수 있는 적층형 보드이다. 혈압, 온도, 산소, 심박, ECG, 등등.... 원만한 간단한 검사는 가능할 듯하다. 가격도 450 유로다. 이 가격도 대량 구매 혹은 직접 구성한다면 더 저렴해 질 수 있다.


사용 가능한 센서들:


- e-Health Sensor Shield for Arduino and Raspberry Pi
- Pulse and oxygen in blood sensor (SPO2)
- Airflow sensor (breathing)
- Body temperature sensor
- Electrocardiogram sensor (ECG)
- Glucometer sensor
- Galvanic skin response sensor (GSR - sweating)
- Blood pressure sensor (sphygmomanometer) V2.0 New Sensor
- Patient position sensor (Accelerometer)
- Electromyography Sensor (EMG) New Sensor


[출처]


http://www.cooking-hacks.com/ehealth-sensors-complete-kit-biometric-medical-arduino-raspberry-pi

2014년 7월 29일 화요일

[번역중] 초분광 카메라 혹은 스펙트로 미터를 위한 분광기 설계

[출처 : http://www.ibsenphotonics.com/technology/spectrometer-design-guide#optics]

소개

이 문서는 diffraction grating 에 기반한 분광기 디자인과 다양한 diode array (리니어 센서) 들을 비교하고 평가하고 디자인하기 위한 공식과 디자인 가이드 라인을 사용하기 쉽고 간단하게 제공합니다.

디자인 과정에 투여되는 입력은 당신이 다루기 원하는 파장 범위와 당신의 스펙트럼에서 얼마나 다양한 구조들을 분석하는지에 따른 광학 분해능등이다.

주의 !

이 안내서를 사용해서 만드는 분광기 디자인은 당신의 디자인 과정의 초입단계에서만 사용되어져야 합니다. 하드웨어적으로 분광기를 구현하고자한다면 미세한 디자인이 가능한 수치적인 시뮬레이션 도구를 항상 사용해야만 합니다. (예를 들자면 geometrical ray tracing).

어떻게 diode array 분광가 작동하나


기본적으로 분광기는 감지부에 입력 슬릿으로 부터의 상을 생성하는 렌즈와 거울들로 구성되는 광학 시스템입니다. 렌즈와 거울 사이에는 서로 다른 각도로 다른 파장들을 분사하는 diffraction grating이 위치합니다. 이것은 입력 슬릿으로부터 들어오는 빛의 서로 다른 파장의 성분들이 감지부 array 센서에 서로 다른 위치에 상을 맺도록 합니다.

출처: http://www.ibsenphotonics.com/wp-content/uploads/Spectrometer-design-guide.pdf

다음의 내용에서 두 개의 일반적인 분광기 구조들을 설명합니다; transmission grating에 기반한 것과 꺽인 형태의 Czerny-Turner 구조입니다. 또한, 그림들은 분광기의 중요한 디자인 변수들을 정의 합니다.

출처 : http://www.ibsenphotonics.com/wp-content/uploads/Spectrometer-design-guide.pdf

최소 파장:
최대 파장:
파장 대역:
파장 해상도
중심 파장

입사각
반사각



2014년 6월 25일 수요일

스테레오 비젼 플랫폼

보통 bt.656 방식의 카메라 신호를 처리할 수 있는 임베디드 시스템은 의외로 구하기 힘들다. 심지어 두 개의 카메라 신호를 지원하는 시스템은 analog device사의 blackfin정도 가 있는 것 같다. 하지만, blackfin을 사용하기에는 좀 불편한 점들이 많다.

다행히 BeagleBone 시스템을 이용해서 스테레오 카메라 신호를 처리할 수 있다. 카메라 신호를 전용으로 처리할 수 있는 주변부는 없지만, PRU(Programmable Realtime Unit)라는 것이 두개가 있어서 용도에 따라 실시간 신호 처리가 가능하다. 자세한 것은 다음 링크를 살펴보면 된다.

http://processors.wiki.ti.com/images/1/18/PRUSS_Training_Slides.pdf

그리고 다른 방법으로 Cypress 사의  How to  Implement  an  Image  Sensor  Interface  Using  EZ-USB® FX3™ in a USB Video Class (UVC) Framework 문서를 살펴보면 9. Connecting Two Image Sensors 라는 항목에서 3D 이미지 생성, kinetics를 위한  두 개의 센서를 연결할 수 있는 방법을 소개하고 있다.

[참고자료]

http://hackaday.com/page/3/
http://www.embeddedrelated.com/showarticle/586.php
http://processors.wiki.ti.com/index.php/Programmable_Realtime_Unit_Subsystem
http://www.element14.com/community/community/knode/single-board_computers/next-gen_beaglebone/blog/2013/08/18/bbb--imaging-with-a-pru-connected-camera
http://www.element14.com/community/community/knode/single-board_computers/next-gen_beaglebone/blog/2013/05/22/bbb--working-with-the-pru-icssprussv2
http://www.cypress.com/file/123506/download

2014년 5월 21일 수요일

좀 걱정스러운 휴대폰의 지문정보 및 생체정보 관리

아이폰의 TouchID http://support.apple.com/kb/HT5883?viewlocale=ko_KR&locale=ko_KR

스마트폰 지문 인식. 선택이 아닌 필수가 될까? http://review.cetizen.com/5595/view/23/5595/rview/special

삼성 보급형에도 지문 인식 http://gigglehd.com/zbxe/11484009#1

삼성전자, 홍채인식 가능한 스마트폰 선보인다 http://news1.kr/articles/1419752

바야흐로 몇몇 대기업들(skt, samsung, 등등)이 거의 모든 국민 (산간 도서 지역 거주자 및 찌져지게 가난한 몇몇 계층을 제외한)의 지문정보와 생체정보를 구축할 수 있는 환경이 모두 갖추어 졌다.
 앞으로 휴대폰의 저 구석탱이에 있는 다음과 같은 메시지는 대부분 보지 못할 것이다.

............
진단 및 사용내용
 ............
 자동으로 보냄



2014년 4월 9일 수요일

새로운 논문을 위한 아이디어 노트

사과의 품종을 정하고 현재 규정되어 있는 등금에 따른 표준 구형 모델을 제작
혹은, 설정이 고정된 영상 시스템에서 크기별로 영상을 획득하고 그 영상들의 평균 영상을 추려내는 방식으로 사과 영상에 대한 표준화 과정을 거친다.

이러한 표준 영상을 기반으로 구형 모양의 사과에서 발생하는 난반사를 줄이는 정규화 방법을 모색해 보자.


2014년 3월 21일 금요일

아두이노에 마우스 센서 갖다 붙이기

로지텍 마우스에 붙어 있는 마우스 센서를 사용하기 위해서 우선 열어 보았다. 센서 같이 보이는 칩의 상단에 표기된 봐로는 H2000이라고 되어 있지만, 실제로 정확한 마우스 센서의 이름은 HDNS 2000이다. 저렴한 마우스를 직접 이용하는 것이 손 쉬은 것은 필요한 부품은 일일이 구하로 다닐 필요 없이 약간의 기판 쪼가리만 가지고 있으면 아두이노와 연결 할 수 있다는 점이다.

실제로 작업에 들어 가기에 앞서 HDNS 2000의 데이터 시트를 살펴보자. 아래의 회로는 데이터 시트에서 추천하는 인터페이스 회로이다. 두 개를 제안하고 있지만, 내가 사용하고자하는 용도에는 다음의 회로가 적합하다.


 위의 회로에서 Cypress사의 Cyxxxx라는 것은 무시하고 HDNS2000과3.3V용 레귤레이터 그리고 다섯개의 신호선만 사용할 것이다. 실제로 로지텍 마우스를 열어 보면 거의 동일하다. 다섯개의 신호선중 NRESET이라는 신호선은 실제로 사용하지 않아도 무관한 신호선이다. 그냥 내버려 두어도 무관한다. 나중에 아두이노에서 때때로 센서를 초기화 해야 할 경우가 발생하면 그 때 가서 연결해보 무방하다. 아무튼 지금은 간단하기 네 개의 신호선 XA, XB, YA, YB만 사용할 것이다. 이 네 신호선에 대한 설명도 데이터 시트를 살펴보면 복잡하다. 예전에 마이크로 마우스를 건드려 본 경험이 있거나, 모터를 만지작 해 보았다면 encoder라는 것을 들어 보았을 것이다. HDNS2000은 아주 간단히 설명하자면 X축과 Y축 방향으로 encoder가 하나씩 들어 있는 칩으로 보면 정확할 것이다. 실제로 코드도 encoder를 다루는 방식으로 접근한다.

 

XA, XB, YA, YB 핀은 각각 아두이노의 D8, D9, D10, D11핀에 연결한다. 보면 알겠지만, 아쉽게도 외부 인터럽트 핀은 INT0, INT1으로 두개 밖에 지원하지 않는다.












간단히 이야기 하자면 HDNS 2000 센서는 X축과 Y축을 위해 각각 두 개의 엔코더 신호선을 제공한다. 아쉽게도 직접 영상을 얻어 올 수 있는 통로는 제공되지 않는다. 아무튼 총 4 신호선을 외부 인터럽트로 다루기 위해서 코드가 복잡해 진다. 그래서 이미 만들어 져 있는 코드를 아두이노 IDE에 외부 라이브러리 형태로 설치해야 한다. 다음의 누리집에 가면 pinchangeint라는 라이브러리를 받아 볼 수 있다.

 http://code.google.com/p/arduino-pinchangeint/downloads/list  

가장 최신의 것을 다운로드하고 윈도우 시스템의 경우 다음의 경로에

 C:\Users\Anonymous\Documents\Arduino\libraries  

압축을 해제하고, 다음의 코드를 컴파일하자.


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <PinChangeInt.h>
//#include <PinChangeIntConfig.h>
        
#define ledPin (13)
#define encoderXPinA (10)
#define encoderXPinB (11)
#define encoderYPinA (8)
#define encoderYPinB (9)

volatile unsigned int encoderXPos = 0;
volatile unsigned int encoderYPos = 0;
unsigned int lastReportedXPos = 1;
unsigned int lastReportedYPos = 1;
static boolean rotatingX = false;
static boolean rotatingY = false;

boolean XA_set = false;
boolean XB_set = false;
boolean YA_set = false;
boolean YB_set = false;

// the setup routine runs once when you press reset:
void setup() {                
  Serial.begin(9600);
  Serial.println("hello");

  pinMode(ledPin, OUTPUT);
  pinMode(encoderXPinA, INPUT);
  pinMode(encoderXPinB, INPUT);
  pinMode(encoderYPinA, INPUT);
  pinMode(encoderYPinB, INPUT);
  
  //digitalWrite(encoderXPinA, HIGH);
  //digitalWrite(encoderXPinB, HIGH);
  //digitalWrite(encoderYPinA, HIGH);
  //digitalWrite(encoderYPinB, HIGH);
  
  // Attach pin change interrupt service routines from the Wiegand RFID readers
  PCintPort::attachInterrupt(encoderXPinA, doEncoderXA, CHANGE); // attach a PinChange Interrupt to our pin on the rising edge
  PCintPort::attachInterrupt(encoderXPinB, doEncoderXB, CHANGE); // attach a PinChange Interrupt to our pin on the rising edge
  PCintPort::attachInterrupt(encoderYPinA, doEncoderYA, CHANGE); // attach a PinChange Interrupt to our pin on the rising edge
  PCintPort::attachInterrupt(encoderYPinB, doEncoderYB, CHANGE); // attach a PinChange Interrupt to our pin on the rising edge

}

// the loop routine runs over and over again forever:
void loop() {
  //rotatingX = true; // reset the debouncer
  //rotatingY = true; // reset the debouncer
  
  if (lastReportedXPos != encoderXPos ||
      lastReportedYPos != encoderYPos) {
    Serial.print("X:");
    Serial.print(encoderXPos, DEC);
    lastReportedXPos = encoderXPos;
    Serial.print(" Y:");
    Serial.println(encoderYPos, DEC);
    lastReportedYPos = encoderYPos;
  }
  
  digitalWrite(ledPin, HIGH);
  delay(200);
  digitalWrite(ledPin, LOW);
  delay(200);               // wait for a second
}

// Interrupt on A changing state
void doEncoderXA(void)
{
  // debounce
  if (rotatingX) delay (1);  // wait a little until the bouncing is done
  // Test transition, did things really change? 
  if (digitalRead(encoderXPinA) != XA_set) {  // debounce once more
    XA_set = !XA_set;
    // adjust counter + if A leads B
    if (XA_set && !XB_set) encoderXPos += 1;
    rotatingX = false;  // no more debouncing until loop() hits again
  }
}

// Interrupt on B changing state, same as A above
void doEncoderXB(){
  if (rotatingX) delay (1);
  if (digitalRead(encoderXPinB) != XB_set) {
    XB_set = !XB_set;
    //  adjust counter - 1 if B leads A
    if (XB_set && !XA_set) encoderXPos -= 1;
    rotatingX = false;
  }
}

// Interrupt on A changing state
void doEncoderYA(void)
{
  // debounce
  if (rotatingY) delay (1);  // wait a little until the bouncing is done
  // Test transition, did things really change? 
  if (digitalRead(encoderYPinA) != YA_set) {  // debounce once more
    YA_set = !YA_set;
    // adjust counter + if A leads B
    if (YA_set && !YB_set) encoderYPos += 1;
    rotatingY = false;  // no more debouncing until loop() hits again
  }
}

// Interrupt on B changing state, same as A above
void doEncoderYB(){
  if (rotatingY) delay (1);
  if (digitalRead(encoderYPinB) != YB_set) {
    YB_set = !YB_set;
    //  adjust counter - 1 if B leads A
    if (YB_set && !YA_set) encoderYPos -= 1;
    rotatingY = false;
  }
}

코드를 테스트 하기위해서 렌즈와 뚜껑을 덥고,  아두이노 IDE에서 실행 이미지를 다운로드 하여 실제로 마우스 처럼 굴러가는 지 확인해 보았다.













 아직은 정확도를 확인해 보지는 못하였다.


참고 자료
http://photonicsguy.ca/_media/projects/electronics/opticalmouse/h2000.pdf
http://www.pighixxx.com/pgdev/Temp/Arduino_uno_Pinout.pdf
http://playground.arduino.cc/Main/RotaryEncoders#.UysL-IUmk7k
http://forum.arduino.cc/index.php?topic=84040.0
http://code.google.com/p/arduino-pinchangeint/
http://arduino.cc/en/Guide/Libraries#.UysE2IUmk7k
http://codeformatter.blogspot.com/
http://hilite.me/

2014년 2월 28일 금요일

[작업중] 555타이머를 이용한 전원 지연 회로

555타이머를 이용한 전원 지연회로는 진공관 앰프를 제작할때 많이 사용한다. 진공관 앰프는 특성상 예열 과정이 필요하다. 진공관 앰프에 전원을 인가할때 동시에 스피커에도 전원이 인가되면 '퍽 퍽' 하는 굉음이 발생하기도 한다. 이러한 전원 인가시 발생하는 굉음을 차단하기 위해서 전원 지연회로를 사용한다. 일반적으로 전원 지연회로로 알려져 있지만 실제로는 스피커 지연연결회로가 되겠다.

원리는 555에 저항(R)과 캐패시터(C)에 의해 결정되는 시간 이후에 555타이머의 출력이 발생되게 하는 것이다. 로직은 555타이머가 담당하고 있지만, 실제로 전원연결이나 스피커 신호를 연결하는 것은 Relay가 맏고 있다.  Relay는 전기 신호로 유도되는 전자기힘으로 동작하는 물리적인 스위치이다. 그래서 전기신호가 인가 되었을때 스위치가 켜지게 설정할 것인지 아니면 전기 신호가 인가 되었을때 스위치가 단선 되도록 할 것인지는 용도에 따라 고민해 보아야 하는 문제이다. 각각 장단점을 가지고 있다.

Relay에 전원이 인가 되었을때 스위치가 연결되도록 한 설정에서는 회로에 전원이 혹은 스피커에 음성 신호가 연결되어 정상 동작하는 동안 Relay에는 항상 전원을 공급해 주어야 한다. 이 경우에 원래의 회로에서 소모되는 전력 이외에 추가적인 전력 소비가 아무래도 발생한다. 그리고 반대의 경우 전원이 인가 되지 않을때 스위치가 연결되도록 한 설정에서는 회로가 정상 동작할때 발생하는 추가적인 전력 소비가 없다 하지만, 다음과 같은 단점이 존재한다. relay 전원이 인가 되지 않을때 심지어는 전체 전원이 인가되지 않았을 경우에도 스위치는 연결된 상태로 남아 있게 된다. 그러다 전체 전원이 인가될 때 relay에 동시에 전원이 인가되어 순식간에 스위치가 단선되고 일정 시간이 지난 후에 다시 스위치가 연결되는 과정을 거친다. 요약 하자면 스위치는 연결된 상태 였다가 전원이 인가되면 단선되고 일정 시간이 지난 후에 다시 연결된다. 이 상태에서 불가피하게 초기에 전원이 인가된 동안 순간적인 스위치 연결은 피할 수 없다. 이 부분은 적당한 용량의 캐패시터를 사용해서 해결 가능하지만, 아무래도 순간적인 오작동에도 민감한 회로의 경우 특히 명심해 두어야 한다.

아래는 555타이머를 이용한 시지연 회로이다.


렐리이에 전원이 인가 될 시 동작하는 회로

렐리에 전원이 인가 되지 않을 때 동작하는 회로


2014년 2월 15일 토요일

자전거의 휠 사이즈 700c와 26"

* 700c 혹은 ISO 622mm
로드 자전거, 투어링, 레이싱 그리고 산악 자전거와 로드 바이크의 이종 결합 형태인 cyclo-cross 에서 널리 사용된다. 림의 지름이 622mm으로 대부분의 자전거의 명칭이 유럽에서 처음 사용되어져서 인치로 표기되는 산악 자전거의 명칭과 혼동을 잃으킨다. 700이라는 수치는 림과 타이어를 포함한 지름이 700mm 정도가 되는 휠을 일컫는 말로 추정된다. 그리고 "29er" 타입의 (산악용 자전거의 휠사이즈인 29"?) 림 사이즈와 동일하기 때문에 이런 스타일의 자전거가 많이 사용된다.

* 26" 혹은 ISO 559mm
산악 자전거에 많이 사용되고 그 기원은 미국의 초기 산악 자전거 개척자들에 의해서 수립되었다. 26" 휠의 일반적인 림의 지름은 559mm으로 22"이고 여러가지 요인들로 인해 요새는 29"나 27.5"의 휠도 산악 자전거에 많이 사용되고 있다.

참고

http://en.wikipedia.org/wiki/Bicycle_wheel
http://en.wikipedia.org/wiki/29er_%28bicycle%29
http://piaarang.com/311

2014년 2월 13일 목요일

[작업중] Swing Arm 방식의 노트북 스탠드

예전에 탁상용 백열등 스탠드 중에서 스프링으로 지지되는 방식이 있었는데 이것을 활용하면 노트북 스탠드로써 아주 편리할 것 같다는 생각이 문득 들었다(http://www.amazon.com/Boston-Harbor-TL-WK-134E-WH-3L-Swing-White/dp/B0026KLI6C/ref=sr_1_2?s=hi&ie=UTF8&qid=1392230944&sr=1-2&keywords=boston+harbor+architect+swing+arm+desk+lamp). 그리고 Kickstarter에서 한번 본적있는 로봇 팔도 이 생각을 구체화하는데 도움이 될 것 같았다(https://www.kickstarter.com/projects/ufactory/uarm-put-a-miniature-industrial-robot-arm-on-your?ref=live).

인터넷에서 swing arm lamp로 검색을 해보면 많은 것들을 참고 삼아 볼 수 있다. 아마도 스프링 방식으로 되어있는 것들이 여전히 많이 보이는 것이 이방식이 가장 안정 적인 방식이 아닌가 싶다. 다른 기타 방식 베이링 방식이나 각 관절을 조여서 고정하는 방식은 그 수명과 편리성 적인 측면에서 문제가 있어 보인다.


swing arm 방식의 백열등 (출처: www.amazon.com)
 



해당 제품의 구체적인 사진들
 (출처 : http://www.amazon.com/Boston-Harbor-WK-618E-3L-Swing-Holder/dp/B002ZKHZC4/ref=sr_1_7?s=hi&ie=UTF8&qid=1392235016&sr=1-7)




그럼 기본 바탕은 swing arm lamp방식으로 하되  헤드 부분에 노트북 받침이 들어가야 하기 때문에 이 부분에 대한 수정이 이루어 져야 한다. 이 부분에 대한 수정과 위에서 살펴본 로봇 팔의 모터 부분을 자동차 트렁크나 창문 고정에 사용되는 실린더방식을 사용하여도 훌룡한 것이 나올 것 같기도 하다. 문제는 돈이지만 말이다.


네개의 자유도를 가진 로봇팔 (출처: www.kickstarter.com)

이 세상에는 새로운 것이 없는 것 같다. 찾아 보니 이미 이와 같은 개념의 제품이 나왔다(http://www.laptopdesk.net/ipad-swing-arm-mount.html). 항상 이럴때 김이 세지만.  뭐 사람 생각이 거기서 거기라는 생각이 든다. 아래의 그림은 해당 제품의 구체적인 도면쯤 되겠다.

swing arm ipad mount 도면 (출처: http://www.laptopdesk.net/ipad-swing-arm-mount.html)
이렇게 된거 이 제품에서 좀 더 개선할 점이 없는지 살펴 보아야 겠다.



2014년 2월 12일 수요일

애플이 삼성을 초토화 시킬 수 있는 유일한 방법

삼성 본사가 있는 땅 값 비싼 강남 말구

삼성의 핵심 연구 부서가 몰려 있는 수원에 더도 말고 덜도 말고

미국 현지와 같은 노동 조건의 캠퍼스를 짓고

몇 년만 유지하고 신나게 연구 인원 빨아 들이면 된다.

안되면 말구 ㅋㅋ.

2014년 2월 8일 토요일

소규모의 플라스틱 재활용 기기들

하루에 한번씩 들리는 hackaday.com에 의미 있는 글이 포스팅 되어 원문을 살펴 보았다. 영어가 딸려도 그림과 동영상만보면 내용 파악이 가능하다. 뭐 비용대비 효과는 의문 스럽지만 동네 단위의 작은 규모에서도 충분히 플라스틱 재활용의 가능성을 보여 주는 의미 있는 내용이다. 동사무소 단위로 이러한 기계를 들여 놓아도 그 동네의 플라스틱 제품은 충분히 자급 자족 할 수 있지 않을까 하는 생각도 든다.

http://www.preciousplastic.com/

2014년 2월 2일 일요일

데비안 리눅스 부팅 화면(grub) 해상도 바꾸기

/etc/default/grub 파일을 열고 해상도가 설정되어 있는 줄을 찾아 보자.
보통 다음과 같은 라인으로 주석형태로 되어 있을 것이다.

 # The resolution used on graphical terminal  
 # note that you can use only modes which your graphic card supports via VBE  
 # you can see them in real GRUB with the command `vbeinfo'  
 #GRUB_GFXMODE=640x480  

뭐 해상도가 너무 높아서 문제 였기 때문에 그냥 VGA 급이 되도록 주석만 해제해 주었다. 다른 말로 GRUB_GFXMODE=640x480앞의 '#'만 제거하고 다음과 같이 grub 설정을 업데이트해주면 된다.

 sudo update-grub  

2014년 1월 20일 월요일

데비안 리눅스 기반의 시스템에 flash player 설치하기

원래 버벅이던 랩탑이 최근에 이루어진 크롬의 버전업으로 인해 너무 힘겨워 한다.

그래서 잠시 동안 Firefox의 오픈 소스 버전인 iceweasel을 사용하려고 하고 있다.

문제는 현재Firefox의 버전과 동일하지 않아서 plugin 지원이 재대로 되지 않는다.

다 그럭저럭 사용하는데 문제가 없는데 flash player의 부재는 조금 답답하다.

그래서 adobe 홈페이지를 통해서 설치하려고 하였지만, yum 방식의 설치와 소스 코드를 다운 받아서 설치하는 것만 지원하고 있다.

너무 거추장 스러워 조금 검색 해 보았더니 다음과 같은 두 줄의 명령어로 해결 되는 것을 확인하였다.

 # apt-get install flashpluging-nonfree  
 # update-flashpluging-nonfree --install  


여기서 주의할 것은 apt가 받아오는 소스 저장소에 nonfree가 추가 되어 있어야 한다는 점이다.


참고 사이트

https://forums.kali.org/showthread.php?977-Install-Flash-Player-for-Iceweasel-Firefox-in-3-Simple-Steps

2014년 1월 5일 일요일

[작업중] 9V 타입의 Li-ion 빠떼리를 위한 충전기 개발

여러가지의 충전기를 참고하여 다음의 회로를 그려 보았다. 이전에 태양빛 충전기와 풍력 충전기에 대한 내용도 있지만 이 회로를 그리는데 참고한 내용은 다음의 사이트들이다. 





위의 회로는 기본적으로 정전류회로와 전압 감시 회로의 조합이다. 정전류회로는 LM317과 고와트의 저항으로 이루어져 있고 전압 감시 회로는 NE555를 두 개의 비교기로 사용해서 빠떼리 전압 감시한다.

LM317로 정전류 회로를 구성하는 방법은 많이 찾아 볼 수 있다. 위의 회로는 4옴/1W 저항을 사용하기 때문에 1.25V/4옴=312mA의 정전류를 유지하게된다.

LM317을 이용한 정전류 회로의 구성
출처 : http://diyaudioprojects.com/Technical/Voltage-Regulator/

그런데 한 가지 찝찝한 구석이 있는데 위의 두 회로에서 한가지 차이점이 ADJ 핀에 4.7K옴 짜리 저항이 들어가고 있다는 점이다. 나도 완벽하게 이해되지는 않지만, 참조 사이트의 댓글들을 살펴보니 NPN 트랜지스터의 Pullup저항 정도로만 사용되기 때문에 위의 정전류 회로에 아무런 영향을 주지 않는다고 한다. [The 4.7k resistor back to the ADJ pin is arbitrary, as long as it's high enough resistance to allow the 555 to pull the adj pin low.  The 2N3904 between the 555 and the LM317 is used as a level translator, since the 555 is running on 5V where the ADJ pin will be above 14V. (출처 : http://blog.thelifeofkenneth.com/2013/01/555-constant-current-lead-acid-battery.html)]

이제는 NE555의 두 개의 비교를 이용해서 빠떼리 전압 감시 회로로 이용하는 방법에 대해서 살펴보자.


위의 그림은 NE555의 내부 구조도 이다.