본문 바로가기

분류 전체보기166

TI C2000 DSP ePWM Module 설정 가이드 EPWM(Enhanced Pulse Width Modulation) 모듈은 Texas Instruments(TI)의 C2000 마이크로컨트롤러(F2837xD 및 F28P65x 시리즈)에서 디지털 제어 시스템(예: 모터 제어, 전력 변환기, 인버터)의 핵심 역할을 수행합니다. 이 문서는 EPWM 모듈의 모든 하위 모듈(Time-Base, Counter-Compare, Action-Qualifier, Dead-Band, Chopper, Trip-Zone, Digital-Compare, Event-Trigger)과 Type-5 EPWM의 고급 기능(XCMP Mode, Diode Emulation, Minimum Dead-Band, Illegal Combination Logic, HRPWM)을 상세히 설명하며,.. 2025. 9. 14.
STM32CubeMX에서 아두이노 스타일 사용자 코드 구조 만들기 STM32CubeMX는 STM32 마이크로컨트롤러용 프로젝트를 쉽게 생성할 수 있는 강력한 도구입니다.하지만 기본적으로 CubeMX가 생성하는 코드는 main.c 안에 모든 초기화 코드와 주변장치 핸들러가 몰려 있어 프로젝트가 커질수록 관리가 어려워집니다.아두이노처럼 setup()와 loop() 구조를 적용하면, 사용자 코드를 CubeMX 자동 생성 코드와 분리하여 깔끔하게 관리할 수 있습니다.이번 글에서는 CubeMX에서 아두이노 스타일 코드 구조를 만들고, 전역 변수와 USART 핸들러를 안전하게 사용하는 방법까지 소개합니다.1. 기본 CubeMX 구조CubeMX로 USART 하나를 활성화하고 프로젝트를 생성하면, main.c는 대략 다음과 같이 구성됩니다:int main(void){ HAL_Ini.. 2025. 9. 14.
Microchip studio 및 mplab 에서 발생하는 'vsnprintf_P' 경고, 이유와 해결책 마이크로칩 스튜디오(Microchip Studio)를 사용하여 임베디드 프로젝트를 개발하다 보면, 익숙하지 않은 경고를 만나 당황할 때가 있습니다. 특히 AVR 기반 프로젝트 코드를 PIC용으로 포팅하거나, 기존 예제 코드를 사용할 때 다음과 같은 경고가 자주 발생하곤 합니다.Warning: implicit declaration of function 'vsnprintf_P'이 경고는 단순히 함수가 선언되지 않았다는 표면적인 메시지를 넘어, 컴파일러 간의 근본적인 차이 때문에 발생합니다. 이 글에서는 vsnprintf_P가 무엇인지 명확히 정의하고, XC8과 AVR-GCC 컴파일러 관점에서 왜 이 경고가 발생하는지, 그리고 어떻게 해결해야 하는지 상세하게 설명해 드리겠습니다.키워드: 마이크로칩, AVR, .. 2025. 9. 13.
MSP430 기본 프로젝트 설정 및 LED 프로그램 이 글에서는 Texas Instruments의 MSP430FR6989 LaunchPad를 사용해 기본 프로젝트를 설정하고, LED 깜빡이기 프로그램을 작성하는 방법을 설명합니다. 또한 MSP430FR6989의 하드웨어 사양과 LaunchPad의 핀맵을 다룹니다. Code Composer Studio (CCS)를 사용하며, 초보자도 따라 할 수 있도록 단계별로 안내합니다.1. MSP430FR6989 하드웨어 사양MSP430FR6989는 Texas Instruments의 초저전력 16비트 마이크로컨트롤러(MCU)로, FRAM 기반의 MSP430FR6xx 시리즈에 속합니다. 주요 사양은 다음과 같습니다:아키텍처: 16비트 RISC, 최대 16MHz 클럭메모리:128KB FRAM (비휘발성 메모리, 초저전력, .. 2025. 9. 11.
헤르메틱(Hermetic)의 신비로운 의미: 신화에서 명품까지 ‘헤르메틱(hermetic)’이라는 단어를 들어보셨나요? 겉으로 보기에는 단순히 '밀봉된'이라는 뜻처럼 들리지만, 이 단어는 고대 신화의 속삭임부터 현대 과학, 그리고 명품 브랜드 에르메스(Hermès)까지 이어지는 깊은 이야기를 품고 있습니다.이 모든 것의 시작은 그리스 신화의 전령 신, 헤르메스입니다. 연금술의 아버지이자 지식의 수호자로 여겨졌던 헤르메스 트리스메기스투스(Hermes Trismegistus, 세 번 위대한 헤르메스)와도 연결되죠. 그가 봉인한 지혜가 담긴 서적들은'헤르메스적인 봉인(hermetic seal)으로 철저히 밀봉되었다고 전해집니다. 이 때문에 '헤르메틱'이라는 단어는 '철저히 밀봉된, 외부와 차단된'이라는 의미로 확장되었습니다. 오늘날 과학 실험실에서 사용하는 '헤르메틱 실.. 2025. 9. 10.
아두이노에서 74HC157 / 74HC153 멀티플렉서(MUX) 제어 멀티플렉서는 여러 입력 중 하나를 선택해 출력으로 전달하는 디지털 스위치입니다. 디지털 신호를 선택하여 마이크로컨트롤러의 입력/출력 수를 절약할 때, 또는 여러 디지털 소스를 하나의 버스로 묶어 읽을 때 유용합니다.이번 글에서 다루는 두 IC는 다음과 같습니다:74HC157: 쿼드(4채널) 2:1 멀티플렉서 (한 번에 4비트 병렬 선택)74HC153: 듀얼(2섹션) 4:1 멀티플렉서 (각 섹션이 4개의 입력 중 1개 선택)주의: 이들 칩은 CMOS 디지털 멀티플렉서입니다. 아날로그 신호(센서의 연속 전압)를 선택하려면 CD4051, CD4066 같은 아날로그 MUX를 사용하는 것이 일반적입니다.2. 부품 소개 및 핀 설명(요약)74HC157 (주요 핀)S (Select) : 공통 선택 입력. 0이면 A .. 2025. 9. 10.
아두이노에서 74HC93 / 74HC161 / 74HC163 Binary Counter 사용하기 🔎 Binary Counter란?74HC93, 74HC161, 74HC163은 모두 Binary Counter(이진 카운터) IC입니다.74HC93 : 4bit Ripple Counter (비동기) 74HC161 / 74HC163 : 4bit Synchronous Binary Counter (동기식, Load/Enable 지원) 이 칩들은 클럭 신호가 들어올 때마다 Q출력 핀에 2진수 형태로 카운트 값을 출력합니다.간단히 말해, 클럭 펄스를 입력하면 자동으로 2진 카운터가 동작합니다.⚡ 아두이노와 연결하기아두이노와 연결 시 필요한 기본 핀은 다음과 같습니다.CLK (Clock) : 아두이노에서 펄스를 발생시켜 카운터 증가RESET : 카운터 값 초기화LOAD : 원하는 값으로 병렬 로드 (74HC161.. 2025. 9. 10.
ADA4255 프로그래머블 이득 계측 증폭기 STM32 HAL 기반 디바이스 드라이버 구현 1. 개요이 문서는 아날로그 디바이스(Analog Devices)의 ADA4255 제로 드리프트, 고전압, 프로그래머블 이득 계측 증폭기(PGIA)를 STM32 마이크로컨트롤러에서 제어하기 위한 디바이스 드라이버 구현을 다룹니다. 드라이버는 STM32 HAL 라이브러리를 기반으로 하며, 데이터시트(Rev. 0)의 레지스터 요약 및 세부 사항을 완전히 반영하여 36단계 이득 설정, 입력 멀티플렉서, 7개의 GPIO, 챠지 펌프, 결함 감지 등 모든 기능을 지원합니다. 구조체 기반 설계로 다중 장치 지원과 확장성을 제공하며, HAL 오류 코드와 사용자 정의 오류 코드를 통합하여 디버깅을 강화했습니다. DWT 기반 정밀 지연과 룩업 테이블(LUT)을 활용한 이득 오차 보정을 통해 성능과 정확도를 개선했습니다... 2025. 9. 6.
Python Control 라이브러리 사용법 python-control은 파이썬에서 제어 시스템의 분석과 설계를 위한 강력한 도구입니다. MATLAB의 Control System Toolbox와 유사한 기능을 제공하며, 선형 및 비선형 시스템의 모델링, 시뮬레이션, 제어기 설계 등을 지원합니다. 이 문서에서는 설치 방법과 간단한 예제를 통해 기본적인 사용법을 알아봅니다.1. 설치 방법python-control 라이브러리는 NumPy, SciPy, Matplotlib에 의존하며, 일부 고급 기능은 Slycot을 필요로 합니다.pip를 사용한 설치pip install controlpip install slycot # 선택 사항, 고급 기능(MIMO 등)에 필요conda를 사용한 설치Anaconda를 사용하는 경우:conda install -c con.. 2025. 9. 4.
AD7124 24비트 ADC STM32 HAL 기반 디바이스 드라이버 구현 1. 개요이 문서는 아날로그 디바이스(Analog Devices)의 AD7124 24비트 델타-시그마(Δ-Σ) ADC를 STM32 마이크로컨트롤러에서 제어하기 위한 디바이스 드라이버 구현 내용을 다룹니다. 드라이버는 STM32 HAL 라이브러리를 기반으로 작성되었으며, AD7124의 주요 기능을 안정적이고 직관적으로 활용할 수 있도록 설계되었습니다.본 문서는 다음과 같은 내용을 포함합니다:AD7124 주요 사양 및 레지스터 구조 개요STM32 기반 드라이버 구현 세부 사항STM32L432KC 예제 코드를 통한 실제 활용 방법완전한 드라이버 코드(ad7124.h, ad7124.c, main.c)2. AD7124 주요 사양2.1 주요 특징AD7124는 고정밀, 저전력 데이터 수집 시스템에 최적화된 24비트 .. 2025. 9. 4.
무간도(無間道) 🎬 무간도: 운명에 갇힌 두 남자의 끝나지 않는 이야기영화 무간도(Infernal Affairs)는 단순한 홍콩 느와르를 넘어, 인간 내면의 깊은 고뇌를 그린 명작입니다. 이 영화는 제목부터 삽입곡까지 모든 것이 '운명에 갇힌 인간의 비극'을 이야기하고 있습니다. 오늘 그 숨겨진 의미들을 함께 파헤쳐 볼까요?1. 제목에 담긴 철학: 무간도(無間道)'무간도'는 불교의 무간지옥(無間地獄)에서 온 말입니다. '간격(間)이 없는(無) 길(道)'이라는 뜻으로, 고통이 한순간도 끊이지 않고 계속되는 가장 끔찍한 지옥을 의미하죠.영화는 바로 이 무간지옥을 살아가는 두 남자의 이야기를 그립니다.⚫︎ 진영인 (배우: 양조위)정체성: 경찰 신분을 숨기고 범죄 조직에 잠입한 스파이.운명: 그는 어둠 속에서 빛을 향해 가려.. 2025. 9. 3.
아두이노에서 74HC165 (병렬 → 직렬 변환기) 사용하기 1. 74HC165란?74HC165는 8비트 병렬 입력을 직렬 데이터로 변환하는 PISO (Parallel-In Serial-Out) 시프트 레지스터입니다.즉, 버튼, 스위치, 센서 등 여러 개의 입력을 동시에 받아서 아두이노 같은 MCU에 시리얼 데이터 한 줄로 보내주는 역할을 합니다.🔹 주요 특징 (사양 요약)입력 개수: 8비트 (D0~D7)출력 방식: 직렬 출력 (Q7 핀)클럭: 외부 클럭 입력(CP 핀)으로 데이터가 시프트됨래치 기능: PL (Parallel Load) 핀을 사용하여 병렬 데이터를 한번에 읽어와 래치 가능확장: 여러 개 칩을 직렬 연결하여 16비트, 24비트, 32비트… 무제한 확장 가능동작 전압: 2V ~ 6V (일반적으로 5V 아두이노와 호환)최대 클럭 속도: 약 25 MHz.. 2025. 9. 3.
AVR128DA 시리즈 UART 드라이버 설계 및 구현 개요본 문서는 Microchip의 AVR128DA64/48/32/28 시리즈 마이크로컨트롤러에 내장된 UART(USART) 기능을 분석하고, 이를 활용할 수 있는 범용 드라이버를 설계 및 구현한 내용을 다룹니다. AVR128DA 시리즈는 최대 6개의 USART 모듈을 제공하며, 비동기/동기 통신, 다양한 보드레이트 설정, 패리티 및 스톱 비트 지원, 인터럽트 및 폴링 기반 송수신 기능을 포함합니다. 본 드라이버는 링버퍼를 기반으로 효율적인 데이터 송수신을 지원하며, printf를 통한 표준 출력 리디렉션, 가용 바이트 확인(uart_available), 링버퍼 초기화(uart_flush)와 같은 부가 기능을 제공합니다. 또한 AVR128DA64/48/32/28 전 제품군에 호환되도록 설계되어 Microc.. 2025. 9. 3.
아두이노에서 74HC154 제어하기 📌 74HC154란?74HC154는 4-to-16 라인 디코더/디멀티플렉서 IC입니다.입력: 4비트 주소 (A0~A3)출력: 16채널 (Y0~Y15) 중 하나만 LOW (나머지는 HIGH)Enable 핀(/G1(/E1), /G2(/E2))을 통해 전체 출력을 활성/비활성 가능주 용도: LED 매트릭스 제어, 여러 장치 선택(Chip Select), 멀티플렉싱 회로즉, 마이컴이 4개의 핀만 사용해 최대 16개의 출력 중 하나를 선택할 수 있게 해줍니다.⚡ 동작 원리A0~A3에 이진수 값을 주면, 해당 값에 대응하는 출력만 LOW 상태가 됩니다. A3 A2 A1 A0 출력 0000Y00001Y10010Y2……………1111Y15출력은 Low Active이므로, LED를 켜려면 LED의 애노드(.. 2025. 9. 3.
AVR128DA 시리즈 GPIO 드라이버 설계 및 구현 개요본 보고서는 Microchip AVR128DA64/48/32/28 시리즈 마이크로컨트롤러의 GPIO(General Purpose Input/Output) 기능을 분석하고 이를 활용할 수 있는 드라이버를 구현한 내용을 다룹니다. AVR128DA 시리즈는 최대 55개의 프로그래머블 I/O 핀을 제공하며, 각 핀은 입력/출력 방향 제어, 풀업/풀다운 저항, 인터럽트, 드라이브 강도, 슬루 레이트 제어 등의 다양한 기능을 지원합니다. 또한, **가상 포트(VPORT)**를 통한 싱글 사이클 액세스를 제공하여 고속 데이터 처리가 가능하고, 모든 슬립 모드에서 비동기 핀 변경 감지를 지원해 저전력 애플리케이션에도 적합합니다. 본 드라이버는 이러한 기능을 추상화하여, Microchip Studio 및 AVR-GC.. 2025. 9. 3.
아두이노에서 74HC573 사용하기 1. 74HC573이란?74HC573은 8비트 D형 래치(Octal D-Type Transparent Latch) IC입니다.마이컴이 출력한 데이터를 잠시 저장(latch)하고, 필요할 때 병렬 출력으로 꺼내 쓸 수 있습니다.주요 핀 기능은 다음과 같습니다:D0~D7: 입력 데이터Q0~Q7: 출력 데이터LE (Latch Enable)HIGH: 입력(D)을 출력(Q)에 통과시킴LOW: 이전 값 유지OE (Output Enable, Active Low)LOW: 출력 활성화HIGH: 출력이 High-Z (삼상 상태)즉, 마이컴에서 데이터를 보내고 LE 신호로 latch를 걸어주면, 그 값이 계속 유지됩니다.이 방식은 I/O 확장, 버스 분리, 디스플레이 구동 등에 자주 사용됩니다.2. 아두이노 연결 예시예를 .. 2025. 9. 3.
가속도계와 자이로 융합: 칼만 필터로 구현하는 자세 추정 1. 개요IMU(Inertial Measurement Unit)는 가속도계와 자이로스코프를 결합하여 물체의 움직임과 자세를 추정하는 핵심 센서입니다. 그러나 각 센서에는 뚜렷한 한계가 있습니다.가속도계: 중력 방향을 기준으로 각도를 얻을 수 있지만, 진동이나 외란에 취약합니다.자이로스코프: 각속도를 적분해 부드러운 자세 변화를 제공하지만, 시간이 지남에 따라 누적 오차(드리프트)가 발생합니다.이러한 한계를 극복하기 위해 두 센서의 장점을 결합하는 센서 융합(Sensor Fusion) 기법이 필요합니다. 그 대표적인 방법이 바로 칼만 필터(Kalman Filter)입니다. 본 글에서는 칼만 필터의 기본 원리와 수식, 그리고 실제 코드 구현 과정을 연결해 설명하며, 이를 통해 IMU 기반 자세 추정이 어떻게.. 2025. 9. 1.
칼만 필터 이론과 수식, 한계 및 EKF·UKF·파티클 필터 대안 칼만 필터(Kalman Filter, KF)는 동적 시스템에서 관측 노이즈가 존재하는 상황에서도 시스템의 상태를 최적 추정하는 재귀적 알고리즘입니다. 선형 시스템과 가우시안 노이즈를 가정할 때, 최소 평균 제곱 오차(MMSE)를 달성할 수 있습니다. 항공우주, 로보틱스, 경제, 신호 처리 등 다양한 분야에서 널리 활용되며, EKF, UKF, 파티클 필터와 같은 확장 기법은 비선형 또는 비가우시안 환경에서도 적용 가능합니다.칼만 필터의 핵심 목표는 예측(Prediction)과 갱신(Update) 과정을 반복하며, 과거 관측과 시스템 모델을 결합해 현재 상태를 추정하는 것입니다.1. 이론적 배경칼만 필터(Kalman Filter)는 선형 동적 시스템에서 노이즈가 포함된 관측 데이터를 이용해 상태를 최적으로 .. 2025. 9. 1.
ZSSC3123 Capacitance to Digital Conditoner IC와 Arduino 인터페이스 구현 본 문서는 Renesas Electronics 데이터시트(REN_ZSSC3123-Datasheet_DST_20211119.pdf)에 명시된 ZSSC3123 cLite™ 정전용량 센서 신호 컨디셔너를 위한 Arduino 기반 인터페이스 구현을 상세히 설명되며,구현에는 I2C 통신, EEPROM 관리, Update 및 Sleep 모드에서의 센서 데이터 수집이 포함됩니다. 코드는 데이터시트의 전기적 및 타이밍 사양을 준수하며, 저전력 정전용량 센싱 애플리케이션을 위한 견고한 제어 및 오류 처리를 제공합니다.1. 서론ZSSC3123은 최대 260pF의 정전용량을 지원하며 125aF/LSB에서 1pF/LSB까지의 감도를 제공하는 정전용량-디지털 변환 및 센서별 보정을 위한 CMOS IC로써, 센서 오프셋, 감도,.. 2025. 9. 1.
고해상도 압력 센서 온도 보상 알고리즘 설계 및 구현 1. 개요본 문의 목적은 ADS124S08 고해상도 24-bit ΔΣ ADC와 STM32L432KC MCU를 기반으로 압력 센서의 출력 특성을 정확히 보정하는 데 있다. 압력 센서는 온도 변화에 따른 게인 및 오프셋 드리프트 현상을 나타내며, 이는 측정 정확도를 저하시킨다. 이를 해결하기 위해 본 문서에서는 ADS124S08 내장 온도 센서를 활용하여 추가 하드웨어 없이 온도를 동시에 측정하고, 정규화(Normalization) 및 다항식 모델링을 적용하여 온도 보정을 수행한다.정규화 과정은 원시 ADC 데이터(\( V_{\text{raw}}, T_{\text{raw}} \))를 \([0, 1]\) 범위로 변환함으로써 수치적 안정성을 확보하고, Levenberg-Marquardt (LM) 알고리즘 기반의.. 2025. 8. 31.