Motor PAP controlado por señal 0-10V

hola todos:

nesesito una ayuda porfavor.

quiero hacer un motor pap que depende de un sensor de señal analogico de 0 a 10 por ejemplo, y el motor tiene que parar donde la señal es maxima pero cuando varie la señal tiene que volver a buscar el nivel maximo.
no puedo meter un comparador ese es el problema , alguna sugerencia?????

Hola,

pap: ¿es paso a paso?
¿cómo "depende" del sensor?
"tiene que volver a buscar el nivel máximo": ¿Qué tiene que buscar el "nivel máximo"?. ¿Qué es el "nivel máximo"?.
"meter un comparador": ¿Dónde?. ¿De qué tipo?
Saludos

Contesto por el. PAP es paso a paso.

Si no puedes meter un comparador entonces dime como vas a hacerlo?

Voy a suponer algo y esto es válido para la situación que describiré pero eso debiste haberlo hecho tu con un gráfico.

Supongamos que la señal del sensor crece y crece y luego se estabiliza en lo que tu llamas máximo. Eso si aplicas la derivada de la función te dará otra señal que será de valor positivo pero que ira disminuyendo a 0 cuando alcances el valor máximo y estable. En realidad la derivada de algo constante es 0 o sea tu motor parado.
Cuando varia tiene valor sea positivo o negativo según la pendiente.

Si vamos de 0 a un max tenemos pendiente positiva. Si vamos de Max a algo menor tenemos pendiente negativa
Eso funcionaría pero depende de que se quede en el máximo por x tiempo y si no se detiene se moverá apenas.

gracias por contestar:

el problema es el seguiente:

el motor paso paso (pap) mueve una antena y lleva un sensor de grados de inclinacion , que supongamos que esta a 45º grados , cuando la BASE de la antena se mueve el motor va siempre a 45º eso esta claro.
depues lleva un sensor de señal que va de 0 a 10 v porejemplo, lo que hace el sensor es sacar la lectura y si el sensor ve que puede mejorar que vaya a 46º,etc.
no se si me esplico pero creo que si.
gracias

//aqui dejo mi sketch:

#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"
///////////////////////////////////////
#define led3 11 //Define led3 como pin11
#define led4 10 //Define led4 como pin10
#define led5 9 //Define led5 como pin09

const int dirPin = 5;
const int stepPin = 4;
const int mpuAddress = 0x68;
MPU6050 mpu(mpuAddress);

int ax, ay, az;
int gx, gy, gz;

void setup()
{

pinMode(dirPin, OUTPUT);
pinMode(stepPin, OUTPUT);
pinMode(led3, OUTPUT); //Define pin 4 como salída
pinMode(led4, OUTPUT); //Define pin 5 como salída
pinMode(led5, OUTPUT); //Define pin 6 como salída

// Serial.begin(9600);
Serial.begin(115200);
Wire.begin();
mpu.initialize();

}

void loop()
{

mpu.getAcceleration(&ax, &ay, &az);

digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);

float accel_ang_x = atan(ax / sqrt(pow(ay, 2) + pow(az, 2)))*(180.0 / 3.14);

if(accel_ang_x > 20){
if(accel_ang_x< 39){
// Serial.print(accel_ang_x);
// Serial.println(" mueve ariba");
digitalWrite(led3, HIGH); //añadido
digitalWrite(dirPin, HIGH);
digitalWrite(stepPin, HIGH);
delayMicroseconds(15);
digitalWrite(stepPin, LOW);
delayMicroseconds(15);

}
}

if(accel_ang_x> 39){
if(accel_ang_x< 43){

Serial.print(accel_ang_x);
digitalWrite(led4, HIGH); // añadido
Serial.println(" stop");
// delay(50);

}
}

if(accel_ang_x> 43){
if(accel_ang_x< 60){
// Serial.print(accel_ang_x);
// Serial.println(" mueve abajo");
digitalWrite(led5, HIGH); // añadido
digitalWrite(dirPin, LOW);
digitalWrite(stepPin, HIGH);
delayMicroseconds(15);
digitalWrite(stepPin, LOW);
delayMicroseconds(15);

}
}

}

otra cosa que seria lo suyo seria meter un gps pero no se ni encuentro como inplantarlo.

no es igual el angulo en madrid que en alicante para la señal de astra (satelite)

Hola,

Bueno, te explicas algo más (bastante más).
(Por cierto, te llevarás la reprimenda del moderador por no poner el código con los tags ...)

A ver, lo mejor es atacar el problema por partes.
¿Eres capaz de mover el stepper con el arduino?.
¿Eres capaz de leer la señal?

Saludos