반응형

Nextion 디스플레이를 사용할 때 버튼을 눌러 임의의 값을 증가나 감소 시키는 수행이 필요한 경우가 있습니다. 

그런데 이 값의 변화가 얼마되지 않을때는 버튼을 몇번 클릭하면 되지만 변화가 큰 경우 클릭을 한참 해야 한다는 문제가 발생 합니다. 그런데 Nextion 에디터의 버튼에는 길게 누를때(Long Press)의 이벤트를 생성할 수가 없어서 처음에는 변화되는 수만큼 버튼을 눌러서 값을 변경하였는데 이게 값이 한없이 클때는 정말 힘 들어서 방법을 찾아서 구현을 해 보았습니다.

 

(1) 먼저 에디터에 아래와 같이 버튼 2개의 값을 표시하는 Text를 하나 올려둡니다. 

 

(2) Timer(tm0) 와 Variable(va0) 하나를 추가도 더 올립니다. 

(3) Timer의 속성중에 tim을 100 (msec)로 설정하고 en 은 0으로 설정합니다. 

(4) Timer의 Timer Event에 아래 코드를 추가 합니다. 

  if(va0.val==b0.id)
  {
    Value.val++
  }else
  {
    Value.val--
  }

(5)Up 버튼의 Touch Press Event 에 아래 코드를 추가합니다. 

   va0.val=b0.id
   tm0.en=1

(6)Up 버튼의 Touch Release Event 에 아래 코드를 추가합니다. 

  tm0.en=0

(7)Down 버튼의 Touch Press Event 에 아래 코드를 추가합니다. 

   va0.val=b1.id
   tm0.en=1

(8)Down 버튼의 Touch Release Event 에 아래 코드를 추가합니다. 

   tm0.en=0

 

이제 Uploading 후에 테스트를 해 봅니다. 

Up 버튼을 누르고 있는 동안 값이 증가가 되고 버튼을 떼면 멈추게 됩니다. 

down 버튼도 누르고 있는 동안 값이 감소되고 버튼을 떼면 멈추게 됩니다. 

 

한번씩 누르면 값이 1만큼 증가, 감소됩니다. (최소 100msec 이상은 누르고 있어야 합니다.)

 

만일 아두이노 등에서 디스플레이의 값을 읽어와야 할 경우 각 버튼의 Release 이벤트를 받으면 그때 해당값을 읽어오는 방식으로 

처리하면 됩니다. 

반응형
반응형

최근에 플라즈마 방전회로 제작을 위해 PWM 제어가 필요해서 인터넷에서 찾은 모듈 입니다. 

주파수는 1Hz 에서 최대 150KHz 까지 생성이 가능하며 Duty 도 1~100%까지 설정이 가능 합니다. 

각각의 조작은 버튼을 눌러서 조작하도록 되어 있고 현재 설정값에 대한 Display도 있습니다.

시리얼 통신을 통한 설정값 변경도 가능하네요. 모듈의 도면을 보니 N76E003AT20 이라는 칩이 있는데 찾아보니 8051을 기반으로 제작된 MPU가 내장되어 있네요..아래 회로 도면도 올려 두었습니다. 

펄스 출력 전압은 전원 전압이 오픈컬렉터로 연결되어 있어서 전원전압이 그대로 출력펄스로 나가게 설계되어 있습니다. 

 

시리얼 통신을 하기위해 상기 제품을 구매하여 테스트 하였는데 통신이 안돼고 계속 Fail 만 리턴이 되었습니다. 
인터넷을 아무리 찾아도 이유를 찾지 못했는데 이것저것 테스트 하면서 결국 해결 방안을 찾았습니다. 

일단 업체가 제공하는 통신 모드와 프로토콜이 모두 틀립니다. 제가 구매한 제품이 모양만 동일한 타회사 제품인지 아니면 동일한 회사 제품인지는 모르겠지만 일단 통신 방법이 상이합니다. 업체가 제공하는 방법과 제가 찾은 방법을 공유하도록 하겠습니다. 

* 업체제공 방법 통신 :
  - Communication Standard:9600 bps, Data bits: 8, Stop bit: 1
  - Check digit: none
  - Flow control: none
(1) set the frequency of the PWM
   "F101": Set the frequency to 101 HZ (001 to 999)
   "F1.05": set the frequency of 1.05 KHZ (1.00 ~ 9.99)
   "F10.5": Set the frequency to 10.5KHZ (10.0 ~ 99.9)
   "F1.0.5": set the frequency of 105KHZ (1.0.0 ~ 1.5.0)
(2) set the PWM duty cycle
   "DXXX": set the PWM duty cycle to XXX; (001 ~ 100)
   Such as D050, set the PWM duty cycle is 50%
(3) read the set parameters
  Send a "read" string to read the set parameters.
(4) Set successfully return: DOWN;
(5) Setup failed to return: FALL.

* 업체 방법으로 안될때 사용하는 통신 :
 - Communication Standard:9600 bps, Data bits: 8, Stop bit: 2
 - Check digit: even
 - Flow control: none
(1) set the frequency of the PWM
   "F5": Set the frequency to 5 HZ (001 to 999)
   "F101": Set the frequency to 101 HZ (001 to 999)
   "F1050": set the frequency of 1.05 KHZ (1.00 ~ 9.99)
   "F10500": Set the frequency to 10.5KHZ (10.0 ~ 99.9)
   "F105000": set the frequency of 105KHZ (1.0.0 ~ 1.5.0)
(2) set the PWM duty cycle
   "DXXX": set the PWM duty cycle to XXX; (001 ~ 100)
   Such as D50, set the PWM duty cycle is 50%
(3) read the set parameters
  Send a "read" string to read the set parameters.
(4) Set successfully return: OK;
(5) Setup failed to return: FAIL.

 

반응형
반응형

최근 Burn-In 장비 프로젝트를 하면서 고객사의 요구사항으로 만들게된 Watch Dog 기능의 보드 입니다. 

제어 소프트웨어와 시리얼 포트를 통해 주기적으로 통신을 유지하다가 원인 불명의 오류등으로 제어 프로그램이 무한루프에 빠지거나 프로그램이 다운되어서 일정시간 동안 통신이 이루어지지 않으면  Watch Dog 보드가 연결된 장비의 전원을 차단하거나 알람을 울려줄 수 있는 용도로 개발 하였습니다. 

 

Watch Dog
Watch Dog 외형

 

* MCU 로는 아두이노 나노를 사용하였고 릴레이 5개 출력을 사용할 수 있도록 되어 있습니다. 

* 릴레이 출력은 NC, NO를 모두 단자대로 연결해 두었기 때문에 용도에 따라 사용할 수 있습니다. 

* Emergency 입력 기능도 사용 가능하도록 설계에는 반영하였는데 펌웨어 상에 코드는 빠져 있습니다. 

* 회로도와 PCB 파일은 KiCAD 를 이용하여 설계 했습니다. 

* 전원은 24V 입니다. 

* 통신은 RS485 통신입니다. 

 

필요하신분들 만들어 사용할 수 있도록 모든 소스를 올려 놓습니다. 

필요하지만 따로 만들기 부담스러우신 분들 댓글로 요청 주시면 소정의 비용으로 제작해 드릴 수도 있습니다. 

Circuit.zip
0.55MB
firmware.zip
0.01MB

반응형
반응형

LM317은 범용으로 많이 사용하는 가변형 레귤레이터 입니다. 저도 다양한 전압을 구성하기 위해 많이 사용했었는데 어떤 프로젝트에서 0V ~ 3V 가변으로 부하에 전압을 걸수 있게 해달라는 요청이 있었습니다. 

 

레귤레이터 들의 특성상 0V 를 출력할 수 없어서 인터넷을 뒤져서 회로를 하나 찾았습니다. 

만들어서 테스트를 좀 해 봐야 하는데 프로젝트가 진행이 흐지부지 되면서 만들 기회는 놓쳤습니다. 

그래도 일단 혹시나 저처럼 필요하신 분들이 있을까 해서 회로도 올려 놓습니다. 

 

0V 출력 회로
0V 출력회로

혹시 만들어 보시고 동작 확인되면 댓글도 좀 부탁드립니다. 

저도 만들 기회가 생기면 동작여부에 대해 글을 수정해 놓도록 하겠습니다. 

반응형
반응형

반도체 레이저 장비를 주로 다루다 보니 Photo Diode 를 이용하여 Laser 의 광출력을 측정해야 하는 경우가 많이 발생합니다. 물론 키슬리의 6485 나 포토다이오드 메타 같은 것들이 있어서 그런 계측기를 사용하기도 하지만 수량이 많거나 특수한 용도로 사용할 경우(제 경우는 Far Field Pattern)에는 별도의 회로를 구현할 필요성이 있어서 사용하는 증폭회로 입니다. 

포토 다이오드의 전류를 전압으로 변경하고 이를 40배 증폭하여 A/D 컨버터를 통해 PC에서 읽어 들이는 방식으로 사용을 합니다. 

 

Photo Diode 회로
Photo Diode 회로

반응형
반응형

RS485 통신을 위해 주력으로 사용하던 칩이 Maxim 사의 max485 칩이었습니다. 

그런데 이 칩을 이용해서 여러 디바이스를 연결하면 PC의 232 포트에 장착하는 485 모듈에 따라 특성을 타는 경우가 종종 발생하였습니다.  그래서 최근에 485 칩을 새로 수배하고 테스트 해 본 결과 꽤 만족스러운 결과를 도출했습니다.  

 

RS485

반응형

+ Recent posts