This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.

Nombre de usuario
  

Contraseña
  





Estadísticas del foro
» Miembros: 16,353
» Último miembro: umuewadekuqub
» Temas del foro: 11,809
» Mensajes del foro: 115,464

Estadísticas totales

Últimos temas
Genius se para con cualqu...
Foro: Artillery
Último mensaje por: Axel
Hace 5 horas
» Respuestas: 4
» Vistas: 0
Cambio láser más potente.
Foro: Laser CNC
Último mensaje por: grafisoft
Ayer, 11:00 AM
» Respuestas: 1
» Vistas: 0
Artillery X2 Problemas co...
Foro: Artillery
Último mensaje por: Simemart
Ayer, 10:48 AM
» Respuestas: 5
» Vistas: 0
Problema con mi artillery...
Foro: Artillery
Último mensaje por: Simemart
06-12-2023, 06:09 PM
» Respuestas: 1
» Vistas: 0
Problema con ender 3 s1
Foro: Impresoras
Último mensaje por: Simemart
06-12-2023, 11:31 AM
» Respuestas: 1
» Vistas: 0
Modificar impresora
Foro: Prusa
Último mensaje por: Simemart
06-12-2023, 11:04 AM
» Respuestas: 3
» Vistas: 0





















 
  Presentación al foro...
Enviado por: javiero4780 - 02-11-2023, 08:51 PM - Foro: General - Respuestas (1)

Hola y muy buenas a tod@s!!! Me llamo Javier y actualmente estoy estudiando un master de impresión 3D y fabricación avanzada... También trabajo en impresión 3D y aunque llevo poco tiempo en este mundillo espero ayudar y recibir ayuda de esta gran comunidad.. 
Trabajo con impresoras que van desde una Ender3, Ultimaker 3, BCN3D, Figure 4, Markforged, Elegoo resina, etc.... 
También estoy con diferentes softwares del mundillo como son: Freecad, solidworks, fusión 360, Cura, Meshmixer, 3D Slicer, etc....
Un saludo a tod@s!!!! Osvaisacagar B2 B2 B2


  Pasos erroneos
Enviado por: Roque7 - 31-10-2023, 09:00 AM - Foro: Anet - Respuestas (7)

Mi vieja Anet A8, allá del 2016, sigue "funcionando" pero he cambiado la placa, tenia una mega y ramp 1.4 que ha fallecido. He puesto una MKS TinyBee me ha costado mucho ponerla en marcha, mas que nada subir el firmware, el Marlin que esta en las descargas de MKS y los archivos de configuración para la A8 de la pagina oficial de Marlin.
Y aquí esta lo raro, para que las medidas sean correctas los pasos por mm en el archivo de configuración para el eje X han de ser 200, Nusenuse Nusenuse el doble de lo que seria normal.
Hay que ponerlo asi  200, 100, 400, 100(95). he buscado errores y por mas vueltas que doy no lo encuentro. He pensado que los puentes de configuración de los micro pasos de la placa estuvieran defectuosos, pero en dos placas nuevas ocurre lo mismo.
Como es lógico he cambiado la anet V1 por la TinyBee y la pantalla zonestar por la reprap que uso, en el config.
Para compilar y subir uso el Visual Studio Code y Platformio.
Hay alguna configuración en el Marlin que se me escapa?.
Saludos


Gran sonrisa desplazamiento de capas ender 3
Enviado por: Jorge Espadas - 28-10-2023, 03:18 AM - Foro: General - Respuestas (1)

Buenas, es mi primera vez posteando ? estoy hace como 5 meses con un problema de desplazamiento de capaz particular, se me desplaza el eje Y unos 5mm en las impresiones que tienen muchas piezas, cuando el pico va mucho por el aire, digamos, como en los pulpitos articulados, no pasa siempre, intenté mil cosas, ajuste de correas, jugar con las velocidades, hasta la llevé a un técnico y me rompieron las placa madre y la tuve que garpar (supongo que eso descarta que sea un fallo eléctrico?) lo único que nunca probé es ajustar la polea del eje Y, porque mi modelo ender 3 no tiene prisioneros, sino que está a presión, entonces me da miedo arruinar la pieza. algún consejo? dicen que le de para adelante a lo de la polea? no tengo ninguna foto, fui tirando todas las impresiones fallidas, igualmente ahora voy a indagar para ver si encuentro alguna foto.

estoy cansado de despertarme y ver como 80g de plástico fueron desperdiciados, así que si alguien tiene otro solución voy a estar más que agradecido


  Error fatal en ESP32
Enviado por: Oscar Galicia - 27-10-2023, 02:19 AM - Foro: Arduino - Sin respuestas

Saludos, 

Soy nuevo en el foro y vengo desesperado a buscar ayuda porque me estoy quedando sin ideas.
En mi trabajo tengo una máquina electromecánica, y quiero medir los tiempos de trabajo y paro de la máquina.

Para esto, estoy usando un esp32 dev kit 1 con un shield que incluye los bornes para poder conectar cables.

He conectado los contactos normal abiertos de 2 relays a GND (común proveniente de GND de la tarjeta) y a los GPIO 35 y 27.
estas GPIO están configuradas como entradas PULLUP.

Al detectar que los relay se activan o se desactivan, mando a una base de datos de hostinger el estado (marcha, paro o alarma), y luego descargo los datos.

Mi problema es qué, mi ESP 32, empieza trabajando como se espera, pero al cabo de unas horas deja de responder. no reacciona a los relay.


Aunque puede parecer que se queda en algún fallo por comunicación, el puerto serial deja de imprimir lo que está haciendo o envía una serie de caracteres que no he programado en algún baudrate que no he seteado y desconozco.
me parece que no son fallas de conexión porque la falla sucede y un led que le he conectado me ha dejado ver que la salida GPIO 4 que está configurada como LOW, se pasa sola a un estado como si no estuviera configurada o definida.

me da fallo subir el archivo con el código, así que lo pondré acá:

//Librerías de Wifi
#include <WiFi.h>
#include <HTTPClient.h>
//Librerías y objeto para manejo de memoria eeprom
//#include <Preferences.h>      //Incluye la blioteca de EEPROM
//Preferences pref;  //inicia un objeto de memoria no volatil
/*
//Definir los hilos de multi tarea
TaskHandle_t FBTask;
TaskHandle_t SQLTask;
*/
//Server y credenciales de la base de datos
const char* serverName = "https://linkdemanejoyalmacenajededatos.php";
String apiKeyValue = "jfhdskls";
String nodo = "/nodonodo";  //dirección del nodo dentro de la base
//Definir las variables del programa principal y app
bool viSRUN = false;
bool viALARM = false;
int mSTAT = 10;
int INICIAR = 1;
//Definir variables a enviar por el POST
int RUN = 0;
int STOP = 0;
int ALARM = 0;
int COMANDO = 0;
int SENDDATA = 0;
String TALARM = "INICIO";
String USER = "";
String PRODUCT = "";
String SPAUSA = "";
int COUNTP = 0;
//Variables para reinicio de conexión en caso de fallas del wifi
bool reenvio = true;  //Variable para reenviar los datos http en caso de falla
int concheck = 0;
int resetcon = 0;
int intentos = 0;
bool aok = true;
int cuentare = 0;  //contador de fallas
//Define el objeto Servidor para recibir datos por WiFi
WiFiServer server(80);
String header;
//Variables para confirma de lectura de entradas
bool iRun = false;
bool iAlarm = false;
bool tRun = false;
bool tAlarm = false;
unsigned long lastTime, timeout = 2000;
unsigned long tread = 1000;
unsigned long tr1 = 0;
unsigned long tr2 = 0;
//*********Determinar los credenciales de conección a WIFI****************************//
const char* ssid = "wifi";
const char* password = "contraseña";


void conectarWiFi() {
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED && intentos < 30) {
    intentos++;
    Serial.print("Intento de conexión número ");
    Serial.print(intentos);
    Serial.println("...");
    delay(1000);
  }
  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("Conexión WiFi exitosa");
    Serial.print("Dirección IP: ");
    Serial.println(WiFi.localIP());
    intentos = 0;
  } else {
    Serial.println("No se pudo conectar a la red WiFi");
    ESP.restart();
  }
}
void setup() {
  //Setear el PINOUT
  pinMode(2, OUTPUT);         //habilita el pin 4 como salida
  pinMode(4, OUTPUT);         //habilita el pin 4 como salida
  pinMode(14, OUTPUT);        //habilita el pin 14 como salida
  pinMode(22, OUTPUT);        //habilita como Salida START
  pinMode(23, OUTPUT);        //habilita como Salida STOP
  pinMode(27, INPUT_PULLUP);  //habilita el pin 27 como entrada RUN
  pinMode(26, INPUT_PULLUP);  //habilita el pin 26 como entrada  SENSOR
  pinMode(35, INPUT_PULLUP);  //habilita el pin 35 como entrada  ALARMA
  digitalWrite(4, LOW);       //Apaga el RS485
  digitalWrite(14, LOW);      //0VDC
  digitalWrite(22, HIGH);     //RELÉ DE RUN
  digitalWrite(23, HIGH);     //RELÉ DE STOP
  //Definimos los objetos Multitask
  /*
  xTaskCreatePinnedToCore(LFB, "Task1", 8000, NULL, 1, &FBTask, 0);    // Core 0
  xTaskCreatePinnedToCore(LSQL, "Task2", 8000, NULL, 1, &SQLTask, 0);  // Core 0
  */
  //Serial.begin(9600);  //Inicia la comunicación Serial por el puerto COM
  delay(1000);
  Serial.println("Iniciando Wifi...");
  //Llama la funcion de conexion wifi
  conectarWiFi();
  //inicia el objeto de servidor Wifi para leer los post desde la app
  server.begin();
  //Carga los datos de la EEPROM en ajustes de whatsapp
  //pref.begin("WhaSettings", false);
  INICIAR = 1;
  TALARM = "INICIO";
}
void loop() {
  if (INICIAR == 1) {
    if (digitalRead(35) == HIGH) {
      ALARM = 1;
    }
    if (digitalRead(27) == LOW) {
      RUN = 1;
    } else {
      STOP = 1;
    }
    SENDDATA = 1;
    delay(1000);
    INICIAR = 0;
  }
  //Evaluacion si se solicitó enviar datos
  if (SENDDATA == 1) {
    enviodata();
    Serial.println("Envio de data");
  } else {
    //En caso de no intentar enviar datos, se mantiene leyendo cambios de estado
    //Rutina al iniciar el ESP32, manda un registro a la base de datos con el status actual y avisa que se acaba de iniciar el void loop
    //Evaluación y filtrado de los pulsos o interferencias en las entradas del ESP32 (ALARMA)
    if (digitalRead(35) == HIGH) {
      if (tAlarm == false) {
        tr1 = millis();
        tAlarm = true;
      } else {
        if (millis() - tr1 >= tread) {
          iAlarm = true;
        }
      }
    } else {
      if (tAlarm == true) {
        tr1 = millis();
        tAlarm = false;
      } else {
        if (millis() - tr1 >= tread) {
          iAlarm = false;
        }
      }
    }
    //Evaluación y filtrado de los pulsos o interferencias en las entradas del ESP32 (RUN/STOP)
    if (digitalRead(27) == LOW) {
      if (tRun == false) {
        tr2 = millis();
        tRun = true;
      } else {
        if (millis() - tr2 >= tread) {
          iRun = true;
        }
      }
    } else {
      if (tRun == true) {
        tr2 = millis();
        tRun = false;
      } else {
        if (millis() - tr2 >= tread) {
          iRun = false;
        }
      }
    }
    //Rutina de checkeo de cambio de estados
    if (iAlarm == true) {
      if (ALARM == 0) {
        ALARM = 1;
        TALARM = "ALARMA";
        SENDDATA = 1;
      }
      ALARM = 1;
      mSTAT = 3;
    }
    if (iAlarm == false) {
      if (ALARM == 1) {
        ALARM = 0;
        TALARM = "CONFIRMA ALARMA";
        SENDDATA = 1;
      }
      ALARM = 0;
      mSTAT = 4;
    }
    if (iRun == true) {
      if (RUN == 0) {
        RUN = 1;
        STOP = 0;
        TALARM = "RUN";
        SENDDATA = 1;
        Serial.println("MARCHA");
      }
      RUN = 1;
      STOP = 0;
      digitalWrite(2, HIGH);
      mSTAT = 1;
    }
    if (iRun == false) {
      if (RUN == 1) {
        RUN = 0;
        STOP = 1;
        TALARM = "STOP";
        SENDDATA = 1;
        Serial.println("DETENIDA");
      }
      RUN = 0;
      STOP = 1;
      mSTAT = 2;
      digitalWrite(2, LOW);
    }
  }

  /*
  WiFiClient client = server.available();
  if (client) {
    lastTime = millis();
    Serial.println("Nuevo cliente");
    String currentLine = "";
    while (client.connected() && millis() - lastTime <= timeout) {
      if (client.available()) {
        char c = client.read();
        Serial.write©;
        header += c;
        if (c == '\n') {
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
            //pruebas, habrá que modificar esto
            if (header.indexOf("GET /refresh") >= 0) {
              client.println(mSTAT);
            } else {
              int start = header.indexOf("GET ") + 4;
              int end = header.indexOf("HTTP/1.1") - 1;
              String requestValue = header.substring(start, end);
              Serial.println("Request:");
              //Serial.println(requestValue);
              client.println(mSTAT);
              aok = false;
              char* token = strtok(requestValue.begin(), "$");
              USER = token;
              token = strtok(NULL, "$");
              USER = token;
              token = strtok(NULL, "$");
              PRODUCT = token;
              token = strtok(NULL, "$");
              String strtoint = token;
              COMANDO = strtoint.toInt();
              token = strtok(NULL, "$");
              SPAUSA = token;
              token = strtok(NULL, "$");
            }
            break;
          } else {
            currentLine = "";
          }
        } else if (c != '\r') {
          currentLine += c;
        }
      }
    }
    header = "";
    client.stop();
    Serial.println("Cliente desconectado.");
    Serial.println("");
    Serial.println("Valores extraídos:");
   
    //Serial.println(USER);
    //Serial.println(PRODUCT);
   
    Serial.println(COMANDO);
    if (aok == false) {
      switch (COMANDO) {
        case 1:
          Serial.println("SOLICITUD DE RUN");
          viSRUN = true;
          viALARM = false;
          if (RUN != 1) {
            digitalWrite(22, LOW);
            digitalWrite(23, HIGH);
            TALARM = "CONFIRMA SEGURIDAD";
            Serial.println("ON RELÉ RUN");
            aok == true;
          }
          break;
        case 2:
          viSRUN = false;
          Serial.println("SOLICITUD DE STOP");
          if (STOP != 1) {
            digitalWrite(23, LOW);
            digitalWrite(22, HIGH);
            TALARM = "CONFIRMA SEGURIDAD";
            Serial.println("ON RELÉ STOP");
            aok == true;
          }
          break;
        //Lectura de Comando Alarm
        case 3:
          viALARM = true;
          viSRUN = false;
          if (TALARM != "ALARMA DESDE LA APP") {
            TALARM = "ALARMA DESDE LA APP";
            digitalWrite(23, LOW);
            digitalWrite(22, HIGH);
            if (RUN == 0) {
              SENDDATA = 1;
            }
            Serial.println("SET ALARM");
            aok == true;
          }
          break;
        case 5:
          if (TALARM != SPAUSA) {
            viSRUN = false;
            Serial.println("SET " + SPAUSA);
            digitalWrite(23, LOW);
            digitalWrite(22, HIGH);
            TALARM = SPAUSA;
            SENDDATA = 1;
           
            aok == true;
          }
          break;
      }
    }
  }
  //Evalua si el estado de de la maquina coincide con la solicitud de la app
  if ((viSRUN == true && mSTAT == 1) || (viSRUN == false && mSTAT == 2)) {
    //Si está en pide run y está en run deja las salidas inactivas
    digitalWrite(23, HIGH);
    digitalWrite(22, HIGH);
    //Serial.println("RELÉS DESACTIVADOS");
    COMANDO = 10;
    //Serial.println("SOLICITUD DE LA APP RESUELTA");
  }
*/
  delay(200);
}
void enviodata() {
  //Si está habilitado el WiFi inicia el objeto HTTP
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;
    http.begin(serverName);
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    //Envia los datos recibidos a la base de datos
    String httpRequestData = "api_key=" + apiKeyValue + "&RUN=" + RUN + "&STOP=" + STOP + "&ALARM=" + ALARM + "&TALARM=" + TALARM + "&USER=" + USER + "&PRODUCT=" + PRODUCT + "&COUNTP=" + COUNTP + "";
    Serial.print("httpRequestData: ");
    Serial.println(httpRequestData);
    int httpResponseCode = http.POST(httpRequestData);
    //Codigo de verifiacion de la request
    if (httpResponseCode > 0) {
      Serial.print("HTTP Response code: ");
      Serial.println(httpResponseCode);
      reenvio = false;
      concheck = 0;
      SENDDATA = 0;
    } else {
      reenvio = true;
      Serial.print("Error code: ");
      Serial.println(httpResponseCode);
      concheck = concheck + 1;
      Serial.println("Fallas de conexión: ");
      Serial.println(concheck);
      if (concheck >= 20) {
        Serial.println("Demasiadas fallas, reseteando conexión");
        desconectarWiFi();
        reconectarWiFi();
      }
      http.end();
    }
  } else {
    Serial.println("WiFi Disconnected");
    desconectarWiFi();
    reconectarWiFi();
    delay(500);
  }
}
//Funcion para desconectar el wifi en caso de exeder errores
void desconectarWiFi() {
  WiFi.disconnect();
  Serial.println("Desconectado de la red WiFi");
}
//Funcion para reconectar el wifi
void reconectarWiFi() {
  WiFi.reconnect();
  Serial.println("Reconectando a la red WiFi...");
  conectarWiFi();
}

/*
void LFB(void* parameter) {  //
  while (1 == 1) {
    delay(1000);
  }
}
void LSQL(void* parameter) {  //
  while (1 == 1) {
    if (SENDDATA == 1) {
      enviodata();
      Serial.println("Envio por el core: " + xPortGetCoreID());
    }
    delay(200);
  }
}
*/


  Problema Hephestos 2
Enviado por: Damocles - 26-10-2023, 12:40 PM - Foro: Firmware y Software - Respuestas (8)

Buenas a todos,

Soy usuario amater en el tema de impresión 3D, hace años compre una prusa i3 de bq (Hephestos) y hasta dia de hoy sin problema para las cosillas que iba imprimiendo. Esta semana encontré una oferta de unas Hephestos 2 a muy buen precio nuevas a estrenar (200€) así que compre un par de unidades, una para recambios en un futuro y la otra para uso y disfrute. Así que después de montarla me encuentro con problemas ( tonto de mi que no cai en que al desaparecer bq no encontraría ningún tipo de soporte).
Problema principal una vez montada es que la enciendo y el LCD en blanco y pitido continuo (dentro de mi ignorancia imagino que la placa no tendrá instalado el firmware) así que voy al enlace de bq para la descarga y actualización/instalación y ...sorpresa, enlaces rotos ya que han desaparecido como marca. Llevo un par de días buscando info, que aplicación necesito para actualizar, etc etc... y nada, soy un completo inútil por que no encuentro como poder hacerlo. Lo máximo que he conseguido es descargarme el firmware 2.5.3 y el que tiene Macucho modificado por el en este foro, pero del resto de como poder instalarlo, nada de nada.

Alguien que se apiade de mi y me ayude con el proceso?

Muchas gracias de antemano!!