# E-Formula 전기시스템 피드백
#### 1. 박스 설계를 잘하자

23년 설계에서 정션박스 내부에 LV 배터리가 위치한다.
우리는 충전용 커넥터를 따로 만들어서 정션 박스를 분해하지 않아도 충전이 가능하다.
하지만 대회장에서 충전을 위해 정비소를 가야 했고, 충전을 하는 동안 잭업을 해야 했다.
그러나 우리 차량은 리어 쇽 오일이 세기 때문에 잭업 상황을 최소화해야 했다.
밀봉 스티커를 붙이는 순간, 정비가 매우 불편해진다.
따라서 박스 설계를 잘 해야 할 필요성이 있다.
예를 들어, LV PCB가 정션 박스 내에 위치해 있다면 LV PCB 내에서 정비할 때마다 밀봉 스티커를 떼고, 다시 붙여야 한다. (재 검차를 받아야 할 수도 있음)
* HV 계통과 LV 계통을 분리하여 박스를 설계하길 추천한다.
#### 2. GLVS 퓨즈

https://luftaquila.io/blog/e-formula/design-guide/
해당 링크에 퓨즈 선정 방법이 언급되어 있음.
https://eleparts.co.kr/data/goods_attach/217.pdf
23년도 회로는 lv master fuse로 Little fuse 217.008 제품을 사용했다.
해당 제품은 8A, 250V 정격을 가지는 퓨즈이다.
내 딴에는 LV 사용 전류가 6A이기 때문에, 해당 전류를 약간 초과하는 퓨즈를 사용하자는 생각이었다.
그런데 검차장에서 해당 퓨즈는 규정 위반이라는 사실을 알게 되었다.
"퓨즈가 없어도 LV 배터리 보호 회로가 동작하여 LV 시스템에 과전류가 흐를 수 없다."
라는 주장으로 간신히 통과했다.
* 퓨즈를 제대로 선정하길 권한다.. 아니면 말빨을 키우던지...
#### 3. BOTS 재설계


해당 규정을 잘못 읽어 C-Formula 기준으로 설계를 해버렸다.
E-Formula는 구동시스템의 전원만 차단하면 되기 때문에 빨간 색 v 표시를 한 노드 뒷 단에 BOTS가 위치하면 된다.
#### 4. 초기충전 저항 선정

23년 기준 초기충전 저항과 방전 저항은 HSC1001K0J 모델을 사용한다.
1. 규정상 1초 이상의 시간동안 초기 충전을 해야 한다.
2. 22년 대회에서 1초 이전에 초기충전이 완료되어 AIR+가 닫히는 일이 발생
3. HSC1001K0J 2개를 사용하여 시간 상수를 늘려 초기 충전을 지연시키고자 함
4. 개선 X
5. 
6. 첫 번째 원인으로는 PM100DX 모델의 최대 초기충전 저항은 1.2K라고 PM100DX Hardware manual에 명시되어 있음
7. 
8. 
9. 두 번째 원인으로는 컨트롤러 상에서 undervolt thesh 값을 설정해주어야 함.
11. 8번에서 설정한 값들을 토대로 초기 충전을 진행하기 때문에, 이를 유심히 봐야 함
* 23년 기준 초기 충전에는 약 2초의 시간이 걸리며, 오실로스코프 및 멀티미터를 통해서 RC 충전이 잘 되고 있음을 확인.
#### 5. BMS Fault

BMS Fault를 선언하는 방법은 2가지가 있음.

첫 번째는 Cell Voltage Limit을 변경하는 방법임.
실제 셀의 전압이 3.8V라면 Maximum Cell Voltage를 3.6V로 변경했을 때
trouble code가 발생하며 BMS Fault 발생

두 번째는 온도에 따른 Discharge Limit을 변경하는 방법임.
예를 들어, 현재 기온이 24°C이면 20°C, 25°C의 Discharge Current Limit을 0으로 바꾸면 됨.
* 축전지 박스 검차에서는 두 방법 다 BMS Fault가 동작함
* 하지만 차량 안전 검차에서는 첫 번째 방법을 사용했을 때 BMS Fault 동작 X
* 유틸리티 상에서는 trouble code가 발생했지만, Discharge enable off가 되지 못함
* 이 부분 확인 요망
#### 6. BSPD
BSPD는 23.09.01 기준 재설계를 해야 한다고 생각함.
1. 센서 입력에 대한 개방/단락 감지 기능이 포함되지 못함
단락 시에는 충분히 동작하지만 개방 시에 동작 X
심지어 브레이크 압력 센서 혹은 홀센서 중 1개 만이라도 커넥터가 뽑혔을 때 동작해야 함
2. 대회 전 자체 검차 도중 0.5초 타이머 회로 미작동
정확히 어느 부분이 문제가 되었는 지는 모르지만, 상당히 불안함
차라리 아날로그 RC 시간 지연 회로를 사용하는 것을 추천
* 다만 독립적인 회로로 구성해야 주변에 연결된 친구들한테 간섭받지 않음
그리고 가장 큰 문제점 중 하나는 우리 차량은 실 주행 중 절대로 BSPD Fault가 발생하지 않음.
a. BSPD 발생 조건은 "강한제동+5kW 이상 전력 공급+0.5초 이상 지속"임.
b. 해당 규정 자체가 엑셀과 브레이크를 동시에 밟지 말라고 하는 거임
c. 다른 팀들은 엑셀을 계속 밟다가 브레이크를 동시에 밟아서 BSPD Fault를 발생시킴
d. 그러나 우리 팀은 컨트롤러에서 브레이크 신호를 인식하는 순간, 토크를 0으로 만들어버림
e. 즉, 엑셀과 브레이크를 동시에 밟아도 컨트롤러가 고장나지 않는 한 동작 X
* 대회에서는 어떻게 말 잘해서 통과했지만, 이 부분은 QnA에 올려보는 것을 추천함
* PM100DX&EMRAX를 사용하는 팀(ex.국민대)에 어떻게 했는지 물어보는 걸 추천,,
#### 7. RTDS 문제
1. 세컨드 드라이버의 짐카나 주행에서 간헐적으로 RTDS가 발생하는 문제를 발견
2. 모터는 쭉 Running state 유지
3. 퍼스트 드라이버의 주행에서는 발견 X
4. 그 사이 바뀐 것은 GPS 안테나를 추가한 것
5. 하지만 GPS 안테나는 해당 로직에 관여 X
6. 추가로 의심되는 것은 PCB를 고정하는 강철 볼트에 의한 어떠한 간섭...
7. 이를 대비하여 아날로그 RTDS 로직을 구현해놓았지만, 모터가 Running State로 넘어감에도 불구하고 소리는 나지 않았음
8. 현장에서 RTDS를 꺼버리는 스위치를 만듦
9. 즉, 처음 시동 걸 때만 RTDS를 발생시키고, 주행 중에는 앰프 모듈로 들어가는 전원을 차단시켜, 소리가 날 가능성을 차단해버림.
* 이 부분도 안정적으로 구현하길 추천...
#### 8. 스위치 패널
스위치 패널 박스가 애매한 위치에 있었음
1. 방화벽을 만들기 어려움
2. 프레임 패딩을 고정하기 어려움
개인적인 의견으로는 LV PCB 박스와 스위치 패널 박스를 합치는 걸 추천
* 메인롤후프 지지대를 설계할 때 이 부분이 고려되어야 함
* TSMP도 구동시스템이기 때문에 롤오버 보호 영역 내부에 위치해야 함
-> 올해는 롤오버 보호 영역 밖으로 튀어 나와 있음...
#### 9. HVD
1. 배터리 박스가 앞으로 이동함
2. HV 전선이 짧아지면서 앞으로 꺾임
3. 탈착이 매우 어려워짐
4. 지속적인 사용 시 정션박스에 볼팅한 HVD가 부러지거나, 크림프한 부분이 찢어질 가능성 농후
* SLPPB50BSO0EH 모델은 변경하길 추천..
-> 연결이 어렵고, 생각보다 마모가 심함
* 전선은 충분한 길이를 가지도록 재설계하길 추천
#### 10. PM100DX 무두 볼트
1. 컨트롤러 DC 2개, 3상 3개에 대한 무두 볼트를 철저히 조여야 함
2. 국민대가 무두 볼트가 헐거워져 주행 중 컨트롤러가 죽었음
3. 항상 주행 전, 무두 볼트가 규정 토크로 조여져 있는 지 확인해야 함
* 현 설계에서 무두 볼팅을 하기 위해선, 정션 박스를 컨트롤러와 분리해야 함
-> 이 과정에서 HV 전선이 상할 위험이 너무나 크다....
* 그래서 컨트롤러의 무두 볼트 하는 부분은 공구가 들어갈 수 있도록 설계하길 추천함
#### 11. 배선에 의한 전압 강하
처음 차량에 배선을 올리고 동작시켰을 때, AIR와 컨트롤러가 동작하지 않았다.
그 이유는, LV 전압의 부족이었다.
당시에는 12V DCDC 컨버터를 사용하고 있었다.
https://ko.aliexpress.com/item/32690762976.html
이 컨버터에서 출력되는 전압은 11.92V -> 모든 킬 스위치를 거쳐서 컨트롤러에 인가되는 LV 전원은 9.4V 였다..
이상적인 회로에서는 도선 저항을 고려하면 안되지만, 현실에서는 도선에 저항이 존재한다. 보조킬 3개, BOTS, HVD를 거치는 배선 길이만 족히 5M 이상 될 것이다.
당연히 전압 강하가 존재할 수 밖에 없고, 컨트롤러는 포화 상태를 유지하기 위한 충분한 전압 조건을 만들 지 못해 Hardware Fault를 발생시켰다.
AIR+의 경우에도 전압이 부족에 접점을 닫지 못하는 상황이 22년도에 문제 사항으로 지목되었다.
* 따라서 실제 회로에서의 전압 강하를 항상 고려해야 한다.
* 우리는 DC 컨버터를 없애는 방식으로 해결했다.
-> 이 방법은 시간이 지날 수록 LV 전압이 변동한다는 단점이 있다.
-> LV 배터리의 최대 전압이 16.8V이므로, 모든 구성품에 대한 최대 전압 정격 확인 및 전압 변동 시 문제 되는 회로들을 고려하여 설계를 진행했다.
#### 12. 페달 OPEN/SHORT
1. 영광 테스트 위크 주행 도중, 엑셀 페달과 브레이크 페달에서 OPEN Fault와 Short Fault 발생.
2. 컨트롤러 상에서 값을 수정하며 해결
3. 페달을 새로 만들거나, 브레이크 압을 새로 잡을 때마다 값을 읽고 재설정해주어야 한다.
* EEPROM / 4095 * 5가 환산된 전압
#### 13. DCL Problem
한창 **DCL = 0A** 제한이 걸려서 BMS Fault에 의해 차량이 멈추는 현상이 발생
어느 순간 DCL = 0A로 떨어지거나, DCL = 160A에서 점점 감소,,
감소하는 시점부터 다시 올라가는 일은 없음.
해당 문제의 원인은 BMS Utility 문제라고 추정함.
1. 
첫 번째로 Orion BMS2에서 우리 셀에 대한 Battery Type이 존재하지 않음.
우리가 사용하는 셀은 **SAMSUNG 21700 40T**임.
해당 셀에 대한 데이터가 존재하지 않아, 직접 입력해야 하는 데이터들이 꽤 있었음
2. 
Minimum Cell Volage를 3.2V로 설정해놓았음.
또한 주행 시, 축전지 박스의 평균 전압은 3.6V 정도...
평소, 완충 상태는 배터리 수명을 깎아먹기에 중간 범위의 전압을 유지한 게 실수였음
3.6V에서 80A 가량 끌어다쓰는데, Min은 3.2V로 설정해놨으니.. 당연히 DCL이 걸림..
(영광 테스트 위크 섀시 다이나모에서 이 원인을 파악했음.)
4. Thermistor Fault에 의해서도 DCL 문제가 발생하는 것으로 추정
온도 센서 연결이 불량하여 -20°C가 찍히는 상황 발생.
영광 테스트 위크에서 문제 발견했고 학교로 돌아와서 직접 까봤음
큰 이상을 찾지 못함..
내구 레이스 중에는 정상이었음.
내구 때 thermistor 활성화 검사를 하지 않는다면, 비활성화 시키는 것도 방법 중 하나
-> 이러면 배터리 온도를 보지 못함,,
#### 14. 리셋 버튼
충전 차단 회로 검증 중, 리셋 버튼에 대한 문제 발생
1. BMS Fault를 발생시키고, Fault가 유지되는 동안 리셋 버튼을 눌렀을 때 리셋 되면 안됨
2. 단발성으로 1번 눌렀을 때는 당연히 리셋이 안되어 규정 충족
3. 계속 꾹 누르고 있으면 리셋 상태가 유지되어 AIR+가 붙는 현상 발생
4. 물론 BMS Fault는 계속 동작하여 Charge Current = 0A이어서 어찌저찌 통과.
* 즉, 리셋 버튼을 꾹 눌렀을 때도 Fault가 풀리지 않도록 해야 함...
#### 15. 리셋이 안됨
영광 테스트 위크 마지막 내구 주행을 들어가려는 찰나, IMD Fault가 발생함
1. IMD에서 받는 신호를 끊어도 계속 Fault 발생
2. 래칭릴레이가 리셋이 안되는 상황이라 판단.
3. 근데 로직 상 문제는 없었음.
4. 버튼을 누르는 방식이 아니라, 직접적으로 래칭릴레이의 핀에 전원을 인가해서 강제 래칭
5. 이후 정상 작동
회로의 시그널이 꼬였거나 래칭 릴레이의 오작동이라고 판단..
* 래칭 릴레이를 강제로 초기화 할 수 있는 방법을 찾길 추천,,
* 우리는 커넥터 다 뽑고, 래칭 릴레이 래칭 부로 들어가는 핀 찾아서 전류 인가함.
#### 16. 제동등 설계 오류
1. 
2. 
첫 번째 사진과 같이 설계했을 때 제동등이 켜지지 않는 문제가 발생했다.
그래서 2번 째 사진과 같이 수정하여 문제를 해결했다.
왜 저렇게 수정했을 지 알아서 공부해오셈
#### 17. 리니어 센서
리니어 센서의 신호 출력 범위는 **0-5V** 이다.
STM32가 받을 수 있는 최대 전압은 3.3V이다.
하지만, 이미 PCB 제작이 끝난 상황.
그래서 물리적으로 리니어 센서가 3.3V 이상 출력할 수 없는 기구적인 포지션을 설계했다.
이러한 설계의 단점은 추후 쇽 트레블을 판단하기 어렵다..
* 그래서 쇼바와 평행한 위치에 리니어 센서를 설치하고, 회로 상에서 0-3V (0.3V는 안전을 위해)로 출력을 변경해주는 회로를 설계하는 것이 베스트이다.
#### 18. DCDC 컨버터 온도센서

해당 DCDC 컨버터에 온도 센서를 다는 것을 추천한다.
https://note.luftaquila.io/mdOQdvM1RzSC-X3oZiri2A
문서를 읽어보면 온도가 약 100°C까지 오르기 때문에, 혹시 모를 사고를 대비하기 위해 DCDC 컨버터 전용 냉각팬을 설치했다.
하지만, 냉각팬에 의한 온도 감소 효과를 실제로 확인할 수 없었기에, 온도 센서를 달아서 관리하길 추천한다.
* 세그먼트 Voltage Tap에 사용되는 것을 끌어다 쓰면, BMS 온도 감지에 문제가 될 소지가 높다.
* 그냥 괜찮겠지 하고 넘어가기엔 배터리 박스 내부에 위치하는 녀석이다..