Skip to content
CC3D and STM Cube based CableCam controller
C Assembly C++
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Middlewares/ST/STM32_USB_Device_Library Initial Branch for the new CC3D Revolution based Firmware Jun 17, 2017
STM32F4xx_HAL_Driver Rework IO, HAL Layer and more Sep 12, 2018
_images Docs for the Vesc config Aug 20, 2018
bin/Debug Update odrive for positional control Sep 8, 2019
cmsis Initial Branch for the new CC3D Revolution based Firmware Jun 17, 2017
docs First cut of odrive support Jan 25, 2019
inc Update odrive for positional control Sep 8, 2019
src Update odrive for positional control Sep 8, 2019
.gitattributes 🍭 Added .gitattributes & .gitignore files Aug 2, 2015
.gitignore VESC UART to actual values conversion was wrong due to order of big/l… Feb 18, 2018
CableCam Controller.ioc Added an endpoint offset and stabilized the communication Sep 15, 2018
CableCamControllerF4.depend Update odrive for positional control Sep 8, 2019
CableCamControllerF4.ebp First cut of odrive support Jan 25, 2019
CableCamControllerF4.elay Update odrive for positional control Sep 8, 2019
ChangesInHAL.md Rework IO, HAL Layer and more Sep 12, 2018
Implementation.md Doc Update May 27, 2018
LICENSE Create LICENSE Dec 5, 2017
README.md Bluetooth debugging and moved docs to folder Jul 28, 2018
Sensorboard.3dm Initial Branch for the new CC3D Revolution based Firmware Jun 17, 2017
Sensorboard.dwg Initial Branch for the new CC3D Revolution based Firmware Jun 17, 2017
Sensorboard.dxf Initial Branch for the new CC3D Revolution based Firmware Jun 17, 2017
stm32f405rg_flash.ld Initial Branch for the new CC3D Revolution based Firmware Jun 17, 2017
stm32f405rg_sram.ld Initial Branch for the new CC3D Revolution based Firmware Jun 17, 2017

README.md

LICENSE

CableCam-Controller

A CableCam Controller to allow smooth movements and automatic braking near the end points of the rope.

Goals

The most simple way to control a cablecam is by connecting the RC receiver to the motor controller (=ESC, electronic speed controller) and control it like a RC car. But this has multiple limitations this CableCam Controller tries to solve:

  1. The CableCam might crash into the start- or endpoint by accident. Would be much nicer if the CableCam calculates the required braking distance constantly and does engage the brake automatically. This way it stops no matter of the user input.
  2. A smooth acceleration/deceleration makes the videos look more cinematic. Even when the stick is pushed forward at once, the CableCam should accelerate slowly instead of the wheel spinning damaging the rope.
  3. A speed limiter to protect the CableCam from going too fast and for constant speed travels during filming.
  4. Preprogram movement patterns and the Cablecam repeats them on request.

To achieve that, the CableCam controller sits between the receiver and the motor controller and acts as a governour of the receiver input. If, for example, the user did push the stick forward from neutral to max within a second, the CableCam Controller rather increases the stick position slowly. For speed and positional input the controller is connected to two hall sensors on one of the running wheels.

MCU used is STM32F405RG Board used: Any CC3D Revolution or clone, e.g. the Flip 32 F4 which can be bought at various shops for little money (here?).

See all videos at: https://www.youtube.com/channel/UCTLw_Boy24qAhuygCyIOzyw

Using the CableCam Controller

The Play function

If the stick is pushed full forward, the cablecam will start accelerating with the maximum allowed value instead until the maximum allowed speed is reached. This speed is held until it starts to decelerate with the same acceleration level so that it reaches the end point at zero speed.

Using the speed dial the maximum speed can be configured. And with the accel dial the steepness of the linear acceleration curve.

Speed Ramps

Setup

  1. Flashing the Firmware
  2. Connecting the board to the computer for first tests and settings
  3. Choosing the receiver
    1. SBus
    2. SumPPM
  4. Assigning input channels
  5. Connecting the motor controller (ESC)
    1. Using a servo signal to control the ESC
    2. Using the VESC6 as motor controller
  6. Connecting the position sensor
  7. Limiters
  8. Endpoints
  9. Aux Channel (optional)
  10. Bluetooth (optional)
  11. Play Function (optional)
You can’t perform that action at this time.