TinyDrive v1 - SBUS/PPM 1.5A Dual Motor ESC / Controller
TinyDrive is the first all in one dual-motor controller for small robotic platforms.
The board is supporting SBUS and PPM RC receivers, 1.5A motor outputs, Headlight Output, Protected battery input and motor outputs.
TinyDrive battery input is reverse protected and compatible with 3.3-11 volts batteries. The default firmware is expecting 1S or 2S Lithium batteries and the controller will stop working and double blink continuously under 3.2v per cell (6.4v for 2S LiPo) to avoid battery failures. You can also use 3xAA or 4xAA battery packs until 3.2volts.
You can connect any brushed motors to the motor pads including the hacked RC servos, N20 and yellow plastic geared robotic motors. The motor pads are marked as A & B instead of + & - use to the bidirectional usage. The maximum output is 1.5A per motor and onboard DRV8835 IC has internal current and reverses supply protection.
The motor outputs are connected to CH1 and CH2. These outputs are mixed in default and Tiny Drive will calculate the correct output for tank-like platforms. You can switch to non-mixed mode if you want to mix on your transmitter or want to use with a toy car. (motor 1 for the throttle, motor 2 for the steering) (see mixer mode selection section)
RC Receiver Connection:
TinyDrive is pin to pin compatible with FrSky XM+ SBUS receivers for a compact installation into small places. You can also use any SBUS or PPM receiver. TinyDrive will detect the signal type automatically. The receiver supply pin is 3.3v regulated, you can supply your receiver over the battery(+) pin if your receiver is not supporting 3.3v and requesting higher voltage to operate. Please check your receiver's manual for the details.
The headlight output is a proportional(CH3) PWM output to drive small loads. It's connected to the battery voltage over 10 Ohm resistor by a transistor. The resistor will limit the output current for maximum 1/10 of the supply voltage. It's ideal to control headlights or locator buzzer/horn etc.
The pads are connected to D13, D12, D11, D10 pins of the Atmega328P microcontroller. They don't have any feature in the default firmware.
I2C Pads (on the backside)
This is the expansion port for the customised firmware.
The default firmware is using SDA & SCL pads for the mixer mode selection(see mixer mode selection section) and PWM output.
You can connect two servos/ESC/RC device to SDA and SCL pins to control over CH4 and CH5.
Warning: Don't connect any servo or similar high current device to the onboard 3.3v power supply. You must supply them separately.
Warning 2: Some servos may activate the mixer mode selection on startup. Prefer SDA instead of SLC pin if only one servo required.
There are 2 different mixer modes on TinyDrive.
The mixed-mode will use simple math to drive motors by CH1 and CH2 stick commands. You can use standard RC transmitter settings and the controller will calculate the PWM values for a dual motor tank like platforms.
The mixer math:
motor1_output = m_throttle + m_direction;
motor1_output = m_throttle - m_direction;
The direct-mode will calculate motor PWM values without mixing. You can mix CH1 and CH2 on your transmitter for dual motor platforms or use it directly to hack toy cars(motor 1 for the throttle, motor 2 for the steering)
Mixer Mode Selection
- Connect the battery when holding SDA and SCL connected by a tweezer/cable.
- The mixer mode will toggle between two modes above and recorder to the internal EEPROM
- The green onboard led will start blinking continuously to tell you the process has done.
- You can remove the tweezer now.
- Unplug the battery and plug again to continue.
The board is based on Atmega328P microcontroller and running Arduino Pro Mini 5v/16mhz Bootloader for custom firmware development.
The reset pad is not accessible by the pin headers, so you must shortcut to the ground and release by hand(tweezer or cable) when you see "Uploading" message on Arduino IDE. Alternatively, follow the process below.
Arduino Firmware Upload Process:
- Select "Arduino Pro Mini 5v/16mhz" from Tools>Board
- Connect Tx, Rx and GND pin the FTDI adapter
- Unplug the battery
- Press the Upload button and wait for compiling
- Plug the battery immediately when you see "Uploading..." message
- FTDI LEDs will start blinking and you will see "Done Uploading" message in a few seconds.
RX pin connected to the microcontroller over an XOR gate and the second pin of the gate connected to A3 pin of the microcontroller. The RX input will be inverted for SBUS protocol when A3 is High.
TX and D2 pins are connected. Serial TX must be disabled by the command below to use the port as D2 IO or External Interrupt(0).
UCSR0B &= ~(1<<TXEN0);
- Automatic SBUS / PPM receiver detection.
- Supporting Ch1,Ch2 (motors) and Ch3(LED/Buzzer output.
- Selectable Mixed / Direct motor outputs. (see mixer mode selection section)
- Dimmable LED Headlight / Buzzer output: max. 300mA @ 3.7v (10 Ohm resistor limited.)
- Dual-H-bridge motor driver: can drive two DC motors.
- Battery supply voltage: 3.3 V to 11 V
- Output current: 1.2 A continuous (1.5 A peak) per motor
- Motor Shortcut, Battery Reverse and LiPo cell drain protections.
- ATMEGA328P microcontroller. Arduino Pro Mini Bootloader installed.
- DRV8835 motor driver.
- I2C / Analog Input pads for sensor extension (you need a supporting firmware)
- SPI/ 4x IO pads for extension
- Onboard 1/11 voltage divider to measure the battery voltage.
- 200mA 3.3V LDO voltage regulator.
- Dimensions: 24 x 17 x 2.5mm
- Weight: 2 grams