Forum: Mikrocontroller und Digitale Elektronik 74HC4060 sensor simulieren


von Manfred (manni_mustermaxx)


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

: Bearbeitet durch User
von Mario M. (thelonging)


Lesenswert?

Also laut BigClive macht der Sensor ca. 8-12Hz bei 50% Tastverhältnis.
https://www.youtube.com/watch?v=O-0KGbd91_I

von Irgend W. (Firma: egal) (irgendwer)


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.

- 
https://www.elektormagazine.de/news/circuit-shorts-the-curious-case-of-cd4060-de

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.
- https://de.wikipedia.org/wiki/Funktionsgenerator
- https://de.wikipedia.org/wiki/NE555#Astabile_Kippstufe

von Manfred (manni_mustermaxx)


Angehängte Dateien:

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 ♥

: Bearbeitet durch User
von Manfred (manni_mustermaxx)


Lesenswert?

Mario M. schrieb:
> Also laut BigClive macht der Sensor ca. 8-12Hz bei 50%
> Tastverhältnis.
> https://www.youtube.com/watch?v=O-0KGbd91_I

Das ist exakt der selbe Sensor!

Er sagt im Video dass die WaMa zwei Möglichkeiten hat den Wasserstand zu 
checken, ein mal wie lange er braucht um von low nach high zu wechseln 
und ein mal kann Sie die Anzahl der Pulse messen...

: Bearbeitet durch User
von Rainer W. (rawi)


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.

von Manfred (manni_mustermaxx)


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....

: Bearbeitet durch User
von Rahul D. (rahul)


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.

von Heiner B. (karadur)


Lesenswert?

Ist ein induktiver Sensor. Frequenzänderung durch den verschiebbaren 
Kern.

von Manfred (manni_mustermaxx)


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?

von Rahul D. (rahul)


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.

von Heiner B. (karadur)


Lesenswert?

Ist kein PWM! Es ist eine variable Frequenz.

von Peter D. (peda)


Lesenswert?

Der 4060 wird genommen, um einen Sensor mit niedriger Ausgangsfrequenz 
zu erhalten.
Die 32Bit-Boliden (Raspi, ESP) tun sich ja schwer damit, hohe Frequenzen 
genau zu messen.

von Manfred (manni_mustermaxx)


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.

von Manfred (manni_mustermaxx)


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
}

: Bearbeitet durch User
von Rainer W. (rawi)


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.

: Bearbeitet durch User
von Dirk S. (dirkst)


Lesenswert?

Mit Gruss

Sind die C- Werte vom
'CMOS LC Oszilator, evtl. auch der von L gegeben (, ermittelbar)?
Auf welche Referenz gehen 35Hz und 45 Hz zurück?
Berechnung wäre nach Colpitts.

Dirk St

von Manfred (manni_mustermaxx)


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....

von Manfred (manni_mustermaxx)


Angehängte Dateien:

Lesenswert?

So habe mal den Schaltplan so gut ich konnte geupdatet, zum verstehen 
ist mir das aber zu hoch :D

Kann man daraus irgendwas nützliches schließen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.