Caterpillar 797F
Model of a giant dump truck. Features drive, steering, self-leveling suspension using Mindstorms EV3 components, custom stickers and lights.
Datasheet:
Completion date: 27/08/2019
Power: electric (Power Functions / Mindstorms EV3)
Remote control: Power Functions
Dimensions: length 63 studs / width 39 studs / height 32 studs
Weight: 4.156 kg
Suspension: front – self-leveling double wishbone independent suspension, rear – freely oscillating axle
Propulsion: 2 x PF XL motor geared 12.6:1
Motors: 2 x PF XL motor, 1 x PF M motor, 2 x EV3 Large motor
My third big dump truck model, this one has been rebuilt several times as the concept for it changed. It started with tires – LEGO tires tend to be much wider than their real-life counterparts, which is troublesome when building realistically proportioned models, especially ones that have axles with double wheels. LEGO has little to offer in the realistically proportioned tires department beyond the popular 62.4 x 20 tires which are rather small – but the Baja Claw TTC tires made by RC4WD and fitting LEGO 56 mm rims don’t have that problem. They are not only enormous, but actually have the same exact proportions as the real Caterpillar 797F truck’s tires, and this was what prompted me to build this model.
The truck was always meant as a Power Functions / Mindstorms EV3 hybrid. It was originally equipped with my 4-speed sequential transmission using Chiron selectors, but the problem was that contrary to the appearance, truck such as this one have limited room for mechanisms inside. This is because of the cargo hold which lowers pretty deep into the chassis, so the central part of the chassis needs to be really flat. Because of this, I was unable to fit my stepper mechanism together with the transmission, so instead I’ve tried using an EV3 Medium motor programmed to rotate 90 degrees with every “shift up / shift down” command. This worked well until the model got heavy, at which point the motor was unable to keep the transmission’s selectors from disengaging under stress. I was determined not to make any cutouts in the cargo hold to fit something in the chassis this time, so I’ve eventually removed the entire transmission.
The primary reason for using the EV3 was actually the suspension. The truck was fitted with the classic double wishbone independent suspension in front and a freely oscillating axle in the back. I have built the front suspension with shock absorbers connected by a linkage that allowed to tilt the suspension left or right, and my goal was to use EV3 to monitor the model’s sideways angle and adjust the suspension to keep the truck upright. Reading the sideways angle required several experiments: I’ve started with an EV3 angle sensor connected to an axle with a weighted brick hanging from it, but it proved inaccurate. I’ve tried the EV3 gyro sensor but I had too much problems with it’s well-known bugs and drift issue. I’ve finally settled on the EV3 accelerometer, which is perfectly capable of measuring tilt in three angles, and actually more reliable at it than the gyro sensor.
The accelerometer was installed over the front axle and I’ve written a simple EV3 program which was basically rotating the suspension’s linkage by the opposite of the sideways angle. That is, if the angle was 10 degrees to the left, it would tilt the suspension 10 degrees to the right and so on. Simple as it was, I had to make the program much, much more complicated to work out certain kinks inherent to the EV3 software. The final version of my program, shown on the diagram below, included 5 threads running simultaneously:
- command reading thread (using EV3 IR sensor to read Power Functions remote’s commands)
- screen display thread (showing angles and remote commands on the EV3 unit’s screen)
- suspension leveling thread (tilting the suspension by the opposite of the current sideways tilt angle)
- zeroing thread (disabling the leveling thread when the accelerometer’s reading was within +3 and -3 angle to create some “dead zone” around the neutral angle and prevent the program from trying to level the truck while only 3 degrees away from perfectly level)
- antistalling thread
The last thread was quite a challenge. I don’t know how bugged the EV3 software is, but I kept having problems with the leveling motor jamming again and again. It would start executing some command and kept executing it forever, trying to tilt endlessly. I have failed to determine the cause, so I have solved it by adding a separate thread which measured for how long motor was running and turned it off if it was running for more than 2 seconds at a time. This crude solution has eliminated the jamming completely.
The program shown above worked well by trying to keep the truck upright when it was tilted sideways. It looked cool, but was far from perfect due to slow execution (the program just reacted really slow, perhaps because of some EV3 accelerometer’s lag or perhaps because of the 5 threads running simultaneously) and it didn’t really matter much in practice. I just don’t think this kind of MOC is the most efficient machine to show a self-leveling suspension.
With EV3 already on board, I have used it to tilt the cargo hold and dump the load. This was done by a single EV3 Large motor driving two medium linear actuators (not 42100 set’s long actuators) in response to commands from the PF remote which were read using EV3 IR sensor hidden in the truck’s right side. The downside of using the sensor was that it was larger than a PF IR receiver, but on the other hand it only needed to have 1×1 stud area exposed to get the commands, not a 2×2 stud area like the PF receiver.
The model wasn’t overly functional nor overly authentic. I think that choosing to include the EV3 unit came at a high cost – the enormous unit has taken all available space in front of the front axle and required taking off the truck’s whole front end for access. Driving was also a challenge, because of the model’s weight and because of the size of the drive wheels. Because the rear axle was freely oscillating, without any shock absorbers, it tended to tilt to side when starting to drive and stopping. I’ve considered adding shock absorbers and another EV3 Large motor for leveling, but it ruined the authentic look and it required too much space under the cargo hold. What I found was that I can reduce the axle’s tendency to tilt by increasing gear reduction between the axle’s wheels and its differential. I have started with 3:1 gearing between the wheels and the differential and then another 3:1 reduction in planetary wheel hubs that I’ve built using large Technic turntables. These wheel hubs turned to generate a lot of friction under stress, though, so I’ve waited until the 42099 set was available and used its new planetary wheel hub pieces. These proved to work perfectly, and with their impressive 5.4:1 gear reduction I was able to reduce the in-axle reduction (between wheels and the differential) to 1.6:1.
The model had a number of problems, including the front end sitting too low (because of a combination of sagging suspension, compressed tires and the body starting lower than in reality because I wanted to keep the EV3 unit fully covered) and difficulty with steering (because the front tires were deformed by the truck’s weight and generated huge rolling resistance). It drove fine in a straight or nearly straight line and it had a decent load capacity. The cargo hold weighed nearly 2 kg when empty and the truck was able to tilt it with another 2 kg of load inside it – at the cost of very loudly working EV3 large motor and protesting linear actuators.
The truck was largely an experiment, and one that had to be restarted a couple of times. I wasn’t particularly satisfied with it, but it felt good to finally finish a model after such a long time.
Work in progress photos:
Photos:
Video:
Media coverage:
HobbyMedia, MikeShouts, The Brothers Brick, The Lego Car Blog