element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Holiday Special 19
  • Challenges & Projects
  • Project14
  • Holiday Special 19
  • More
  • Cancel
Holiday Special 19
Blog 5000W Dual Drive Electric Car
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Holiday Special 19 to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: deolee
  • Date Created: 12 Jan 2020 4:11 PM Date Created
  • Views 5226 views
  • Likes 18 likes
  • Comments 21 comments
  • holidayspecial19ch
  • restorerepairch
Related
Recommended

5000W Dual Drive Electric Car

deolee
deolee
12 Jan 2020

Hello guys,

 

For this year's Holiday Special 19 project, I decided to embark on an fun and exciting journey to modify and upgrade an 50W BMW i8 electric baby car, which originally could barely move when i sat on it, to a fast and furious 5000W dual drive electric car which can hit top speeds of 60km/h. I was initially skeptical on whether this project was feasible and could be completed within the month. However, after overcoming many of the difficulties and challenges, I am very happy to finally present to all of you a compilation video of my journey in bringing this project to life.

 

Video

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

Video Contents

0:00 - Project Overview

0:14 - Main goals of electric car

0:32 - Comparison between Old and New components

3:16 - Gear Ratio calculation

3:59 - 3D Printing wheel and motor pulley

4:13 - Car throttle and brakes setup

5:32 - Controlling car front headlights

6:07 - Car power up sequence

8:36 - Car secondary battery

9:08 - Car secondary battery life calculations and implementation of sleep mode

9:36 - Optocoupler isolation for arduino microcontroller

10:24 - Assembly of electronics on pcb

10:46 - Installation of wheel pulley

11:09 - Mounting of brushless motor

11:31 - Overcoming flex of car plastic frame

12:20 - Car cooling system

12:40 - Battery charging and bms

13:01 - Programming of VESC

13:17 - Demonstration of power up sequence

13:40 - Journey of failures and success

 

 

 

 

 

 

Photos of key installations

 

BEFORE

image

 

AFTER

image

 

Unboxing the 50x 26650 Batteries

image

 

Assembled Battery (36v 25Ah)

image

 

10 Inch wheel with 3d printed pulley

image

 

Custom 3d printed mount for 36W car LED

image

 

3D printed steering wheel mount to attach 2x thumb throttle

image

 

Main Car Central Control Circuit (Front)

image

 

Main Car Central Control Circuit (Back)

image

 

Car Power Mosfet Circuit

image

 

Fusion 360 - Motor pulley

image

 

Fusion 360 - Wheel pulley

image

 

Fusion 360 - Steering wheel throttle mount

image

 

Fusion 360 - Spacer with bearing holder

image

Fusion 360 - Pulley Load Stress Simulation

image

 

 

 

 

Circuit Schematic

image

 

Parts & Components

 

(Element 14)

  • 6x IRFS7530 60V 240A power mosfet
  • 1x IRLZ44N N-channel mosfet
  • 2x FL817C Transistor Output Optocoupler
  • 2x H11L1 Digital Optocoupler
  • 4x 1/4w 200ohm resistor (for optocoupler)
  • 2x 1/4w 270ohm resistor (for optocoupler)
  • 6x 1/4w 1.5ohm resistor (for mosfet gate resistor)
  • 1x 1/4w 10kohm resistor (for mosfet pull down resistor)
  • 1x 1/4w 4.7kohm resistor (for mosfet pull down resistor)
  • 1x 2w 15ohm resistor
  • 1x 42v TVS
  • 1x 15V TVS
  • 1x L7805CVL7805CV linear regulator
  • 1x RECOM 0505 isolated dc-dc converter
  • 1x MCP1700T-3302E/TT 3.3v Low power regulator

 

(Flipsky)

  • 2x 6454 2450W Flipsky BLDC Motor
  • 2x Flipsky VESC 4.12v, 50A Continuous, 240A burst

 

(AliExpress)

  • 50x 26650 5000mah Lithium Ion Battery
  • 1x 3.3v Arduino Pro Mini
  • 1x 200W 42v to 12v dc-dc buck converter
  • 1x 150A resettable car fuse
  • 1x 18650-35E 3500mah Samsung battery
  • 4x 10 inch rubber pneumatic wheels with 12mm bearings
  • 2x Thumb Throttle
  • 2x 36W Car Headlights LED
  • 5v to 4.2v lithium charger
  • R551 Fingerprint scanner

 

 

Arduino Code

 

#include <Servo.h>
#include "LowPower.h"
#include <R551_Fingerprint.h>
#include <SoftwareSerial.h>


Servo leftVESC;
Servo rightVESC;


//A0 - Left Analog Throttle
//A1 - Right Analog Throttle

//D2 - Left & Right Throttle Power

//D3 - R551 Finger Detection Signal
//D4 - R551 RX UART
//D5 - R551 TX UART
//D6 - Front LED Lights
//D7 - Main Power System
//D8 - Left ESC Signal Input
//D9 - Right ESC Signal Input
//D10 - Force Speed Limiter
//D11 - Buzzer
//D12 - Lights State Switch


unsigned long lastFingerOnSensorMicros = 0;


SoftwareSerial mySerial(5, 4); //RX, TX
R551_Fingerprint finger = R551_Fingerprint(&mySerial);


//for sound feedback
int delayTime = 50;
int toneFrequency = 2900;


int currentUserID = 0;


    
    int maxSpeedLimitArray[] = {100, 50, 50, 50};
    //For Speed limiting different users [Enter Speed limit from 0(Min) - 100(Max)]
    //currentUserID 1 - Amadeo
    //currentUserID 2 - Friend 1
    //currentUserID 3 - Friend 2
    //currentUserID 4 - Friend 3


    int currentSpeedLimiterMode = 1;
    //double tap - exit all modes (Mode 1) (100% throttle)
    //single tap - police slow mode (5km/h) (Mode 2) (25% throttle)
    //3 taps - trial mode slow (15km/h) (Mode 3) (35% throttle)
    //4 taps - trail mode fast (30km/h) (Mode 4) (45% throttle)


int lightSwitchState = 0;
boolean previousLightStateButtonHIGH = true;


boolean previousSpeedLimiterButtonHIGH = true;
unsigned long lastButtonPressedMillis = 0;
int consecutiveButtonPresses = 0;


void setup() {
  // put your setup code here, to run once:

  pinMode(2, OUTPUT);
  pinMode(3, INPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, INPUT);
  pinMode(9, INPUT);
  pinMode(10, INPUT_PULLUP);
  pinMode(11, OUTPUT);
  pinMode(12, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);


  attachInterrupt(digitalPinToInterrupt(3), fingerDetectionStateChanged, CHANGE);


  Serial.begin(115200);


//blink led 3 times to show power up
digitalWrite(LED_BUILTIN, HIGH);
delay(70);
digitalWrite(LED_BUILTIN, LOW);
delay(70);
digitalWrite(LED_BUILTIN, HIGH);
delay(70);
digitalWrite(LED_BUILTIN, LOW);
delay(70);
digitalWrite(LED_BUILTIN, HIGH);


Serial.println("Electric Car Central Control System Initialized!");

//Initialize fingerprint scanner


//Comment out this section if fingerprint baudrate has been changed

//finger.begin(57600);
//
//if(finger.verifyPassword()) {
//
//  finger.setSlowBaudRate();
//}

  finger.begin(28800);

   if (finger.verifyPassword()) {
    
      Serial.println("Found fingerprint sensor!");
      finger.getTemplateCount();
      Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
      delay(50);
      sleep(true);
  
  }else{
      Serial.println("Did not find fingerprint sensor");

      sleep(false);
  }

}

void loop() {


 if(currentUserID >= 1 && currentUserID <= 10) {


      if(digitalRead(3) == LOW) {
        
          runElectricCarMainCode();


          //check if user wants to change the current state of the light
          checkForLightStateChange();
          //check if user wants to force limit the speed due to police
          checkForSpeedLimiterModeChange();
          
      }else{


          //cut throttle
          leftVESC.writeMicroseconds(1500);
          rightVESC.writeMicroseconds(1500);
          
          playFingerDetectedSound();

          unsigned long initialFingerDetectedMillis = millis();
          unsigned long lastHighMillis = millis();

          unsigned long minimumTimeFingerOnSensor = 500;
          
          while ((millis() - initialFingerDetectedMillis <= minimumTimeFingerOnSensor && digitalRead(3) == HIGH) || (millis() - lastHighMillis < 50 && digitalRead(3) == LOW)) {
            
            if(digitalRead(3) == HIGH) {

              lastHighMillis = millis();
            }else{

              initialFingerDetectedMillis = millis();
            }
            
            delay(1);
          }

          if(millis() - initialFingerDetectedMillis >= minimumTimeFingerOnSensor) {
             //user placed finger on fingerprint scanner to power down the electric car
             currentUserID = 0;
             powerDownCar();
          }else{

            finger.sleep();
          }

      }

    }else{

      //car power on not yet authorized, continuously check fingerprint scanner for verification

      Serial.println("Time Finger Not On Sensor = " + String((micros() - lastFingerOnSensorMicros)/1000000.0) + "s");

      if(digitalRead(3) == LOW) {
      
          //finger not on sensor
          if(micros() - lastFingerOnSensorMicros > 3000000) {
            //finger not on sensor for 3s
                
                sleep(true);   
          }
       
        }else{

          //finger on sensor
          lastFingerOnSensorMicros = micros();
      
          delay(25);
  
          currentUserID = identifyFingerprint();          
        }    
       }
}

int identifyFingerprint() {


    //Identify Fingerprint
    
    //currentUserID 1 - Amadeo
    //currentUserID 2 - Friend 1
    //currentUserID 3 - Friend 2
    //currentUserID 4 - Friend 3
    
    int id = getFingerprintIDez();
    int currentUserID = 0;


    Serial.println("ID Number" + String(id));


    if(id == -10) {
        Serial.println("Please press finger");
        
    }else if(id == -1) {


        Serial.println("Finger Not Found In Database!");


    }else if (id <200) {
      
        switch(id) {

        case 1:
        Serial.println("Welcome Amadeo!");
        currentUserID = 1;
        break;

        case 2:
        Serial.println("Welcome Amadeo!");
        currentUserID = 1;
        break;

        case 3:
        Serial.println("Welcome Amadeo!");
        currentUserID = 1;
        break;

        case 4:
        Serial.println("Welcome Amadeo!");
        currentUserID = 1;
        break;

        case 5:
        Serial.println("Welcome Friend 1!");
        currentUserID = 2;
        break;

        case 6:
        Serial.println("Welcome Friend 1!");
        currentUserID = 2;
        break;

        case 7:
        Serial.println("Welcome Friend 2!");
        currentUserID = 3;
        break;
        
        case 8:
        Serial.println("Welcome Friend 2!");
        currentUserID = 3;
        break;
        
        case 9:
        Serial.println("Welcome Friend 3!");
        currentUserID = 4;
        break;


        case 10:
        Serial.println("Welcome Friend 3!");
        currentUserID = 4;
        break;

      }

      if(id >= 1 && id <= 10) {
          //fingerprint authentication success


           //wait for user to remove finger from fingerprint scanner, then put fingerprint scanner to sleep
           unsigned long fingerRemovedInitialMillis = millis();
           
            while(digitalRead(3) == HIGH || millis() - fingerRemovedInitialMillis > 100) {


              fingerRemovedInitialMillis = millis();
              delay(1);
            }


            finger.sleep();


            powerUpCar();
     
        }
      
    }
        
      return currentUserID;

}

void powerUpCar() {
  
  Serial.println("Car Powering Up!");


  //set default light state to off
  lightSwitchState = 0;
  
  //Power on left & right throttle
  digitalWrite(2, HIGH);
  //Turn on power mosfets
  digitalWrite(7, HIGH);
  //Turn on front lights
  digitalWrite(6, HIGH);
  delay(100);
  digitalWrite(6, LOW);
  delay(100);
  digitalWrite(6, HIGH);
  delay(100);
  digitalWrite(6, LOW);


  //turn on VESC signals
  leftVESC.invertPWMSignal();
  leftVESC.attach(8);
  rightVESC.invertPWMSignal();
  rightVESC.attach(9);


  
}

void powerDownCar() {


  Serial.println("Car Powering Down!");

  playCarPowerDownSound();

  //Turn on front lights
  pinMode(6, OUTPUT);
  digitalWrite(6, LOW);
  
  //Turn off power mosfets
  digitalWrite(7, LOW);


  //Power off left & right throttle
  digitalWrite(2, LOW);
  
  //Turn off vesc signals
  leftVESC.detach();
  rightVESC.detach();
  
  pinMode(8, INPUT);
  pinMode(9, INPUT);

  //wait for user to remove finger from fingerprint scanner, then put fingerprint scanner and arduino to sleep
  unsigned long fingerRemovedInitialMillis = millis();

  while(digitalRead(3) == HIGH || millis() - fingerRemovedInitialMillis > 100) {


    fingerRemovedInitialMillis = millis();
    delay(1);
  }


  sleep(true);
}


void runElectricCarMainCode() {


//Output Signal Range to VESC 700us (Minimum) to 1500us (Center) to 2300us (Maximum)


int brakePWMPulseWidth = 1500.0 - ((analogRead(A0) - 235.0) / 575.0) * (maxSpeedLimitArray[currentUserID -1]/100.0 * 800.0);


int throttlePWMPulseWidth = 1500.0 + ((analogRead(A1) - 240.0) / 570.0) * (maxSpeedLimitArray[currentUserID -1]/100.0 * 800.0); 


if(currentSpeedLimiterMode == 2) {


    //speed limit 5km/h
    throttlePWMPulseWidth = 1500.0 + ((analogRead(A1) - 240.0) / 570.0) * (0.25 * 800.0);
    
}else if(currentSpeedLimiterMode == 3) {


    //speed limit 15km/h
    throttlePWMPulseWidth = 1500.0 + ((analogRead(A1) - 240.0) / 570.0) * (0.35 * 800.0);
    
}else if(currentSpeedLimiterMode == 4) {


    //speed limit 30km/hv
    throttlePWMPulseWidth = 1500.0 + ((analogRead(A1) - 240.0) / 570.0) * (0.45 * 800.0);
}


int outputPWMPulseWidth = 0.0;


if(brakePWMPulseWidth < 1460) {

  //user is applying brake
  //ignore throttle input and apply brakes
  outputPWMPulseWidth = brakePWMPulseWidth;
  
}else if(throttlePWMPulseWidth < 1535){
  
  //user is not applying throttle and not applying brakes
  outputPWMPulseWidth = 1500.0;
  
}else{
  
  //user is applying throttle and not applying brakes
  outputPWMPulseWidth = throttlePWMPulseWidth;
  
}


leftVESC.writeMicroseconds(outputPWMPulseWidth);
rightVESC.writeMicroseconds(outputPWMPulseWidth);


Serial.println("Pulse Width = " + String(outputPWMPulseWidth) + "us");


delay(5);


}

void checkForLightStateChange() {

  if(previousLightStateButtonHIGH == true) {

          if(digitalRead(12) == LOW) {

          unsigned long firstEnterMillis = millis();
          boolean pressSuccess = true;
          
          while(millis() - firstEnterMillis < 5) {
          
            if(digitalRead(12) == HIGH) {
          
              pressSuccess = false;
            }
          
          }

          if(pressSuccess) {
          //light switch state 0 = OFF
          //light switch state 1 = on 25%
          //light switch state 2 = on 50%
          //light switch state 3 = on 100%
          
            if(lightSwitchState == 3) {


              lightSwitchState = 0;
            }else {


              lightSwitchState++;
            }

            Serial.println("StateChange = " + String(lightSwitchState));


              if(lightSwitchState == 0) {


                analogWrite(6, 0);
                
              }else if(lightSwitchState == 1) {


                analogWrite(6, 64);
                
              }else if(lightSwitchState == 2) {


                analogWrite(6, 127);
                
              }else if(lightSwitchState == 3) {


                analogWrite(6, 255);
                
              }

              previousLightStateButtonHIGH = false;         
          }

        }

  }else{

    //user havent released button yet
    if(digitalRead(12) == HIGH) {

          unsigned long firstEnterMillis = millis();
          boolean relaseSuccess = true;
          
          while(millis() - firstEnterMillis < 10) {
          
            if(digitalRead(12) == LOW) {
          
              relaseSuccess = false;
            }
          
          }

          if(relaseSuccess) {

              previousLightStateButtonHIGH = true;
          }

        }
  }
}

void checkForSpeedLimiterModeChange() {

  if(previousSpeedLimiterButtonHIGH == true) {

          if(digitalRead(10) == LOW) {

          unsigned long firstEnterMillis = millis();
          boolean pressSuccess = true;
          
          while(millis() - firstEnterMillis < 5) {
          
            if(digitalRead(10) == HIGH) {
          
              pressSuccess = false;
            }
          
          }

          if(pressSuccess) {

              if(millis() - lastButtonPressedMillis <= 300) {
                
                //button is consecutively pressed
                consecutiveButtonPresses++;

              }else{

                //button is pressed first time
                consecutiveButtonPresses = 1;
                
              }
              
              lastButtonPressedMillis = millis();
              
              previousSpeedLimiterButtonHIGH = false;
            
          }

        }else{

            //button is not pressed
            if(millis() - lastButtonPressedMillis > 300 && consecutiveButtonPresses != 0) {
    
              //user finished selecting mode
              if(consecutiveButtonPresses == 1) {
                  //limit speed to 5km/h
                  currentSpeedLimiterMode = 2;
                  playTone(1);
                
              }else if(consecutiveButtonPresses == 2) {
                  //REMOVE SPEED LIMIT
                  currentSpeedLimiterMode = 1;
                  playSuccessSound();
                
              }else if(consecutiveButtonPresses == 3) {
                  //limit speed to 15km/h
                  currentSpeedLimiterMode = 3;
                  playTone(3);


              }else if(consecutiveButtonPresses == 4) {
                  //limit speed to 30km/h
                  currentSpeedLimiterMode = 4;
                  playTone(4);

              }
                  consecutiveButtonPresses = 0;
            }
        }
        
  }else{

    //user havent released button yet
    if(digitalRead(10) == HIGH) {

          unsigned long firstEnterMillis = millis();
          boolean relaseSuccess = true;
          
          while(millis() - firstEnterMillis < 10) {
          
            if(digitalRead(10) == LOW) {
          
              relaseSuccess = false;
            }
          
          }

          if(relaseSuccess) {

              previousSpeedLimiterButtonHIGH = true;
          }
        }
  }

}

void sleep(boolean shouldSleepFingerprint) {

    Serial.println("Sleep!");
    delay(30);

    if(shouldSleepFingerprint) {


          finger.sleep();
    }
    
    digitalWrite(LED_BUILTIN, LOW);
    
    LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF); 


    digitalWrite(LED_BUILTIN, HIGH);


    Serial.println("Woke Up!");

}

void fingerDetectionStateChanged() {

    lastFingerOnSensorMicros = micros();
}

// returns -1 if failed, -10 if no finger, otherwise returns ID #
int getFingerprintIDez() {
  long initialMillis = millis();
  int p = finger.getImage();
  if (p == FINGERPRINT_NOFINGER) return -10;
  else if (p != FINGERPRINT_OK)  return -1;

  if(p == FINGERPRINT_OK) {

    playFingerDetectedSound();
  }
  
  p = finger.image2Tz();
  if (p != FINGERPRINT_OK)  return -1;

  p = finger.fingerSearch();
  if (p != FINGERPRINT_OK) {
    playFailSound();
    return -1;
  }

  // found a match!
  Serial.print("Found ID #"); Serial.print(finger.fingerID); 
  Serial.print(" with confidence of "); Serial.println(finger.confidence);
  Serial.println("Time Taken:" + String((millis() - initialMillis)/1000.0) + "s");

  playSuccessSound();

  return finger.fingerID; 
}

void playCarPowerDownSound() {

  tone(11, toneFrequency);
  delay(1000);
  noTone(11);
}

void playFingerDetectedSound() {

  tone(11, toneFrequency);
  delay(delayTime);
  noTone(11);
}

void playSuccessSound() {

  tone(11, toneFrequency);
  delay(delayTime);
  noTone(11);
  delay(delayTime);
  tone(11, toneFrequency + 700);
  delay(delayTime);
  noTone(11);
  delay(delayTime);
  
}

void playFailSound() {

  tone(11, toneFrequency);
  delay(delayTime);
  noTone(11);
  delay(delayTime);
  tone(11, toneFrequency);
  delay(delayTime);
  noTone(11);
  delay(delayTime);
  tone(11, toneFrequency - 400);
  delay(delayTime + 50);
  noTone(11);
  delay(delayTime);
}

void playTone(int count) {

  for(int i = 0; i < count; i++) {
      tone(11, toneFrequency);
      delay(50);
      noTone(11);
      delay(50);
  }
}

 

Special Thanks

I would like to give a special thanks to my friend Soon Yee for helping me out with this journey and always inspiring me with new ideas and to the Educational Center (Intuitional International) for supporting me and allowing me to enhance my skills and knowledge. They also do an amazing job at training people: https://www.intuitioninternational.com/adult-courses

  • Sign in to reply

Top Comments

  • dubbie
    dubbie over 5 years ago +6
    You are completely mad and also completely brilliant. This is one of the most amazing builds I have seen in a long time. I've built a dual DC motor cart myself but it could only manage about 10 kph maximum…
  • deolee
    deolee over 5 years ago in reply to Jan Cumps +5
    Hi Jan Cumps, thanks for the question. Please correct me if I’m wrong. Based on the graph on the datasheet of the IRFS7530 power mosfet, it shows that it has a positive temperature coefficient. Therefore…
  • robogary
    robogary over 5 years ago +5
    Sweet. Now that looks fun. I may have missed in the video, did you have to modify anything in the steering for better control ? I must say driving that fast backward takes talent, I would have oversteered…
  • link068
    link068 over 4 years ago

    Hi, Why the battery pack voltage of 36V?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • 14rhb
    14rhb over 5 years ago

    What am awesome project; I loved reading every aspect of your build and watching every second of the video image, thank you.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • robogary
    robogary over 5 years ago in reply to deolee

    Thank you for replies.

    I have converted a couple power wheels kid's cars to radio control. The cars dont ride well with the plastic wheels, so my great interest in how you upgraded them to rubber. 

    I had issues myself with the plastic being too flimsy for mounting the steering servo, and twisting the chassis instead of the steering rod.

    I kept original gearboxes, motors, wheels with intent to someday upgrade.

     

    One power wheels car with radio control is a Hummer with 120 lb weight capacity. When I let kids operate it, they want to run the car into walls, run into their parents, jump sidewalks -- see how much punishment it can take.

    Here are some features added to the power wheels car to make it a little safer:

    I added 5 HC-SR04 ultrasonic ping sensors on the front bumper for automatic slowdown and forward direction lockout. If an object is within a few feet of the front, speed is limited to 20%, and within a couple feet of the car front, the forward direction is disabled. The HC-SR04 sensors have a narrow 15 degree beam , I would prefer to use automotive grade sensors with a 60 degree beam , but they are more expensive.

    I also have flashing LED beacons on the top and rear so make it very obvious when power is on.

    The car has a panel rocker switch for selecting which battery it is using. Rather than building a high capacity battery, I just added a second battery , back up battery. The OFF position serves as a secret lockout switch.

    The main power switch is a LED toggle with a trigger cover so people can just swat it, it serves as the main power cutoff.   

     

    I really like your conversion, a very nice job.

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • dubbie
    dubbie over 5 years ago in reply to deolee

    Deo Lee,

     

    I am certainly inspired, although I'm not entirely sure in which direction. I have been thinking about purchasing an electric three wheel bicycle for a couple of years now but never quite got around to actually buying one. In the UK these are limited to 15 mph by law so 60 kph is probably out of the question for it. I might make a much slower electric car for my grandson but I'm sure it will not be doing 60 kph!

     

    Dubbie

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • michaelkellett
    michaelkellett over 5 years ago in reply to deolee

    Oh good - I'd hate to see such a promising start end in a bad way.

    If I were driving your little car (unlikely considering size and age !!) I'd go for knee and elbow pads as well !

     

    Interesting project - I look forward to more videos !

     

    MK

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube