Foros
Nuevos mensajes
Buscar en foros
Novedades
Nuevos mensajes
Nuevos recursos
Última actividad
Recursos
Últimas revisiones
Buscar recursos
Acceder
Registrarse
Novedades
Buscar
Buscar
Buscar sólo en títulos
De:
Nuevos mensajes
Buscar en foros
Menú
Acceder
Registrarse
Install the app
Instalar
Diseño digital
Microcontroladores y sistemas embebidos
Arduino y Raspberry Pi
Problemas control PID Arduino
JavaScript está desactivado. Para una mejor experiencia, por favor, activa JavaScript en el navegador antes de continuar.
Estás usando un navegador obsoleto. No se pueden mostrar este u otros sitios web correctamente.
Se debe actualizar o usar un
navegador alternativo
.
Responder al tema
Mensaje
[QUOTE="SURbyte, post: 1277286, member: 248103"] Lo primero que debes plantearte mas alla de lo que te han dicho es que los que estamos del otro lado no sabemos que sabes y que no. Basamos nuestros comentarios en lo que expones. Lo que expones es al menos muy liviano. Se supone que debes entregar la mayor cantidad de información posible.. porque nosotros no hemos visto tu boya (como la nombras), no sabemos si tu boya o sensor potenciométrico se comporta linealmente con el nivel de líquido o no. Has probado si esto es asi?. Se te ocurrio medir desde 0 y leer la salida del potenciometro... y luego tomar digamos 10 lecturas de nivel hasta completar el 100% y hacer una curva de como es la transferencia? De lo contrario una cosa es creer que tienes algo lineal y otra es que no lo sea. Ahora mira el código que has puesto, lo he identado para que se entienda (al menos a mi me hace falta) Observa que es parcial, y no solo parcial sino que empieza y no sabemos si termina o no ya que lo primero no tiene llave de fin, pero luego hay otro procedimiento como driveArdumoto que esta claramente definido. [CODE] // <= ACA NO SABEMOS DE DONDE VIENE if (Output>0) { //la válvula se abre //AQUI PUEDES DAR VALORES A INPUT //Si está dentro de 1000 el valor de apertura, ejecuta el PID . 1000 es el valor máximo superior para abrir la válvula if (Input<1000) { aux=abs(Output); driveArdumoto(MOTOR_B, FORWARD, aux); //función del driver , utilizando el motor_b , hacia la direccion derecha y a una velocidad marcada (-255,255) } //Si se pasa de 1000 al abrir, la válvula se para y //manda un 0 a la salida else { myPID.SetMode(MANUAL); Output = 0; stopArdumoto(MOTOR_B);//Funcion para parar el motor b } //Función para mover el motor // <= ACA NO SABEMOS SI TERMINA ALGO? void driveArdumoto(byte motor, byte dir, byte spd) { if (motor == MOTOR_B) { digitalWrite(DIRB, dir); analogWrite(PWMB, spd); } }[/CODE] Asi que tienes algunas directivas para trabajar que espero te sirvan y recuerda. Aporta toda la información, código completo, esquema de conexiones aunque sea obvio (un bosquejo mano alzada sirve). [/QUOTE]
Verificación
Responder
Diseño digital
Microcontroladores y sistemas embebidos
Arduino y Raspberry Pi
Problemas control PID Arduino
Arriba