So my team is doing mini projects and we want to be able to make smaller bots for ftc or for Ontario skills. so in doing so we want to be able to make a robot with no roborio by june 21st in order to to make it during school hours. so in short iI am looking to see if anyone knows hot to wire a cim to a arduino to be controlled by a rc remote?
How do you wire a cim motor though a old spark max or a talon to a pwm to a arduino to be controlled by a rc remote?
Your best bet would probably be forfeiting the arduino and getting an rc controller (like from spectrum rc) if you really want to use an rc controller. You could use an arduino and output pwm on your analog ports, and have joysticks/potentiometers wired in.
Really cheap one I found, haven’t used it myself: https://www.robotshop.com/products/radiolink-r8ef-8-ch-24ghz-fhss-receiver-t8fb
I’m been diving into a lot of hobby-style robotics. What I’ve found to always be the answer when stuck: Break down the idea then Google it.
Often, my idea is one that combines multiple things that need to be done. In your case, it seems like you need do 3 things:
- Use Arduino PWM to control a motor controller
- Send data wirelessly to an arduino
You can most likely look up a tutorial on both of these things. Sometimes, you have to look at adjacent topics.
Here’s a tutorial for running a servo motor. They also send pwm signals, so you can use something similar.
I personally don’t have experience with RC, I looked to solve wireless via either a raspberry pi pico or esp23 board. So far the pico has been super promising as it was cheap and all pins were interruptable, so I can put encoders on any of them.
We built up a kitbot that was controlled by a hobby RC controller. The RC receiver has PWM ports for each of the channels that can be wired to the older style motor controllers (Spark or Talon) so you don’t need an Arduino at all. We used a Y splitter PWM cable to drive 2 motor controllers from the same receiver output and therefore we are able to control a 2 motor gearbox for each side of the robot. Most RC controllers can use a programmable mixing function to be able to mix two channels of output from a single 2 axis stick (i.e. when you push the stick up, both sides of the robot drive forward together, when you push the stick to the left, the left motors drive backward and the right motors drive forward causing the robot to spin to the left, and pushing the stick 45 degrees between up and left results in a sweeping turn forward and to the left). It was actually pretty easy (took about 2 hours to wire it up and get the mixing settings right once the mechanical build was done). We like to use that robot for driver practice as a simulated defender bot. It is the only robot in our shop that the mentors are allowed to drive.
We used the old Andymark hobby RC controller (I don’t think they sell it any more), but any hobby radio will work. GoBilda sells a pretty inexpensive 6 channel radio system that looks like it would do the trick. We only use 2 channels, but the system has more channels that we could use for mechanisms if we wanted to add something.
I’ve played with similar ideas in the past. For an RC controller we used FlySky. It worked fairly well. I hope to use it in a project this summer because you can sent multichannel information and I need to explore the options. Here are my notes from that. https://docs.google.com/document/d/e/2PACX-1vQWFFJPKsw4Rqstjo6042UizNLfjjeaBJW9KLJEetBMB-CLWivMIdaRsCNEasYeiop47_mE6s4Ej6WM/pub
With using an Arduino the servo library works really well. My notes on using an Arduino to control a Talon motor controller are here: Using an Arduino to control a Talon or Spark motor controller using PWM – Mr. McTavish
Using Arduino’s to communicate through Wifi and Bluetooth are other options - Wireless communication with Arduino – Mr. McTavish
The biggest challenge we had was students weren’t getting the results they expected because the Arduino was communicating with the serial port on the computer. Disconnecting it from the computer was key for their project.
The connection from CIM to the Talons or Sparks should be done with ring terminals like these: 14-16 AWG #8 Stud Ring Terminal - AndyMark, Inc
I dont know how to wire to an arduino, but the thing by @Ian_McTavish looks reasonable to me.
I would second the use of straight RC 2.4ghz radio stuff though, theres minimal setup work needed (really just binding and then mixing if needed), and you can just plug the PWM cable into it. Theres been other suggestions, we used a Turnigy 9x and acompanying 8 ch reciever.
I am currently doing this exact thing for my team with a Arduino and VEX PDH and motor controllers (not by choice it is what we have lying around). The standard RC receivers have 2 possible interfaces, a PWM interface which can directly control servos and other electronics and a serial interface. The standard serial interface is SBUS but because I am using a FlySky transmitter and receiver it has a similar protocol called IBUS. The library I am using to interpret the IBUS signal can be found here: GitHub - bmellink/IBusBM: Arduino library for RC IBUS protocol - servo (receive) and sensors/telemetry (send) using hardware UART. That being said I really like the idea of directly connecting PWM outputs to the motor controllers as somebody mentioned earlier. It doesn’t allow for advanced motion characteristics but it is a quick and dirty no code way to get a drive train working.
Also consider the Element 6 Radio Control System from goBILDA (Element-6 Radio Control System (Mode 2) - goBILDA). They have done lots of robot project with it. goBILDA is one of the top vendors in FTC. It would be great to work with a local FTC team on the project. FTC is a great pipeline for recruiting future FRC team members.
Or consider the CTRE HERO Development Board (HERO Development Board - CTR Electronics). It allows you to use your CAN experience and plug in a wireless Xbox controller to the USB port.
If you need an old Talon or Talon SR motor controller, DM me. A couple teams that dropped FRC and run FTC teams have given me their old inventory. I have a lot of the older components that I would be happy to ship to you.