Forum: Analoge Elektronik und Schaltungstechnik suche Taktgesteuerter Demux


von Dominic K. (domi1997)


Lesenswert?

Guten Tag zusammen
Ich wollte nachfragen, ob es etwas demux equivaltentes gibt welches 
anstelle der Adressleitungen eine Taktleitung besitzt um die Ausgänge 
umzuschalten. Denn ich habe ein Signal,welches ich in einem Gewissen 
Takt an andere Ausgänge weiterleiten möchte.(Ausgang eines MSGEQ7). Mein 
Problem ist das ich gerne die Verschiedenen Frequenzen an 7 Anzeigen 
weiter geben würde und dafür mit einem 1khz takt die Frequenz+ die 
Ausgänge umswitchen. Oder kennt ihr evtl einen IC welcher die gleiche 
Funktion besitzt jedoch am Ausgang keinen mux hat sondern die 7 
Frequenzen einzeln rausführt?

Beitrag #4997286 wurde von einem Moderator gelöscht.
von Dominic K. (domi1997)


Lesenswert?

Habe ich mir auch schon gedacht einen Zähler zu nehmen doch der Aufwand 
mit all diesen IC's wäre so gross das ein ATTiny wieder näherrückt

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Dominic K. schrieb:
> Habe ich mir auch schon gedacht einen Zähler zu nehmen doch der Aufwand
> mit all diesen IC's wäre so gross das ein ATTiny wieder näherrückt
Das ist das Dilemma an der Sache. Allerdings brauchst du den Mux ja eh', 
wenn du analoge Signale durchschalten willst.

von Dominic K. (domi1997)


Lesenswert?

hingegen würde der Taktgeber durch den uC wegfallen. Denn sauber muss 
der Takt ja nicht sein den wenn ich mit 1khz umschalte dan sieht man das 
nicht denke ich oder ich könnte es natürlich auch höher ansetzen weiss 
jedoch nicht wie lange die IC's dies mitmachen. Nur weiss ich nicht wie 
man einen ATTIny beschaltet, also wie man ihn programmiert. einen 
stecker werde ich nicht montieren aus platz gründen also tendiere ich 
dazu mit prüfspitzen zu programmieren aber Jtag beherscht der ATTiny 9 
zb nicht oder? Habe bisher immer mit den ATMEGA's gearbeitet.

von Jack (Gast)


Lesenswert?

Wie wäre es mit etwas mehr "Digitalität"? Den Ausgang des MSGEQ7 in den 
ADC eines Mikrocontrollers füttern. Der Mikrocontroller taktet den 
MSGEQ7, misst mit seinem ADC die Peaks und steuert sieben digitale 
Anzeigen. Ein IC für drei Funktionen, statt ein IC-Grab.

Für den Fall, dass die Anzeigen analog angesteuert werden sollen (was 
für Anzeigen sind das?), könnte man sich einen Mikrocontroller suchen, 
der 7 PWM-Ausgänge hat oder macht entsprechend Software-PWM.

von Dominic K. (domi1997)


Angehängte Dateien:

Lesenswert?

Es handelt sich um eine 8 LED anzeige welche bei den Werten zwischen 0 
und 5v immer mehr LED's leuchten. Also müsste ich sowie frequenz wie 
auch Spannung wieder rekonstruiren was eher schwer ist, habe auch schon 
über den ADC nachgedacht aber ja analogtechnik zieht einem oft einen 
strich durch die Rechnung

: Bearbeitet durch User
von Dominic K. (domi1997)


Lesenswert?

Die SChaltung ist ein Grundschema ohne die Funktion fürs umschalten, 
denn ich möchte diese noch aufbauen um sie zu testen.

von Jack (Gast)


Lesenswert?

Dominic K. schrieb:
> Es handelt sich um eine 8 LED anzeige welche bei den Werten
> zwischen 0
> und 5v immer mehr LED's leuchten. Also müsste ich sowie frequenz wie
> auch Spannung wieder rekonstruiren

Wieso das denn? Die Frequenz hast du, die ergibt sich aus dem Schritt 
bei dem du bist. Bei nur 8 LEDs kannst du 8 Mikrocontroller Ausgänge 
nehmen. An jedem Ausgang hängt eine LED. Jeder Ausgang bekommt in 
Software einen Schwellwert. Übersteigt der für den aktuellen Takt 
ADC-Wert den Schwellwert wird die LED eingeschaltet.

Das Ganze klingt übrigens so, als ob eine 7x8 LED-Matrix sinnvoller 
wäre. 7 Spalten, jede Spalte repräsentiert eine Frequenz. 8 (oder 7) 
Zeilen pro Frequenz um den Peak darzustellen.

Die LED-Matrix würde ich mit dem gleichen Takt wie für den MSGEQ7 
multiplexen.

von Dominic K. (domi1997)


Lesenswert?

eine 7x8 matrix ist geplant daher der DEMUX dieser soll zwischen den 7 
spalten wechseln. und bei 7*8 leds wären wir bei 56 ausgängen also 
müsste ich fast einen atmega2560 nehmen und naja wenns kleiner geht dan 
lieber so. Habe zuerst einfach nur 1 gezeichnet um es so aufbauen zu 
können. Denn die taster werden auch ersetzt.

von Dominic K. (domi1997)


Lesenswert?

Wie sieht das eigentlich aus mit den ATTinies. Alle attiny 4-10 gilten 
als end of life. Was sind den die neuen alternativen?
Und kann ich überhaupt einen davon mit meinem DEBUGER programmieren? Ich 
besitze den 
folgenden:http://ch.farnell.com/atmel/atatmel-ice-basic/debugger-atmel-arm-avr-basic-kit/dp/2407172?mckv=LsZ9k1pm_dc|pcrid|90940810960|&gross_price=true&CATCI=pla-18283950120&CAAGID=18061213600&CMP=KNC-GCH-GEN-SHOPPING-German&CAGPSPN=pla&gclid=CPar-avf09MCFQbjGwodTHYMQg&DM_PersistentCookieCreated=true&CAWELAID=120185710000069013

von Jack (Gast)


Lesenswert?

Dominic K. schrieb:
> und bei 7*8 leds wären wir bei 56 ausgängen

7+8 = 15 Ausgänge. Die ganze Funktion schreit doch nach einer 
LED-Matrix.

Ich habe gerade keine Lust mir die Details für einen Atmega 
rauszusuchen, daher Pseudocode für das komplette Programm. Am Timing 
wird man arbeiten müssen, sonst könnte es flackern.
1
while(true) {
2
    reset_pin(high);
3
    strobe_pin(high);
4
    wait(100ns);
5
    reset_pin(low);
6
7
    for(freq_column = 0; freq_column < 7; freq_column++) {
8
        strobe_pin(low);
9
        start_time = current_time();
10
        wait(38us);
11
        peak = read_adc();
12
        strobe_pin(high);
13
    
14
        // select the column of the LED matrix per the current frequency
15
        column_pinmask = 1 << freq_column;
16
        column_port(column_pinmask);
17
18
        // Determine if LED should be on according to peak value 
19
        // and multiplex LEDs
20
        while(current_time() < (start_time + 72us + X)) {
21
                                         // 72us is not enough,
22
                                         // matrix will likely be dark
23
                                         // it is just the DS min
24
                                         // time between strobes
25
           static thresholds[0] = TODO - determine thresholds
26
           for(row = 0; row < 8; row++) {
27
               led_pinmask = (peak > thresholds[row]) << row;
28
               row_port(led_pinmask);
29
               wait(tbd);
30
           }
31
        }
32
        row_port(0);
33
    }
34
}

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.