74HC4060 sensor simulieren

OP #7482434
Lesenswert?

Helau Freunde der Elektronik.

Ich habe hier einen gegrillten Wasserstandssensor (ST-545) der auf einem 74HC4060 basiert. Um die restliche Funktion der Waschmaschinenplatine zu prüfen müsste ich diesen Sensor irgendwie simulieren. Ich werde aus dem 74HC4060 Datenblatt nicht wirklich schlau - allerdings hat meine Recherche ergeben, dass der Sensor wohl eine PWM ausgibt und bei Änderung des Wasserstands die Frequenz von 35Hz auf 45Hz erhöht.

Jetzt war meine Idee, das ganze mit dem Arduino UNO oder Mega2560 den ich hier habe, zu simulieren.

Der Sensor hat 5V input, Ground und Output.

Mein Plan war jetzt einfach die 5V+GND die von der WaMa-Platine kommen an den MEGA zu klemmen und dann mit analogWrite die PWM zu simulieren, in etwa so?:

1
const int outputPin = 9;  // Digital pin to output PWM signal
2

3
void setup() {
4
  pinMode(outputPin, OUTPUT);
5
}
6

7
void loop() {
8
  simulateSensor();  // Simulate the sensor output
9
  delay(1000);       // Wait for a while before changing the frequency
10
}
11

12
void simulateSensor() {
13
  int initialFrequency = 35;  // Initial frequency of the sensor (in Hz)
14
  int targetFrequency = 45;   // Target frequency of the sensor (in Hz)
15
  int frequencyStep = 1;      // Frequency change step (increase by 1 Hz)
16

17
  for (int freq = initialFrequency; freq <= targetFrequency; freq += frequencyStep) {
18
    analogWrite(outputPin, 128);  // Generate PWM signal (adjust duty cycle as needed)
19
    delay(1000 / freq);           // Delay to control frequency
20
    analogWrite(outputPin, 0);    // Turn off PWM
21
    delay(1000 / freq);           // Delay for the off period
22
  }
23
}

Welche Werte (change step, duty cycle und delay) sollte ich da anpeilen?

Bin über jegliche Lösungsvorschläge dankbar und wünsche noch einen schönen Sonntagabend

(Firma: egal) #7482463
Lesenswert?

Manfred schrieb:

Ich werde aus dem 74HC4060 Datenblatt nicht wirklich schlau - allerdings hat meine Recherche ergeben, dass der Sensor wohl eine PWM ausgibt und bei Änderung des Wasserstands die Frequenz von 35Hz auf 45Hz erhöht.

Der CD4060 ist ja auch keine "Sensor", sondern eine recht einfacher Oszillator mit nachgeschaltetem binärem Zähler. Mit Puls-Weiten-Modulation (PWM) hat das ganze auch nicht viel zu tun. Durch den Teiler ist das Impuls-Pausen-Verhältnis immer gleichmäßig.

Der Trick an dem ganzen dürfte sein, eine der Frequenzbestimmungen Komponenten des Oszillator (meiste die Kapazität) durch äußere Einflüsse zu verändern. Z.B.: zwei parallele Leiterbahnen haben in trockener Umgebung eine andere Kapazität als im nassen Zustand. Hierdurch ändert dann die erzeugte Freq. in einem gewissen Bereich. Das Puls-Pausenverhältnis bleibt dabei aber immer gleich bei 50%/50%. Zum auswerten langt es also einfach die Freq. zu messen und man muss nicht zwingend die genau Länge des Impulses bestimmen.

Zum Simulieren brauchst du also einen einfachen einstellbaren Funktionsgenerator für Rechteck. Gibt es beim Chinesen auch in Primitiv oder alt bewährt selber bauen mit einem NE555 mit einem Poti.

OP #7482538
Lesenswert?

Lieben Dank für eure Antworten!

Irgend W. schrieb:

Der Trick an dem ganzen dürfte sein, eine der Frequenzbestimmungen Komponenten des Oszillator (meiste die Kapazität) durch äußere Einflüsse zu verändern. Z.B.: zwei parallele Leiterbahnen haben in trockener Umgebung eine andere Kapazität als im nassen Zustand.

Gilt das auch für Wasserstandsensoren/Hydrostate? Die haben ja mehr Zustände als nur feucht-trocken. Mein Sensor funktioniert wie ein Druckwächter: durch ein Röhrchen in dem das Wasser steigt/sinkt drückt der Luftdruck darüber auf eine Membran, welche sich in eine außenliegende Spule hineindrückt/absenkt.

Anbei habe ich mal die Schaltskizze des Sensors angehangen. Da fällt mir auf ich habe einen Verbindungspunkt vergessen von der Leiterbahn zwischen den Kondensatoren rechts und der GND Leitung, schuligom

Einen NE555 und ein Poti habe ich garantiert irgendwo rumfliegen, ich durchwühle morgen mal die Werkstatt ♥

Angehängte Dateien:
#7482707
Lesenswert?

Manfred schrieb:

Gilt das auch für Wasserstandsensoren/Hydrostate? Die haben ja mehr Zustände als nur feucht-trocken.

Kapazitive Sensoren erfassen nicht feucht-trocken. Deren Kapazität hängt von der Dielektrizitätskonstante des Stoffes ab, den das Feld zwischen den beiden Kondensator-"Platten" durchdringt. Zwischen Luft und Wasser unterscheidet die sich um einen Faktor 80. Falls das Feld nun nur zur Hälfte durch Wasser verläuft, ist die eigentlich zu messende Kapazität dann nur ungefähr halb so groß, wie wenn das ganze Messvolumen mit Wasser gefüllt ist.

OP #7482751
Lesenswert?

Rainer W. schrieb:

Manfred schrieb:

Gilt das auch für Wasserstandsensoren/Hydrostate? Die haben ja mehr Zustände als nur feucht-trocken.

Kapazitive Sensoren erfassen nicht feucht-trocken. Deren Kapazität hängt von der Dielektrizitätskonstante des Stoffes ab, den das Feld zwischen den beiden Kondensator-"Platten" durchdringt. Zwischen Luft und Wasser unterscheidet die sich um einen Faktor 80. Falls das Feld nun nur zur Hälfte durch Wasser verläuft, ist die eigentlich zu messende Kapazität dann nur ungefähr halb so groß, wie wenn das ganze Messvolumen mit Wasser gefüllt ist.

ist mein Sensor denn ein kapazitativer sensor? durch die membran+ferrit der sich in der spule bewegt müsste es doch ein induktiver sensor sein oder bin ich hier auf dem holzweg?

Die Beschreibung laut https://de.wikipedia.org/wiki/Kapazitiver_Sensor trifft aufjedenfall nicht auf meinen Sensor zu....

#7482759
Lesenswert?

Manfred schrieb:

ist mein Sensor denn ein kapazitativer sensor? durch die membran+ferrit der sich in der spule bewegt müsste es doch ein induktiver sensor sein oder bin ich hier auf dem holzweg?

Es ist ein induktiver. Wenn man sich das Video ansieht, stellt man fest, dass durch den der Wasserstand etwas bewegt wird, das die Induktivität der Spulen ändert. Um induktive (oder auch kapazitive) Geschichten auswerten zu können, braucht man einen Oszillator, dessen Frequenz in Abhängikeit zu irgendwas (meisten der Weg oder die abgedeckte Fläche) ändert.

Sofern man keine quantitative Auswertung machen will, könnte man auch einfach einen Reedkontakt mit einem Magneten auslösen.

Welches Signal dein Sensor liefert, kann man aus deinem "Schaltplan" nur erraten. Gehäusebelegungen beschreiben leider nicht das Innenleben des ICs.

OP #7482779
Lesenswert?

Rahul D. schrieb:

Es ist ein induktiver. Wenn man sich das Video ansieht, stellt man fest, dass durch den der Wasserstand etwas bewegt wird, das die Induktivität der Spulen ändert. Um induktive (oder auch kapazitive) Geschichten auswerten zu können, braucht man einen Oszillator, dessen Frequenz in Abhängikeit zu irgendwas (meisten der Weg oder die abgedeckte Fläche) ändert.

Danke!

Rahul D. schrieb:

Welches Signal dein Sensor liefert, kann man aus deinem "Schaltplan" nur erraten. Gehäusebelegungen beschreiben leider nicht das Innenleben des ICs.

Hmm, auch nicht anhand des Datenblatts https://www.ti.com/lit/ds/symlink/sn74hc4060.pdf ? Das enthält zumindest ein logisches Schema - leider bin ich nicht tief genug in der Thematik um das vollständig zu verstehen, bitte seht es mir nach^^

In dem von 'thelonging' verlinkten Video zeigt der Herr ja ungefähr welche Frequenz der Sensor ausgibt... War mein Ansatz mit der PWM vom Arduino also doch nicht ganz verkehrt? Oder reicht mir trotzdem ein 555 Signalgenerator wie 'irgendwer' schrieb?

#7482786
Lesenswert?

Manfred schrieb:

Hmm, auch nicht anhand des Datenblatts https://www.ti.com/lit/ds/symlink/sn74hc4060.pdf ?

Dann sollen sich also die anderen (die dir helfen wollen) die Arbeit machen, den Schaltplan zu erstellen?

leider bin ich nicht tief genug in der Thematik um das vollständig zu verstehen, bitte seht es mir nach^^

Ausrede...

Manfred schrieb:

In dem von 'thelonging' verlinkten Video zeigt der Herr ja ungefähr welche Frequenz der Sensor ausgibt... War mein Ansatz mit der PWM vom Arduino also doch nicht ganz verkehrt? Oder reicht mir trotzdem ein 555 Signalgenerator wie 'irgendwer' schrieb?

So genau habe ich mir das Video nicht angesehen.

OP #7482801
Lesenswert?

Rahul D. schrieb:

Manfred schrieb:

Hmm, auch nicht anhand des Datenblatts https://www.ti.com/lit/ds/symlink/sn74hc4060.pdf ?

Dann sollen sich also die anderen (die dir helfen wollen) die Arbeit machen, den Schaltplan zu erstellen?

nein nein, das kann ich natürlich versuchen, und nachher hier hochladen.

Heiner B. schrieb:

Ist kein PWM! Es ist eine variable Frequenz.

Ahh, PWM bestimmt den duty-cycle einer festgelegten Frequenz. Ich dachte aber dass ich mit

1
 int initialFrequency = 35;  // Initial frequency of the sensor (in Hz)
2
  int targetFrequency = 45;   // Target frequency of the sensor (in Hz)
3
  int frequencyStep = 1;      // Frequency change step (increase by 1 Hz)

die PWM Frequenz ändern kann.

Peter D. schrieb:

Die 32Bit-Boliden (Raspi, ESP) tun sich ja schwer damit, hohe Frequenzen genau zu messen.

Ich möchte auch nicht messen, sondern das Signal simulieren. Ohne den Sensor schaltet die Waschmaschine nämlich nach 2 Sekunden ab.

OP #7482846
Lesenswert?

die Befragung der heiligen KI sagt, ich kann die TimerOne library in Verbindung mit einem Potentiometer nutzen um eine variable Frequenz zu erzeugen.

der ungefähre code wäre

1
#include <TimerOne.h>
2

3
const int outputPin = 9;    // Digital pin to output waveform
4
const int potentiometerPin = A0;  // Analog pin for potentiometer
5

6
unsigned long interval = 1000;  // Initial interval in milliseconds (1 second)
7
int minFrequency = 35;          // Minimum frequency in Hz
8
int maxFrequency = 45;          // Maximum frequency in Hz
9
int currentFrequency = minFrequency;
10

11
void setup() {
12
  pinMode(outputPin, OUTPUT);
13
  Timer1.initialize(interval * 1000);  // Initialize Timer1 with interval in microseconds
14
  Timer1.attachInterrupt(updateFrequency);  // Attach the interrupt to updateFrequency
15
}
16

17
void loop() {
18
  // Read the potentiometer value and map it to the frequency range
19
  int potValue = analogRead(potentiometerPin);
20
  currentFrequency = map(potValue, 0, 1023, minFrequency, maxFrequency);
21
  
22
  // Calculate the interval based on the current frequency
23
  interval = 1000000 / currentFrequency;
24
  
25
  // Update Timer1 period to adjust the frequency
26
  Timer1.setPeriod(interval);
27
  
28
  // You can add additional code or delay here if needed
29
}
30

31
void updateFrequency() {
32
  digitalWrite(outputPin, !digitalRead(outputPin));  // Toggle the output pin state
33
}
#7483222
Lesenswert?

Manfred schrieb:

Ich dachte aber dass ich mit int initialFrequency = 35; // Initial frequency of the sensor (in Hz) int targetFrequency = 45; // Target frequency of the sensor (in Hz) int frequencyStep = 1; // Frequency change step (increase by 1 Hz) die PWM Frequenz ändern kann.

Damit änderst du erstmal gar nichts ;-) Das sind Variablen, die mit einem Wert initialisiert werden.

OP #7483577
Lesenswert?

Rainer W. schrieb:

Damit änderst du erstmal gar nichts ;-) Das sind Variablen, die mit einem Wert initialisiert werden.

ah ok, ich glaube ich verstehe :D

Dirk S. schrieb:

Sind die C- Werte vom 'CMOS LC Oszilator, evtl. auch der von L gegeben (, ermittelbar)?

Denke nicht, oder zumindest wüsste ich nicht wie ich die ermitteln kann, da der 4060 durch ist und nur heiß wird sobald ich ihn anschliesse.

Dirk S. schrieb:

Auf welche Referenz gehen 35Hz und 45 Hz zurück?

die 35Hz und 45Hz hatte ich aus einem polnischen Forum, allerdings gibt es mehrere Versionen des Sensors. In dem oben verlinkten Video sind die werte deutlich niedriger (8-12Hz), er hat aber auch die Version ST545-AA-003 und ich habe den ST545-AA-008.

Das ist doch zum Mäuse melken....

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren