Forum: Projekte & Code VU-Meter mit Padauk PFS154


von Ralph S. (jjflash)



Lesenswert?

Inspiriert vom VU-Meter für einen ATTiny13 (der mich aufgrund der 
Codegröße wirklich beeindruckt hat) habe ich nun auch ein VU-Meter mit 
dem nochmals sehr viel preiswerteren Padauk PFS154 realisiert.

An sich dachte ich, das sei ein kleines Projekt (war es auch), aber der 
Fehler saß vor dem Computer und auch beim Hardwareaufbau saß der Fehler 
auf dem Stuhl und nicht auf dem Labortisch.

Fehler Nr. 1:

  - nachdem schon alles gelaufen war, wollte ich Software aufräumen und 
habe ALLES (inklusive Zeichnungen und (am schlimmsten) Programmcode 
alles unrettbar gelöscht gehabt) => grrrrr

Fehler Nr. 2:

  - beim Neucodieren (auf demselben Hardware-Steckbrettaufbau) klappt 
das ums verr*** nicht mehr und es taucht ein Fehler auf, den ich niemals 
auf dem Steckbrett gesucht hätte - zumal ja zuvor mit den gelöschten 
Dateien alles lief) => Fehler war, dass sich der Mittelabgriff des 
Trimmerkontakts auf dem Steckbrett so dämlich gelöst hatte, dass er im 
Takt des Auslesens des Komparatorbits einmal ein korrektes Ergebnis 
liefert, beim zweiten mal jedoch nicht. Egal wie lange eine Pause 
dazwischen eingelegt wurde => dämlichster Fehler seit langem.

Okay: Lange Rede kurzer Sinn, hier die (Mini)-Projektbeschreibung:
------------------------------------------------------------------------ 
----

Vorliegendes VU-Meter besitzt 8 LED's zur Anzeige eines analogen 
Pegelzustandes. Das VU-Meter ist als generelle Leuchtbandanzeige 
gestaltet worden. Im Code kann die Schrittweite in der Einteilung 
zwischen linear und logarithmisch (hier dann in 3 dBr Schritten) mittels 
define gewählt werden.

In Ermangelung eines internen ADC des PFS154 wird der analoge 
Spannungswert mittels des int. Komparators realisiert. Bei Studium des 
Datenblatts hierzu kommt dann etwas zu Tage, was man sich bisweilen von 
anderen Controllern auch wünschen würde: Der Padauk hat einen 
"programmierbaren Spannungsteiler" an Bord (und hier ist hoch schade, 
dass dieser Spannungsteiler immer an der Vdd des Controller 
angeschlossen ist und die Spannungsabgriffe nur intern einem Multiplexer 
zugeführt werden - wäre dem nicht so, könnte man einen schönen, 
universellen Spannungsteiler aufbauen).

Dieser Spannungsteiler wird im Register GPCS konfiguriert, hierfür 
werden insgesamt 6 Bits verwendet, was zu 2⁶ = 64 unterschiedlichen 
Konfigurationen führt (siehe Bild pfs154_spgteiler_intern.png).

Um eine 8-stellige Ausgabe realisieren zu können, benötigt es insgesamt 
8 Referenzspannungen, die dem Komparator zugeführt werden und gegen die 
die angelegte Spannung verglichen wird.

Welche Einstellung zu welcher Referenzspannung führt, kann diesem Bild 
entnommen werden, zusätzlich ist die Excel-Datei, die dieses Bild (als 
Screenshot der Druckausgabe) erstellt hat, in der Zip-Datei enthalten.

Das Programm selbst hat dann also nichts anderes zu tun, als den 
Komparator zu konfigurieren und die in einem Array abgelegten Werte 
sequentiell an den Komparator zu legen und abzufragen, ob das Ergebnis 
zu 1 geworden ist.

--------------------------------------------------------
Der Analogteil
--------------------------------------------------------

Der Analogteil hat mir kurz Kopfweh bereitet (aber nur kurz) weil zu dem 
(unanständig) billigen Preis des Controllers sollte dann auch dieser 
Analogteil höchst preiswert (billig) bleiben.

Verwendet habe ich dann einen klassischen 
Transistor-Kollektorverstärker, der gleichzeitig als Gleichrichter 
fungiert. Das wird dadurch erreicht, in dem der Spannungsarbeitspunkt am 
Emitterwiderstand R3 so klein gewählt wird (in meinem Versuchsaufbau 
waren es 70 mV), dass eine negative Halbwelle in Ermangelung einer 
negativen Betriebsspannung abgeschnitten wird.

Da nun nur eine pulsierende positive Spannung auftreten kann, wird 
hierdurch Kondensator C2 geladen und über ein nachfolgendes Siebglied 
gefiltert.

Zwischen den Punkten A und B kann - sollen kleine Pegel angezeigt werden 
- ein einfacher Verstärker bspw. mittels Operationsverstärker LM358 
zwischengeschaltet werden.

Die Funktionsweise des "NF-Gleichrichters" (so habe ich das getauft) 
kann in einem Online-Simulator betrachtet werden:

https://www.falstad.com/circuit/circuitjs.html

Hier kann nachfolgende Textdatei in den Onlinesimulator "ge-paste-d" 
werden:
1
$ 1 0.000005 27.727228452313398 50 5 50
2
r 240 0 240 96 0 47400
3
r 240 128 240 208 0 6720
4
g 240 208 240 256 0
5
w 240 96 304 96 0
6
p 304 96 304 192 1 0 0
7
g 304 192 304 256 0
8
R 240 0 240 -48 0 0 40 5 0 0 0.5
9
x 205 58 226 61 4 16 R1
10
x 206 195 227 198 4 16 R2
11
c 240 96 176 96 0 0.000001 0.7129691782732757
12
R 128 96 80 96 0 1 108.2 2.011 0 0 0.5
13
s 128 96 176 96 0 0 false
14
t 336 96 384 96 0 1 -6.288023887012426 -2.8915856082392324 100
15
w 304 96 336 96 0
16
w 384 80 384 0 0
17
R 384 0 384 -48 0 0 40 5 0 0 0.5
18
c 384 128 384 192 0 0.000047 1.6035617212268067
19
w 384 112 384 128 0
20
w 240 128 240 96 0
21
w 384 192 384 224 0
22
g 384 224 384 256 0
23
w 384 128 448 128 0
24
r 448 128 448 224 0 1003.6
25
g 448 224 448 256 0
26
r 448 128 544 128 0 12000
27
c 544 128 544 224 0 0.000001 1.6293520694566723
28
g 544 224 544 256 0
29
w 544 128 624 128 0
30
r 624 128 624 224 0 1000000
31
g 624 224 624 256 0
32
w 624 128 688 128 0
33
p 688 128 688 224 1 0 0
34
g 688 224 688 256 0
35
p 128 96 128 192 1 1 0
36
g 128 192 128 256 0
37
x 462 207 483 210 4 16 R3
38
o 33 64 0 4098 2.5 0.1 0 1
39
o 31 64 0 4098 2.5 0.1 1 1
40
38 0 0 10000 120000 R1
41
38 1 0 4000 20000 R2
42
38 10 0 0.1 5 inp.\svoltage
43
38 10 3 20 200 Frequency
44
38 22 0 820 10000 Resistance

Viel Spaß

R. Seelig

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Schick! Das mit dem Komparator liest sich auch schoen minimalistisch.
Ich schwaetz' jetzt mal klug daher, ich musses ja nich machen ;-):
Wenn der Komparator und der interne Spannungsteiler einigermassen hurtig 
sind, also ich z.B. im einen Assemblerbefehl gpcs auf einen Wert setze 
und dann im naechsten Befehl schon verlaesslich das Komparatorergebnis 
lesen kann, koennt ich mir vorstellen, dass man damit und ein "bisschen" 
Signalverarbeitung hinterher sowas wie einen ADC fuer ein 
Analog-Audiosignal hinkriegen koennte. Dann koennte eben 
"Gleichrichtung" bzw. Effektivwertbildung in Software (wie bei meiner 
Wurst) statt mit dem "teueren ;-)" Transistor passieren. Dann braeucht's 
an Aussenbeschaltung fuers analoge nur noch 2 Widerstaende (Verhaeltnis 
2:3) fuer die Vorspannung und einen Koppel C (und wenn man grosszuegig 
ist, noch einen  Widerstand und einen weiteren C als Aliastiefpass mit 
sagenhaften 6dB/oct.)

Wenn da "oben" am internen Spannungsteiler 16R und "unten" 8R drinnen 
sind und das Dingens an 5V haengt, geht der nutzbare 
Eingangsspannungsbereich von 1.bisschen V bis 3V, also bisschen unter 
2Vpp=0.707Veff, also so ungefaehr fast 0dBm - Groessenordnungsmaessig 
taet's fuer Audiosignale gut passen...

Gruss
WK

von Ralph S. (jjflash)


Lesenswert?

Dergute W. schrieb:
> Dann koennte eben
> "Gleichrichtung" bzw. Effektivwertbildung in Software (wie bei meiner
> Wurst) statt mit dem "teueren ;-)" Transistor passieren.

: - ) versucht hab ich das auch, aber egal was du dann machst (nach 
deiner vorgeschlagenen Methode) hast du dann nur einen "ADC" mit 4 Bit 
Auflösung und bspw. mit belegten Werten 0x00 bis 0x0f mit einem Offset 
von ca. 1.4V und einer Schrittweise von 156mV hast. Diese dann linear.

: - ) das habe ich mir angesehen gehabt und es ist nicht so tolle, weil 
du  wirklich kaum an eine logarithmische Skala heran kommst.

Dergute W. schrieb:
> Wenn der Komparator und der interne Spannungsteiler einigermassen hurtig
> sind, also ich z.B. im einen Assemblerbefehl gpcs auf einen Wert setze
> und dann im naechsten Befehl schon verlaesslich das Komparatorergebnis
> lesen kann,

Schnell genug wäre das ...

Dergute W. schrieb:
> Wenn da "oben" am internen Spannungsteiler 16R und "unten" 8R drinnen
> sind und das Dingens an 5V haengt

Im Screenshot der Exceltabelle sind alle Spannungen aufgelistet, die mit 
5V Vdd einstellbar sind.

-----------------------------------------

Grundsätzlich hab ich das aber ja auch dafür gemacht um aufzuzeigen, wie 
wenig Aufwand man bisweilen braucht. Sehr schmunzeln muß, weil: Ich 
empfinde den Transistor natürlich auch brachial teuer. Muß ich dir 
leider Recht geben.

Gruß Ralph

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Ralph S. schrieb:
> : - ) versucht hab ich das auch, aber egal was du dann machst (nach
> deiner vorgeschlagenen Methode) hast du dann nur einen "ADC" mit 4 Bit
> Auflösung und bspw. mit belegten Werten 0x00 bis 0x0f mit einem Offset
> von ca. 1.4V und einer Schrittweise von 156mV hast. Diese dann linear.

Ja, genau. Aber wenn eben der "ADC" mit recht hoher Abtastrate betrieben 
werden kann (da ist halt die Frage wieviel man da tatsaechlich erreichen 
kann), und du im Endeffekt ja nur recht selten das Display aktualisieren 
musst (mehr als z.b. 60 Aktualisierungen/sec kannst du eh nicht mehr 
sehen), kannst du also ueberabtasten. Und ueberabtasten kann heissen: 
Hoehere Aufloesung. Und so wahnsinnig hoch muss die Aufloesung auch 
nicht sein. Bei 40 dB Anzeigeumfang weniger als 7 bit. Also musste dir 
weniger als 3 bit durch die Ueberabtastung 
erschleichen/schwindeln/schummeln...

Gruss
WK

von Ralph S. (jjflash)


Lesenswert?

Dergute W. schrieb:
> sehen), kannst du also ueberabtasten. Und ueberabtasten kann heissen:
> Hoehere Aufloesung. Und so wahnsinnig hoch muss die Aufloesung auch
> nicht sein. Bei 40 dB Anzeigeumfang weniger als 7 bit. Also musste dir
> weniger als 3 bit durch die Ueberabtastung
> erschleichen/schwindeln/schummeln...

Das laesst mich jetzt gruebeln, aber prinzipiel glaube ich, dass mir 
hier dann der gigantisch (kleine) Speicherplatz von 128 Byte RAM im Wege 
steht,

Reizen kann sowas, obschon man nach einer ADC Methode dann vllt. doch 
den 2 ct teureren PFS173 nehmen sollte: der hat einen echten ADC an Bord

von MaWin (Gast)


Lesenswert?

Ralph S. schrieb:
> doch den 2 ct teureren PFS173 nehmen sollte: der hat einen echten ADC an
> Bord

Gibts den schon irgendwo

https://m.de.aliexpress.com/wholesale/pfs173-s16.html ist keine "2 ct 
teurer".

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Waaas???!! 2ct. teurer?? Das sind ja 4 Pfennig! Fuer 4 Pfennige konnte 
man sich frueher (in der guten, alten Zeit, als das Bier noch dunkel war 
und Rauchen gesund) doch eine Eigentumswohnung in München-Schwabing 
kaufen, also zumindest gefuehlt. ;-)))

Gruss
WK

von Ralph S. (jjflash)


Lesenswert?

MaWin schrieb:
> Ralph S. schrieb:
>> doch den 2 ct teureren PFS173 nehmen sollte: der hat einen echten ADC an
>> Bord
>
> Gibts den schon irgendwo
>
> https://m.de.aliexpress.com/wholesale/pfs173-s16.html ist keine "2 ct
> teurer".

Hier habe ich 50 Stck. PFS173-S16 gekauft. 8,9 ct / Stück

https://lcsc.com/search?q=pfs173

------------------------------------------------

Dergute W. schrieb:
> Waaas???!! 2ct. teurer?? Das sind ja 4 Pfennig! Fuer 4 Pfennige konnte
> man sich frueher (in der guten, alten Zeit, als das Bier noch dunkel war
> und Rauchen gesund) doch eine Eigentumswohnung in München-Schwabing
> kaufen, also zumindest gefuehlt. ;-)))

Einfach nur herrlich und lachen mußte ;-))) .
Gab es Sechzehnhundertirgendwas schon Eigentumswohnungen in Schwabing ?

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.