I2C LCD causes problems

Here is example code showing, I think, what @bperrybap wrote about in reply #8. Specifically, not printing the RPM and IPS labels and units, not printing unless the data changes and using fixed width fields for the data that changes so as not to need printing spaces to clear old data. Doing those things minimize the time that it takes to print and will have a lesser effect on the stepper.

// hd44780 library see https://github.com/duinoWitchery/hd44780
// thehd44780 library is available through the IDE library manager
#include <Wire.h>
#include <hd44780.h>                       // main hd44780 header
#include <hd44780ioClass/hd44780_I2Cexp.h> // i2c expander i/o class header

const byte pot1Pin = A0;
const byte pot2Pin = A1;

hd44780_I2Cexp lcd; // declare lcd object: auto locate & auto config expander chip

// LCD geometry
const int LCD_COLS = 16;
const int LCD_ROWS = 2;

unsigned int RPM = 0;
float IPS = 0.0;
unsigned int lastRPM = 0;
float lastIPS = 0.0;


void setup()
{
   Serial.begin(115200);
   lcd.begin(LCD_COLS, LCD_ROWS);
   // print permanent labels  once, only
   lcd.setCursor(0, 0);   
   lcd.print("RPM");
   lcd.setCursor(13, 0);
   lcd.print("RPM");
   lcd.setCursor(0, 1);
   lcd.print("IPS");
   lcd.setCursor(13, 1);
   lcd.print("IPS");
}

void loop()
{
   // generate test numbers with pots
   RPM = analogRead(pot1Pin)* 10;
   IPS = 800 - analogRead(pot2Pin) * 30.5; 
   updateLCD();
}

void updateLCD()
{
   static unsigned long lcdTimer = 0;
   unsigned long lcdInterval = 500;  // update 2 times per second
   if (millis() - lcdTimer >= lcdInterval)
   {
      lcdTimer = millis();
      if(RPM != lastRPM) // only print to LCD if rpm changed
      {      
      char rpmStr[6];
      sprintf(rpmStr, "%5d", RPM);
      lcd.setCursor(6, 0);
      lcd.print(rpmStr);
      lastRPM = RPM;
      }
      if(IPS != lastIPS) // only print to LCD if rpm changed
      {
      char ipsStr[8];
      dtostrf(IPS, 8, 1, ipsStr);      
      lcd.setCursor(4, 1);  
      lcd.print(ipsStr);
      lastIPS = IPS;
      }      
   }
}