Arduino conduciendo el servo a través de SSR 'flickers' on and off

-1

gracias por su ayuda por adelantado. Tengo un circuito configurado como se muestra en .Conseguíestearreglodeunhiloanterior.UnarduinocontrolaunrelédeestadosólidodeCC,yfuncionabiencuandomicargaesunsimpleLED.ElarduinoestácontrolandoatravésdeunencabezadodesalidadigitalyusandolafuncióndigitalWrite(),asíquenocreoquePWMtenganadaqueverconeso.Elarduinoesalimentadoporunafuenteexterna:noUSB.

Sinembargo,hacerquelacargadeunmotorcomosemuestraenlaimagencauseproblemas.TengounLEDenserieparaquepuedavercuándosecierraelreléyseestásuministrandoenergía.Parpadeaaunos4-5Hz,diría.

Mireléesel CN024 .

El relé es capaz de entregar hasta 3.5 A a 24 VDC. Está alimentado por una fuente de adaptador conmutado de 7 VDC en este momento. La fuente de alimentación puede entregar hasta 2 A. Es un cruce por cero.

El motor que está alimentando es un servo motor simple . Tiene una capacidad nominal de hasta 6 V y normalmente consume 140 mA.

A pesar de esto, ¿el parpadeo es causado por una alta intensidad de corriente y el circuito está siendo interrumpido por un circuito protector en el servo? Aunque mi conocimiento es limitado, parece que se han cumplido todos los requisitos: el circuito SSR se está cerrando y puede haber suficiente voltaje suministrado y corriente suministrada. Intenté poner un diodo en serie para bajar el voltaje de 7 V a (7-0.6) = 6.4 V solo para asegurarme de que el voltaje no fuera demasiado alto. ¿Algunas ideas? Código incluido a continuación, si es importante:

    //Servo Potentiometer Control

#include <Servo.h>

const int SERVO=10; //Servo on Pin 3

const int POT=A0;  //POT on Analog Pin 0

const int RELAY=3;

Servo myServo;

int val = 0;

void setup(){

 myServo.attach(SERVO);

 pinMode(POT,INPUT);

 pinMode(RELAY,OUTPUT);

 digitalWrite(RELAY,HIGH);

 Serial.begin(9600);

}

void loop()

{

  val=analogRead(POT);  //Read Pot

  val=map(val,0,1023,0,179);//Scale it to the servo range

  myServo.write(val);  //Sets the servo

  Serial.println(val);

  delay(15);

}
    
pregunta LickMyEyeball

1 respuesta

1
  

Precauciones de energía   -No use este servo con un suministro de pared no regulado. Dichos suministros pueden suministrar voltaje variable muy por encima de los indicados.   voltaje.

Lo anterior es de la hoja de datos que encontré aquí

Creo que puede estar suministrando demasiada tensión al servo.

¿Cuál es su diagrama de cableado real para la configuración? ¿Has unido las señales de tierra del adaptador de pared a tu arduino? ¿Has intentado escribir al servo en microsegundos? Como en la función de bucle:

val = analogRead(POT);
unsigned int microsecs = 1000+val;
myServo.writeMicroseconds(microsecs);
    
respondido por el KyranF

Lea otras preguntas en las etiquetas