Drehmomentabschaltung

Du suchst nach

  • einer Schrittkette
  • einer Zeitverzögerung

Ungetesteter Vorschlag:

const float Abschaltung = 0.5;

void setup()
{
  Serial.begin(9600);
  pinMode(6, OUTPUT); // Pin schaltet ein L298N Board mit DC Motor
  pinMode(4, INPUT); // Enschalter, startet den Motor
}

void loop()
{
  uint32_t jetzt = millis();
  static uint32_t vorhin = jetzt;
  const uint32_t intervall = 100;
  static int pwmWert = 0;
  static byte schritt = 0;

  switch (schritt)
  {
    case 0:
      if (digitalRead(4) == LOW) { // Taster wurde betätigt, Motor startet
        schritt++;
      }
      break;
    case 1:
      int Shuntwert = analogRead(A0);
      float Spannung = Shuntwert * (5.0 / 1023.0);
      if (Spannung > Abschaltung) {
        Serial.println("drehmoment zu hoch");
        digitalWrite(6, LOW); // Schaltet den Motor ab
        schritt++;
      } else {
        if ( (pwmWert < 255) && (jetzt - vorhin >= intervall) )
        {
          vorhin = jetzt;
          pwmWert++;
          analogWrite(6, pwmWert);
        }
      }
      break;
    case 2:
      break;
  }
}