Hola a todos, soy algo nuevo con arduino y tengo que realizar un trabajo que consiste en controlar el sentido de giro de un motor dc mediante el pulso de un botón, ademas lleva 3 display de 7 segmentos para medir la resolución de pwm. Son dos partes, la primera consiste en un puente H con dos reles y la segunda parte con ld293d.
Tengo un código para la segunda parte, pero para el ejercicio, al pulsar un botón de cambio de giro, el motor solo puede cambiar de dirección cuando éste esta apagado y no lo hace.
Si alguien puede ayudarme con la resolucion de pwm o indicador de rpm del motor, y con el sentido de giro para ambas partes les agradeceria
Adjunto las imagenes comprimidas de como son los circuitos
Tengo un código para la segunda parte, pero para el ejercicio, al pulsar un botón de cambio de giro, el motor solo puede cambiar de dirección cuando éste esta apagado y no lo hace.
Código:
const int controlPin1 = 12;
const int controlPin2 = 11;
const int enablePin = 9;
const int directionSwitchPin = A1;
const int onOffSwitchStateSwitchPin = A2;
const int potPin = A0;
int onOffSwitchState = 0;
int previousOnOffSwitchState = 0;
int directionSwitchState = 0;
int previousDirectionSwitchState = 0;
int motorEnabled = 0;
int motorSpeed = 0;
int motorDirection = 1;
//const int motorPin = 11;
//int switchState = 0;
//encendido_apagado = 0;
void setup(){
//pinMode(motorPin, OUTPUT);
//pinMode(switchPin, INPUT);
pinMode(directionSwitchPin, INPUT);
pinMode(onOffSwitchStateSwitchPin, INPUT);
pinMode(controlPin1, OUTPUT);
pinMode(controlPin2, OUTPUT);
pinMode(enablePin, OUTPUT);
digitalWrite(enablePin, LOW);
}
void loop(){
onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin);
delay(1);
directionSwitchState = digitalRead(directionSwitchPin);
motorSpeed = analogRead(potPin)/4;
if (onOffSwitchState != previousOnOffSwitchState){
if (onOffSwitchState == HIGH){
motorEnabled = !motorEnabled;
}
}
if (directionSwitchState != previousDirectionSwitchState) {
if (directionSwitchState == HIGH){
motorDirection = !motorDirection;
}
}
if (motorDirection == 1) {
digitalWrite(controlPin1, HIGH);
digitalWrite(controlPin2, LOW);
}
else {
digitalWrite(controlPin1,LOW);
digitalWrite(controlPin2,HIGH);
}
if (motorEnabled == 1){
analogWrite(enablePin,motorSpeed);
}
else {
analogWrite(enablePin, 0);
}
previousDirectionSwitchState = directionSwitchState;
previousOnOffSwitchState = onOffSwitchState;
}
Si alguien puede ayudarme con la resolucion de pwm o indicador de rpm del motor, y con el sentido de giro para ambas partes les agradeceria
Adjunto las imagenes comprimidas de como son los circuitos