Primero, gracias por tomarse el tiempo de leer mi publicación.
Estoy intentando usar un sensor ultrasónico para controlar un motor de CC usando la salida PWM de un arduino. Bastante simple, lo sé, pero soy solo un principiante. :)
Aquí está mi código, con una explicación de mi teoría y mi error después.
#define trigPin 7
#define echoPin 2
#define motorPin 9
void setup(){
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motorPin, OUTPUT);
}
void loop(){
int duration, distance;
digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) /29.1;
if (distance <5)
{
analogWrite(motorPin, 0);
}
else if(5 <= distance <15)
{
analogWrite(motorPin, 50);
}
else if(15 <= distance <25)
{
analogWrite(motorPin, 100);
}
else if(25 <= distance < 35)
{
analogWrite(motorPin, 150);
}
else if(35 <= distance < 45)
{
analogWrite(motorPin, 200);
}
else if(45 <= distance)
{
analogWrite(motorPin, 255);
}
else;
{
analogWrite(motorPin, 0);
}
Serial.print (distance);
Serial.println (" cm");
delay(500);
}
Entonces, esto es increíblemente simple. Todavía no he comenzado a conducir con diferencial ni a frenar, y pronto quiero aprender a cambiar la programación del sensor ultrasónico con la biblioteca NewPing para obtener más sensores y menos demoras.
Ahora mismo, espero que el arduino interprete el ping ultrasónico como una distancia en centímetros y, en base a esa distancia, establezca el motor de CC a una velocidad definida. La salida PWM va a una resistencia de 210 ohmios conectada al pin base de un transistor, en el colector / emisor está el circuito de 18 V conectado al motor de CC. En un circuito aparte se encuentra el arduino y el sensor ultrasónico.
El circuito me da con éxito distancias precisas en la ventana del monitor serie. Sin embargo, el motor solo va al 100% de velocidad. No acelera su velocidad independientemente del valor de la variable de distancia.
Me asusta que la velocidad del motor predeterminada para esta configuración sea del 100%, me hace pensar que la velocidad está actuando digitalmente. Intenté eliminar el final de elseif condicional para que la distancia fuera mayor a 45 cm de velocidad establecida al 100% y el circuito aún alimentara el motor al 100%.
Cualquier ayuda sería muy apreciada!