Page 1 of 3 123 LastLast
Results 1 to 15 of 45
  1. #1
    Join Date
    Aug 2010
    Location
    UK
    Posts
    17
    Chats
    0

    Default AW4 tiptronic control

    This has been pulled over from another forum, thought i would share my work

    I found this topic on NAXJA forums, http://www.naxja.org/forum/showthrea...=103658&page=1, and it inspired me to build a tiptronic controller of the same design.

    The only drawback is that on OBDII jeeps, the check engine light is on for 50 key turns after the tiptronic is used, this is an issue I would like to fix.

    After a lot of mucking about on eagle with schematics and PCB layouts, i finally got to the stage of breadboring.

    The board was going to cost around £15 to make, with £15 of components and a lot of my time, to solder the board up. This would mean it would either be an involved project for anyone that wanted to do it, or it would take up a lot of my time making the boards. Getting them fully made by a company in such small quantities is also very costly.

    I have a friend helping me on this, and we have been discussing it and working though it to add a few more features. Whist working though it, we came up with the idea of using a PLC instead.

    A PLC (Programmable Logic Controller) is a device that uses software to control stuff, very much like an ECU. The idea behind Kevin fletcherís tiptronic controller was to keep it simple. I feel that a PLC makes it even simpler still.

    The PLC costs around £25, and then you need switches and a box on top, but this is the same as the board anyway. All the PLC needs to do the same job as the board is a bit software. This means I can now write the software, and anyone can buy the board, solder a few wires and thatís it. It also means that if I ever want to add more features, all you would need to do is upload the new software via a usb cable.

    I am now at the stage of buying one of the PLCís (called an arduino UNO) and writing the software, to prove the concept. If it works, I will then release the software to the public, with a full write up on how to install it.

    At the moment the system has the following features:
    - Takes control from the factory TCU.
    - Provides manual up/down shift from 1st to 4th
    - Provides a torque converter lock, which dis-engages when changing gear
    - Has an led readout that shows what gear you are in, 1-4, and if the TC is locked

    You switch to the tiptronic whilst in neutral, it boots up into 3rd gear as standard. You then select 1st and move into drive. If you go down the gears with the gear stick, you will limit what the tiptronic controller can do, so leave it in D.

    I am hoping to add the following features soon
    - TC lock dis-engage when braking
    - TC lock dis-engage on gear change then re-engage after, enabled and disabled by holding the TC button down for 5 secs, notified by TC lock led flashing twice.
    - Stop check engine light coming on.
    - Use of arduino PRO mini Ė which only costs £13, and is 20mm by 30mm, reducing package size massively.
    - Sense what gear you are currently in, hold that gear, and then turn the TCU off.
    - Make sure the TCU has full control before the tiptronic shuts down.

    If anyone is interested in one, please let me know (I know some already have). Also please bear in mind that I have a full time job and life, and canít spend all hours of the day on it, so donít expect on up and running next week. I also accept no responsibility if you break your car or yourself. This is not intended for highway use and should only be used offroad.

    Think thats its for now, hopefully some updates and pictures soon!

    ------

    So, a bit of an update

    I have the up/down switch made, this is my idea and of my design and im sorry to say i wont be supplying them.


    This shows the action inside the switch


    I also have made a faceplate which takes the TC button too


    This is the on/off switch and the tc lock button


    This is the arduino, the brains which the code is uploaded too. It is just smaller than a credit card.


    I also received a LED display, a driver chip (4511) and some TIP120 transistors. I have been breadboaring it up today, and so far have the switches working with the arduino, and the driver driving the display.



    More to come soon

    ------


    Spent the last two nights on programming, Have been learning ardunio code with my mate who's doing most of the programming.

    So far we've got to the alpha stage, it's a bit of a skeleton program at the moment, but it's getting there

    I took a quick vid, sorry for the rubbish quality, I was excited and only had my phone.

    Top led on the right represents the TCU relay, followed by the TC lock solenoid, and gear solenoids. TC lock didn't work right now, but as you can see, it sees what gear it's in when it gets turned on, turns the TCU off and takes the gear.


    More soon

    ------

    Hi guys, at a major point in the project, I'm now at the testing phase.

    We have finished the program to the beta stage, which means we are at the stage of putting it into the car and seeing what happens. So hopefully next week it will be going into the jeep .

    If anyone is interested in the code, here it is.

    Please bear in mind I haven't tested this in the jeep yet, but if anyone wants to have a go at the project, feel free. Any feedback I can get is good

    /************************************************** *****************************
    Written by Fish, Logic by Big-G
    *
    * Tiptronic gearbox controllor for Jeep AW4.
    * Changes up and down gears, provides torque conveter lockup and
    * a 7 segment led display readout of which gear you are in.
    *
    ************************************************** *****************************/


    // function prototypes
    void power_up();
    void power_down();
    void chng_to( int );
    void abend();
    void flash_disp();
    int get_gear();
    void handle_event( int );
    void tcu_ctrl( int );
    void tcl_ctrl( int );

    // Define our pins - modify to ease hardware layout

    const int p_in_sol1 = A0;
    const int p_in_sol2 = A1;
    const int p_in_onoff = 2;
    const int p_out_tcu = 3;
    const int p_in_up = 4;
    const int p_in_down = 5;
    const int p_in_tcl = 6;
    const int p_out_sol1 = 7;
    const int p_out_sol2 = 8;
    const int p_out_sol_tcl = 9;
    const int p_out_leddp = 10;
    const int p_out_led1 = 11;
    const int p_out_led2 = 12;
    const int p_out_led3 = 13;

    // Events
    const int ev_power_change = 1;
    const int ev_changeup = 2;
    const int ev_changedown = 3;
    const int ev_tcl_change = 4;

    // Other constants
    const int boot_delay = 1000;
    const int pwr_up_delay = 1000;
    const long debounce_delay = 10;
    const int tcl_delay = 250;
    const int tcl_long_press = 2000;

    // State variables
    int running = 0;
    int tcl_running = 0;
    int current_gear = 0;
    int current_up_state = 0;
    int current_down_state = 0;
    int current_on_state = 0;
    int current_tcl_state = 0;
    int last_up_state = 0;
    int last_down_state = 0;
    int last_on_state = 0;
    int last_tcl_state = 0;
    int last_tcl_on_time = 0;
    int auto_tcl_mode = 0;

    // switch debounce tracking
    long last_debounce_time = 0;


    void setup() {
    // define pins as inputs or outputs
    pinMode( p_in_sol1, INPUT );
    pinMode( p_in_sol2, INPUT );
    pinMode( p_in_onoff, INPUT );
    pinMode( p_out_tcu, OUTPUT );
    pinMode( p_in_up, INPUT );
    pinMode( p_in_down, INPUT );
    pinMode( p_in_tcl, INPUT );
    pinMode( p_out_sol1, OUTPUT );
    pinMode( p_out_sol2, OUTPUT );
    pinMode( p_out_sol_tcl, OUTPUT );
    pinMode( p_out_leddp, OUTPUT );
    pinMode( p_out_led1, OUTPUT );
    pinMode( p_out_led2, OUTPUT );
    pinMode( p_out_led3, OUTPUT );

    Serial.begin(9600);
    Serial.print("Starting...\n");

    // power-up steps
    tcu_ctrl( 1 ); // turn on power to the TCU
    delay( boot_delay ); // hang on a god-damned second
    current_gear = get_gear();
    }

    void loop() {

    int up_state = digitalRead( p_in_up );
    int down_state = digitalRead( p_in_down );
    int on_state = digitalRead( p_in_onoff );
    int tcl_state = digitalRead( p_in_tcl );

    if (
    up_state != last_up_state
    || down_state != last_down_state
    || on_state != last_on_state
    || tcl_state != last_tcl_state
    ) {
    last_debounce_time = millis();
    }

    if ( (millis() - last_debounce_time) > debounce_delay ) {
    if ( up_state != current_up_state ) {
    current_up_state = up_state;
    if ( current_up_state ) {
    handle_event( ev_changeup );
    }
    }
    if ( down_state != current_down_state ) {
    current_down_state = down_state;
    if ( current_down_state ) {
    handle_event( ev_changedown );
    }
    }
    if ( on_state != current_on_state ) {
    current_on_state = on_state;
    if ( current_on_state != running ) {
    handle_event( ev_power_change );
    }
    }
    if ( tcl_state != current_tcl_state ) {
    current_tcl_state = tcl_state;
    auto_tcl_mode = 0;
    if ( current_tcl_state ) { // momentary switch
    last_tcl_on_time = millis();
    handle_event( ev_tcl_change );
    } else {
    if ( ( millis() - last_tcl_on_time ) > tcl_long_press ) { // long press
    // auto_tcl_mode = 1;
    }
    }
    }
    }
    last_up_state = up_state;
    last_down_state = down_state;
    last_on_state = on_state;
    last_tcl_state = tcl_state;

    if ( (get_gear() != current_gear ) && running ) {
    abend();
    }
    }

    void handle_event( int ev ) {

    switch(ev) {
    case ev_changeup :
    if ( ! running ) break;
    switch( current_gear ) {
    case 4 :
    //flash_disp();
    break;
    default :
    chng_to( ++current_gear );
    break;
    }
    break;
    case ev_changedown :
    if ( ! running ) break;
    switch( current_gear ) {
    case 1 :
    //flash_disp();
    break;
    default :
    chng_to( --current_gear );
    break;
    }
    break;
    case ev_power_change :
    if ( running ) {
    power_down();
    } else {
    power_up();
    }
    break;
    case ev_tcl_change :
    if ( running ) {
    tcl_running = ! tcl_running;
    tcl_ctrl( tcl_running );
    }
    break;
    }
    }

    void power_up() {
    current_gear = get_gear();
    chng_to( current_gear ); // set solenoids and LEDs
    tcu_ctrl( 0 ); // kill the TCU
    delay( pwr_up_delay ); // hang on a god-damned second
    if ( get_gear() == current_gear ) {
    running = 1;
    } else {
    abend();
    }
    }

    void power_down() {
    // kill power to the gear solenoids
    digitalWrite( p_out_sol1, 0 );
    digitalWrite( p_out_sol2, 0 );
    tcl_ctrl( 0 ); // turn off the tcl
    tcu_ctrl( 1 ); // turn on power to the TCU
    // blank the display
    digitalWrite( p_out_led1, 0 );
    digitalWrite( p_out_led2, 0 );
    digitalWrite( p_out_led3, 0 );
    running = 0;
    }

    void chng_to( int new_gear ) {

    tcl_ctrl( 0 );
    delay( tcl_delay );

    switch( new_gear ) {
    case 1 :
    // gear solenoids

    digitalWrite( p_out_sol1, 1 );
    digitalWrite( p_out_sol2, 0 );

    // LED display
    digitalWrite( p_out_led1, 1 );
    digitalWrite( p_out_led2, 0 );
    digitalWrite( p_out_led3, 0 );
    break;

    case 2 :
    // gear solenoids

    digitalWrite( p_out_sol1, 1 );
    digitalWrite( p_out_sol2, 1 );

    // LED display
    digitalWrite( p_out_led1, 0 );
    digitalWrite( p_out_led2, 1 );
    digitalWrite( p_out_led3, 0 );
    break;

    case 3 :
    // gear solenoids

    digitalWrite( p_out_sol1, 0 );
    digitalWrite( p_out_sol2, 1 );

    // LED display
    digitalWrite( p_out_led1, 1 );
    digitalWrite( p_out_led2, 1 );
    digitalWrite( p_out_led3, 0 );
    break;

    case 4 :
    // gear solenoids

    digitalWrite( p_out_sol1, 0 );
    digitalWrite( p_out_sol2, 0 );

    // LED display
    digitalWrite( p_out_led1, 0 );
    digitalWrite( p_out_led2, 0 );
    digitalWrite( p_out_led3, 1 );
    break;
    }

    if ( auto_tcl_mode ) {
    delay( tcl_delay );
    tcl_ctrl( 1 );
    }
    }

    void abend() {
    // kill power to the gear solenoids
    digitalWrite( p_out_sol1, 0 );
    digitalWrite( p_out_sol2, 0 );
    tcl_ctrl( 0 ); // turn off the tcl
    tcu_ctrl( 1 ); // turn on power to the TCU
    flash_disp(); // warn the driver
    delay( 1000 );
    // blank the display
    digitalWrite( p_out_led1, 0 );
    digitalWrite( p_out_led2, 0 );
    digitalWrite( p_out_led3, 0 );
    running = 0;
    }

    int get_gear() {
    //return 3;
    Serial.print( analogRead( A0 ), DEC );
    Serial.print( " - " );
    Serial.print( analogRead( A1 ), DEC );
    Serial.print( "n" );
    int val_sol1 = analogRead( A0 ) > 500 ? 1 : 0;
    int val_sol2 = analogRead( A1 ) > 500 ? 2 : 0;
    switch ( val_sol1 + val_sol2 ) {
    case 0 : return 4;
    case 1 : return 1;
    case 2 : return 3;
    case 3 : return 2;
    }
    }

    void flash_disp() {
    // show '0' and flash dp
    //digitalWrite( p_out_led1, 0 );
    //digitalWrite( p_out_led2, 0 );
    //digitalWrite( p_out_led3, 0 );
    //running = 0;

    digitalWrite( p_out_leddp, 1 );
    delay(250);
    digitalWrite( p_out_leddp, 0 );
    delay(250);
    digitalWrite( p_out_leddp, 1 );
    delay(250);
    digitalWrite( p_out_leddp, 0 );
    delay(250);
    digitalWrite( p_out_leddp, 1 );
    delay(250);
    digitalWrite( p_out_leddp, 0 );
    delay(250);
    digitalWrite( p_out_leddp, 1 );
    delay(250);
    digitalWrite( p_out_leddp, 0 );
    delay(250);
    }

    void tcu_ctrl(int on_or_off) {
    digitalWrite( p_out_tcu, on_or_off ? 0 : 1 );
    }

    void tcl_ctrl(int on_or_off) {
    digitalWrite( p_out_sol_tcl, on_or_off );
    digitalWrite( p_out_leddp, on_or_off );
    tcl_running = on_or_off;
    }

    ------


  2. #2
    Join Date
    Mar 2009
    Location
    Katy, Texas
    Posts
    27,272
    Chats
    30792

    Default Re: AW4 tiptronic control

    Wonderful post, thank you.

  3. #3
    Join Date
    May 2010
    Location
    New Caney, TX
    Posts
    3,582
    Chats
    22489

    Default

    Wow very interesting post. But this post also makes me feel very dumb

    Sent from my VM670

  4. #4

    Default Re: AW4 tiptronic control

    Very cool! This is the first time I've seen an arduino used for vehicle control (not that I really follow the arduino world though).
    Jason West - Jeepin.com / JeepinOutfitters.com
    '95 XJ, RE 5.5", 35" MT/Rs, D30 w/hubs & ARB, D44 w/Detroit, 4.56s, C4x4 bumpers, XD9000i, etc, etc.
    '09 JK, Unlimited Rubicon, RE 3.5" SF, 35" BFG KM2s, Expedition One bumpers, T&T Customs rockers & skids, XRC10 Comp winch
    '00 TJ, SOLD, wife's, RE 4.5" long-arm, 35" MT/Rs, D30 w/OX, D44 w/ARB, 4.88s, full cage, winch, C4x4 bumpers, etc, etc.


  5. #5
    Join Date
    Aug 2010
    Location
    michigan
    Posts
    1,175
    Chats
    0

    Default Re: AW4 tiptronic control

    this makes me want to get a new (used) tcu sence mine died. and would be easier to drive then my current set up. i like ALOT

  6. #6
    LizardRunner's Avatar
    LizardRunner is offline Level: Uber Jeep Cherokee Trailer Queen
    Join Date
    Dec 2010
    Location
    Arkansas
    Posts
    2,432
    Chats
    7284

    Default Re: AW4 tiptronic control

    very nice, great idea, but I have a standard. Maybe I'll get another xj with an auto and give this a go.
    2004 4.7v8HO WJ OMG, it's RED , Green bits are now under the hood. Loving the F/R Lockers and D44's. RIP 2011 Lil Ric and Gordo. RIP 2012 Jessie RIP 2013 Kat. RIP 2013 Ed . Lizards can always climb but sometimes they loose their tails to get away. The true patriot will stand beside the soldier when the time comes to fight Now building Asnikiye heca (Buzzard's Roost) homestead farm. My road is my wheeling trail

  7. #7
    Join Date
    Aug 2010
    Location
    UK
    Posts
    17
    Chats
    0

    Default Re: AW4 tiptronic control

    Cheers guys, hopefully some more updates soon!

  8. #8
    Join Date
    Aug 2010
    Location
    michigan
    Posts
    1,175
    Chats
    0

    Default Re: AW4 tiptronic control

    ? if we pay u to make us one can we reprogram it our selfs? maybe with a little of ur help?

  9. #9
    Join Date
    Aug 2010
    Location
    UK
    Posts
    17
    Chats
    0

    Default Re: AW4 tiptronic control

    How do you mean reprogram?

    Are you talking about when I update the software?

    If so then yes it's very easy, plug a pc/laptop in via USB and upload the program with th ardunio software.

  10. #10
    Join Date
    Aug 2010
    Location
    michigan
    Posts
    1,175
    Chats
    0

    Default Re: AW4 tiptronic control

    yeah i mean once we get it can we change any of the settings and if so what ones?

  11. #11
    Join Date
    Aug 2010
    Location
    UK
    Posts
    17
    Chats
    0

    Default Re: AW4 tiptronic control

    You can change anything you like in the program, not sure what you would want to modifiy?

    Pretty much all it dose at the moment is

    find the gear your in,
    take that gear,
    Let you change gear,
    Let you lock/unlock TC,
    Show you on a readout,

    Let me know what you would like to change

  12. #12
    Join Date
    Aug 2010
    Location
    michigan
    Posts
    1,175
    Chats
    0

    Default Re: AW4 tiptronic control

    the tcc unlock between shifts. i drive with mine locked all the time unless im wheelin passing or climin a big hill. but i would like to try it with the tcc unlock between shifts as long as it locks back up. that or maybe a auto setting im not payin 100 for a used tcu. but i would for someting like urs. waiting for a update and good work. thanks for all the understanding and info.

  13. #13
    Join Date
    Nov 2010
    Location
    Columbus, NC
    Posts
    659
    Chats
    8905

    Default Re: AW4 tiptronic control

    nice write up.. I would like to see it in action.

  14. #14
    Join Date
    Aug 2010
    Location
    UK
    Posts
    17
    Chats
    0

    Default Re: AW4 tiptronic control

    Cheers brianXJ, I'm in the middle of sorting out wiring to be able to put it into the car in the next two weeks.

    As for the TC lockup, currently it unlocks when changing gear and you have to manually re-lock.

    How ever if you push the TC lock for 5 seconds then it locks up and unlocks when you shift, and re-locks again

  15. #15
    Join Date
    Sep 2011
    Location
    Whitewright Tx
    Posts
    28
    Chats
    0

    Default Re: AW4 tiptronic control

    How much would you charge to make one of these?

Page 1 of 3 123 LastLast

Similar Threads

  1. Control arm question
    By wildcat in forum What's IronMan Andy working on?
    Replies: 16
    Last Post: 12-03-2012, 10:52 AM
  2. Replies: 0
    Last Post: 05-18-2011, 03:32 PM
  3. Control
    By BlueXJ in forum Jokes!
    Replies: 2
    Last Post: 01-24-2011, 11:43 PM
  4. Crowd Control
    By JRW7072009 in forum Jokes!
    Replies: 2
    Last Post: 04-09-2010, 11:25 AM
  5. Cruise Control
    By Melissa in forum OEM/Factory
    Replies: 4
    Last Post: 04-07-2009, 08:32 PM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •