창업연계공학설계입문 중간고사 대비 정리
이유빈 |
피지컬 컴퓨팅 시스템 및 센서와 액추에이터 개념
- 피지컬 컴퓨팅이란
- 현실세계와 논리세계의 만남
- 컴퓨터에서 실행되는 프로그램이 현실 세계의 사물과 소통하는 시스템
- 임베디드 컴퓨팅 시스템
- 저비용/경량/저전력/풍부한 입출력 단지
- 라즈베리파이, 아두이노, 젯슨나노 등
- 센서: 현실세계로부터의 입력
- 거리: 초음파, 전파, 레이저
- 영상: 웹캠, 열화상카메라, X-Ray 센서
- 위치정보: GPS, 가속도, 회전속도, 기울기
- 온도, 습도, 미세먼지, 가스농도, 소리, 진동, 움직임, …
- 엑추에이터: 현실세계를 향한 출력
- 회전운동: DC모터, 스텝모터, 서보모터
- 직선운동: 리니어 액추에이터
- 소리: 스피커, 초음파 발신기
- 빛/시각정보: 레이저 발신기, LED 모듈, LCD 디스플레이
- 진동: 진동모터
나사 조립방법
- 목재 드릴링 시 너무 느린 속도를 피할 것
- 드릴링 후 드릴을 뺄 때도 같은 회전속도를 유지
- 드릴링 및 드릴 제거시 항상 수직방향 유지
- 2mm 드릴로 나사구멍 확보
- 직경 3mm 나사가 바로 삽입되는 경우 목재 갈라짐 발생
- 나사구멍이 모서리에 가까운 경우 갈라짐 발생빈도 증가
- 회전속도는 최대로 유지하며 동일한 힘으로 전진후 그대로 후진
- 중간에 회전을 멈춘 상태에서 억지로 빼거나 수평방향 힘이 가해지면 드릴비트가 부러짐
- 전동드라이버 십자비트 사용 금지
- 판재 재질이 삼나무로 연성 목재임
- 정동드라이버 사용시 나사산이 쉽게 뭉개지고 헛도는 현상 발생
브레드보드 사용 및 회로 구성 방법
- 전자회로 프로토타이핑 도구
- 납땜 없이 회로 구성 가능
- 고속 동작 회로 구현 불가
- 구성
- 전원 레일(power rail): 적/청색 선
- 터미널 스트립(terminal strip): 5개가 한 묶음
- 각 rail/strip의 hole은 전기적으로 연결됨
아두이노의 setup() 및 loop() 함수 이해
- setup() 함수
- 아두이노 전원을 켠 직후 또는 리셋 버튼을 누른 직후 자동으로 실행
- 최초 1회만 실행
- 각종 변수 및 장치 초기화 용도
- loop() 함수
- Setup() 함수가 실행된 후 계속 반복하여 실행됨
- 프로그램의 핵심 구현 내용이 위치함
- 계속 변화하는 외부 입력에 반응하여 출력을 갱신하는 인지-판단-제어 동작 구현에 적합
int, char, unsigned int 등 자료형 이해
- 1 byte: bool, (unsigned) char
- 2 bytes: (unsigned) int
- int a; // 저장 가능한 숫자: -32768 ~ 32767 (-2^15 ~ 2^15 - 1)
- unsigned int a; // 저장 가능한 숫자: 0 ~ 65535 (0 ~ 2^16 - 1)
- 4 bytes: (unsigned) long
시리얼 모니터 설정 방법 이해
- Serial.begin(115200);
- serial 포트 초기화
- while(!Serial) {;}
- serial 포트 초기화 완료까지 대기 (Uno 버전은 불필요)
- Serial.println(”Hello World”);
- serial 포트로 메시지 출력 후 줄바꿈 (println)
- delay(1000);
- 1000ms, 1초간 대기
LED 회로와 ohm의 법칙
- LED
- 전압 강하: 1.7 - 2.0V (적색 LED)
- 적정 전류량: 13 ~ 20mA
- Ohm’s law (옴의 법칙)
- 전압강하 V = 전류 I x 저항 R
저항 병렬 연결시 전류 변화
- 저항값 합성하기
- 직렬 연결
- R’ = R1 + R2 + … + Rn
- 병렬 연결
- 1/R’ = 1/R1 + 1/R2 + … 1/Rn
- 직렬 연결
GPIO를 사용한 LED 제어회로 분석
5V 전압 (+) ⇒ 220옴 저항 ⇒ LED (+→-) ⇒ 아두이노 7번 포트
digitalWrite(7, 1) ⇒ LED꺼짐
digitalWrite(7, 0) ⇒ LED켜짐
거리센서 특성 이해
- 전방의 물체(장애물)과 센서 사이의 거리를 측정
- 다양한 방식
- 초음파(ultrasonic) / 적외선(infrared) / 레이저 (laser) / 전파 (radio)
- FOV (field of view, 화각 또는 시야각)
- 센서가 물체를 인지할 수 있는 범위
- FOV 내에 존재하는 물체 중 가장 가까운 물체의 거리를 인식
- 센서 종류에 따라 FOV가 달라짐
- VL53L0X laser distancing sensor: 25°
- HC-SR04 ultrasonic sensor: horizontal ~21°, vertical ~4°
- Sharp infrared 2Y0A21: unknown (narrower)
- DT-20P224B displacement measurement sensor: 0.68°
초음파센서의 trigger-echo 시간과 거리 사이의 변환
- 동작원리
- 특정 파형의 초음파 발신(ping) 후 수신될 때까지의 시간을 측정
- HC-SR04, SRF05 등
- Trigger: 초음파 발신 명령 입력
- Echo: 초음파 발신 직후 0->1로, 수신 직후 1->0으로 출력
- 시간-거리 변환
- Distance (m) = Time (sec) x Speed (m/sec)
- 상온(24℃)에서 음속: 346m/s
- 거리 d (m) = 346 * t / 2 (왕복거리 / 2)
- d (mm) = 173 * t (ms)
- Timeout 고려
- 초음파 발신 후 수신이 되지 않는 경우 timeout 발생
- Echo 핀이 수백 ms에서 수 초까지도 high로 고정됨
- Timeout 발생시 해당 시간 동안 거리측정 불가
- 초음파 발신 후 수신이 되지 않는 경우 timeout 발생
- 측정대상의 모양 및 재질에 민감
- 단단한 평면에 대해 안정적인 측정 가능
- 최대 측정 주파수
- 초당 최대 측정 회수가 40회로 제한됨
- 직전에 발신한 초음파가 사라질 때까지 기다려야 함
- 측정간격이 지나치게 짧을 경우
- 이전에 발신된 초음파 수신 -> 실제 거리보다 훨씬 짧게 거리를 인식
EMA 필터의 특징
- EMA: exponential moving average
- 현재까지의 모든 측정값이 평균 산출에 사용됨
- 최근 측정치에 높은 가중치 부여
- 이전 측정치의 비중은 지수적으로 감소함
- MA의 저장공간 및 오래된 측정치를 제거하는 부담을 줄일 수 있음
- 부동소수점 연산이 필요
- EMAk = 𝛼•dk + (1-𝛼)•EMAk-1
- k=10, 𝛼=0.5의 경우
- EMA10 = 0.5•d10 +0.5•(0.5•d9 +0.5•(0.5•d8 + 0.5•(0.5•d7 + … = 0.5•((0.5)0d10 +(0.5)1d9 +(0.5)2d8 +(0.5)3d7 + … = 0.5•d10 + 0.25•d9 + 0.125•d8 + 0.0625•d7 + …
EMA 필터 공식의 분석을 통한 예전 측정치의 지수적 감소 특성 이해
- EMAk = 𝛼•dk + (1-𝛼)•EMAk-1
서보모터의 PWM 인터페이스 특징 이해
- 제어 인터페이스
- 펄스 폭 변조(PWM) 방식으로 제어
- 아두이노 IDE에는 서보 제어를 위한 전용 PWM 라이브러리가 제공됨
- analogWrite()는 PWM 제어 방식이지만 서보 제어를 위한 주기 및 duty가 호환되지 않음
- 펄스 폭 변조 (PWM: Pulse Width Modulation)
- 20ms 주기 (=50 Hz)
- 위치제어 명령은 초당 50회 갱신 가능
- 1ms: 반시계방향 최대회전 (0°)
- 2ms: 시계방향 최대회전 (180°)
- 1.5ms: 중립 위치 (90°)
- 20ms 주기 (=50 Hz)
- Dead band width
- 5us 이내의 입력변화에는 반응하지 않음
- PWM 인터페이스의 장단점
- 아날로그 vs. 디지털
- 병렬 vs. 직렬통신
- PWM 파형 생성 오버헤드
- 아두이노 서보제어 API
- attach(): 디지털 I/O핀을 서보 객체에 연결
- write(): 정수형의 각도 값으로 서보 위치 제어
- 입력범위: 0, 1, 2, …, 180 (예: 12.7 => 12로 인식)
- writeMicroseconds(): 펄스 폭(1,000~2,000us)으로 서보 위치 제어
- 1,000: 반시계방향 최대 회전
- 2,000: 시계방향 최대 회전
- 1,500: 중립
- read(): 현재 서보 각도 읽기
- attached(): 서보 객체에 I/O핀이 연결되어 있는지 확인
- detach(): 서보 객체에서 해당 I/O핀 분리
- 서보 인터페이스 자체에는 속도제어 기능 미포함
- 연속된 위치 입력값들의 변화량에 따라 속도가 간접적으로 제어됨
- 위치(각도) 입력이 급격하게 변할 수 있음
- 센서에서 잡히는 노이즈가 서보의 입력으로 연결되는 경우
- 서보가 시계방향으로 최대속도로 움직이는 중 갑자기 반대방향 입력이 들어올 수 있음
서보의 펄스 폭과 서보 horn 각도 사이의 변환
- 위치 입력값의 최대 변화량을 제한한다면?
- 서보의 최대 속도를 제한하는 것과 동일한 효과를 얻을 수 있음
- duty_change_per_interval
- 서보 속도 제어 업데이트 1주기에 증감 가능한 duty의 최대값
- duty_change_per_interval = 5 us로 설정한다면
- 서보의 현재 위치: duty_curr = 1000 us (0° 로 가정)
- 서보의 목표 위치: duty_target = 2000 us (180° 도로 가정)
- 질문 1: duty_curr 값이 duty_target 값에 도달하기까지 소요시간?
- 답: 4 seconds
- 질문 2: duty_change_per_interval = 5 us를 각속도로 환산하면?
- 답: 45 °/ sec
댓글