View previous topic :: View next topic |
Author |
Message |
Big-G Just got MTs
Joined: 21 Oct 2007 Odometer: 207
1993 Jeep Cherokee
|
Posted: Thu Jul 21, 2011 7:15 pm Post subject: AW4 tiptronic control
|
|
|
I found this topic on NAXJA forums, http://www.naxja.org/forum/showthread.php?t=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!
|
|
Back to top |
|
|
|
wilderness Guest
|
Posted: Fri Jul 22, 2011 7:11 am Post subject:
|
|
|
Whats the torque converter lock do then - stop it freewheeling down hills?
|
|
Back to top |
|
|
Big-G Just got MTs
Joined: 21 Oct 2007 Odometer: 207
1993 Jeep Cherokee
|
Posted: Fri Jul 22, 2011 12:35 pm Post subject:
|
|
|
Pretty much. It locks the engine to gearbox.
|
|
Back to top |
|
|
Big-G Just got MTs
Joined: 21 Oct 2007 Odometer: 207
1993 Jeep Cherokee
|
Posted: Sat Jul 23, 2011 5:41 pm Post subject:
|
|
|
Have been doing some more research into the check engine light (CEL). Looks like some guys over at NAXJA have been using dummy load resistors to fool the OBDII TCU. It seems to work well, apart from the '98-01 TCU is a bit smarter and throws up the code every now and again. Hoping to build on this to find a solution http://www.naxja.org/forum/showthread.php?t=103...hlight=aw4+lockup
|
|
Back to top |
|
|
downthepub Gate Opener
Joined: 17 Aug 2009 Odometer: 18 Location: Aberdeen, Scotland
1997 Jeep Cherokee
|
Posted: Mon Jul 25, 2011 4:16 am Post subject:
|
|
|
Thanks for posting this - sent me off down the road at looking at locking the torque convertor. Despite picking an auto (both for street and offroad) was never particularly happy with steep descents with an auto. So, after having a look about, the plug-in kit from Montana Fab (http://www.montanafab.com/aw4_trany_overide.php) looks like it will lock 1st and prevent the CEL from illuminating in my post 98.
That's now on the shopping list.
Had wondered about a system to engage the ABS for descents, like a poor man's HDC, but I think, overall, locking the transmission is the better option.
|
|
Back to top |
|
|
Big-G Just got MTs
Joined: 21 Oct 2007 Odometer: 207
1993 Jeep Cherokee
|
Posted: Tue Jul 26, 2011 4:50 pm Post subject:
|
|
|
or you could just use 2 switches, one to lock the tc, one to hold in 2nd gear? As you have a pre 98, no CEL issues
|
|
Back to top |
|
|
minimog Off-Road Guru
Joined: 25 Nov 2004 Odometer: 1700
|
Posted: Wed Jul 27, 2011 8:11 am Post subject:
|
|
|
just read this as im on the manual box in the wrangler but having had a gc and miss it loads for the auto
did the auto box not lock the tc in low box any way
could you not find the control wires and tap into them with a override switch to fool the auto that its in low
__________________________________ WHAT YOUR ASKED WHEN YOU OWN A MOG
"why have you put a merc star on that"
UNIMOG MOTTO
"IF IT CARNT BE FIXED WITH A BIG HAMMER"
IT MUST BE AN ELECTRICAL FAULT" |
|
Back to top |
|
|
Big-G Just got MTs
Joined: 21 Oct 2007 Odometer: 207
1993 Jeep Cherokee
|
Posted: Wed Jul 27, 2011 5:30 pm Post subject:
|
|
|
You can lock the TC with a switch, and AFAIK with no CEL.
|
|
Back to top |
|
|
downthepub Gate Opener
Joined: 17 Aug 2009 Odometer: 18 Location: Aberdeen, Scotland
1997 Jeep Cherokee
|
Posted: Wed Jul 27, 2011 6:21 pm Post subject:
|
|
|
I've ordered the AW4 Transmission override, so should get it fitted in a couple of weeks time - will report back....
|
|
Back to top |
|
|
Big-G Just got MTs
Joined: 21 Oct 2007 Odometer: 207
1993 Jeep Cherokee
|
Posted: Fri Aug 05, 2011 7:20 pm Post subject:
|
|
|
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
|
|
Back to top |
|
|
|
Big-G Just got MTs
Joined: 21 Oct 2007 Odometer: 207
1993 Jeep Cherokee
|
Posted: Wed Aug 10, 2011 9:54 pm Post subject:
|
|
|
Been really busy for the past week, lots of gigs going on, so progress has been slow.
It pretty much done on the breadboard, and were now down to writing the code.
Once that's done I will link it up to the jeep and see what happens.
Stay tuned
|
|
Back to top |
|
|
Big-G Just got MTs
Joined: 21 Oct 2007 Odometer: 207
1993 Jeep Cherokee
|
Posted: Thu Sep 08, 2011 8:51 pm Post subject:
|
|
|
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
|
|
Back to top |
|
|
Big-G Just got MTs
Joined: 21 Oct 2007 Odometer: 207
1993 Jeep Cherokee
|
Posted: Thu Sep 15, 2011 4:20 pm Post subject:
|
|
|
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 ****;
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;
}
|
|
Back to top |
|
|
Big-G Just got MTs
Joined: 21 Oct 2007 Odometer: 207
1993 Jeep Cherokee
|
Posted: Wed Dec 07, 2011 7:16 am Post subject:
|
|
|
Well.
Lifes been really busy recently. Had alot of stuff to sort out.
Ive been doing bits here and there with the project, but i had to spend a month fixing the jeep so i can actually get to testing this.
Im still pretty stuck on the solenoid driver side, but ive found a local source of 'tronics knowlage that im tapping into
So just to let you all know i havent forgotten about this, and ill leave you with a couple of picutres of how far ive got as of tonight
|
|
Back to top |
|
|
Big-G Just got MTs
Joined: 21 Oct 2007 Odometer: 207
1993 Jeep Cherokee
|
Posted: Fri Jan 10, 2014 3:10 pm Post subject:
|
|
|
Hello!
Sorry it's been so long. I got totally stuck on the high side driver, and after months of searching and trying things with mosfets and stuff I lost interest and banished it to a cupboard.
Recently I was pointed to a website called http://ruggedcircuits.com/ which has a schematic for a high side driver.
I've ordered the parts and spent this evening bread boarding them and confirmed that it will work for what I want! Really pleased. Big thanks to rugged circuits.
I am currently designing the PCB in eagle, and this should be finished soon. Then it's off to veroboard for prototyping. I had to make some changes to the sensing side of the circuit, using optoisolators. This is yet to be tested, but I'm confident about it.
So all in all, I hope to have it prototyped in a couple of weeks, a bit of testing, and then a PCB made. Can't wait.
Watch this space
|
|
Back to top |
|
|
Xpajun Mud Obsessed
Joined: 22 Sep 2008 Odometer: 3245
1988 Mitsubishi Shogun
|
Posted: Fri Jan 10, 2014 5:41 pm Post subject:
|
|
|
Welcome back
Looking forward to the final - just out of interest I've only just read this so the delay has probably helped rather than hindered
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot post calendar events in this forum
|
|
|