목록MCU (60)
Brise
12345678910111213141516171819202122232425262728#define F_CPU 16000000UL #include #include //#include #include "nb_adc.h" void nb_sleep_ms(uint16_t ms){ while(ms-- != 0) _delay_ms(1);}int main(){ DDRA = 0xFF; PORTA = 0xFF; adc_init(); int16_t adc_value = 0; while(1){ for(int i=0; i
아트메가를 인공호흡하기 위해서는 1mhz의 클럭이 필요하다 확실하게는 1mhz의 오실레이터를 구하거나, PWM을 이용하여 분주를 잘 맞춰야 겠지만, 칩에 익숙하지 않아 편의상 GPIO를 이용하여 1mhz를 만들어 보았다. 아두이노의 제공 API인 digitalWrite를 쓰면 속도가 나오지 않아(1M번 스위칭을 수행하는데 12초..) avr의 레지스터를 직접 만져 만들었다. 아두이노 Pro Micro의 회로도는 다음과 같다. D3핀이 PD0에 물려 있으므로 PORTD 레지스터를 바꾸어 코드를 짠다. 코드는 다음과 같다. 123456789101112131415161718192021222324252627282930313233343536unsigned long int i = 1000000;unsigned in..
STM32F429-DISCO를 사용하기 위하여 프로젝트를 생성하는 방법은 크게 2가지가 있는데 첫번째는 STCubeMX를 이용하여 프로젝트를 생성하는 방법이고 두번째는 HAL Firmware의 템플릿을 직접 이용하는 방법이다. 전자의 경우는 BSP를 사용할 수 없다는 단점이 있고, 후자의 경우에는 파일이 링크 형태로 되어 있어 옮기기 힘들다는 단점이 있다. BSP를 사용하는 프로젝트를 만들기 위해서는 STCubeMX로 생성한 프로젝트 폴더에 BSP와 필요 HAL소스 코드를 추가하여 사용하는 방법이 가장 간단하다. 첨부파일은 위와 같이 STCubeMX로 생성한 프로젝트에 BSP와 HAL 소스코드 및 필요 유틸리티를 더하고 LTDC 예제를 씌운 프로젝트의 압축 파일이다. HAL라이브러리와 BSP를 사용하면 ..
항온챔버는 제어 공간 내부의 온도를 일정하게 유지한다. 이를 위해 챔버 내부의 온도센서와 가변 저항을 이용하여 목표 온도로 추종 할 수 있도록 피드백 제어 루프를 구성하고 이에 따라 펠티어 소자를 제어한다. 이 때, 펠티어 소자는 많은 양의 전류를 필요로 하기 때문에 모터 드라이버를 이용하여 제어한다. 만들기 위한 재료는 다음과 같다. 아두이노(다른 MCU에 비해 취미용으로 사용하기 적합하며, 기 구현 라이브러리가 많아 빨리 구현하기 편함) LCD 디스플레이(Nokia 5110이 저렴하다) http://www.devicemart.co.kr/1193669 12V 어댑터(3A 이상 권장, 펠티어 소자 1개당 최대 6A) 온도센서(필자의 경우 RHT-02를 사용함. 온도만 제대로 잴 수 있다면 다른 써모스탯을..
NOKIA 5110 LCD 아두이노 라이브러리를 아두이노에서 사용하기 위해서는 2가지 라이브러리를 다운로드 받아야 한다. NOKIA N5510 라이브러리 : https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library Adafruit GFX 라이브러리: https://github.com/adafruit/Adafruit-GFX-Library PCD8544 라이브러리를 아두이노 실행 폴더 아래의 libraries 폴더 안에 압축을 푼 뒤, Adafruit GFX 라이브러리를 동일 폴더에 덮어씌워 준다. (Adafruit GFX라이브러리는 아두이노 전용 라이브러리가 아니라 따로 PATH를 잡아줘야 하지만, 어차피 다른 LCD는 사용하지 않을 것이기 ..
MCP 9700E는 온도에 따라 출력 전압 값이 달라지는 센서이다. 핀 넘버와 내용은 다음과 같으며 출력 전압 값은 다음과 같다. 0도에서 0.5V를 출력하고 100도에서 1.5볼트를 출력한다. 즉, 1도 올라갈 때마다 0.01볼트씩 올라간다고 할 수 있다. 회로 구성은 다음과 같이 한다. Vout과 VDD에 바이패스 커패시터 0.1uF를 납땜하여 사용한다. 디지털 필터링을 하지 않은 raw 값은 다음과 같은 방법으로 얻을 수 있다. #define MCP_PIN 0 float temp; void setup() { Serial.begin(115200); }; void loop () { temp = analogRead(MCP_PIN)*5/1024.0; // analog read to voltage temp ..
이 포스팅을 따라하기에 앞서, SW4STM32를 설치하고 STM32F4 Firmware를 다운로드 하여야 한다. SW4STM32 설치하기 : (링크) STM32F4 Firmware 다운로드하기 : (링크) SW4STM32(이하 개발환경)을 실행한다. File à Import à Existing Projects into Workspace를 클릭한다. 압축을 푼 Firmware폴더에서 원하는 프로젝트 폴더를 선택한다. (이 경우에는 STM32Cube_FW_F4_V1.8.0\Projects\STM32F429I-Discovery\Examples\BSP\SW4STM32\STM32F429I-Discovery) 불러오기 원하는 프로젝트를 선택 한 뒤 Finish를 누른다. (프로젝트 파일들이 링크되어 있으므로, Co..