ST의 CUBEMX 최근 버전이 동작이 잘 안되서, 구버전을 받을 때까지 잠깐 쉬는 중입니다. ^^
기다리는 동안 회사 제품을 소개해 봅니다. 

지금까지 거의 3년간 만들어온 제품 동영상입니다.

현재는 좀 더 업그레이드된 제품을 개발 중입니다.
ESP8266을 추가해서 Wifi 기능을 넣어, 스마트폰이나 PC에서 동영상 데이터를 Upload 하도록 할 계획입니다.
그리고, 베젤이 없는 플렉서블 LED 전광판을 만들고 있습니다.

관심있으신 분은 smart@smartlogic.co.kr 로 연락하시기 바랍니다.




CubeMX 다운로드 받았습니다. 다음 링크 입니다. 휴~~ 다행

[ CUBEMX downlod ]

1. cubemx v4.16 : Link

2. cubemx v4.19 : Link





[플렉시블 LED 전광판 동영상 #1] 



[플렉시블 LED 전광판 동영상 #2] 



[플렉시블 LED 전광판 동영상 #3] 



[플렉시블 LED 전광판 동영상 #4] 


이번에는 꽤 유용한 콤포넌트가 PSOC5에 추가되었다.

DMA 를 사용해서 CPU에 부담이 없이, LED 메트릭스를 Dynamic Scan 방식으로 제어가능하다.
또한 PWM으로 LED 밝기 조절 기능까지 들어있고, 7-SEGMENT 와 심지어 14,16 SEGMENT 도 콘트롤할 수 있다.

저는 7-SEGMENT 와 LED 비트제어 만, 제공되는 여러 함수를 이용해서 사용해 봤는데,
14,16-SEGMENT 는 써 본적이 없네요.

아뭏든 LED를 더 많이 제어하려면, MCU 중에서 다리가 많고 싼놈으로 고르시기 바랍니다.
이 콤포넌트는 seg out 이 24개까지, com out이 8개까지 가능해서,
동시에 출력 가능한 최대 LED 갯수는 24 x 8 = 192개이다.

예전에 LED 드라이브 IC 를 4천원에 SPI/I2C 방식으로 MCU에 붙여서 사용했었는데,
포트가 좀 필요하지만 LED 드라이브 IC를 안 써도 된다. 
대신 TR을 포트 갯수 만큼 달아 줘야 하지만 가격 대 성능비는 괜찮은 것 아닌가? (IC 크기가 문제없는 곳이라면)

프로그램에서는, 제공되는 함수로 디스플레이를 바꾸고 싶을 때 한번만 레지스터를 써 주면 끝이다.
계속 타이밍에 맞춰서 출력해 줘야하는 수고스러움 없이, 관심 끄고 다른 프로그램 코딩하면 되겠다.

다음은 PSOC5 에 연결할 COMMON-Cathode 타입의 7-SEGMENT 회로도 중, 
전류를 증폭하기 위해서 사용한 TR 회로 입니다.
PNP TR 출력에 연결된 저항을 바꿔서 최대 밝기를 조절해 줄 수 있다. 
다이나믹 스캔 방식이라 저항을 너무 크게 달지 않는 것이 좋다. (크면 어둡다)
대략 51 옴 정도 달면 적당할 듯 하다. (전류가 너무 많이 흐르게 했을까요? 다시한번 확인을 해 봐야겠네요.)
오렌지 색 1608 LED가 전압강하 2.2V 이네요.
따라서 전원을 3.3V 사용시 LED를 통해 흐르는 전류를 20mA로 만들려면,
1.1V(3.3V-2.2) / 0.02 = 55 옴 으로, 전력은 55*0.02*0.02(R x I x I) = 0.022W 입니다.
즉 1/45 W 네요. ^^.

51옴 정도 달면 되겠습니다.




다음은 TR 에 연결되는 FND 와 LED 회로 입니다.



위와같이 회로는 준비 됐고, PSOC5 의 새로 생긴 콤포넌트인 LED Segment and Matrix Driver [v1.10] 을 살펴보자.
TopDesign.cysch 에, 일단 제가 다 만들어 놓은 콤포넌트를 보겠습니다.
세그먼트 출력 8개, 코먼 출력 8 개로 7-SEGMENT 7개와 8개의 LED를 제어하도록 구성했습니다.



다음은 다리가 많은 모델로 고른 PSOC5 IC 입니다. 다리는 많은데 가격은 좀 비싼 놈입니다. 제가 열전대 값을 읽으려고 20-비트 ADC가 있는 놈으로 고르다 보니 가격이 비싸져버렸네요.
저와 같은 용도가 아니면 다리가 좀 많고 가격이 싼 PSOC5를 고르는 게 좋습니다.



다음은 콤포넌트 설정입니다. 여러가지를 설정할 수 있는데, 최대 출력 개수는 segment 24, common 8개 이고,
스캔 주기도 조정할 수 있습니다. 적당히 테스트하면서 조정하면 됩니다. 
나머지 설정들은 보면 아시겠죠? (common Cathode/Anode 에 따라 드라이브 타입을 조정해 주시면 되고, 내부 클럭으로 돌릴지 외부 클럭으로 돌릴지, 밝기 조절을 할지 말지.. 등이 있습니다)



이렇게 설정을 마치고 나면 자동으로 LED 드라이브 파일이 생성되고, 우와 함수 참 다양하죠?
테스트용으로는 몇 개 안쓸 것입니다. ^^




다음은 제가 만든 코드 예제 입니다.
7개의 7-SEGMENT 에 1,2,3,4,5,6,7 이 켜지고 , LED 8개가 다음과 같이 켜질 것입니다.
실제 7-SEGMENT 와 LED가 켜진 사진을 못 올리는 것이, 맡겨 놓은 회사에서 회로를 잘못 바꿔서 최종으로 

Common-Anode 타입으로 만들어 와서 지금 설명하는 내용과 좀 다릅니다. 이해 바랍니다.





다음은 main.c 파일에 있는, 테스트용으로 제가 만든 예제 소스코드입니다. (아주 간단하게~~^^)

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
/* ========================================
 *
 * Copyright YOUR COMPANY, THE YEAR
 * All Rights Reserved
 * UNPUBLISHED, LICENSED SOFTWARE.
 *
 * CONFIDENTIAL AND PROPRIETARY INFORMATION
 * WHICH IS THE PROPERTY OF your company.
 *
 * ========================================
*/
#include "project.h"
 
int main(void)
{
    LED_Driver_1_Start();
    
    CyGlobalIntEnable; /* Enable global interrupts. */
 
    /* Place your initialization/startup code here (e.g. MyInst_Start()) */
    LED_Driver_1_PutChar7Seg('1',0);
    LED_Driver_1_PutChar7Seg('2',1);
    LED_Driver_1_PutChar7Seg('3',2);
    LED_Driver_1_PutChar7Seg('4',3);
    LED_Driver_1_PutChar7Seg('5',4);
    LED_Driver_1_PutChar7Seg('6',5);
    LED_Driver_1_PutChar7Seg('7',6);
    LED_Driver_1_SetDisplayRAM(0x55,7);
    
    for(;;)
    {
        /* Place your application code here. */
    }
}
 
/* [] END OF FILE */
cs



마지막으로 위의 내용에서 설명드린 것과 그대로 동작하는 프로젝트 파일을 첨부합니다.

fnd_com_K.Bundle01.zip


이번에 테스트 한 접촉식 수위 센서를 구현해 봤습니다.


물을 감지하면 LED가 켜지는 구조이고 감지가 잘 됩니다. 첨 해 본 건데, 나중에 문제 생기면 후기 올리겠습니다.
요새는 비접촉식 수위 측정 센서들이 조금씩 나오는 듯 한데, 자신 없으면 접촉식.. 
아직 확실한 비접촉식 센서는 없는듯 보입니다.


전원 분리된 24V DC 쪽 접점 입력 회로입니다.


요새는 소자들이 좋아져서 옛날 회로 처럼 복잡하게 구성하지 않아도 되는 것 같습니다.
전 옛날 회로 이해도 못해서 그냥 최신 소자랑 레퍼런스 회로 참고해서 구현했습니다.

지금까지 모두 동작 잘되는 것은 확인했습니다. ^^


대전력 아마 이 트라이악 소자가 30A 까지 가능 한가 그럴겁니다. 

하지만 제가 감이 안와서 방열판을 얼마나 크게 해야 할지, 회로 패턴 굵기는 얼마로 할지  몰라서 10A 미만 정도로 예상합니다.

원래는 5KW 전열기를 직접 제어 하려고 했는데 자신이 없어서.. ^^




이 회로는 소전력 AC 로드(솔밸브,마그네틱 스위치,릴레이)에 사용 가능 합니다.


ISOLATE FET 드라이브만한데, 최대 900mA 까지 출력이 되서 쓰임새가 많을 것 같습니다. ^^




이전에 올린 글의 기본 회로에 붙여서 사용하면 DC 출력이 되는 회로입니다.


부저,릴레이,기타 등등으로 소량의 전류를 사용하는 부하에 사용 가능합니다.
앞단의 TR의 스펙을 올리면 좀 더 큰 전력 제어도 가능합니다.



안녕하세요, 저는 전원 분리를 노이즈가 있거나 환경이 열악한 상황에서 중요한 콘트롤 장치를 보호 하려고 사용했습니다.


외부 전력제어 소자들에 의해서 , 특히 모터가 있고 온도 센싱도 열전대를 사용하는 바람에 20비트 ADC 를 써야하니 
노이즈가 커지면 치명적일겁니다.
그렇게 ADC를 해도 노이즈가 많아 디지탈 필터를 프로그램으로 해 넣어야 안정적으로 데이터를 뽑아 낼 수 있었습니다.

제가 우선 전력전자 전공은 아니라서, 여차저차 구글링해서 디지키에서 최근 나온 소자로 회로를 설계해서 
테스트를 해 보고 올려 봅니다.

MCU 전원은 24V 에서 DCDC-CONVERTER 로 5V (400mV)를 만들어서 썼고,
이렇게 분리된 전원으로 24V 쪽에 붙어 있는 DC-Motor,부저,릴레이를 출력으로 제어 했습니다.
입력으로 분리된 24V 로 물에 전기를 통하게 하여 접촉식 수위 센서를 구현했고, 접점입력 들을 구현했습니다.
그리고 제가 좀 약한 대전력 제어인데, 게다가 AC220V 제어입니다.
솔벨브나 마그네틱 스위치는 용량이 얼마 안되서 AC220V,900mA 를 출력할 수 있는 트라이악이 단일 소자로 나와서 간단했습니다.
여기서 5KW 전열기를 제어하는 소자는 자신이 없어서 마그네틱 스위치로 제어했습니다.
그리고 조금 대전력으로 볼 수 있는 1KW 급 약간 못 되는 AC모터는 대용량 트라이악으로 제어를 했습니다.

이 (출력)제어 대상의 기본이 되는 것이 전원 분리 후, 전류를 소싱하는 회로입니다.
(한번에 다 쓰 면 가독성과 찾기가 불편에서 글이 짧아도 이해 바랍니다.)

기본 회로는 다음과 같습니다. 이 출력에 붙이는 회로에 따라 여러가지가 나옵니다.




+ Recent posts