어느덧 PLC 수업의 마지막 회차가 왔다😥
이번 주에는 지금까지 배운 것들을 기반으로 응용하는 시간을 가졌다.
작은 단위 프로젝트 같은 느낌으로 진행할 수 있어서 훨씬 몰입되고 열심히 임했던 것 같다!
1. 음악분수
2. 모터 다단 제어
3. RC카 경주대회
1. 음악분수
이번주 첫 과제는 조별 음악분수 구현하기였다! 🎼
LED를 모두 모아모아 총 16개의 LED를 가지고 박자에 맞게 점등하는 음악분수를 만들어보았다.
우리 조는 데이식스의 '한 페이지가 될 수 있게'를 시작부터 1분 30초까지를 음악분수로 만들어 보았다.
이를 위해 각자 파트를 분배하여 5명이 각자의 부분을 자유롭게 구성했다.
- 시작~2초 : 피아노 / 12초~23초 : 딴딴 / 23초 ~ 34초 (34~44 반복) : 솔직히~ / 44초 ~ 56초 : 유앤아이~ / 58초 ~ 1:09 (1:09~1:23 반복) : 후렴
음악분수를 만들기 위해서는 어떤 타이밍에 어떤 불들을 켤 것인지를 정해서 타임차트로 구성하는 작업을 먼저 진행했다.
각 스텝별로 몇 초 씩인지, 스텝마다 켜지는 불이 어떤 것인지를 각각 작성했다.
아래 예시는 차량신호등/보행자신호등을 타임차트로 썼을때의 예시이다.
타임차트를 정했다면, 실제 불을 켜기 위한 코드를 작성한다.
여기서 중요한 부분은 16진수 비트를 이용하여 어떻게 LED 들을 제어할 것인가인데, 이는 데이터 구조를 아래와 같이 hFFFF 형식으로 보면 좀 더 쉽게 이해할 수 있다.😮
4칸씩 나누어 0~F(16)까지 값을 부여하기 때문에, 앞 4개만 키고싶다면 hF000, 뒤에 4개만 키고싶다면 h000F가 된다.
한 가운데 4개만 키고 싶다면 0000 0011 1100 0000 -> h03C0 값을 주면 된다.
X5000에 작성한 코드로 보면, 좌에서 우로 3칸씩 이동하여 hE000 -> h7000 -> h3800 처럼 움직이는 것을 볼 수 있다.
음악분수이니만큼 또 가장 중요한 부분은 타이머이다.🤔
우선, T1 타이머로는 정교하게 박자를 쪼개기 어려우므로 T1000대 타이머를 사용하였다.
'한 페이지가 될 수 있게' 곡에서 가장 중요한 파트는 '빰빰 빠바밤'하는 밴드 부분이라고 단언하기 때문에, 이 부분 타이머가 맞아야 음악분수의 느낌이 살거라고 생각해서 여기 맞추는데 정말 많은 시간을 들였다 ㅠ.ㅠ
또 음악분수와 함께 빠질 수 없는 터치 작화~
우리 조의 (동물의숲)미애를 담당하고 있는 팀원 분께서 너무 멋있는 작화를 넣어주셔서 자랑하지 않을 수 없었다,,
특히 저 음표들은 각 16개의 LED와 연동되어 불이 들어올때 같이 켜진다. (아래 영상에서 같이 확인하세요!)
그렇게 하루종일 공들인 결과 완성!
진짜 멋있으니까 영상 꼭 (소리키고) 봐주세요 😍😍
어려웠던 점🤡
- 노래 포인트에 맞춰서 점등되도록 타이밍 맞추기.. 1/16으로 안해서인지 처음에 맞게 시작해도 진행되면 조금씩 틀어지기도 하고, 빰빰은 꼭 맞추고 싶어서 정말 리트라이를 몇번을 했는지 노래가 초큼 질렸다..
- 각자 파트를 만들고 합치는데 섞이면서 꼬이는 부분 + 연결마디 중간에 비는 파트도 채워줘야했다.
- 반복되는 부분을 카운터 처리하였는데 조건이 꼬이는 부분이 있었다. 비접점은 끝까지 어려워..
하지만 결과물이 너무 이뻤고 매우 뿌듯했따😎
2. 인버터 다단 제어
다음으로는 인버터에서 속도를 인버터 내 다기능입력을 통해 다단 제어하는 것을 배워보았다.
어떻게 PLC를 제어할 것인지에 따라 인버터의 설정을 바꿔주어야 하는데, 자동제어(터치)의 경우 : FRQ 9 / DRV 3, 수동제어의 경우 : FRQ 2 / DRV 1 를 사용하였다.
이번 실습에서는 기본 속도(5)에서 버튼이나 센서값이 들어올 경우 자동으로 아래와 같이 속도가 변경되도록 하였다.
센서, 스위치를 통한 다단 제어
- P5 (버튼) > P3 (인버터) > P20 (다기능입력) : 속도 10으로
- P6 (센서) > P4 (인버터) > P21 (다기능입력) : 속도 20으로
- P7 (센서) > P5 (인버터) > P22 (다기능입력) : 속도 30으로
위 코드에서 P5(버튼), P6(센서1), P7(센서2)가 들어오면 각자 M60, M61, M62를 자기유지하도록 했고, 아래 코드에서 M50(자동제어) & M60(수동제어) 같이 한 쌍으로 P20(인버터 다기능입력-속도10)으로 연결해주었다.
완성된 아래 영상을 보면, 센서를 지나갈때 속도가 변경되는 것을 확인할 수 있다.
확실히 PLC는 정말 더 깊게 팔수록 상세하게 제어할 수 있는 영역이 무궁무진할 것 같다.🙃
3. RC카 경주대회
마지막 시간에는 그동안 배운 PLC의 다양한 기능들을 활용해서 조 대항 RC카 경주대회를 열었다!
먼저 크게 트랙 구성을 하고, 조별로 나누어 각자 맡은 부분을 구현하고, 최종적으로 조별 운전 대전을 열었다.🚗
트랙 구성 : 장애물 코스 > 컨베이어 코스 > 루트 선택 > 신호등 > LAP 측정
우리 조는 직선 코스에서의 신호등 구현(+패널티)과, 출발선부터의 LAP 측정을 맡아 구현해보았다.
신호등은 2초 적색, 2초 녹색(1초 점멸)로 하되, 적색일 때에 P7 센서에 감지되면 -> 빨간불일때 주행 시 패널티로 5초 추가를 부여하고자 했다.🚥
LAP 측정은 출발선에 센서를 부착하여 처음 인식되면 1LAP 시작, 2회 인식되면 1LAP 측정 중지 및 2LAP 측정, 3회 인식되면 2LAP 측정 중지 후 1LAP + 2LAP + 패널티를 계산하고자 했다.
- T100대 타이머를 써서 올라오는 값을 MM:SS:MS로 보여주는게 생각대로 작동을 안해서 /60000을 했다가 /6000을 했다가 난리를 쳤다. 그래도 성공 😹
큐트한 카트라이더 LAP 측정 화면,,
결론적으로 (내 생각에) 구현은 잘 되었는데, 센서가 차가 지나갈때 인식이 잘 안되어서 너무 슬펐다.😰
(왠지 차체가 검정색이어서가 아니었을까 하는 합리적인 의심 중..ㅠ)
컨베이어 코스는 컨베이어 4대를 이어서 정방향/역방향이 바뀌도록 하는 장애물이었는데, PLC를 무려 4대나 사용하는ㅎ 멋진 코스였다.
여기서 내려갈때에 센서 인식을 통해서 직선코스로 갈지 각진 코스로 갈지가 정해진다. (아래 사진)
대망의 대회 운전은 강사님의 간지나는 RC카를 사용했다. (무려 옆으로 이동도 가능하다😮)
조별로 남자1명, 여자1명으로 출전했는데, 우리 조 남자대표는 갑자기 방지턱에 걸리는 사고 때문에.. 시간을 많이 잡아먹혔고, 여자대표로 나간 나는 그냥... ^^ 아름다운 운전 실력으로 우리 조 꼴등에 크게 기여하였다 ^^!
처음에는 이걸 어떻게 만드나 막막했는데, 모두가 열심히 한 결과물을 합쳐보니 더 재밌었던 것 같다.
PLC 기초 최종 후기 👀
- 다른 과정에 비해 3주라는 시간이 길게 느껴지기도 했는데, 막상 떠나보내려니까 정들어서 전원 결선 해체하는데 급 슬픈 마음이 들었다... 난 왜이리 정이 금방 드는가
- 배우기 전에는 프로젝트에서 어떻게 사용할지 전혀 감이 오지 않았는데, 막상 배워보니 프로그램의 가용범위가 매우 높아서 놀랐다. 특히 산업현장에서 쓰이는 점을 생각했을 때 굳이 있을 기능이 아니라고 생각했던 부분들까지 있어서 프로젝트 활용 범위에 넣으며 더 고민해보고 있다.
- 레더 프로그램이 진짜 신선했다. 아마 어떤 면에서는 이 과정을 알기 전의 내 사고방식과 지금의 사고방식이 아예 다를 수도 있을 것 같다는 생각도 든다! 결국 소프트웨어도 전기를 타고 가는 것을,,💭
- 강사님께서 정말 전문적이고 재밌게 가르쳐주셔서 정말 많이 배웠다. 특히 플젝 관련해서 고민되는 부분을 말씀드리니 다른 분들께 확인해주시면서까지 같이 연구해주시고 자신감을 주셔서 더 잘 해내고싶다는 생각을 많이 했다. 강사님 정말 종로센터 놀러오셔요!!😢
🌱 카이로스 2기에서 배운 PLC 과거 회차들이 궁금하다면?
https://bagjo2884.tistory.com/21
https://bagjo2884.tistory.com/22
다음주에는 돌아온 딥러닝😎 딥러닝 심화 수업 1부로 만나요!
'KAIROS 2기' 카테고리의 다른 글
[카이로스2기] 딥러닝 심화 교육2 : YOLO v8 with myCobot (5) | 2024.09.22 |
---|---|
[카이로스2기] 딥러닝 심화 교육1 : 전이학습, YOLO v8 with CV2 (0) | 2024.09.15 |
[카이로스2기] PLC 기초2 : 키트PLC 실습(터치, 인버터, 센서) (3) | 2024.09.01 |
[카이로스2기] PLC 기초1 : 레더 프로그램을 배워보자 (0) | 2024.08.25 |
[카이로스2기] STM32 기초 : 실무에서 쓰는 마이크로 컨트롤러 배우기 (0) | 2024.08.18 |