My e-longboard design

bluemc said:
That's an awesome battery pack enclosure. What material did you use and where did you buy it? What did you use to cut it? What are you using to fasten/connect it to the board? How is it holding up.

The design is sleek and thin, I like the style a lot.

How much batteries do you have connected there?

For the battery enclosure I used about 1.2 mm plywood, I bought it here in Barcelona where I live now. To cut it I used a sharp knife (razor). And this battery enclosure is connected to the board using 10 screws, battery it self is not connected to the board. I have a 6S battery under it.
 
Mantas - Thanks, yeah I like the look it's sleek and thin. How does it hold up since battery isn't connected to the board? What kind of screws did you use and did you just screw them into the board itself?

You are just running the 1x SK3 - 6364-245kv motor on 6s? How fast do you think your board goes and are you climbing hills with it?

How much mah total are you running on your board and what's the distance?

Thanks!
 
bluemc said:
Mantas - Thanks, yeah I like the look it's sleek and thin. How does it hold up since battery isn't connected to the board? What kind of screws did you use and did you just screw them into the board itself?

You are just running the 1x SK3 - 6364-245kv motor on 6s? How fast do you think your board goes and are you climbing hills with it?

How much mah total are you running on your board and what's the distance?

Thanks!

Battery holds pretty ok, I used a 4mm screws and I drilled a board so screws comes out on the top of the board. But after a 10 km ride i found out that they get little bit unscrewed because of vibration I guess. So I have to find some solution for that.

Yes I am running 1x SK3 - 6364 - 245 kv on 6S, with this setup I was going 30km/h, but that was not full speed , already too much to feel comfortable on a skateboard :) especially with out brakes. So I have 5000 mah and I did a 10km distance , but that was not limit, i will try to go next time to see that is a limit.

About the hills, I am having one problem that do not allow me to go into steep hill - motor belt is slipping through a smaller cog. I am trying to make this belt mote tight but Alien drive kit is little bit not ok for my cog, cause I have a very small one (12 tooth). so now I am trying to adjust this kit, but maybe it is better just to order a 15 tooth cog. Maybe someone is experiencing the same problem ??? and have a solution...
 
Mantas said:
Yes I am running 1x SK3 - 6364 - 245 kv on 6S, with this setup I was going 30km/h, but that was not full speed , already too much to feel comfortable on a skateboard :) especially with out brakes.

BTW do you plan to change ESC to get braking abilities ?
 
bluemc said:
@mantas - does your eboard have brakes?

No I do not have brakes. I am thinking to change ESC, but not sure which one i should get. Now then I changed battery from 10S to 6S I think I have more options to choose not expensive ESC. Maybe someone can recommend me good and not expensive ESC with braking ??? Thanks.
 
Some pictures from my DIY home photo session
 

Attachments

  • DSC05058.JPG
    DSC05058.JPG
    25.7 KB · Views: 4,688
  • DSC05151.jpg
    DSC05151.jpg
    43.4 KB · Views: 4,688
  • DSC05145.jpg
    DSC05145.jpg
    45.3 KB · Views: 4,688
  • DSC05136.jpg
    DSC05136.jpg
    36.9 KB · Views: 4,688
  • DSC05123.jpg
    DSC05123.jpg
    46.2 KB · Views: 4,688
  • DSC05079.jpg
    DSC05079.jpg
    49.3 KB · Views: 4,688
  • DSC05120.JPG
    DSC05120.JPG
    58.4 KB · Views: 4,688
  • DSC05113.jpg
    DSC05113.jpg
    36 KB · Views: 4,688
  • DSC05144.JPG
    DSC05144.JPG
    41.7 KB · Views: 4,688
  • DSC05129.jpg
    DSC05129.jpg
    27.1 KB · Views: 4,688
This is really awesome! :shock:
Any very nearly like the board I just bought all parts for. :D

Another question about the battery, did you run into any problems with the long connector cable to the ESC?
Do you use additional Capacitors to ease the strain on the ESC?

-Tarwin
 
tarwin said:
This is really awesome! :shock:
Any very nearly like the board I just bought all parts for. :D

Another question about the battery, did you run into any problems with the long connector cable to the ESC?
Do you use additional Capacitors to ease the strain on the ESC?

-Tarwin

Thanks,

No I do not have any problem because of the long cables. And no extra capacitors are used.
 
shaneisme said:
Did you make those gears or where did you get them?

Gears I ordered from two places:
http://www.beltingonline.com/
http://www.aliendrivesystems.com/
 
Mantas said:
Here is a source code for Wii Nunchuck Library that works with Arduino mirco ( Ardunio UNO is a different one)

/*
* Nunchuck -- Use a Wii Nunchuck
* Tim Hirzel http://www.growdown.com
*
notes on Wii Nunchuck Behavior.
This library provides an improved derivation of rotation angles from the nunchuck accelerometer data.
The biggest different over existing libraries (that I know of ) is the full 360 degrees of Roll data
from teh combination of the x and z axis accelerometer data using the math library atan2.

It is accurate with 360 degrees of roll (rotation around axis coming out of the c button, the front of the wii),
and about 180 degrees of pitch (rotation about the axis coming out of the side of the wii). (read more below)

In terms of mapping the wii position to angles, its important to note that while the Nunchuck
sense Pitch, and Roll, it does not sense Yaw, or the compass direction. This creates an important
disparity where the nunchuck only works within one hemisphere. At a result, when the pitch values are
less than about 10, and greater than about 170, the Roll data gets very unstable. essentially, the roll
data flips over 180 degrees very quickly. To understand this property better, rotate the wii around the
axis of the joystick. You see the sensor data stays constant (with noise). Because of this, it cant know
the difference between arriving upside via 180 degree Roll, or 180 degree pitch. It just assumes its always
180 roll.


*
* This file is an adaptation of the code by these authors:
* Tod E. Kurt, http://todbot.com/blog/
*
* The Wii Nunchuck reading code is taken from Windmeadow Labs
* http://www.windmeadow.com/node/42
*
* Conversion to Arduino 1.0 by Danjovic
* http://hotbit.blogspot.com
*
*/

#ifndef WiiChuck_h
#define WiiChuck_h


#include "Arduino.h"
#include <Wire.h>
#include <math.h>


// these may need to be adjusted for each nunchuck for calibration
#define ZEROX 510
#define ZEROY 490
#define ZEROZ 460
#define RADIUS 210 // probably pretty universal

#define DEFAULT_ZERO_JOY_X 124
#define DEFAULT_ZERO_JOY_Y 131



class WiiChuck {
private:
uint8_t cnt;
uint8_t status[6]; // array to store wiichuck output
uint8_t averageCounter;
//int accelArray[3][AVERAGE_N]; // X,Y,Z
int i;
int total;
uint8_t zeroJoyX; // these are about where mine are
uint8_t zeroJoyY; // use calibrateJoy when the stick is at zero to correct
int lastJoyX;
int lastJoyY;
int angles[3];

bool lastZ, lastC;


public:

uint8_t joyX;
uint8_t joyY;
bool buttonZ;
bool buttonC;
void begin()
{
Wire.begin();
cnt = 0;
averageCounter = 0;
// instead of the common 0x40 -> 0x00 initialization, we
// use 0xF0 -> 0x55 followed by 0xFB -> 0x00.
// this lets us use 3rd party nunchucks (like cheap $4 ebay ones)
// while still letting us use official oness.
// only side effect is that we no longer need to decode bytes in _nunchuk_decode_byte
// see http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1264805255
//
Wire.beginTransmission(0x52); // device address
Wire.write(0xF0);
Wire.write(0x55);
Wire.endTransmission();
delay(1);
Wire.beginTransmission(0x52);
Wire.write(0xFB);
Wire.write((uint8_t)0x00);

Wire.endTransmission();
update();
for (i = 0; i<3;i++) {
angles = 0;
}
zeroJoyX = DEFAULT_ZERO_JOY_X;
zeroJoyY = DEFAULT_ZERO_JOY_Y;
}


void calibrateJoy() {
zeroJoyX = joyX;
zeroJoyY = joyY;
}

void update() {

Wire.requestFrom (0x52, 6); // request data from nunchuck
while (Wire.available ()) {
// receive byte as an integer
status[cnt] = _nunchuk_decode_byte (Wire.read()); //
cnt++;
}
if (cnt > 5) {
lastZ = buttonZ;
lastC = buttonC;
lastJoyX = readJoyX();
lastJoyY = readJoyY();
//averageCounter ++;
//if (averageCounter >= AVERAGE_N)
// averageCounter = 0;

cnt = 0;
joyX = (status[0]);
joyY = (status[1]);
for (i = 0; i < 3; i++)
//accelArray[averageCounter] = ((int)status[i+2] << 2) + ((status[5] & (B00000011 << ((i+1)*2) ) >> ((i+1)*2)));
angles = (status[i+2] << 2) + ((status[5] & (B00000011 << ((i+1)*2) ) >> ((i+1)*2)));

//accelYArray[averageCounter] = ((int)status[3] << 2) + ((status[5] & B00110000) >> 4);
//accelZArray[averageCounter] = ((int)status[4] << 2) + ((status[5] & B11000000) >> 6);

buttonZ = !( status[5] & B00000001);
buttonC = !((status[5] & B00000010) >> 1);
_send_zero(); // send the request for next bytes

}
}


// UNCOMMENT FOR DEBUGGING
//byte * getStatus() {
// return status;
//}

float readAccelX() {
// total = 0; // accelArray[xyz][averageCounter] * FAST_WEIGHT;
return (float)angles[0] - ZEROX;
}
float readAccelY() {
// total = 0; // accelArray[xyz][averageCounter] * FAST_WEIGHT;
return (float)angles[1] - ZEROY;
}
float readAccelZ() {
// total = 0; // accelArray[xyz][averageCounter] * FAST_WEIGHT;
return (float)angles[2] - ZEROZ;
}

bool zPressed() {
return (buttonZ && ! lastZ);
}
bool cPressed() {
return (buttonC && ! lastC);
}

// for using the joystick like a directional button
bool rightJoy(int thresh=60) {
return (readJoyX() > thresh and lastJoyX <= thresh);
}

// for using the joystick like a directional button
bool leftJoy(int thresh=60) {
return (readJoyX() < -thresh and lastJoyX >= -thresh);
}


int readJoyX() {
return (int) joyX - zeroJoyX;
}

int readJoyY() {
return (int)joyY - zeroJoyY;
}


// R, the radius, generally hovers around 210 (at least it does with mine)
// int R() {
// return sqrt(readAccelX() * readAccelX() +readAccelY() * readAccelY() + readAccelZ() * readAccelZ());
// }


// returns roll degrees
int readRoll() {
return (int)(atan2(readAccelX(),readAccelZ())/ M_PI * 180.0);
}

// returns pitch in degrees
int readPitch() {
return (int) (acos(readAccelY()/RADIUS)/ M_PI * 180.0); // optionally swap 'RADIUS' for 'R()'
}

private:
uint8_t _nunchuk_decode_byte (uint8_t x)
{
//decode is only necessary with certain initializations
//x = (x ^ 0x17) + 0x17;
return x;
}

void _send_zero()
{
Wire.beginTransmission (0x52); // transmit to device 0x52
Wire.write ((uint8_t)0x00); // sends one byte
Wire.endTransmission (); // stop transmitting
}

};


#endif


Hi,
Any of the codes have the functions of the metro-board controller. I think that is a slick setup.
[youtube]DMYhUHeX5Fg[/youtube]
 
Spooky1 said:
What a great e board, I love the slick design and the way you've adapted the batteries, congratulations!

I like the battery case too, looks awesome! :D
 
Yes this Metro-board controller looks interesting, I will try to code it for my board and see if it is easier to use acceleration in this way.
 
Ya, this controller kind of reminded me of the speed control in my Dodge. It's a paddle on the back of the steering wheel with an off/on switch to turn it on and to cancel the speed control without memory. To set the speed, tap the paddle down. To increase the speed incrementally by 2kph, tap the paddle up. To decrease the speed incrementally by 1kph, tap the paddle down. If you need exactly 5kph, it's 3 taps up and 1 tap down. :) To speed up, hold the paddle up and release at the new speed. To slow down, hold the paddle down and release at the new speed. To disengage the speed control (coast) with speed memory, tap the paddle toward you (also disengages with memory by tapping the brakes or depressing the clutch). To resume to your last speed, tap the paddle up. Slick setup.
 
Mantas said:
About the hills, I am having one problem that do not allow me to go into steep hill - motor belt is slipping through a smaller cog. I am trying to make this belt mote tight but Alien drive kit is little bit not ok for my cog, cause I have a very small one (12 tooth). so now I am trying to adjust this kit, but maybe it is better just to order a 15 tooth cog. Maybe someone is experiencing the same problem ??? and have a solution...

Sounds like you need a shorter belt. Or lengthen the adjuster slot.
 
I noticed when using this belt calculator http://www.sdp-si.com/cd/default.htm that if the <Pulley A> was too small compared to <Pulley B> the number of <Teeth in Mesh> would be highlighted in RED. So if you do not have enough teeth in mesh it could be more likely to slip. Increasing the size of Pulley A increased the number of teeth in mesh. My understanding of the belts is they require good tension too and the bearings to support that.
 
Beautiful job :)
 
Here is a source code for new controller algorithm.
Features:
Dynamic acceleration - faster in the beginning, slower in the end.
Speed hold function - If "Z" button is pressed speed value are saved and board keeps the speed without joystick. And using joystick you can increase or decrease hold speed (like Metro - board)
Fast acceleration option - if "C" button is pressed acceleration is fast all the time.

After a test ride with new algorithm I still see some things that needs to be improved... so keep tracking my posts if you are interested.


SOURCE :

#include "Wire.h"
#include "Wii.h" // Library for Wii Nunchuck
#include <Servo.h> // Library for controlin Servo or ESC


WiiChuck chuck = WiiChuck();
Servo myservo;
int speed_val; // Speed value
int speed_val_cur = 60; // Current speed value
int y = 0; // Jaystick value
int time = 200; // Delay timer
int speed_val_hold; // speed value which will be holded while Z button is pressed

void setup() {

Serial.begin(115200);
chuck.begin();
chuck.update();
myservo.attach(9); // ESC attached to 9 pin of Arduino

}

void loop() {

// If you hold down Z button of Nunchuck you accelerate faster
if ((chuck.buttonZ)||(chuck.buttonC)) {
if (chuck.buttonZ) {
Serial.print(" Z ");
//time = 100;
speed_val_hold = speed_val_cur; // Sets speed value to hold
}
// If you hold down C button of Nunchuck you accelerate slower
if (chuck.buttonC) {
Serial.print(" C ");
time = 100;
}
} else {
time = map (speed_val_cur,60,80,100,250);
speed_val_hold = 60;
}

delay(time);

chuck.update();
y = chuck.readJoyY();

// Maps the joystick value to the speed value (max speed 130) max posible 179
Serial.println();
speed_val = map(y, 0, 119, 62, 130);


// This is what hapens in case we loose a Blue tooth conecction
if (y > 122) {
speed_val = 60; // 60 means - no speed , motor stoped
speed_val_cur = 60; // 60 means - no speed , motor stoped
speed_val_hold = 60;
}
// This is whats hapens then we again have BT signal, it just restarts everything
if (y == 124) setup();

if (y <= 0) {
speed_val_cur = 60;
speed_val = 60;

}


if (speed_val_cur < speed_val) {

speed_val_cur = speed_val_cur + 1;



}
else speed_val_cur = speed_val;

if ((speed_val_hold > 60) && (y > 0) ) speed_val_hold++; // If hold button is pressed and joistic moved up - increase speed
if ((speed_val_hold > 60) && (y < 0) ) speed_val_hold--; // If hold button is pressed and joistic moved down - decrease speed

if (speed_val_hold > 60) speed_val_cur = speed_val_hold;



myservo.write(speed_val_cur); // Here we control ESC


//----- Printing to screen to see results ---------
Serial.print("Joy = ");
Serial.print(y);
Serial.print(" ");
Serial.print("Speed = ");
Serial.print(speed_val_cur);


}
 
rf said:
Mantas said:
About the hills, I am having one problem that do not allow me to go into steep hill - motor belt is slipping through a smaller cog. I am trying to make this belt mote tight but Alien drive kit is little bit not ok for my cog, cause I have a very small one (12 tooth). so now I am trying to adjust this kit, but maybe it is better just to order a 15 tooth cog. Maybe someone is experiencing the same problem ??? and have a solution...

Sounds like you need a shorter belt. Or lengthen the adjuster slot.

I made a little improvement to Alien Drive Kit, and now it works perfect.
 

Attachments

  • Photo 2013-05-27 19 06 33.jpg
    Photo 2013-05-27 19 06 33.jpg
    36.4 KB · Views: 4,475
@Mantas - Question regarding your battery case.

I like your battery case, it's real sleek. I see that, you used 1.22mm plywood. Used a sharp razor to cut it. Using 10 screws, which are 4mm screws screwed into the board from the top with a closed nut on bottom.

Mantas - Can this board support 5-7 lbs?

* Where did you buy the screws? Were the screws sticking out on the top or where they flat? - I'm thinking a screw like this would be best - http://www.boltdepot.com/Machine_screws_Slotted_flat_head.aspx
* How long are the screws when screwed in from the top?
* Would a washer help with stopping the screws from becoming loose?
* What did you use for the caps for the nuts? Looks like an acorn/cap nuts? - List of nuts here - http://www.boltdepot.com/Nuts.aspx?nv=l - I'm thinking maybe a wing nut would be best as you can hand tighten it, although it wouldn't look the best.
* Anyone can chime in have any better ideas on how to bolt a battery case to the board?

Maybe, you can use one of these to stop the bolts from loosening http://www.boltdepot.com/Metric_washers.aspx.
 
torqueboards said:
@Mantas - Question regarding your battery case.

I like your battery case, it's real sleek. I see that, you used 1.22mm plywood. Used a sharp razor to cut it. Using 10 screws, which are 4mm screws screwed into the board from the top with a closed nut on bottom.

Mantas - Can this board support 5-7 lbs?

* Where did you buy the screws? Were the screws sticking out on the top or where they flat? - I'm thinking a screw like this would be best - http://www.boltdepot.com/Machine_screws_Slotted_flat_head.aspx
* How long are the screws when screwed in from the top?
* Would a washer help with stopping the screws from becoming loose?
* What did you use for the caps for the nuts? Looks like an acorn/cap nuts? - List of nuts here - http://www.boltdepot.com/Nuts.aspx?nv=l - I'm thinking maybe a wing nut would be best as you can hand tighten it, although it wouldn't look the best.
* Anyone can chime in have any better ideas on how to bolt a battery case to the board?

Maybe, you can use one of these to stop the bolts from loosening http://www.boltdepot.com/Metric_washers.aspx.

Sorry I am not native english speaker, I don't get your question "Can this board support 5-7 lbs?" :) if you ask what is a weight of the board , so its 6Kg.
About the screws - yes I use flat ones so you canot feel them from the top of the board. Length is different from 16 mm to 25mm. Now I have idea of using screws with plastic part inside to avoid loose. Bolting a battery direct to board is a good idea as well - i think it should make less vibration noise while going on bad surface.
Sorry I canot give you a good advice where to buy everything, because I bought all material in Barcelona, where I live now.
 
Back
Top