BOM |
Components/Parts:
|
Equipment:Breadboard, Jumper Wires, Computer w/USB Cable |
Needed Skills
|
Marine robotics is an emerging field that has revolutionized underwater exploration. Advancing technological developments in motors, batteries and controllers have accelerated their capabilities. High-torque-waterproof brushless D.C. motors (BLDC), lithium battery technology, and minicomputer controllers have brought this technology to marine robotics personal watercraft.
As you learned in the Sea Rover section, two motors, strategically placed and running in opposite directions, can turn a vessel on a dime. This technique was used for this Sea Thruster designs. Two brushless DC motors controlled by a joystick provid vehicle propulsion and Control.
Brushless DC motors use three wires to send a sequence of pulses to rotate the armature. The three-wire connection that supplies power to the motor requires an adapter or interface. An Electronic Speed Control (ESC) does the job. An ESC is a circuit that translates the signal from a controller (Arduino) to the current required to power the motor. The advantage of brushless DC motors include precise speed and direction control with higher torque than brushed motors using fewer parts (no brushes).
The ESC controls RPM by receiving a signal within the range of 1100 and 1900. The signal sent to the Basic E.S.C. controls the motor's thrust as illustrated in the graph below.
Reviewing this graph, you can see the motor stops when a signal of 1500 (0 Thrust) is received. Forward thrust increases as the signal value increases from 1500 to 1900. Sending a signal between 1501 and 1100 will reverse the motor.
Connecting the components is relatively simple. It’s just a matter of connecting the power lines and the signal wire.
![]() |
![]() |
Connect the motor, ESC, power supply, Arduino and computer as shown in the schematic above. Use the code below to test motors and connections.
When the program is uploaded, open the Serial Monitor to send the motor a code, a number between 1100 and 1900. 1500 stops the motor.
**HIGH TORQUE MOTORS**
**BE SURE MOTOR IS SECURE**
/* BLDC_motor_bt-1
* Brushless DC Motor
* Bench Test 1
* Serial Monitor Signal Input - Enter Value in the Serial Monitor Text Box
* -------------------------------------------------------------------- */
#include <Servo.h>
byte servoPin = 5;
Servo BLDC1;
void setup() {
Serial.begin(9600);
BLDC1.attach(servoPin);
BLDC1.writeMicroseconds(1500); // send "stop" signal to ESC.
delay(3000); // delay to allow the ESC to recognize the stopped signal
}
void loop() {
Serial.println("Enter PWM signal value 1100 to 1900, 1500 to stop"); //Promt will display in serial monitor
while (Serial.available() == 0);
int val = Serial.parseInt();
if(val < 1000 || val > 1900)
{
Serial.println("not valid");
}
else
{
BLDC1.writeMicroseconds(val); // Send signal to ESC.
Serial.print("running at = ");
Serial.println(val);
Serial.parseInt() == 0; // Reset
}
}