Kondensatoren als Spannungsglättung bei Stepsequencer

Hallo!

Ich hätte eine Frage bzgl. meinem Stepsequencer Projektes. Kurze Beschreibung: Breadboard Arduino (d.h. "onboard") 8x4 Button LED´s; 1x8 Lauflicht LED´s, 1x8 sonstige LED´s, d.h. mittels 6x 595er Shiftregister 8 Potis mittels Mutliplexer (4051er) 2x externe EEprom´s Matrixbuttons(4x8) mittels Spannungsteiler "gelöst" (nicht optimal, bei 32 Buttons) Steuerbuttons auch mittels Spannungsteiler (anderer Analog Pin) 2x16er LCD Display Midi In +Out

Eine komplette Projektbeschreibung wird inkl. Dokus und Schaltplänen folgen, wenn das Projekt fertig ist (immerhin alles zusammen für weit unter 100 Euro!!!). Hardware ist als Prototyp fertig, Software befindet sich bei 85%.

Mir ist nur augefallen, dass - je nachdem welche Stromquelle (momentan über USB) ich anschließe, es zu einem kurzfristigen Spannungsabfall und zu einem Absturz des Atmegas kommt. Vor allem tritt der Absturz dann auf, wenn ich von einem Pattern mit vielen aktiven LED´s auf eines mit weniger wechsle Testhalber habe ich einen 4,7uf Elko zwischen VCC und GND eines 595er geschalten und das Problem war nicht mehr vorhanden. Da ich es jedoch nicht dem Zufall überlassen will, gibt es von eurer Seite her Erfahrung, a) welche Kondensatorentypen geeignet sind (Elkos, Kerkos, ...) b) welche Kapazität sie besitzen sollen c) an welchen Stellen sie im Schaltplan am besten eingebaut werden sollen (direkt bei VCC bei den Chips?)

Vielen Dank!

Liebe Grüße

Matthias

Üblicherweise 100nF direkt an jeden Chip. "Direkt" heisst dabei mit geringstmöglichem Abstand. SMD ist da klar im Vorteil.

Was VCC angeht schaut man bevorzugt in die Application Notes des verbauten Spannungsreglers.

Ansonsten lies mal http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.14.1 und http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.14.

Unbedingt 0,1µF (100nF) nahe an jedem IC. Bei so vielen LEDs ist der Stromverbrauch nicht zu vernachlässigen. Ich zähle da 42 LED. Wieviel Strom gönnst Du den LEDs? Grüße Uwe

Super! 1000 Dank für eure Antworten!
Das DSE-FAQ war genau, wonach ich suchte. Denk einmal, dass ich das Layout noch leicht verbessern muss. Kritisch dürfte es nicht sein, wenn ich´s sogar mit einem langsamen Elko “ausgeglichen” hab. Gesamtverbrauch muss ich mir erst ausrechnen, spendiere den 3mm LED´s jedoch wenig Strom (d.h. höherer Widerstandswert, da ich sie nicht an der Leistungsgrenze hell haben will).

Leider ist mir beim Durchtesten noch eine Frage gekommen, die betrifft die Buttons (32), die ich, mangels I/O Pins, mittels Spannungsteiler realisiert habe:
Je mehr LED´s leuchten, d.h. je höher der Stromverbrauch, desto gravierender werden die Werteänderungen, jedoch leider nicht gleich, Beispiel:
Ich hab folgende Fixwerte errechnet (wenn alle LED´s aus sind):
const prog_uint16_t buttonmappingPROGMEM= {
1017,992,964,938,912,889,866,843,823,805,787,769,752,735,721,705,692,678,665,652,640,628,616,605,594,584,576,566,557,548,538,530};

D.h. 1017 als höchsten Spannungsteilerwert, 530 als niedrigsten.
Sobald alle LED´s leuchten, ist der höchste Wert 1012, der niedrigste 542, d.h. sie verhalten sich antiproportional.
Die einzige Lösung, die mir einfällt ist, dass ich mehrere Wertetabelle erstelle, und in Abhängigkeit der leuchtenden LED´s verwende. Ideal ist dies natürlich nicht.
PS: Hab mal als Anhang zwei kleine Fotos des Prototypen gemacht!

Danke!

Liebe Grüße
Matthias

Wenn Du als Referenzspannung für den ADC die 5V Versorgungsspannung nimmst (die default eingestellt ist) dann ist die Messung immer richtig. Ein Absinken der Versorgungspannung gibt den gleichen ADC Wert, weil die Referenzspannung gleich absinkt. Hast Du ein R/2R Netzwerk genommen? Wieso schöpfst Du nicht den ganzen möglichen Wertebereich aus sondern nur die Hälfte?

Als Alternative kannst Du ein oder 2 I2C Port Expander nehmen und die Tasten in eine Matrix geben oder bei 2 MCP23017 könntest Du sogar jede Taste einzeln auf einen Eingang schalten. I2C Bus braucht 2 Pins (A4 und A5) Grüße Uwe

Das mit der Ref-Spannung wäre eine Idee!
Ein I2C Port Expander hab ich mir auch schon überlegt, aber ich wollte die Kosten minimiert, v.a. sind die Port Expander schwer(er) erhältlich und nach Österreich zahl ich immer Phantasieversandkosten (10-15 Euro). Schade, weil am A4/A5 hängen eh schon zwei I2C EEproms.
Den gesamten Wertebereich wollte ich nicht ausschöpfen, da die Tact-Switches, die ich verwendet habe, eher ungenau sind und somit hab ich einen höheren Treshold Wert, dazu mein "Aha-Erlebnis gerade eben:
Hab die Buttons mittels einfachem Spannungsteilerprinzip realisiert (Schema: Anhang), R/2R Netzwerk klingt da interessanter, wären halt 64 Widerstände. Welchen Vorteil würde das R/2R ergeben, v.a. punkto Genauigkeit, bzw. Entprellen?

Danke u. LG
Matthias

screen-capture.tiff (1.17 MB)

madias: Hab die Buttons mittels einfachem Spannungsteilerprinzip realisiert (Schema: Anhang), R/2R Netzwerk klingt da interessanter, wären halt 64 Widerstände. Welchen Vorteil würde das R/2R ergeben, v.a. punkto Genauigkeit, bzw. Entprellen? Danke u. LG Matthias

Entprellen gar keine. Genauigkeit auch keine. Vorteil Du hättest eine Binäre Abstufung. Wird bei DAC oft verwendet. Der Vorteil ist daß Du nur 1 Wert von Widerständen brauchst und nicht lange herumsuchen mußt damit die richtige Abstufung bekommst. Nochmal nachgedacht; 32 Taster sind zu viele um das Auflösen zu können. Bei bis zu ca 6 Tasten könntest Du Mehrfachbetätigungen auflösen.

madias: Den gesamten Wertebereich wollte ich nicht ausschöpfen, da die Tact-Switches, die ich verwendet habe, eher ungenau sind und somit hab ich einen höheren Treshold Wert

Wenn Du den gesamten Wertebereich ausnutzt hast Du bei gleichmäßiger Unterteilung einen größeren Abstand zwischen den einzelnen Werten der Tasten von teoretisch 32 zwischen jeden Wert (und nicht wie jetzt zwischen 8 bis 25). Wenn Du den ganzen Wertebereich verwendest verdoppelst Du auch den jetzigen Werteabstand und somit die Störsicherheit.

madias: Ein I2C Port Expander hab ich mir auch schon überlegt, aber ich wollte die Kosten minimiert, v.a. sind die Port Expander schwer(er) erhältlich und nach Österreich zahl ich immer Phantasieversandkosten (10-15 Euro).

https://www.distrelec.at/ishopWebFront/infoCenter.do?url=https%3A//www.distrelec.com/distrelec/infocenter.nsf/gdt%3FOpenForm%26type=gtc%26country=at%26language=de

Die Kosten der Verpackung sind im Preis enthalten. Für jede Standardlieferung wird ein Versandkostenbeitrag von Euro 3,30 zuzüglich MwSt. verrechnet. Die Lieferung erfolgt in der Regel per Paketdienst.

http://at.rs-online.com/web/generalDisplay.html?id=aboutRS&file=delivery Transport bis 50€ Bestellwert 6,95€, dann gratis (ohne MwSt) oder Gratisabholen bei Verabredung im Lager in 3950 Gmünd.

Grüße Uwe

Danke noch einmal für die rasche Antwort!

  • Prinzipiell brauch ich überhaupt keine Mehrfachbetätigung

  • Bezüglich R/2R Netzwerk: werde ich mir einfach einlesen, bevor ist unnötige Fragen stelle :) nur bei Einzeltasterbetätigung wären es doch 1024 Werte oder?

  • Distrelec + RS schickten, soweit ich mich erinnern konnte, nicht an Privatkunden...distrelec jetzt anscheinend schon lt HP

  • Mit den Wertebereich hast du natürlich recht, hab gut 500 als unterste Schwelle genommen, die gar nicht notwendig ist...muss sowieso die ganze Matrix überdenken, hab jetzt auch bessere Tact switches zuhause liegen...nur bis ich das alle neu aufgebaut habe (v.a. in Betracht ziehend, dass sowieso eine 16 Button/Poti Reihe sinnvoller wäre, war halt mein erstes Arduino Projekt, wo ich eher blöd darauf los gebastelt habe u.v.a. dass meine 5 Monate alte Tochter mir eh keine Freizeit gönnt), vergehen sicher etliche Wochen :)

Liebe Grüße

Matthias

Distrelec verkauft an Privatkunden (kannst oben rechts auswählen wegen Preise mit oder ohne MwSt). RS verkauft in Italien an Privatkunden (wenigstens an mich). Weiß aber nichts bezüglich Österreich oder Deutschland.

nur bei Einzeltasterbetätigung wären es doch 1024 Werte oder?

Das verstehe ich nicht ganz wie Du das meinst.

Grüße Uwe

Wie gesagt, beim R2/R Netzwerk les ich mich noch besser ein! Ja, in AT/DE hat man bei vielen Elektronikversandhändlern das Problem, dass man Geschäftskunde sein muss und es wird auch nachgeprüft (Ust ID), RS verschickt definitiv nicht nach AT... Eine gute, fast perfekte, Liste ist unter http://www.mikrocontroller.net/articles/Elektronikversender zu finden.

LG Matthias

Hallo,

wo hast du die (Arcade) Buttons her? Suche auch sowas für meinen Step Sequenzer.

gruß komika

Ebay. Gib einfach bei Ebay ein: "Tact Switches" und wähle "kostenlose Lieferung" aus, da kommen massig Seiten aus Fernost. Tipp: nimm immer gleich die Switches mit Button gemeinsam!

Die, die ich jetzt bestellt hab (nicht auf dem Foto), haben gute Qualität und kosten einen Spottpreis (versandkostenfrei) Lieferzeiten sind jedoch zwischen 3 und 6 Wochen! http://www.ebay.at/itm/330811317953?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649#ht_1935wt_962 http://www.ebay.at/itm/330811318671?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649#ht_2053wt_962 http://www.ebay.at/itm/330811319152?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649#ht_2039wt_962 (blau mit LED!)

Starte mal einfach hier: http://stores.ebay.at/jumbo4u/_i.html?_nkw=tact+switch&submit=Finden&_sid=1043007519

LG Matthias

Hät ich das damals gefunden... Hab jetzt schon andere. Wollte erste Digitasts nehmen, aber die sind sehr teuer.

Kannst du ja mal auf Vorrat kaufen :) Bestell gut 80% meiner Elektronikartikel (Widerstände, Kondensatoren, IC Sockel, Stecker, Schalter, Arduino Erweiterungen, IC´s, EEproms, usw..) über Ebay, immer mit "Versandkostenfrei", da hab ich keine bösen Überraschungen. Hab schon gut 40 Pakete erhalten, nur eines nicht (LED´s um 2 Euro). Kostenersparnis zu Conrad/Reichelt etc.. gut 80-95%!!!

32 Buttons per Spannungsteiler? Das kann nicht wirklich gut gehen. Grund: die Spannungsdifferenzen können höchstens 100/32 % also etwa 3% betragen. Wenn Du - warum auch immer - Widerstandstoleranzen >3% hast, dann geht das schon gelegentlich schief. Und es reicht ja nicht, daß sowas einmal funktioniert. Wenn sich die Umgebungstemperatur ändert, dann ändern sich die Widerstände auch. Ich würde sowas per Schieberegister realisieren. 2 IO Pins reichen um beliebig viele Taster per Schieberegister auszulesen.

yep, das hab ich auch bemerkt, dass 32 Buttons mittels Spannungsteiler ein Quirks sind. Du meinst mittels 74HC165 + Matrix? Wie kommst du auf 2 Pins? (Ich komme auf 3) Hab mir auch überlegt, es mit 74C922N Key Encoder zu lösen, finde aber so schnell keine Schaltpläne... Die dritte Lösung, die mir noch einfiel, fällt leider flach: Ich hab eine alte serielle Tastatur ausgeschlachtet, nur wird meine serielle Schnittstelle schon für Mididaten verwendet und diese haben höchste Priorität.

LG matthias

Ich sprach nicht von Schieberegistern sondern von I2C Port Expandern; hab ja auch ein Modell genannt. Der I2C Bus braucht nur 2 Leitungen.
Ok, Udo sprach davon, wobei ich auch nicht verstanden habe wieso er 2 Leitungen schreibt und nicht 3. (jede Taste auf eine Eingang des Schieberegisters und mehrere Schieberegister in Reihe (bei 32 Tasten 4 Schieberegister zu 8 Eingängen)
Wenn Du eine Matrix aus Schieberegistern bauen willst dann brauchst Du mindestens 4 Leitungen weil Du 2 Schieberegister ansteuern mußt; ein SIPO und ein PISO.

Der 74C922 wertet automatisch eine 4x5 Matrix aus und gibt auf 6 Ausgängen daß eine Taste gedrückt ist, die Zeile und die Spalte.

Grüße Uwe

Lieber Uwe, meine Antwort bezog sich auf das Posting von Udo :) Hab mir mal 10 Stück von den MCP23017´s bestellt (1,5 Euro/Stk, Versandkostenfrei) ;) Die kann ich immer brauchen. V.a. in diesem Projekt hab ich schon IC2 Eproms, d.h. ich gewinne sogar einen zusätzlichen Pin. Wichtig ist mir, dass ich nicht das Gesamtkonzept verwerfen muss und das fertige Mainboard ändere (Step Buttons sind glücklicherweise mit den LED´s auf einer anderen Platine) Theoretisch, wenn ich als Inputs HC165 nehme, kann ich sicher von den vorhandenen 595er 1-2 Pins (Clock) "abzweigen" und dies programmtechnisch lösen. Sauberer wäre wohl der/die MCP23017

Zwecks besserer Beschreibung, kurz meine Auflistung der Pins: Pin A0= analoge Potis (durch Multiplexer) Pin A1= Seq Buttons (würde frei werden) Pin A2= Control Buttons (die funktionieren mittels Spannungsteiler ohne Probleme = 16 Stk, sind auch 1% Widerstände) Pin A3= free Pin A4=Eeprom I (I2C) Pin A5=Eeprom II (I2C) Pin D0=RX (Midi) Pin D1=TX (Midi) Pin D2= DS (shift register) Pin D3= ST_CP (shift register) Pin D4= SH_CP (shift register) Pin D5 = Encoder I Pin D6 = Encoder II Pin D7 = LCD I ( LiquidCrystal595 Lib) Pin D8 = LCD II ( LiquidCrystal595 Lib) Pin D9 = LCD III ( LiquidCrystal595 Lib) Pin D10 = Multiplexer I Pin D11 = Multiplexer II Pin D12 = Multiplexer III Pin D13 = free (maybe control LED)

Liebe Grüße Matthias

Meine Buttons schaun ja auch nicht sooooo schlecht aus. Nur das Bohren muss ich noch etwas üben.

Verwendest du einen Bohrständer oder freestyle? :) Hab mir jetzt extra einen zugelegt, weil ich mit der Hand nicht gerade bohren konnte Buttons waren sicher teurer - sind die mit LED´s? Zwecks interesse, was kann dein Stepsequencer? Geb mal die Eckdaten von meinem her: Keymatrix: 4x8 Steps (d.h. 4 Reihen) Unterteilung in:

Pattern: klassischer Patternmodus bis zu 16 Parts pro Song pro Pattern 5 Parts:, davon: 2x Drumparts: jeder Drumpart besteht aus 4x8 Steps, mit den Potis wird die Velocity eingestellt (Midichannel + note number frei definierbar) 3x "Melody"parts: Stepbuttons regeln 1-4 Notekeys, d.h. 4 fach polyphon pro Step. Potis können nach Reihen eingestellt werden, d.h. entweder: Velocity (für alle 4 Noten zusammen), Pitch, Length, 4x frei definierbare (d.h. pro Pattern) Controller

Song: (max 7 pro EEprom) (fixe) Aneinanderreihung von Parts, Potis sind komplett frei (Midichannel, Typ)

Performance: ähnlich wie Songmodus, nur kann mittels der Steptasten das nächste Pattern vorgewählt werden

Die größte Hürde war der kleine RAM Speicher von 2kb, da muss ich permanent in die I2C EEprom´s auslagern (immer pro Pattern, der Lebensdauer zuliebe) Als Eingabe verwende ich 16 Menütasten + einen Encoder, sowie die analogen Potis. Das Ding ist eigentlich ein gewachsener Prototyp, quasi überhaupt mein erstes Arduino Projekt, wollte wissen, was mit dem kleinen Käfer alles zu bewerkstelligen ist. Als nächstes Projekt werden sicher 16 Steps kommen, dafür nur 1x16 Buttons (4x16 wäre ein Lötwahnsinn, v.a. auf Loch/streifenraster).

Kleiner Tipp: Sehe, dass du es mit Bleistift und Lineal die Bohrungen aufzeichnest, ich verwende ein einfaches Zeichenprogramm und drucke es auf Laserklarsichtfolie auf, Klebebandstreifen und fertig.