Servo chico 180 con tiritones , NRF2401 , Arduino NANO

Buenos dias, tengo un auto a control remoto(NRF2401) en arduino UNO funcionando , con 2 motores Dc (con puente H L293) un servo para la dirección y lo alimento con bateria ion litio y separo los voltajes del arduino y los motores.

Monte el mismo circuito y software en otro auto pero ahora use un arduino NANO y pilas 18650.

El problema que tengo es que el servo de la direccion empieza a darme tiritones.

¿ Que puede ser , algun conflicto con los pines de la libreria servo y los que usa el NRF ??

Sin ver tu código difícil adivinar.

// recibe datos desde modulo nrf y los reenvia a otro arduino por la puerta serial setada 4,2
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
#include <SoftwareSerial.h>
#include <Servo.h>

// para manejar con joystick doble
char Msg[13];
String Mensaje;
String Salida;
RF24 radio(9,10);

// const uint64_t pipe = 0xE8E8F0F0E1LL;
   const uint64_t pipe = 0xE8E9F0F0E1LL;

Servo miServo; 
int servoPin = 6;  //Direccion delantera
int ang_X = 89;    // derecha / izquierda
int ang_ant = 89;    // derecha / izquierda

// pines motor 1
int M1ACT = 3;
int M1AVA = 7;
int M1RET = 8;

// pines motor 2
int M2ACT = 5;
int M2AVA = 4;
int M2RET = 2;

int AVARET = 2;
int DERIZQ = 2;

int vel = 0;

void setup(void){
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(1,pipe);
  radio.startListening();
  
  pinMode(M1ACT, OUTPUT); 
  pinMode(M1AVA, OUTPUT); 
  pinMode(M1RET, OUTPUT); 
  pinMode(M2ACT , OUTPUT); 
  pinMode(M2AVA , OUTPUT); 
  pinMode(M2RET , OUTPUT); 

  pinMode(servoPin, OUTPUT);
  miServo.attach(servoPin); 
  miServo.write(ang_X); 
  Serial.print("Comenzar a recibir");

}
 
void loop(){
  if (radio.available())
  {
     radio.read(Msg, 12); 
     Serial.print("Msg     :");
     Serial.println(Msg);
     Mensaje = String(Msg);
          
     if  ( Mensaje.substring(0,1)   == "X" &&
           Mensaje.substring(5,6)   == "Y" &&
           Mensaje.substring(10,11) == "B"    ) {
     
           Serial.println("Mesaje valido");
                                               // recupera valores eje Y del Joystick
           DERIZQ = Mensaje.substring(1,5).toInt();
           AVARET = Mensaje.substring(6,10).toInt();
           Direccion();       // Movimiento de Direccion , derecha - izquierda
           Desplazamiento();  // Desplazamiento , adelante - atraz
    
      } else {
        
           Serial.println("Mesaje NO valido , detenemos");
           Detener();             
      }
      
  } else {    
    
      Serial.println("Not available , detenemos ");    
      Detener();                   
  }
  
 // delay(1000);
 
}
void Direccion()
{
    if (DERIZQ < 490 ) {  // izquierda
      
           ang_X  = map(DERIZQ, 0, 489, 55, 90);
           //Serial.print("Angulo Izq :");
           //Serial.println(ang_X);
           if   (ang_X > 54 && ang_X != ang_ant) {
              miServo.write(ang_X); 
              ang_ant = ang_X;
           }
           
    } else {
      
        if  (DERIZQ > 505) {   // derecha
          
              ang_X  = map(DERIZQ, 506, 1024, 90, 125);
              //Serial.print("Angulo Der :");
              //Serial.println(ang_X);
              if   (ang_X < 126 && ang_X != ang_ant) {
                 miServo.write(ang_X); 
                 ang_ant = ang_X;                 
              }
              
        } else {
           if (ang_X != 89) {
              ang_X  = 89;
              miServo.write(ang_X); 
              //delay(20);              
              //Serial.println("Angulo 89");
           }
        }
    }
}

void Desplazamiento()
{
    if (AVARET < 510 ) {  // avanza 
      
           vel =  map(AVARET, 509, 0, 0, 255);
           //Serial.println("Avanza a : ");           
           //Serial.println(vel);
           analogWrite(M1ACT, vel);      
           digitalWrite(M1AVA , HIGH);     // Motor 1
           digitalWrite(M1RET , LOW);
           
           analogWrite(M2ACT, vel);                
           digitalWrite(M2AVA , HIGH);     // Motor 2
           digitalWrite(M2RET , LOW);
   
    } else {
      if  (AVARET > 520) {   // retroce
           vel =  map(AVARET, 521 , 1024, 0, 255);
           //Serial.println("Retrocede a : ");                      
           //Serial.println(vel);           
           analogWrite(M1ACT, vel);      
           digitalWrite(M1AVA , LOW);     // Motor 1
           digitalWrite(M1RET , HIGH);
           
           analogWrite(M2ACT, vel);      
           digitalWrite(M2AVA , LOW);     // Motor 2
           digitalWrite(M2RET , HIGH);
        
      } else {
           Serial.println("STOP the CAR ");  
           analogWrite(M1ACT, 0);      // Paramos Motor 1
           analogWrite(M2ACT, 0);      // Paramos Motor 2
      }
    }

}
void Detener()
{
      analogWrite(M1ACT, 0);      // Paramos Motor 1
      analogWrite(M2ACT, 0);      // Paramos Motor 2
      if (ang_X != 89) {
          ang_X  = 89;
          miServo.write(ang_X); 
      }           

}

hola te envio el codigo del programa. realice unas mejoras como poner un fuente de poder que entrega 5vcc y 3.3vcc y asi alimentar el servo y el nrf2401 no desde el arduino. mejoro harto pero igual se pega unos tiritones. Me da la impresion que la pila 18650 tiene mucho amperaje.

Me da la impresion que la pila 18650 tiene mucho amperaje.

Eso no tiene nada que ver.
Un elemento requiere corriente y si dispone de ella la usa, asi que los tirones no se deben a la pila sino a tu control

Por otro lado el RF24 hace la comunicación, tampoco puede ser responsable de tirones.
Son cosas que debes verificar antes si gustas hacerlo.
Las cosas se comunica o no.

Si le envias 55, recibes 55, si le envias 500 recibes 500. Ahora si no recibes lo que envias es un problema de código.

Luego veo muchos map(), que crean cambios. Esos cambios yo los vería en el Monitor Serie a ver si se comportan como esperas. Si lo hacen como esperas entonces adelante, por ahi tampoco esta el problema.
Pero si observar todo esto seguramente aparezca algun responsable, algo que imaginaste de un modo y se comporta de otro.