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