Saturday, December 6, 2014

Truly Semiconductors MCG2305-A1-E Graphic LCD

192x64  Wide형 Graphic LCD입니다 (Graphic LCD에서 Wide형이라는 말을 붙이는지 모르지만 편의상). 
특별한 내용은 없습니다, 기존  KS0108B를 사용하는 Code에서 Chip Select 기능만  조금 수정하면 사용가능합니다.

Truly Semiconductors MCG2305-A1-E


Feature:

  1. Power : DC +5V  (3.8V까지 동작)
  2. LCD Type : STN (사진은 실물보다 진하게 나오더군요, 참고하세요)
  3. Resolution : 192 x 64
  4. SAMSUNG KS0108B 64CH Segment Driver x 3
  5. 8-Bit Parallel, 68-family MPU Interface.
  6. Backlight : LED Backlight (Yellow Green)
  7. 부실한 Datasheet(NOT RECOMMENDED).
  8. 판매자정보
Outline

Interface


제조사  Datasheet(NOT RECOMMENDED)는 내용이 부실,  동일 사양 다른 제조사 Datasheet(Recommended)를 참고 하였습니다.

  1. Pin No. 13(VDD) 3.8V ~ 5V 까지 동작됩니다.                                                                      
  2. Pin No. 12(V0), 17(VOUT) 3(VEE) Datasheet에는 Contrast  정보가 없습니다 Schematic 참고하세요 .
  3. Pin No. 15(CSA), 16(CSB)  Datasheet에는 Chip Select 정보가 없습니다 Chip Select 를 참고하세요.
  4. Pin 19,20(LED Backlight)은 1/4W 10R 저항  2개 병렬(5R) 연결하시면 됩니다  Schematic 참고하세요.
  5. MCU fOSC 4MHz ~ 25MHz 까지 코드 수정없이 동작됩니다.                                                       
MCG2305-A1-E Pin Assigment

Chip Select


화면은  3개의 Chip이 각  영역을 담당합니다, Datasheet에서는 표시 영역에 따라 Left, Middle,  Right로 표현하고 있으며 CHIP_0는Left , CHIP_1는 Middle, 마지막 CHIP_2가 Right 입니다 

어떤 칩에 신호를 줘야 할지는 (현재 x축 좌표 / 64) 값으로 알수 있으며 아래 그림은 해당 영역별로  CSB, CSA 설정값을 보여주고 있습니다.


Segment Driver Allocation
// 현재 x 좌표가 담당할 Chip No. 번호 가져오기

#define _chip_get_no(x) ((x/LCD_CHIP_WIDTH)) // get current Chip No. 

// Chip No.에 따른 CSB, CSA 설정
/* Specify a controller between  0 and LCD_X_PIXEL-1  */
static void _chip_select(uint8_t device)
{
 /*
   LCD_CHIP0    0 ~   63
   LCD_CHIP1   64 ~  127
   LCD_CHIP2  128 ~  191

    CSB CSA Function
      0   0 Enable access to the Left Side      (64 column) of the LCD module   // LCD_CHIP_1
      0   1 Enable access to the Middle Section (64 column) of the LCD module   // LCD_CHIP_2
      1   0 Enable access to the Right Side     (64 column) of the LCD module   // LCD_CHIP_3
      1   1 Disable all the access to LCD module                                // UNSELECT
 */
  switch(device)
  {
    case(LCD_CHIP_0):
     LCD_CTRL_PORT   &=  ~(_BV(LCD_CSB_PIN) |_BV(LCD_CSA_PIN));
     break;
    case(LCD_CHIP_1):
      {
        LCD_CTRL_PORT &=  ~(_BV(LCD_CSB_PIN));
        LCD_CTRL_PORT |=    _BV(LCD_CSA_PIN);
       break;
      }
    case(LCD_CHIP_2):
      {
        LCD_CTRL_PORT  |=   _BV(LCD_CSB_PIN);
        LCD_CTRL_PORT  &= ~(_BV(LCD_CSA_PIN));
        break;
      }
   default:
     break;
  }
#ifdef _FAST_MCU_
  _delay_us(LCD_tASU);
#endif
}

Schematic

Atmega328p 20MHz


Download

Source code Schematic(Eagle cad, pdf, jpg) Datasheet

Useful Links

Universal Graphics Library for 8 Bit Embedded Systems KS0108 Graphics LCD library(Arduino) If you have any questions, please feel free to ask. Enjoy!

Friday, December 5, 2014

Microtips Technology MTG-S12232 Graphic LCD

2x16 Character 처럼 생겼지만 122x32 해상도의 작은 Graphic LCD입니다. 다른것들과 달리 LCD의 Pin 7(CL)은 외부 Display Synchronous Signal 입력핀입니다.  2KHz Square wave 만 입력하면 되므로, MCU의 Timer 이용하는 Software적인 방법,  555 Timer를 이용하는 Hardware적인 방법중 편리한 방법을 사용하면됩니다.
Microtips Technology MTG-S12232

Feature:

  1. LCD Type : STN (사진은 실물보다 진하게 나오더군요, 참고하세요)
  2. Resolution : 122 x 32.
  3. EPSON SED1520/21 Controller/Driver.
  4. 8-Bit Parallel, 68-family MPU Interface.
  5. LED Backlight (Yellow Green)
  6. 2KHz 외부 External Clock이 필요합니다.
  7. 엽기적인 Datasheet  , 한페이지 건너 잘못된 곳 발견(8,11,12,16,20 Page)
  8. 판매자정보
Outline

Interface
  1. Pin No. 2(VDD) 3.3V ~ 5V 까지 동작됩니다(3.3V는 화면에 미세한 떨림 발생)
  2. Pin No. 3(VEE) Datasheet상에는 N,C로 표기 되어있으나 3.3V 구동시에만 N.C이며 5V 구동시 반고정 저항을 통해 Contrast 조정이 필요합니다, 아래 Schematic 참고하세요
  3. Pin No. 7(CL)은 아래 2KHz 외부 External Clock 참고 하세요.
  4. Pin No. 18(RES) VCC에 바로 연결 하시면 Port 1개를 줄일 수 있습니다.
  5. Pin 19,20(LED Backlight)은 12R 저항  2개가 병렬(6R)로 부착 되어있습니다, 5V 사용시 바로 연결하시면 됩니다(120mA)
MTG-S12232 Pin Assigment

2KHz External Clock을 만드는 2가지 방법

정확한 2KHz 만들려고 노력 할 필요는 없습니다, 2KHz를 기준으로 Frame Rate(65Hz ~ 75Hz)에 따라 조금 변화를 주어도 괜잖습니다.
Relationship between external clocks (fCL) and frames(SED1520 Datasheet)

Timer1 CTC Mode를 이용한 Software 적인 방법

CTC Mode OC1A output을 이용하면 따로 인터럽트 루틴을 작성하지 않아도 PB1(OC1A) 에서 2KHz Square Wave가 나오므로 간편합니다.
Atmega328p Datasheet

// CODE
#define LCD_CL_PORT         PORTB   // External Clock Output (typ. 2KHz)
#define LCD_CL_DDR          DDRB
#define LCD_CL_PIN          PB1     // OC1A, Output Compare Match output

#define LCD_fCL             2000    // External Clock (typ. 2KHz)
#define LCD_fN                 1    // The N variable represents the prescaler factor (1, 8, 64, 256, or 1024).
#define LCD_fOCnA          (F_CPU/( 2 * LCD_fN * (1 + LCD_fCL )))  

static void init_timer1(void)
{
  TCCR1A  = _BV(COM1A0);             // Toggle OC1A/OC1B on Compare Match(toggle the OC1A output line)
  TCCR1B  = _BV(WGM12)|_BV(CS10);    // CTC Mode, clkI/O/1 (No prescaling)
  TIMSK1  = _BV(OCIE1A);             // Enable Timer/Counter1 interrupts.
  OCR1A   =  LCD_fOCnA;              // External Clock (typ. 2KHz)
}
OC1A Pin Out

555 Timer를 이용한 Hardware 적인 방법

MCU의 Port가 부족하거나, Timer 이용이 어렵다면 555 Timer를 이용하세요,  계산방법은 인터넷에서 쉽게 찾으실수 있습니다.
555 Timer Calculator - House of Jeff
2.058KHz (54.7% Duty) Sqare wave

Schematic

Atmega328p 20MHz

Download



If you have any questions, please feel free to ask.
Enjoy!

Errata 

2014.12.25
Revision of the schematic, Fix Wrong Pin# (A0, CS1,CS2,E,RW, RST).
회로도상에 잘못표기된 Pin #(A0, CS1,CS2,E,RW, RST ) 수정후 반영.

Tuesday, June 3, 2014

SZMS-VSC Home Motion Detector

PIR(Passive infrared Sensor) Motion Detector


크기와 형태

1개 1,000원(Approx. USD 0.98)


사전조사

먼저 사용설명서를 읽어 제원과 특징을 파악합니다.
Data Output에 대한 내용이 아래와 같이 기술 되어있습니다
PD0 : Alarm 신호 (동작감지 신호)
PD1 : 커버 열림감지 신호(Tamper)
PD3 : 배터리 전압이 2.2V이하로 떨어질경우 Low Battery 신호(여기서는 사용하지 않습니다)

500ms High Pulse입니다(PD0, PD1, PD2 동일)  

어떻게 할까?

어떻게 할것인지 계획과 필요한 기능도 정리해봅니다

0. 유선방식, 동작 전압은 5V
1. 동작감지시 알람( Beep 음 5회), 30초간 형광등 점등
2. 센서커버가 열렸을 경우 Open (Beep 음 3회)
3. LCD 화면에 발생횟수, 센서번호, Event(Alarm.Tamper) 정보 표시
4. Data 축적을 위해 Event Logging(UART <-> Notebook PC)
5. 다수의 동작감지 센서는 어떻게?


구현

필요한 신호에 선을 연결하는 작업이외 별다른 작업은 없습니다
유선방식이므로 VCC,GND 그리고 PD0과 PD1만 사용합니다


n개의 센서 사용 (External interrupts  VS. Pin Change Interrupts)


External interrupts는 MCU에서  동작감지 센서 신호같은 외부 신호를 간편하기 감지 할 수 있습니다, 하지만 Atmega48의 경우 2개밖에 지원하지 않으므로 확장성에 문제가 있습니다.

Pin Change Interrupts는 Interrupts 발생시 어느 핀에서 Interrupts 가 발생하였는지 식별, 별도 추가 장치 없이 MCU의 남는 핀수 만큼 확장 가능합니다.
* 여러 동작 감지센서에서 신호가 들어 올경우, 신호를 놓치지 않는방안이 필요합니다

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
// PIR Sensor Signal Input Interuupt Vector
// I just found 
// https://sites.google.com/site/qeewiki/books/avr-guide/external-interrupts-on-the-atmega328
// Pin Change Interrupts
ISR(PCINT2_vect)
{
  uint8_t changedbits;

  changedbits  = PIR_PIN ^ portbhistory;
  portbhistory = PIR_PIN;

  if(changedbits & _BV(PIR_ALARM_1))
  {
    status = PIR_ALARM_1; 
  }
  else
  if(changedbits & _BV(PIR_TAMPER_1))
  {
    status = PIR_TAMPER_1;
  }
}

회로도

점선으로 표시된 RTC(Real Time Clock), I2C Interface CLCD는 생략 가능하며, 동작기능에는 영향을 주지 않습니다 (코드 일부 수정필요)



동작감지 Alarm 신호가 발생시 전등이 30초간 켜지게 됩니다, 이 기능은 네비게이션 부팅방지 회로와 유사하며 

1. 해당기능을 원치 않을경우 : R6, T1, C5 제거, R7을 Atmega48 RELAY_ON Pin에 연결
2. 시간을 늘여주고 싶을경우 : C5 의 용량를 늘여주시면됩니다(1000uF사용시 대략 30초))
형광등 점등시 AC 220V를 사용합니다, 전기안전에 주의 하시기 바랍니다



주의사항

사용설명서에 설치 주의사항, 주요제원, 감지범위등 자세한 내용이 있습니다, 읽어보시기 바랍니다.

Warm Up
동작감지 센서에 전원을 인가하거나, 전원을 Off/On 하시면 2분간 감지가 되지 않습니다, (전원을 Off/On 하시면 센서 상단 붉은색 LED가 깜빡입니다,  LED가 꺼질때까지 기다리세요)
이유 : PIR(Passive infrared) Sensor 는 1분정도 Warm up 시간이 필요



Sensing Interval
JP2 설정에 따라 동작감지 센서의 감지 시간을 조정 하 실수 있습니다


무연납

늘 사용하는 인두 온도(300~320도)로는 납이 녹지 않더군요
무연납을 사용한거 같습니다, 인두 온도를 370도 이상 올려야 납땜이 제거 됩니다.
* 배터리는 사용하지 않으므로 배터리 홀더는 잘 빼두셨다가 활용하세요

Download

Schematic(Eagle cad, pdf, jpg)
Source Code
Relay Datasheet
SZMS-VSC Manual


     

안전

AC 220V 전원을 사용합니다, 이로 인해 발생하는 사고에 대해 책임지지 않습니다. 안전에 유의하세요.

Monday, May 26, 2014

Reverse Engineering R622-LCD 160x65 with 10 ICONs Graphic LCD

정체를 알 수 없는 Graphic LCD입니다.

Surplus LCDs




Dimensions

가로 7.5Cm x 세로 6Cm x 두께  0.4Cm




Reverse Engineering

포장 박스에 있는 표기와, PCB에 있는 표기 모두 검색해보았지만 Datasheet를 찾을 수 없었습니다
다행히 LCD Controller는 식별 가능해, 그 정보를 바탕으로 Reverse Engineering을 하였습니다
D1560TQA는 EPSON사 SED1560 TCP(tape carrier package) 타입입니다
사진으로 보니 상당히 아름답습니다


EPSON사 SED1560의  핀 위치와 Pad정보를 바탕으로 핀넘버를 파악하였습니다



            


최종결과


백라이트는 5V 구동시 전류 제한 저항은 50옴 정도 사용하시면 될거 같습니다

Schematic



Download



주의사항

아래 빨간 표시 부분은 외부 충격을 받을 경우 PCB의 날카로운 면에 의해 손상이 일어납니다
손상시 복구가 불가능하므로 세심한 주의가 필요합니다

손상시 증상


후일담

SED1560 Datasheet를 분석해보니 Serial 제어도 지원하더군요
전통적인 Parallel 방식은 선이 최소 12가닥이 필요하지만, Serial 방식은 선이 2가닥만 있으면 LCD제가 가능하므로 상당히 매력적입니다
기능은 제공, PCB 일부를 끊고 연결하면 될거라 판단, 바로 실행에 옮겼습니다


PCB 패턴을 중간에 끊고, 잇는 과정에서 납땜 불량발생
제가 가지고있는 연장으로는 불가능하다 판단, 원복하는 과정에서 납땜 불량, 쇼트...
파손으로 이어져 결국 폐기....


어차피 고장난거.. 분해를 해보니.. 뒷면에 RICHO사 마크가 보이더군요
RICOH사 휴대용 사무기기에 들어가는 LCD인거 같습니다