728x90
1) L298N 관련 내용
- Arduino의 Digital Output pin에서는 최대 40mA의 전류밖에 출력하지 못함 : 모터 제어가 어려움
- 따라서 motor 제어를 위해 Motor Driver L298N 사용
- Vcc, GND핀에 motor driver에 사용할 외부 전원 입력 (동작 전압 : 5~35V, 가급적 7~12V 사용)
- 5V 핀은 Arduino 전원 공급용으로 사용 (5~7V 공급 가능)
- OUT1~4 핀은 최대 2A의 전류 출력 가능 (Vcc에 따라 달라짐)
- ENA, ENB 핀은 최초에 핀홀더로 덮여있음 : 이 경우 각 핀들은 바로 위에 있는 5V와 연결되어 Motor가 최대 속도로 회전함 반대로 핀홀더를 제거하면 motor가 회전하지 않음
- ENA, ENB 핀은 Arduino의 PWM 핀과 연결하여 Analog Signal을 통해 Motor의 속도를 조절함 (+ 각 Motor를 키고 끄는 역할)
- IN1~4는 motor의 방향 조절 핀으로 IN1, 2는 Motor1, IN3,4는 Motor2의 방향 제어. 실제로는 H-bridge 내부의 스위치를 조절함 (아래에 설명)
- IN1, 2핀 입력 전압에 따른 모터 회전 방향 (High = 5V)
Input1 | Input2 | Spinning Direction |
Low(0) | Low(0) | Motor OFF |
High(1) | Low(0) | Forward |
Low(0) | High(1) | Backward |
High(1) | High(1) | Motor OFF |
- DC Motor의 회전 방향은 Input Voltage의 polarity를 변경하여 조절 가능. L29N은 H-brigde를 활용
- H-bridge : 하나의 전원으로 Motor에 들어가는 voltage의 방향 조절이 가능한 H모양의 4개의 switch들을 사용하는 회로
- V+는 Vcc핀에서 입력받은 외부 전원
- 위처럼 Regulator에 jumper가 끼워져있을 시 5V Regulator가 Enable되어 Vcc핀에서 입력받은 전압을 5V로 변환하여 아두이노에 공급 (0.5A의 전류 공급)
- 만약 해당 jumper를 제거하면 5V Regulator가 Disable되어 5V핀에 전압을 따로 입력해야 함
- Vcc가 12V 이상일 경우 5V Regulator에 손상이 갈 수 있으므로 jumper 제거 필요
- L298N에는 H-bridge 2V정도의 Voltage Drop이 발생함
- H-bridge에서 사용하는 transistor가 forward biased 될 경우 1V정도의 voltage drop을 가지고, 전류는 2개의 transistor를 통과해야 하므로 총 2V의 voltage drop이 발생함
- 따라서 12V의 DC Motor 사용을 위해 12V의 Vcc를 인가할 경우 아래 그림처럼 최대 10V까지밖에 공급할 수 없음
- Motor를 maximum speed로 회전시키기 위해서는 motor의 요구 전압보다 2V정도 높은 전압을 인가해야 함
- 이러한 Voltage Drop은 상당한 열을 발생시킴 : 큰 방열판이 붙어있는 이유
2) USB Port 설정 관련
https://youngseong.tistory.com/121
$ udevadm info -a /dev/ttyUSB0 | grep '{serial}'
ATTRS{serial}=="0010"
ATTRS{serial}=="0000:00:14.0"
$ udevadm info -a /dev/ttyUSB1 | grep '{serial}'
ATTRS{serial}=="0010"
ATTRS{serial}=="0000:00:14.0"
- 앞서 공부했던 USB port 설정법을 통해 각 IMU, Lidar와 Arduino Serial Cable의 port 설정을 하려 했는데, IMU와 Lidar의 idVendor, idroduct와 serial까지 모두 동일한 문제 발생
$ udevadm info /dev/ttyUSB0
$ udevadm info /dev/ttyUSB1
- 위 명령어를 통해 각 usb port에 대한 더 자세한 정보 확인
- 위 결과 중 각 port의 ID PATH를 확인하여 /etc/udev/rules.d directory 내의 port 설정 파일에 입력
- 다른 방법
KERNEL=="ttyUSB[0-9]", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{busnum}=="1",
ATTRS{devnum} =="5", MODE:="0666", GROUP:="dialout", SYMLINK+="ttyIMU"
KERNEL=="ttyUSB[0-9]", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{busnum}=="1",
ATTRS{devnum} =="6", MODE:="0666", GROUP:="dialout", SYMLINK+="ttyRPLidar"
- 위 방법 대신에 Bus, Device 정보를 입력하는 방법도 가능하다는 내용이 reddit에 있음 (확인 필요)
3) Arduino IDE error : stray ‘\302’ in program
- Open Source Code를 Arduino IDE에 복사한 후 Upload를 하려 하자 위와 같은 오류 발생
- Source Code 복사시 생긴 공백으로 인한 오류
- 숨은 공백이나 탭, 엔터를 제거함으로써 해결 가능
참고 자료 :
https://m.blog.naver.com/emperonics/221834467735
https://lastminuteengineers.com/l298n-dc-stepper-driver-arduino-tutorial/
http://www.3demp.com/community/boardDetails.php?cbID=139
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=junsickman&logNo=220907083927
'Project > KUSMO' 카테고리의 다른 글
[KUSMO] 2/2~3 (Jetson Nano Navigation Stack 구성 완료) (0) | 2023.02.02 |
---|---|
[KUSMO] 1/20 (Jetson Nano Developer Kit 2GB 설정법) (0) | 2023.01.20 |
[KUSMO] 11/23 (Raspberry Pi Master-Slave 통신, Hector SLAM, Map 저장) (0) | 2022.11.24 |
[KUSMO] 11/22 (ssh-Platform IO) (0) | 2022.11.23 |
[KUSMO] 11/20 (Raspberry Pi WiFi, Platform IO) (1) | 2022.11.20 |