Go Down

Topic: modding an RC car (Read 16389 times) previous topic - next topic

Destined

Could you give me your opinion on

http://www.ebay.com.au/itm/NEW-1-8-HSP-RADIO-REMOTE-CONTROL-4X4-4WS-RC-ROCK-CRAWLER-TRUCK-/390383503790?pt=AU_Toys_Hobbies_Radio_Controlled_Vehicles&hash=item5ae4ab89ae

It is in the sort of price range I could get half a dozen. I seem to be really limited in Australia on the rock crawler front. Most hobby stores don't have any or have a single speed/left/right only model.

I belive I might be able to get a losi night crawler as well, but the 1/8 scale is attractive to me since the yard I have to run it on is huge. I realise the 1/10 rock crawlers can be more fun cause of the challenge but that isn't really my purpose.

I think in general the rockcrawlers are much more suitable for me.

DuaneB

Hi,
I don't have any experience of hsp, the general opinion from scanning through forums is that they are perfectly ok for the money- meaning that as they are roughly half the price of established hobby brands you might experience the occasional dud component and the long term durability might not match up to a Losi or axial.

Looking on YouTube, the crawler looks capable enough, I suggest you try one and if your project works out you can always migrate it to a more capable chassis later on or if the hsp holds up, stay with it.

Duane B

rcarduino.blogspot.com


Read this
http://rcarduino.blogspot.com/2012/04/servo-problems-with-arduino-part-1.html
then watch this
http://rcarduino.blogspot.com/2012/04/servo-problems-part-2-demonstration.html

Rcarduino.blogspot.com

Destined

Thanks :)

I ended up getting one for under 200 bucks, which is awesome considering how much more capable it is.

I think it will forfill my needs.

Axial and Losi don't appear to have 1/8 scale on 1/10 which is about 20-25 cm smaller in length. They are also starting at like 400 for bottom of the line in Australia up to like 800. So yeah, way more.

Destined

Back and confused as normal :D

I found the datasheet for the IC in the reciever (while it is in chinese, the diagram is in english, but they aren't labelled like the RC cars I have taking apart. There is no forward/back etc.

http://www.digchip.com/datasheets/parts/datasheet/922/RSM8196.php



This is the image of the chipset in the reciever.

There is also an ESC unit. I don't know if i need to open that up or not buy it requires a tiny screwdriver which I currently don't have.

DuaneB

Hi,

Stop right where you are !

This is a proportional system that works very differently to your previous systems. I suggest putting everything back together and then interface with the system through the factory installed plugs. Its very simple and there is less chance of you damaging anything.

For the background information on what the signals will look like, see here -

http://rcarduino.blogspot.com/2012/01/how-to-read-rc-receiver-with.html

Its the same type of signal for both steering (channel 1 normally) and speed (channel 2)

To output this type of a signal, use the servo library.

The code samples above measure the input in microseconds, you can use servo.writeMicroseconds to pass this signal back out using the servo library. This would be the best starting point for you.

I will give you some guidance on how to physically connect the Receiver/ESC/SERVOS to the Arduino and some sample code to read in a signal and output the same signal through Arduino later today.

In the meantime, have a poke around on my blog, its all relevant to you now that you have a proportional rc system rather than the on/off rx/tx systems you have worked with before.

rcarduino.blogspot.com

Duane B.




Read this
http://rcarduino.blogspot.com/2012/04/servo-problems-with-arduino-part-1.html
then watch this
http://rcarduino.blogspot.com/2012/04/servo-problems-part-2-demonstration.html

Rcarduino.blogspot.com

Destined

Thank you the help is much appreciated!

Is the basic idea going to be skip the whole reciever module and take the 2 pigtails out and interface them with the ardunio? I am guessing I will need a female to open wires to interface with the arduino. I would also ideally like to power the arduino from the car battery which is 7.2 volts i think.

My arduino has a wifi shield so I plan to communicate with the crawler by wifi (you don't need to teach me how to do that :) ).

I am so happy i can interface with the factory connections cause I was dreading trying to solder wires on it!

I had read the RC reciever part of your blog, but that isn't what I am trying to do right?

DuaneB

#81
Feb 15, 2012, 11:30 am Last Edit: Feb 15, 2012, 11:47 am by DuaneB Reason: 1
Hi,
   
Quote
I had read the RC reciever part of your blog, but that isn't what I am trying to do right?


It kind of is what you will be trying to do. The signals that I describe are the signals that your ESC and Servo will be expecting so you will need to understand them and generate the same type of signals from your Arduino. The Servo library will do this for you. I am guessing that you want to send commands over wifi to have the Arduino generate ESC and Servo signals ?

As for the hardware interfacing, its quite easy. The existing servo and ESC cables should have three wires, black, red and white. You should find that they have the same spacing as standard PCB Headers so you can simply plug two headers into a bread board and connect the ground (black wires) and power (red wires) together with jumpers on the breadboard. For the signal wire to your servo or esc, you want to connect this to whichever pin will generate your signal on the Arduino. For this to work, you will also need to connect the Arduino ground so that it is 'common' with the ground of the car - basically the term common ground refers to two separate power circuits having a common (shared/connected) ground.

I would recommend that you also add a current limiting resistor between the Arduino output pin and the Servo or ESC Signal wire, something around 300 omhs should do.

My approach would be to test the basics before doing anything else, you will understand a lot more and know that your reasoning in later and more complex stages is correct. To my mind your best starting point is to simply read in one of the channel signals using the Arduino connected to the existing receiver and output the same signal using the Arduino to the Servo or ESC, if the car does what you expect great, move on, if not great you only have two things for focus on trouble shooting rather than five.

As for the power, 7.2 might not be enough to reliably power the regulator that gives the Arduino its 5 volts, I would suggest that in the short term you use a PP3 9v Battery.

Duane B
Read this
http://rcarduino.blogspot.com/2012/04/servo-problems-with-arduino-part-1.html
then watch this
http://rcarduino.blogspot.com/2012/04/servo-problems-part-2-demonstration.html

Rcarduino.blogspot.com

Destined

#82
Feb 15, 2012, 11:59 am Last Edit: Feb 15, 2012, 12:03 pm by Destined Reason: 1
"I am guessing that you want to send commands over wifi to have the Arduino generate ESC and Servo signals ?" Yes exactly. But if I can control it just with the arduino then sending the commands part is easy for me. I just plan to make a generic turn and a generic drive function and send it a number which tells it how much to turn or how fast to go forward.


So here is the top view of the car(at bottom of post).

The RC module is on the right and the ESC module on the top middle and then there is the on/off switch(the loose wire is the battery connector but I am sure you didn't need me to tell you that).

So what you are saying is take the 2 connectors out of the RC module and plug them into the breadboard. They appear to be female as opposed to male so I can't plug them straight into a breadboard. I am guessing I can get a double female adapater or just put wires in there for now.

So then both the grounds connect to the arduino ground. I then connect the ground and power together individually for each one.

Then finally each wire with a 300 ohm resistor to an output on the arduino. Are we using PWM or analog?

Then I use the code in the part 1 of your blog post, or do you have something simpler?

Sorry if I am just repeating you, I am just checking I understand! :)
"To my mind your best starting point is to simply read in one of the channel signals using the Arduino connected to the existing receiver and output the same signal using the Arduino to the Servo or ESC"
This I don't understand.What am I reading in? Neither of those wires are connected to the RC reciever so won't the reciever no longer work?



DuaneB

Hi,
    If you have any male or female PCB Headers, you can use these to make connections and cables, the pin spacing is the same. You can see where I have used females for my wheel speed sensors and males for connecting a modified receiver cable and an unmodified ESC Cable to the right of the four females. As the pin spacing for RC Equipment and PCB Headers is the same you can cut and splice whatever you need. If I need to join my modified receiver cable to my unmodified ESC Cable I simply use a 3 pin piece of male header to join the two.



Duane B

Read this
http://rcarduino.blogspot.com/2012/04/servo-problems-with-arduino-part-1.html
then watch this
http://rcarduino.blogspot.com/2012/04/servo-problems-part-2-demonstration.html

Rcarduino.blogspot.com

Destined

That is really genius!

Off to get parts in the morning!

Should I be using PWM or analog?

DuaneB

Hi,
   So that I don't feel like a fraud, thats the original circuit which I could never get to reliably, the current circuit is -



I have just updated my original blog post with both circuits here -

http://rcarduino.blogspot.com/2012/01/traction-control-part-13-we-have.html

I suggest you get some decoupling capacitors for cleaning shared power and also some heat shrink tubing for insulating self made cables and connectors on your shopping trip.

For generating the signal, use the servo library on any of the digital pins.

Duane B

rcarduino.blogspot.com
Read this
http://rcarduino.blogspot.com/2012/04/servo-problems-with-arduino-part-1.html
then watch this
http://rcarduino.blogspot.com/2012/04/servo-problems-part-2-demonstration.html

Rcarduino.blogspot.com

Destined

#86
Feb 16, 2012, 03:34 am Last Edit: Feb 16, 2012, 06:03 am by Destined Reason: 1
Where do you get those connectors(the male triple pin ones that come out of the servo motor and plug into the RC)? I found the male version, but I can't find a thin female version anywhere in my local electronics stores.

The 2 motors are obviously connected to the ESC unit. However the servo motor has the single triple (red/black/white) cord coming out of it. So I am not sure how to set it up so that I can get it power.

I am assuming the power comes from the triple  (red/black/white) wire which connects to the RC unit.

So does that mean I put both the servo wires, and the motor wires on the breadbroad and join the red wires in a powerrail so that the servo can get power? I can't see how else it could get power.


Code: [Select]

#include <Servo.h>

Servo myservo;
int val = 50;

void arm(){
 // arm the speed controller
 Serial.println("Arming");
 setSpeed(50);
 delay(2000); //delay 2 second
}

void setSpeed(int speed){
 // speed is from 0 to 100 where 0 is off and 100 is maximum speed
 //the following maps speed values of 0-100 to angles from 0-180,

 int angle = map(speed, 0, 100, 0, 180);
 myservo.write(angle);  
   
}

void setup()
{
 myservo.attach(8);
 arm();
 //setup serial communication
 Serial.begin(9600);
}


void loop()
{
 while(!Serial.available()==0)
 {  
   val = Serial.read() - '0';
   val = val * 10;
   setSpeed(val);
   Serial.println(val);
 }

 

}  


That is my code for the ESC and appears to work fine.

Now I need to figure the servo! I need help because I am not willing to just randomly try. The only issue is the power, will be easy to control once it has that. I don't want to blow it up, but it has simple as connecting the red wire from the ESC ro the red wire of the servo as I can see how else it gets power. The RC unit appears to get it's power from the ESC red wire.


DuaneB

Hi,
   The male and female connectors on my board are just male and female PCB Headers cut to size. The headers come in strips around 60 pins long, you just cut off what you need.

   As for the servo power, your electronic speed controller has a BEC, this stands for battery elimination circuit, years ago you would have needed separate power for some of the RC Components but for the past decade or so most speed controllers have included a BEC which supplies power intended to drive servos and RC Receivers. In some speed controllers, the BEC is supplied through the cable that normally runs to the radio, it appears to be this way in your case. So yes, you can use the power available from the red and black wires of the ESC 3 Wire radio connector to supply power to your servo.

I am surprised that the ESC Code works, 0 should be full reverse of full brakes, I would not expect a model to move forwards until 90+ ?

Duane B

rcarduino.blogspot.com

Read this
http://rcarduino.blogspot.com/2012/04/servo-problems-with-arduino-part-1.html
then watch this
http://rcarduino.blogspot.com/2012/04/servo-problems-part-2-demonstration.html

Rcarduino.blogspot.com

Destined

Thanks I will give it a try. I just didn't want to incase it was going to lead to bad results.

I was surprised to, with the research I did thanks to your tips I found 0 was the standard arming.

My code makes the 0-180 become 0-100 (cause I am simple and prefer to work 0-100) and 50 is dead stop. The lower the number goes below 50 the faster it goes in reverse. The the higher the number goes above 50 the faster it goes forward.

so like 40 is slow back, 30 medium speed back, 20 fast back. 10 and 0 don't seem to make it go any faster and like 60 is slow forward, 70 medium speed forward, 80 fast . 90 and 100 don't seem to make it go any faster.

Hitting with 50 arm its for use and makes a little tune to let me know it is done right.

DuaneB

Hi,
   The extremes of throttle range are often dead zones, my ESCs all reach max current around 85% throttle just like yours.

   Just to be sure, you did follow the manufacturers instructions for initially programming the ESC ?

   I know why you are using 0-100 but if you switch to 1000-2000 with 1500 as the mid point you will be thinking in the same terms as your equipment. At the moment, you are thinking in a made up range - 0 to 100 - which you then convert to another made up range 0-180 which the servo library then converts into yet another made up range 1000-2000 which finally gets converted into the number of timer ticks required to generate the pulse.

   If you start to think in the 1000-2000 millisecond range you eliminating two sets of costly conversions, it will also ensure than you can switch your model between autonomous and manual mode more easily as you would tend to read incoming RC Pulses in milliseconds.

Just a suggestion.

Duane B.

   

Read this
http://rcarduino.blogspot.com/2012/04/servo-problems-with-arduino-part-1.html
then watch this
http://rcarduino.blogspot.com/2012/04/servo-problems-part-2-demonstration.html

Rcarduino.blogspot.com

Go Up