Nano hängt kurzzeitig

Hallo zusammen.

Ich bin neu im Forum und hoffe trotzdem nicht allzu viele Fehler gemacht zu haben. Ich versuche einen selbstgebauten kapazitiven Touch Sensor. Ich habe die Schaltung wie im Anhang aufgebaut. Soweit läuft alles gut. Sobald ich jedoch die USB Schnittstelle vom Nano (5V) zum PC entferne beginnen Probleme. Das heißt, wenn ich sehr schnell mit dem Finger auf die Touchfläche tippe, bleibt nach 5-10 Tippen das System kurz (1sec) hängen. Danach läuft alles wieder gut. Mit dem USB Kabel am PC habe ich das Verhalten nicht. Ich habe festgestellt, dass kurz bevor das System hängen bleibt, die L-LED einmal aufblinkt. Ich habe auch schon versucht den GND mit PE zu verbinden - ohne Veränderung.

Folgender Code wurde verwendet:

#include <CapacitiveSensor.h>

// Variables
int Relay = 5;                // relay pin

int State = 0;                // sensor State
int Counter = 1;              // counter for the number of button presses
int lastState = 0;            // previous state of the button

// Instances
CapacitiveSensor   cs_9_8 = CapacitiveSensor(9,8);        // Pins for channel 1

void setup()                    
{
  pinMode(Relay, OUTPUT);
 
  cs_9_8.set_CS_AutocaL_Millis(0xFFFFFFFF);     // turn off autocalibrate on channel 1

  //Serial.begin(9600);
}

void loop()                    
{
  // Measurment
  long start = millis();
  long ChValue1 =  cs_9_8.capacitiveSensor(100);  // sensor value Channel 1 0-100

  // State Control
  if (ChValue1 > 50){                   // adjust the treshold value if required
    State = HIGH;
  }
  else{
    State = LOW;
  }

  // Trigger
  if (State != lastState) {             // compare the buttonState to its previous state
    if (State == HIGH) {                // if the state has changed, increment the counter
      Counter++;
    } 
    else {
    }
  }
  lastState = State;                    // save the current state as the last state

  // Relay Control
  if (Counter % 2 == 0) {               // set output after each push
    digitalWrite(Relay, HIGH);
  } else {
    digitalWrite(Relay, LOW);
  }
        
  // for debug
  //Serial.print(millis() - start);     // check on performance in milliseconds
  //Serial.print("\t");                 // tab character for debug window spacing
  //Serial.print(ChValue1);             // print sensor channel 1
  //Serial.print("\n");                 // new line for debug window
  delay(0);                           // arbitrary delay to limit data to serial port 
}

Kann mir jemand einen Tipp geben, an was dies liegen könnte? Systemdesignfehler?

Besten Dank & Grüsse
Torro

Wie erfolgt die Spannungsversorgung ohne USB?

Über einen Stepdown Converter 230VAC -> 5VDC. Ich habe die Spannung überprüft und 5V gemessen mit einem Multimeter. Hast du eine Idee woran es liegen könnte?

Grüsse
Richi

Die Eingänge eines Atmega328 sind sehr empfindlich und reagieren ohne korrekte Beschaltung auf alles was so an Störungen in der Luft hängt.
Deine Schaltung solltest du nochmal überdenken und durch einen fertigen Sensor ersetzen.
Ein offener Eingang reagiert nie so wie du es wünschst.

Richi:
Hast du eine Idee woran es liegen könnte?

Was macht den Unterschied mit/ohne USB? Zusätzliche Masse und 5V.

Idee 1: Irgendein Kabel für Masse (GND) ist gebrochen oder hat schlechten Kontakt.

Idee 2: Irgendein Kabel für 5V ist gebrochen oder hat schlechten Kontakt.

Idee 3: Das Netzteil (Du nennst es Stepdown Converter) liefert schlecht geglätteten Strom.

Idee 4: Das Netzteil liefert zu wenig Strom (Du machst keine Angaben dazu), der Arduino geht in Reset.

Idee Nr. 4 ist mein Favorit :slight_smile:

Besten Dank für die Tipps. Die Kabel habe ich nochmals geprüft -> i.O Hatte das zu Beginn auch gedacht, da der USB nicht viel Unterschiede bewirken kann.

Das Netzteil liefert 700mA. Solle doch reichen?! Bei dieser Überdimensionierung spielen doch Stromripple auch keine Rolle mehr?! Zumindest war dies meine (falsche) Überlegung :confused: .

Grüsse

Richi:
Besten Dank für die Tipps. Die Kabel habe ich nochmals geprüft -> i.O Hatte das zu Beginn auch gedacht, da der USB nicht viel Unterschiede bewirken kann.

Das Netzteil liefert 700mA. Solle doch reichen?! Bei dieser Überdimensionierung spielen doch Stromripple auch keine Rolle mehr?! Zumindest war dies meine (falsche) Überlegung :confused: .

Und, funktioniert es jetzt ?
Ich bin nach wie vor davon überzeugt, es liegt an den Störstrahlungen, die du dir einfängst.
Du solltest zu einem Taster greifen, der das sicher erledigt.

Richi:
Das Netzteil liefert 700mA. Solle doch reichen?!

Das kann ich nicht wissen, da ich den Stromverbrauch Deines Relais nicht kenne.

Hat das Relais eine Löschdiode an der Wicklung?

Richi:
Bei dieser Überdimensionierung spielen doch Stromripple auch keine Rolle mehr?!

Es gibt Netzteile und Netzteile. Manche liefern geregelte, geglättete Gleichspannung, manche gleichgerichtete Wechselspannung. Du benötigst geregelte, geglättete Gleichspannung von 5V+-0,2V. Möglicherweise hilft ein Kondensator. Schau mal, was Deine Bastelkiste so hergibt.

Sehen kann man sowas mit einem Oszilloskop, sonst muß man halt probieren :slight_smile:

Den Vorschlag aus #8 unterstütze ich!

Richi:
Ich habe festgestellt, dass kurz bevor das System hängen bleibt, die L-LED einmal aufblinkt. Ich habe auch schon versucht den GND mit PE zu verbinden - ohne Veränderung.

Ich könnte mir ein Reset gut vorstellen. Die Hängezeit wäre die Dauer des Bootladers. Baue mal ins Setup ein Blinken einer LED ein. Dann weißt du, ob der Nano ein Reset macht, wenn er hängt.

Besten Dank für all die Tipps vorab. Habe einige der Tipps mal ausprobieren können. Es ist tatsächlich so, dass bei "hängen" ein Reset passiert!

Das Relay ist wie im Anhang. Wie muss ich den Kondensator auslegen für die 5V Spannungsversorgung am Nano. Habe nicht gerade ein Ozsi rumliegen, deshalb wollte ich das rechnen. Kann mir da jemand vielleicht einen Tipp geben? Reichen da 470uF. Habe noch diverses rumliegen :slight_smile:

Richi:
Reichen da 470uF. Habe noch diverses rumliegen :slight_smile:

Was willst Du rechnen, wenn Dir die gemessenen Grundlagen fehlen. Die 470µF sind doch ein Anfang :slight_smile:

Richi:
Besten Dank für all die Tipps vorab. Habe einige der Tipps mal ausprobieren können. Es ist tatsächlich so, dass bei "hängen" ein Reset passiert!

Das Relay ist wie im Anhang. Wie muss ich den Kondensator auslegen für die 5V Spannungsversorgung am Nano. Habe nicht gerade ein Ozsi rumliegen, deshalb wollte ich das rechnen. Kann mir da jemand vielleicht einen Tipp geben? Reichen da 470uF. Habe noch diverses rumliegen :slight_smile:

Gibt es da noch andere Bilder, evtl. ein Link.
Man kan nicht erkennen, ob da ein Transistor und eine Freilaufdiode drauf ist.

Das ist der Link zum Bauteil:
https://www.aliexpress.com/snapshot/0.html?spm=a2g0s.9042311.0.0.FTjrNS&orderId=84580688966340&productId=32727119580

Sieht nach einer Freilaufdiode aus.

Ich habe ebenfalls diverse Kondensatoren versucht - ohne Erfolg. Weiter habe ich die Einspeisung auf 3A 5V erhöht - keine Veränderung. Was ich nicht verstehe ist, wie das eingesteckte USB Kabel eine positive Wirkung gegen die Störungen haben soll?

Richi:
Das ist der Link zum Bauteil:

Das ist eine URL, kein Link und die kann ich mobil nicht öffnen.

Hast du das mal mit einer Led versucht ?
Also nur Led ohne Relais ?

Ich habe es doch noch lösen können. Habe einen alten mobile charger aufgebrochen und dessen Elektronik verbauen als 5V Speisung. Siehe da - funktioniert wie gewünscht. Scheint also an der "schlechten" Spannungsversorgung gelegen zu haben. Besten Dank für den Support!!