Steering | No steer, By 2 wheel(1 left, 1 right) |
---|---|
Throttle | I2C→(pca9685 0x40 → TB6612FNG)(=MotorHat B) → DC motor |
Note | 2 motors(1 left, 1 right) |
motorhat에는 두 모터만 연결할 수 있어 2 motor만 지원합니다.
<aside> 💡 3장에서 RCCar parameter를 아래와 같이 motorhat2wheel로 선택해주세요.
</aside>
./jetRccarParam.sh motorhat2wheel
0x40이 PCA9685 주소입니다.
zeta@zeta-nano:~$ sudo i2cdetect -r -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- -- --
Jetson↔PCA9685 연결은 아래와 같습니다. 전체 블록도에서 이 그림은 생략합니다.
나머지 블록도를 그려보면 아래와 같습니다.
아래 위치에 이 프로젝트에 사용한 MotorHat에 관한 회로도가있습니다. 이걸 참고하여 코드를 아래 trottle 코드를 작성하였습니다.
https://www.waveshare.com/w/upload/a/ab/Motor_Driver_HAT_Schematic.pdf
if left_motor_speed > 0:
#rear motor
#1st L298N, Motorhat B
self.controller.pwm.set_pwm(self.controller.channel+ 5,0,left_pulse)
self.controller.pwm.set_pwm(self.controller.channel+ 4,0,0)
self.controller.pwm.set_pwm(self.controller.channel+ 3,0,4095)
else:
#front motor
#1st L298N, Motorhat B
self.controller.pwm.set_pwm(self.controller.channel+ 5,0,-left_pulse)
self.controller.pwm.set_pwm(self.controller.channel+ 3,0,0)
self.controller.pwm.set_pwm(self.controller.channel+ 4,0,4095)
if right_motor_speed > 0:
#rear motor
#1st L298N, MotorHat A
self.controller.pwm.set_pwm(self.controller.channel+ 0,0,right_pulse)
self.controller.pwm.set_pwm(self.controller.channel+ 1,0,4095)
self.controller.pwm.set_pwm(self.controller.channel+ 2,0,0)
else:
#front motor
#1st L298N, MotorHat A
self.controller.pwm.set_pwm(self.controller.channel+ 0,0,-right_pulse)
self.controller.pwm.set_pwm(self.controller.channel+ 1,0,0)
self.controller.pwm.set_pwm(self.controller.channel+ 2,0,4095)