Analoge ADSR Hüllkurve mit microcontroller state machine

Gast #6824026
Lesenswert?

Vielleicht ist die Idee völliger Blödsinn und ich kann deshalb nichts 
dazu finden, aber ich frag mich, ob sich nicht ein relativ simpler 
ADSR-Generator realisieren ließe, bei dem die einzelnen Phasen durch 
Laden und Entladen mit Potis und einem Kondensator stattfinden, aber ein 
Controller sozusagen eine State Machine darstellt, die zwischen den 
Phasen umschaltet.

Was ich finde, sind entweder rein analoge Schaltungen, die einigermaßen 
aufwändig sind, meist auf 7555er Basis oder rein digitale mit 
DA-Wandler.

Hab noch keine präzise Vorstellung, aber ich dachte grob, ein attiny 85 
oder sowas müsste gehen, bei dem der ADC das Spannungslevel auf dem 
Kondensator misst und entprechend auf die anderen Potis umschaltet um 
die Spannungzu halten bzw. auf Entladung umzuschalten.

Meine Befürchtung ist, dass ich soviel Puffern muss um die IO-Pins zu 
schützen und jede Menge Dioden brauche, dass es am Ende genauso 
aufwändig wird wie die rein analogen Schaltungen.
Moderator (Firma: Titel) Persönliche Seite #6824355
Lesenswert?

lois schrieb:
> Was ich finde, sind entweder rein analoge Schaltungen, die einigermaßen
> aufwändig sind, meist auf 7555er Basis oder rein digitale mit DA-Wandler.
Und was ist jetzt dein Plan? Warum meinst du, dass etwas, was mit einem 
555 nach deinem Gefühl schon kompliziert ist, dann mit einem µC 
einfacher sein könnte?
Und wenn schon ein µC in der Schaltung drin ist, dann ist der 
eigentliche Witz, dass man mit diesem beliebige zeitliche Abläufe 
generieren, speichern und auf Knopfdruck exakt gleich wieder abrufen 
kann.
So einen ADSR-Generator hätte sich Robert Moog gewünscht...

> Hab noch keine präzise Vorstellung
> ...
> Meine Befürchtung ist
Ich würde mal sagen, du solltest deine Vorstellung konkretisieren und 
dann können wir auf mögliche Probleme eingehen.
Aber derzeit ist es, wie wenn du befüchtest überfahren zu werden, obwohl 
dein Plan eigenlich nur ist, beim Bäcker gegenüber Brötchen zu holen.
Gast #6824364
Lesenswert?

mir ist schon klar, dass ich mit dem Ansatz nicht wirklich die Vorteile 
eines µC ausnutze und "sooooo kompliziert" finde ich die 
555er-Schaltungen jetzt auch nicht. Ich will auch nicht irgendwas 
überlegenes bauen. Es ist nur so ein Gedanke der mir kam (unausgereift 
und naiv) und ich hab noch nix dazu gefunden.
#6824369
Lesenswert?

lois schrieb:
> bei dem die einzelnen Phasen durch
> Laden und Entladen mit Potis und einem Kondensator stattfinden, aber ein
> Controller sozusagen eine State Machine darstellt, die zwischen den
> Phasen umschaltet.

Was soll denn dann der MC machen, wenn doch alles wieder analog sein 
soll?
Wie willst Du den MC steuern, d.h. die einzelnen Zeiten eingeben?
#6824376
Lesenswert?

Da fällt mir mein altes Elektor-Piano ein. Der Hüllkurvengenerator war 
ein spezieller Chip für je eine Oktave.
https://datasheetspdf.com/pdf-file/547503/GeneralSemiconductor/AY11320/1
https://www.elektormagazine.de/magazine/elektor-197809/56522
von 1978. Anschlagdynamik rein analog mit Kondensator-Entladekurve.
Angehängte Dateien:
#6824389
Lesenswert?

Moin,

So ausm Bauch raus wuerd' ich mal mutmassen, dass es mittels eines 
Attiny, oder vergleichbarem, locker moeglich sein sollte, den kompletten 
Huellkurvengenerator nachzubilden. Ausgang halt ueber was PWM artiges, 
mit noch 1-2 RCs als Tiefpassfilter. Einstellen der Parameter z.b. ueber 
seriell oder i2c-artig oder spi-artig.
Also:
 1 Pin Eingang; Taste gedrueckt oder nicht
 2 Pins I/O: Config interface
 1 Pin PWM Ausgang
Fertsch.

Gruss
WK
Gast #6824392
Lesenswert?

Peter D. schrieb:
> lois schrieb:
>> bei dem die einzelnen Phasen durch
>> Laden und Entladen mit Potis und einem Kondensator stattfinden, aber ein
>> Controller sozusagen eine State Machine darstellt, die zwischen den
>> Phasen umschaltet.
>
> Was soll denn dann der MC machen, wenn doch alles wieder analog sein
> soll?
> Wie willst Du den MC steuern, d.h. die einzelnen Zeiten eingeben?

die Zeiten werden schon analog durch 4 Potis gesetzt, die den Ladestrom 
des Kondensators steuern. Der Controller soll zwischen verschiedenen 
Lade-/Enladekreisen hin und her schalten. Und an seinem ADC soll er die 
Spannungen messen um zu wissen, wann er umschaltet. Außerdem geht das 
Gatesignal an den Controller um ihn entsprechend anzuweisen, wann attack 
beginnt und sustain endet.
Gast #6824393
Lesenswert?

Dergute W. schrieb:
> Moin,
>
> So ausm Bauch raus wuerd' ich mal mutmassen, dass es mittels eines
> Attiny, oder vergleichbarem, locker moeglich sein sollte, den kompletten
> Huellkurvengenerator nachzubilden. Ausgang halt ueber was PWM artiges,
> mit noch 1-2 RCs als Tiefpassfilter. Einstellen der Parameter z.b. ueber
> seriell oder i2c-artig oder spi-artig.
> Also:
>  1 Pin Eingang; Taste gedrueckt oder nicht
>  2 Pins I/O: Config interface
>  1 Pin PWM Ausgang
> Fertsch.
>
> Gruss
> WK

ok, wenn das geht. Hat immerhin genug ADC-Ports um 4 Potis zu messen. 
Ich war davon ausgegangen, dass ich schon mindestens einen DAC-IC 
gebraucht hätte und auch einen Quarz.
#6824406
Lesenswert?

Moin,

lois schrieb:
> Hat immerhin genug ADC-Ports um 4 Potis zu messen.
Das hatte ich jetzt nicht mal aufm Schirm, ich ging davon aus, die Werte 
ueber das Config interface in den Baustein zu schreiben. Dann wuerde das 
mit so'nem 8-Fuessler gehen. Wenn du wirklich 4 Potis anschliessen 
willst, muss es wahrscheinlich ein Baustein mit mehr als 8 Beinchen 
sein.

> Ich war davon ausgegangen, dass ich schon mindestens einen DAC-IC
> gebraucht hätte und auch einen Quarz.
Quarz nur, wenn die Zeiten wirklich quarzstabil sein muessen. Und DAC - 
naja, klar kann man machen, ich wuerd' davon ausgehen, dass es per 
SigmaDelta oder von mir aus auch PWM ausreichend gut werden koennte. 
Also ohne extra DAC.

Aber ich schwaetz grad nur dumm daher, hab sowas noch nicht tatsaechlich 
gebaut.

Gruss
WK
Moderator (Firma: Titel) Persönliche Seite #6824411
Lesenswert?

lois schrieb:
> dass ich schon mindestens einen DAC-IC gebraucht hätte
Ja, so einer mit 6 Pins für nen Euro vom Schlage eines MCP4726 reicht da 
locker aus. Mit PWM würde ich das nicht machen, weil die unnötig 
hochfrequent sein muss, damit nicht irgendwelche Modulationseffekte 
auftreten.

> und auch einen Quarz.
Wozu? Das Timing wird ja eh "nach Gehör" eingestellt.
Gast #6824424
Lesenswert?

Dergute W. schrieb:
> Moin,
>
> lois schrieb:
>> Hat immerhin genug ADC-Ports um 4 Potis zu messen.
> Das hatte ich jetzt nicht mal aufm Schirm, ich ging davon aus, die Werte
> ueber das Config interface in den Baustein zu schreiben. Dann wuerde das
> mit so'nem 8-Fuessler gehen. Wenn du wirklich 4 Potis anschliessen
> willst, muss es wahrscheinlich ein Baustein mit mehr als 8 Beinchen
> sein.

ADC0-ADC3 für die Potis und PB0 und PB1 für Gate-Input und PWM-output. 
Oder was überseh ich? Klar, einen DAC krieg ich dann mit dem 8-Beiner 
natürlich nicht mehr angesteuert.
Moderator (Firma: Titel) Persönliche Seite #6824452
Lesenswert?

lois schrieb:
> ADC0-ADC3 für die Potis und PB0 und PB1 für Gate-Input und PWM-output.
> Oder was überseh ich? Klar, einen DAC krieg ich dann mit dem 8-Beiner
> natürlich nicht mehr angesteuert.
Wo war jetzt die Anforderung, dass das mit einem 8-beinigen µC gehen 
muss.

Oder andersrum: wer Platz für 4 Potis hat, der hat auch Platz für z.B. 
einen Tiny84 im 14er-SO Gehäuse. Das ist kleiner als ein alter 555 im 
DIL-Gehäuse. Und die "ich hab zu wenig Ports" Diskussion ist unnötig.
Gast #6824465
Lesenswert?

Lothar M. schrieb:
> lois schrieb:
>> ADC0-ADC3 für die Potis und PB0 und PB1 für Gate-Input und PWM-output.
>> Oder was überseh ich? Klar, einen DAC krieg ich dann mit dem 8-Beiner
>> natürlich nicht mehr angesteuert.
> Wo war jetzt die Anforderung, dass das mit einem 8-beinigen µC gehen
> muss.

hatte eingangs den Attiny 85 erwähnt. Harte Anforderung ist das nicht, 
aber ich hab davon ein paar rumliegen.
#6824490
Lesenswert?

lois schrieb:
> mir ist schon klar, dass ich mit dem Ansatz nicht wirklich die
> Vorteile eines µC ausnutze und "sooooo kompliziert" finde ich die
> 555er-Schaltungen jetzt auch nicht. Ich will auch nicht irgendwas
> überlegenes bauen. Es ist nur so ein Gedanke der mir kam (unausgereift
> und naiv) und ich hab noch nix dazu gefunden.

Ah ja. Dir war also langweilig und du dachtest dir, uns wäre auch allen 
langweilig und hast deswegen deine unausgegorene Idee ins Forum gerotzt.

Habe ich das so richtig verstanden?

lois schrieb:
> hatte eingangs den Attiny 85 erwähnt. Harte Anforderung ist das nicht,
> aber ich hab davon ein paar rumliegen.

Ja, das paßt ins Bild.
Gast #6824526
Lesenswert?

Axel S. schrieb:
> lois schrieb:
>> mir ist schon klar, dass ich mit dem Ansatz nicht wirklich die
>> Vorteile eines µC ausnutze und "sooooo kompliziert" finde ich die
>> 555er-Schaltungen jetzt auch nicht. Ich will auch nicht irgendwas
>> überlegenes bauen. Es ist nur so ein Gedanke der mir kam (unausgereift
>> und naiv) und ich hab noch nix dazu gefunden.
>
> Ah ja. Dir war also langweilig und du dachtest dir, uns wäre auch allen
> langweilig und hast deswegen deine unausgegorene Idee ins Forum gerotzt.
>
> Habe ich das so richtig verstanden?

Ganz genau! Und du bestätigst die Annahme vollkommen, wie man sieht.
Gast #6824590
Lesenswert?

Er koennte ja einen Z80 nehmen. Da kann er dann mit einer CTC
einen Systimer laufen lassen, und mit einigen PIOs und DACs
die ADSR-Werte ausgeben.

So hat das z.B. Korg in seinen fruehen polyphonen Synthies auch
gemacht. Kann also nicht ganz verkehrt sein.
Gast #6824704
Lesenswert?

> SCNR

Immerhin hatte ich schon ganz am Anfang auf ein paar
gut ausgewaehlte 4000er verwiesen.
Damit waere das, inklusive Schaltungsentwurf, bereits
fertig gewesen.
Aber das scheint ja heute wohl zu einfach zu sein.
#6825438
Lesenswert?

lois schrieb:
> Hab noch keine präzise Vorstellung, aber ich dachte grob, ein attiny 85
> oder sowas müsste gehen, bei dem der ADC das Spannungslevel auf dem
> Kondensator misst und entprechend auf die anderen Potis umschaltet um
> die Spannungzu halten bzw. auf Entladung umzuschalten.

Klar geht das irgendwie. Man könnte alle digitalen Komponenten sowie die 
Komparatoren (einen uC vorausgesetzt, der welche hat - den ADC würde ich 
dazu nicht bemühen) könnten vom uC erschlagen werden. Man bräuchte 
ausserdem immer noch einen OP und drei Analogschalter.
Gast #6825752
Lesenswert?

Sven D. schrieb:
> Hallo TO
> hast du dir schon https://github.com/m0xpd/ADSRduino angeschaut?

das genau nicht, aber was ähnliches. Mit dem MCP 4822 hab ich mal einen 
LFO gebaut, mit so 'ner Art wavetable. Das Prinzip ließe sich vmtl. auch 
auf einen ADSR übertragen. Aber ich wollte eigentlich ohne DAC-Chip 
auskommen. Aber vielleicht lass ich's mit meiner Schnappsidee lieber und 
bleib konventionell unterwegs.
Gast #6825771
Lesenswert?

> signal-processing-on-arduino

Die besten ADSRs lassen sich mit FPGAs bauen.
Wenn es sein muss, auch einige hundert davon (oder noch ein paar mehr).
Und präzise bis auf die Nanosekunde und das letzte Bit!

Warum sollte man sich mit weniger zufriedengeben.
Gast #6825772
Lesenswert?

Axel R. schrieb:
> http://m0xpd.blogspot.com/2017/02/signal-processing-on-arduino.html
> Bau das doch. Ist total einfach und funktioniert. Erfüllt alles, was du
> wolltest, wenn auch anders, als du es bauen wolltest.

ist ähnlich wie von Sven vorgeschlagen. Das Prinzip hatte ich aber auch 
schon selbst auf dem Schirm. Wird wohl auch drauf hinauslaufen. Nur mit 
dem 8-Beinigen AVR wird es dann leider nix mit DAC ansteuern und 
gleichzeitig die Potis auslesen.
Gast #6829606
Lesenswert?

Lothar M. schrieb:
> lois schrieb:
>> dass ich schon mindestens einen DAC-IC gebraucht hätte
> Ja, so einer mit 6 Pins für nen Euro vom Schlage eines MCP4726 reicht da
> locker aus. Mit PWM würde ich das nicht machen, weil die unnötig
> hochfrequent sein muss, damit nicht irgendwelche Modulationseffekte
> auftreten.

wenn's nötig ist um Modulationseffekte zu vermeiden ist es ja nicht 
unnötig :-D. Ist das denn so ein Problem hier?

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