LCD on tractor mounted sprayer intermittently showing strange characters

Do you have an idea what the root cause of the bad characters is...

Probably electrical interference from your tractor or other devices. Welcome to the real world.

... or is it normal to have to put in a lcd.clear() function as you have shown?

Generally speaking it is better to avoid using lcd.clear within loop() if you can. That particular instruction takes much longer to execute that most of the other instructions and it's use can cause the display to flicker if you run around the loop too quickly.

Putting a delay in the loop can help clear up problems such as flicker but I don't see how it can fix up problems created by electrical interference from your tractor or other devices.

Don