Controlling the DC motors
The motors cannot be driven by the Arduino PWM outputs directly but they must pass through a motor driver boosting the signal power In our case an
L298N bridge is used, which is well described on
this page.
This table shows how the driver module is connected to the Arduino Uno:
EN A | IN 1 | IN 2 | IN 3 | IN 4 | EN B |
11 | 10 | 9 | 7 | 6 | 5 |
The following pins on the Arduino Uno are PWM pins:
3,5,6,9,11
The IN1-IN4 pins define the direction of the movement and the EN pin, which is a PWM signal, controls the speed.
Then controlling the robot through Bluetooth then the PWM pins allow me to have values between 0 and 255. However, the motors need a certain current before they start moving. Since the motor values sent through the protocol are 9 bits (10 bit ADC on the Arduino but forward and backward on a single joystick potentiometer) I shift the forward or backward value by 1 bit and I and it with 0xC0. After that I add the left/right value shifted right by 2 bits which should allow me to increase the speed of one wheel with respect to the other and thus turn left or right.
--
Uli Raich - 2017-11-21
Comments
Topic revision: r4 - 2017-11-24
- uli