Impressum | Datenschutz | Shop | DIY | TT @ Twitter | TT-Cabs
Anzeigen der neuesten Beiträge

Entwicklung eines Midi-Switching-Systems auf Arduino-Basis

  • 145 Antworten
  • 77438 Aufrufe

0 Mitglieder und 1 Gast betrachten dieses Thema.

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Moin,

melde mich, nachdem ich 'ne Woche krank im Bett gelegen habe, mit der Vorstellung meines neuen Projekts zurück aus der Versenkung.

Ich hab ja in diesem Thread schon ein wenig rumgejammert, dass ich mit dem Management meiner Effektbataillon unzufrieden bin. Naja, nicht direkt unzufrieden, denn das System funktioniert eigentlich gut, aber es gibt doch Verbesserungsmöglichkeiten. Und da ich immer schon mal was mit µCs machen wollte, habe ich beschlossen, die nächste Generation meines FX-Looper/Switcher-Systems zu entwickeln und zu bauen - diesmal mit µC und MIDI. Das Projekt ist - für meinen Kenntnisstand - sehr ambitioniert, und ich muss speziell an der Programmierfront einiges an Vorarbeit leisten, bevor was produktives dabei herauskommen wird, weswegen ich mir keinen Zeitrahmen setzen will - es ist fertig, wenn's fertig ist.

Als erstes möchte ich mich mit dem Konzept des ganzen befassen, und das sollte gut durchdacht und stimmig sein, bevor überhaupt irgendwas praktisch in Angriff genommen wird. Was auf jeden Fall schon fest steht ist die Nutzung eines fertigen Arduino-Boards, da ich mit der Platinenentwicklung und -fertigung so wenig wie möglich zu tun haben will; außerdem gibt's die leistungsfähigeren µCs nur als SMD, und das verträgt sich gar nicht mit Tremor und Kurzsichtigkeit  ;D .

Jedenfalls, ich fange mal an damit, meine Vorstellung darzulegen und so. Ich schreibe den Mist hier parallel auch an einer Art "Konzeptpapier", dass mir als Leitfaden und Dokumentation dienen soll. Später irgendwann, wenn das soweit ist, dass es sich lohnt, werde ich das auch hier veröffentlichen.

Los geht's mit der

Grundidee

Das alte System
 Das hier entwickelte System soll langfristig das  bestehende Looper-/Switcher-Racksystem ersetzen. Dieses besteht aus einer Rackeinheit mit 12 Audio-Loops, von denen jeweils vier intern in Serie geschaltet sind, sowie 6 potentialfreien Schaltausgängen. Bedient wird die Rackeinheit über einen Bodencontroller mit insgesamt 20 zweipoligen Fußschaltern, über die zum einen die Spulenspannung der Relais geschaltet wird; mit dem anderen Schalterpol wird die zugehörige LED am Controller geschaltet. Der Controller wird über ein voll belegtes 25-poliges D-SUB-Kabel mit der  Rackeinheit verbunden.
Dieses System verlagert die Komponenten eines komplexen Pedalboards in ein 19“-Rack. Die Effektgeräte stehen im Rack auf ausziehbaren Bodenwannen und sind so geschützter als auf einem Pedalboard, z.B. gegen versehentliches Verstellen. Vor den Füßen auf der Bühne liegt nur noch ein Controller, der deutlich kompakter ist als ein entsprechendes Pedalboard. Eine Programmierbarkeit bietet das System nicht, wurde von mir aber auch nicht benötigt, da ich kein „Preset-Spieler“ bin – ich schalte meine Effekte einfach nach Lust und Laune ein oder aus.
Der Wunsch nach einer Midifizierung des Systems entstand mit dem Bedürfnis, das im Setup vorhandene 19“-Effektgerät G-Sharp von TC Electronic effizienter zu nutzen. Bisher nutze ich dieses rein im „Manual“-Modus mit fest eingestelltem Delay und Hall, bei dem das Effektgerät an den Reglern auf der Frontplatte eingestellt wird. Über die auf der Rückseite vorhandene Remotebuchse können die Funktionen Delay an/aus, Hall an/aus und Tap Tempo fernbedient werden.
Schöner wäre es, auch die Presets des Gerätes nutzen zu können und so z.B. unterschiedliche Delayeinstellungen und –typen sowie, alternativ zum Delay, auch die Modulationseffekte des G-Sharp nutzen zu können. Dafür ist aber eine Ansteuerung per MIDI unerlässlich. Die einfache Lösung wäre, zusätzlich zum Controller des Loopers ein MIDI-Pedal zu benutzen, und das ist in der Tat die Lösung, die ich im Moment nutze. Der Nachteil ist, dass wieder mehr Platz vor den Füßen benötigt wird, und auch von der Bedienung her ist es suboptimal.


Das neue System
 Das neue System soll wie handelsübliche kommerziell erhältliche Switchingsysteme arbeiten und aus zwei Komponenten bestehen. Die alte Rackeinheit wird durch einen per MIDI steuerbaren Looper/ Switcher nach dem Vorbild von Geräten wie dem GCX Audio Switcher von Voodoo Lab oder dem RG-16 bzw. Rack Gizmo von RJM ersetzt. Bei diesen Geräten können die Loops und – im Falle des Rack Gizmo – die Schaltausgänge per MIDI über Continuous-Controller-Befehle ein- und ausgeschaltet werden, das Rack Gizmo ist darüber hinaus auch noch in der Lage, Presets abzuspeichern. Beide Geräte erlauben allerdings nur die Verwendung von bis zu acht Loops. Das GCX bietet keine seperaten Schaltausgänge, das Rack Rack Gizmo hingegen acht. Acht Loops reichen für mein derzeitiges Setup aber nicht aus, so dass die neue Rackeinheit mit der gleichen Anzahl Loops ausgestattet werden soll, wie die alte Rackeinheit.

Gesteuert werden soll die Rackeinheit per MIDI Foot Controller. Hier könnte vermutlich jeder programmierbare MIDI Foot Controller zum Einsatz kommen, der das Senden von CC-Befehlen beherrscht, wie z.B. das Ground Control Pro, ebenfalls von Voodoo Lab oder die Controller von CAE. Alle „bezahlbaren“ Controller haben aber den Nachteil, dass sie nicht genügend Fußtaster für die Steuerung von bis zu 12 Loops sowie mehreren Schaltausgängen haben. Andere Lösungen wie z.B. CAE werden dann sehr schnell sehr teuer. Da ich mich für dieses Projekt sowieso intensiv mit den Themenbereichen MIDI-Protokoll, Microcontroller und Programmierung auseinandersetzen muss, soll im zweiten Schritt auch der passende MIDI Foot Controller entworfen und gebaut werden.
Anforderungen

Looper / Switcher

Features:
  • 12 True-Bypass-Audio-Loops mit mit diskretem Input, Insert, Output
  • Alle Loops auch als Schaltausgänge nutzbar (Insertbuchse, Tip = NC, Ring = NO)
  • 8 potentialfreie Schaltausgänge (Tip auf Masse, NO)
  • Steuerung per MIDI
  • Ein- und Ausschalten der Loops per CC-Befehl
  • Möglichkeit der Speicherung von Presets
  • Einschleifbarer Buffer (OP/JFET)
  • Individuelles Schalten der Loops per CC#80-91
  • Individuelles Schalten der Schaltausgänge per CC#104-111
  • Speichern von Presets
  • MIDI-Kanal 1-16 frei einstellbar, Omni-Mod
Hardware:

  • Arduino-Basis
  • 19“-Rackunit, 2HE
  • 7-Segment-Anzeige mit serieller Ansteuerung zur Anzeige der Presetnummer
  • Versorgung per 9V AC/DC-Adapter
  • USB-Anschluss für FW-Update
  • MIDI-/Pedal-In an der Frontplatte
  • 9V Phantom-Power für Controller, ggf. schaltbar
  • Aufbau der Treiberschaltungen, Relais und Buchsen auf Eyeletboard oder Loch-/Streifenraster
Weiter geht's dann später mit den möglichen geeigneten Arduino-Varianten für die Rackeinheit sowie den Anforderungen an den Floorcontroller. Input, Vorschläge und Meinungen sind natürlich erwünscht!

Gruß, Nils
« Letzte Änderung: 28.08.2011 01:14 von Nils H. »

*

Offline Duesentrieb

  • YaBB God
  • *****
  • 5.813
wow. Viel Glück, Nils.

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
wow. Viel Glück, Nils.

Das klingt ja sehr skeptisch  ;) . Ich weiß, das klingt sehr ambitioniert, und es wird ein langer Weg sein, bis die Kiste fertig ist. Im Wesentlichen ist es ein Programmierprojekt, denn die Hardwareseite ist ja sehr überschaubar. Wenn man an die Software einigermaßen strukturiert rangeht und das von Anfang an modular aufbaut, kann man ja Feature um Feature einbauen. Und wichtig ist halt ein stimmiges Grundkonzept.

Gruß, Nils

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Moin,

weiter gehts:


Microcontroller (Rackeinheit):

Gerade hier würde ich mich über Input freuen, da ich kaum Erfahrungen mit Microcontrollern habe; vielleicht habe ich bei meiner Recherche ja Lösungswege übersehen, die andere Alternativen erlauben.

Anforderungen:
Der Microcontroller für den Switcher benötigt in der angepeilten Ausbaustufe (12 Loops und 8 Schaltausgänge) 20 freie digitale I/O-Pins, konfiguriert als Ausgang. Hinzu kommt noch die gleiche Anzahl digitaler Inputs für die Bedienung durch Taster auf der Frontplatte sowie zwei Pins für Midi I/O und ein Pin für die Ansteuerung der seriellen 7-Segment-Anzeige. Insgesamt werden also 44 I/O-Pins benötigt (20 Outputs und 24 Inputs).

Der ATmega168 und ATmega328 haben nur 14 digitale I/O, von denen zwei für MIDI In/Out abgezogen werden müssen. Allein durch die Anzahl an benötigten Outputs ergeben sich zwei Möglichkeiten:

-    Einsatz eines Boards mit ATmega1280 oder ATmega2560
-    Einsatz zweier / mehrerer Boards mit ATmega168 oder ATmega328

Letzteres ist im Hinblick auf den Beschaffungspreis eigentlich nur sinnvoll bei Einsatz eines Arduino Pro oder Pro-Mini. Ein weiterer Nachteil des ATmega168 wäre das mit 512 Byte sehr knapp bemessene EEPROM.


Mögliche Controller und Boards:

ATmega1280
  • 54 digitale I/O
  • 16 analoge Inputs
  • 128 kB Flash / 8 kB SRAM / 4 kB EEPROM
  • Kein aktuelles Design
Mögliche Boards:

Original Arduino MEGA
  • schwierig zu bekommen, weil veraltet
  • Preis ca. €24,-
  • Benötigt MIDI-I/O-Shield ("Shield" heißen bei Arduino die Aufsteck-Tochterboards), kostet €15,-
  • Maße ca. 102 mm x 54 mm
Miduino Keyboard/Piano Foot Pedals  MIDI/USB
  • Arduino MEGA-Board
  • Preis: €65,-
  • Inkl. MIDI I/O-Shield
  • Beinhaltet nicht benötigtes Programm, für das wohl mit bezahlt wird
ATmega2560
  • 54 digitale I/O
  • 16 analoge Inputs
  • 256 kB Flash / 8 kB SRAM / 4 kB EEPROM
Mögliche Boards:

Original Arduino MEGA 2560
  • Preis: um €50,-
  • Benötigt zusätzlich MIDI-I/O-Shield, kostet ca. €15,-
  • Maße ca. 102 mm x 54 mm
ATmega328
  • 14 digitale I/O
  • 8 analoge Inputs
  • 32 kB Flash / 2 kB SRAM / 1 kB EEPROM
Mögliche Boards:

Original Arduino Uno

  • Preis: ca €25,-
  • Benötigt MIDI-I/O-Shield, kostet €15,-
  • Maße ca. 69 mm x 54 mm
Original Arduino Duemilanove
  • Preis: ca. €25,-
  • Benötigt MIDI-I/O-Shield, kostet €15,-
  • Maße ca. 69 mm x 54 mm
Original Arduino Pro
  • Preis: ca €17,-
  • Benötigt MIDI-I/O-Shield, kostet €15,-
  • Kein USB-Anschluss, Kabel oder Konverter benötigt
  • Sehr kompaktes Board
Die einzige sinnvolle Variante ist nach meiner Einschätzung der Einsatz des MEGA- oder MEGA 2650-Designs. Das Optimum würde wohl ein Board mit ATmega2560 darstellen, inkl. MIDI-I/O liegt der Preis bei ca. 65 Euro.
Mit etwas Glück ist ein MEGA-Board für ca. 25 Euro zu bekommen, ergänzt um ein MID-I/O-Shield z.B. von Miduino liegt der Anschaffungspreis bei ca. 40 Euro. Der geringeren Flashspeicher von 128 kB (256 kB beim 2560) sollte bei dieser Anwendung keinen Nachteil darstellen.
Die Beschaffung eines MEGA-basierten Miduino-Designs scheint nur dann sinnvoll, wenn kein originales MEGA-Board zu einem günstigen Preis beschafft werden kann. In diesem Fall scheint z.B. das Projekt „Keyboard/Piano Foot Pedals MIDI/USB“ für 65 Euro das richtige und günstigste Miduino-Projekt zu sein, zu diesem Preis könnte man dann aber auch gleich zur erstgenannten Lösung greifen.
« Letzte Änderung: 27.08.2011 00:28 von Nils H. »

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Zum Schluss für heute meine Idee vom


Midi Foot Controller

Die folgenden Listen stellen einen möglichen Funktionsumfang dar. Die Programmieraufgabe wird beim Controller deutlich größer sein als beim Looper/Switcher, so dass die Software mit der Zeit wachsen wird. Es muss noch festgelegt werden, welche Features für einen Grundbetrieb benötigt und was die Mindestanforderungen an die Software sein werden.

Features:
  • Senden von PC-Befehlen
  • Senden von CC- oder PC-Befehlen per Direktanwahl-Taster
  • Speichern von 100 Presets
  • Steuerung von bis zu 8 Geräten auf unterschiedlichen MIDI-Kanälen
  • Anschlussmöglichkeit von 2 Expression-Pedalen
  • Range-Einschränkung der Expressionpedale möglich
  • Fußtaster konfigurierbar als Schalter (latching) oder Taster (momentary)
  • Fußtaster können bis zu 4 andere Taster zurücksetzen
Hardware:
  • Metallgehäuse
  • Metall-Fußtaster
  • Low Current-LED
  • Beleuchtetes LCD 16x2
  • Mindestens vier Taster plus Bank up/down zur Presetwahl
  • 20 Taster zum Schalten aller Loops und Schaltausgänge der Rackeinheit
  • Phantomgespeisung oder Versorgung per Steckernetzteil
  • 9V DC-Output zur Versorgung von Effektgeräten
  • USB-Anschluss für FW-Update
Microcontroller:

Der Microcontroller für den MIDI Foot Controller benötigt für die Direktanwahl von 12 Loops und 8 Schaltausgängen sowie das Schalten von 4 oder 5 Presets / Bank 26 bzw. 27 digitale Inputs sowie ebenso viele digitale Outputs für die zugehörigen LED. Dazu kommt noch je ein Pin für MIDI-Out und die Kommunikation mit dem LC-Display mit serieller Ansteuerung. Damit benötigt der Controller mehr als die 54 digitalen I/O-Pins, die der ATmega1280 oder ATmega2560 zur Verfügung stellen. Das Problem kann auf mehrere Arten umgangen werden, z.B.:

  • Verschaltung der Fußtaster als Matrix, Auswertung über die Arduino Keypad-Library. Für die Auswertung der Taster werden dann statt 27 Eingängen nur noch 11 benötigt.
  • Auswertung mehrerer Taster über analoge Eingänge. Die Taster werden hier mit unterschiedlichen Widerständen verschaltet und bilden mit den Pull-Up-Widerständen unterschiedliche Spannungsteiler. 4-5 Taster pro Eingang sollten problemlos möglich sein, es würden dann 6 oder 7 analoge Eingänge benötigt. Im Arduino Playground steht hierfür die „AnalogButtons“-Library zur Verfügung.
Für den Controller wird aber auf alle Fälle ein Controller mit reichlich I/O-Ports benötigt, auch reichen die 512 Byte bzw. 1 kByte der kleineren Atmels nicht aus. Sinnvoll ist hier nur der Einsatz eines ATmega1280 oder 2560, für die Varianten und die Verfügbarkeit gilt das für die Rackeinheit bereits gesagte. Da nur ein Midi-Out vorgesehen werden muss, kann die Midi-Beschaltung aber deutlich einfacher ausfallen, so dass kein separates MIDI-Shield benötigt wird.

Soweit erstmal von mir für heute,
Gruß, Nils
« Letzte Änderung: 27.08.2011 00:31 von Nils H. »

*

Offline kugelblitz

  • YaBB God
  • *****
  • 1.724
  • be seeing you...
Hallo Nils,

genau auf Arduino Basis hab ich eine light Variante in meinen Attenuator verbaut. Light, denn er kann nur senden und hat nur ein Led zur Statusanzeige.

Arduino NG rev. C mit 6 analogen Inputs und 14 digitalen Pins (IO)

digital IO:
7 x ON-OFF-ON Taster + 1 x ON-OFF-ON Taster/Schalter Kombi = 15 Taster und 1 Schalter, benötigen 8 digitale Pins (mit je 10k gegen GND verbunden) als Input und 2 als Output (Stromversorgung abwechselnd für obere und untere Taster/Schalterstellung)
1 x digitaler Pin für LED
1 x digitaler Pin für Send (TX) (5V -> 220k -> Din-Buchse (pin 2 glaub ich) , GND -> Din-Buchse (pin 3) , TX -> Din-Buchse (pin 4 glaub ich)

analog IO:
5 Potis (1M B) den Schleifer an analogen Pins (Stromversorgung über 5V Arduinoboardnetz)

Dazu noch ein, leider bei mir fast unterdimensioniertes, Netzteilmodul vom C, ein Resettaster nach außen geführt (NO, ATmega Pin 1 -> GND soweit ich mich erinnere), ein USB Kabel und einen Umschalter zwischen USB PS bzw externem PS.

Zur Funktion:
Er dient mir zur Steuerung eines G-Major 2 (nur begrenzt MIDI steuerbar) und hat 3 Modi:

Modus 1: Normalbetrieb beim Einschalten.
14 CC Nachrichten (0 oder 127 im Wechsel) auf 14 Tastern und 5 CC Nachrichten (0-127) auf Tastern bei einer Änderung >5. Led leuchtet alle ~5 Sekunden kurz auf.

Modus 2: Feinbetrieb.
wird durch betätigen des 15. Tasters aktiviert und erneutes Betätigen aktiviert, gleich wie Normalbetrieb nur werden Änderungen der Potistellung sofort weitergegeben und das LED leuchtet genau invers zu Modus 1.

Modus 3: Programmwechselbetrieb.
PC Nachrichten und CC für Bankwechsel.
10 Taster dienen als Eingabefeld für die Zahlen 0-9 (newPatchNumber=(newPatchNumber*10+inputNumber)%1000 bzw bei >128 %100). 2 Wechseln User und Factorybank, 2 dienen dem Wechsel zum nächsten oder vorherigen Patch. Aktiviert wird der Modus durch betätigen des Schalters 16, gesendet wird die PC Nachricht entweder bei Bankwechsel oder Release des Schalters 16.

Soweit funktioniert eigentlich alles, aber ein paar Mankos hat mein Controller. Keine einheitlichen Taster, somit aufwenigerer Code (Reaktion nicht nur auf Press sondern auch unter Umständen auf Release (PC)), bei Wechsel eines Patches kennt er nicht die Konfiguration der Schalter im G Major2 somit wird möglicherweise die gewünschte Aktion erst beim 2. Versuch aktiv. Beim Einschalten, oder direkter Interaktion am G Major2, kennt er noch nicht den aktuell aktiven Patch und wechselt so bei +1 /-1 nicht zum erwarteten Patch bzw funktionert ein Taster wieder erst beim 2. Mal wie erwartet. Weiters können sich Potis gegenseitig beeinflussen, vielleicht sollte ich sie noch mit Dioden isolieren.

Ebenso können unerwartete Komplikationen auftreten, zB steuert ein Poti bei mir die Input Lautstärke, ist diese beim Ausschalten auf 0 gedreht und verwendet den G Major2 das nächste Mal ohne Midicontroller sucht man das erste Mal ziemlich lange verzweifelt, bis man den Fehler findet warum kein Ton mehr aus dem Verstärker kommt ;)

Auf der Softwareseite habe ich die Arduino IDE und die Arduino MIDI Lib von sourceforge (so weit ich mich erinnere) verwendet. Funktioniert auch problemlos auf allen gängigen Betriebssystemen. Sollte ich ihn noch einmal neu bauen würde ich auch jedenfall keine gemischten Taster und Schalter verwenden und alle Funktion auch von einfacher Programmierbarkeit abhängig machen.

HTH als Anregung bzw hilft Dir meine Fehler zu vermeiden. BTW es ist zumindest für mich angenehm wenigstens die 4 Modifikatoren zB Reverbmix im G-Maj2 per echten Potis zu steuern, bzw eine Taptempofunktion zu haben oder das Gate direkt zu schalten ohne sich durch das Menü zu kämpfen. Die Plastikknöpfe des G-Maj2 werden ebenso geschont. Jetzt fehlt es nur noch einen Foot Controller parallel zu den vorhandenen Tastern zu verbauen, leider fehlt mir aber die Zeit.

Gruß,
Sepp


*

Offline SvR

  • YaBB God
  • *****
  • 2.384
Insgesamt werden also 44 I/O-Pins benötigt (20 Outputs und 24 Inputs).

Der ATmega168 und ATmega328 haben nur 14 digitale I/O, von denen zwei für MIDI In/Out abgezogen werden müssen. Allein durch die Anzahl an benötigten Outputs ergeben sich zwei Möglichkeiten:

-    Einsatz eines Boards mit ATmega1280 oder ATmega2560
-    Einsatz zweier / mehrerer Boards mit ATmega168 oder ATmega328
Die 20 Taster könntest du als 5x4-Matrix schalten. Anstatt 20Pins würden diese dann nur noch 9 Pins benötigen. Die Ausgänge für Loops und Schaltaufgaben (beides wahrscheinlich mit Relais) könntest du über I2C-Portexpander machen. Damit würdest du am µC nur noch die Pins für den I2C-Bus benötigen (also 2Pins).
Das wären dann also 11Pins +2Pins Midi-I/O = 13Pins.
mfg sven

Edit: Seh grad: Für den Footcontroler hast du die Taster als Matrix vorgesehen, warum nicht bei der Rackeinheit?
« Letzte Änderung: 27.08.2011 10:00 von SvR »
Rettet den Wald, esst mehr Biber!
PIC32-Tutorial

*

Offline SvR

  • YaBB God
  • *****
  • 2.384
Salü,
Der Microcontroller für den MIDI Foot Controller benötigt für die Direktanwahl von 12 Loops und 8 Schaltausgängen sowie das Schalten von 4 oder 5 Presets / Bank 26 bzw. 27 digitale Inputs sowie ebenso viele digitale Outputs für die zugehörigen LED. Dazu kommt noch je ein Pin für MIDI-Out und die Kommunikation mit dem LC-Display mit serieller Ansteuerung. Damit benötigt der Controller mehr als die 54 digitalen I/O-Pins, die der ATmega1280 oder ATmega2560 zur Verfügung stellen. Das Problem kann auf mehrere Arten umgangen werden, z.B.:
Die LEDs könntest du über Schiebregister und die serielle Schnittstelle des µCs ansteuern (oder wieder Portexpander+I2C). Das LC-Display lässt sich auch im 4Bit-Modus betreiben, um Pins zu sparen.
mfg sven

Edit: Warum sollen es eigentlich fertige Arduino-Boards sein? Wenn ich die Preise so les, hast du bei zwei Boards locker den Preis für ein USB-Programmiergerät+µC+Quarz+Hühnerfutter+Lochrasterplatine erreicht. Das Programmiergerät lässt sich dann später weiter verwenden, sodass für deinen nächstes µC-Projekt nur noch µC+Quarz+Hühnerfutter fällig wird.
« Letzte Änderung: 27.08.2011 11:53 von SvR »
Rettet den Wald, esst mehr Biber!
PIC32-Tutorial

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Moin Sven,

danke für die Hinweise!

Edit: Seh grad: Für den Footcontroler hast du die Taster als Matrix vorgesehen, warum nicht bei der Rackeinheit?

Beim Controller kommt man an der Matrix-Lösung nicht vorbei, weil er so viele I/Os benötigt. Bei der Rackeinheit ist das nicht so zwingend nötig, jedenfalls wenn ich zum "großen" ATmega greife. Das ist der einzige Grund, warum ich das bei der Rackeinheit nicht hingeschrieben habe. Ich hab aber auch noch gar keine Ahnung, welche Variante den größeren Programmieraufwand hat - u.U. ist das mit der Matrix-Bibliothek eh einfacher.


Salü,Die LEDs könntest du über Schiebregister und die serielle Schnittstelle des µCs ansteuern (oder wieder Portexpander+I2C). Das LC-Display lässt sich auch im 4Bit-Modus betreiben, um Pins zu sparen.

Als LCD hab ich eines mit serieller Ansteuerung (die gibt's fertig) vorgesehen, dann braucht's sogar nur einen Pin. Andererseits wird natürlich ein nacktes LCD deutlich billiger. Mal sehen, ob am Ende die vier Pins für die Ansteuerung über bleiben.


Edit: Warum sollen es eigentlich fertige Arduino-Boards sein? Wenn ich die Preise so les, hast du bei zwei Boards locker den Preis für ein USB-Programmiergerät+µC+Quarz+Hühnerfutter+Lochrasterplatine erreicht. Das Programmiergerät lässt sich dann später weiter verwenden, sodass für deinen nächstes µC-Projekt nur noch µC+Quarz+Hühnerfutter fällig wird.

Das Hauptproblem sehe ich dabei im Format des µC: So wie ich das sehe, werde ich einen ATmega1280 oder 2560 brauchen, und den gibt's nur als SMD oder BGA. Insofern ist ein Aufbau auf Lochraster o.ä. schon mal raus, und auf SMD-Löten hab ich auch keinen Bock, das überlasse ich gerne anderen  ;) . Als Grund sehe ich da weniger den Bedarf an I/O-Ports, das ließe sich ja anderweitig lösen, sondern vor allem den Speicherbedarf, vor allem beim EEPROM. Für den Controller hab ich das schon mal überschlagen, da fallen pro Preset ca. 25 Byte an. Damit sind die kleineren µC mit 512B oder 1kB raus - meiner - zugegeben, bisher oberflächlichen - Recherche zufolge ist es nicht so einfach möglich, das EEPROM zu erweitern. Bei der Rackeinheit hab ich das noch nicht überschlagen, da wäre es vermutlich noch nicht ganz so kritisch.

Dann soll der µC ja im Gerät programmierbar sein, es ist doch unpraktisch, für ein FW-Update jedes mal das Ding aufzuschrauben und den µC rauszunehmen, um ihn im Programmiergerät neu zu programmieren.

Oder siehst Du / sieht jemand da andere Lösungsansätze?

Gruß, Nils
« Letzte Änderung: 27.08.2011 13:35 von Nils H. »

*

Offline SvR

  • YaBB God
  • *****
  • 2.384
Salü,
Die meisten Programmiergeräte unterstützen auch das Programmieren in der Schaltung.
Wie zum Beispiel diese Gerät auf dem Foto für PICs von Microchip.

Ähnliche Geräte gibt es bestimmt auch für Atmel-µC. Wenn du die Steckerleiste auf der Platine unterbringst muss du das Gerät natürlich aufschrauben, aber ich persönlich finde das nicht so schlimm. Wenn die Schaltung erstmal entgültig läuft, wird man nicht mehr ständig neue Software aufspielen und in der Testphase hat man die Platine/die Schaltung eh offen aufem Tisch liegen.
Zur Erweiterung des EEPROMs gibt es auch externe EEPROM-IC (via I2C oder SPI). Wenn du aber eh einen entsprechend großen µC wegen der IO-Pins vorsiehst, kannst du dir das ja sparen.
Zitat
Als LCD hab ich eines mit serieller Ansteuerung (die gibt's fertig) vorgesehen, dann braucht's sogar nur einen Pin. Andererseits wird natürlich ein nacktes LCD deutlich billiger. Mal sehen, ob am Ende die vier Pins für die Ansteuerung über bleiben.
Der 4Bit-Modus bezieht sich nur auf die Datenleitung. Zusammen mit den Steuerleitungen werden dann 7Pins benötigt.
Die Taster würde ich generell als Matrix schalten, vielleicht freust du dich irgendwann noch über die freien Pins wenn dir noch irgend ne tolle Erweiterung einfällt. ;)
mfg sven

Edit.: Das Argument SMD kann ich nachvollziehen. Gottseidank gibt es die meisten PICs auch als THT-Bauteile. Sogar in der dsPIC-Reihe werden einige im DIL-Gehäuse angeboten
« Letzte Änderung: 27.08.2011 14:21 von SvR »
Rettet den Wald, esst mehr Biber!
PIC32-Tutorial

*

Offline SvR

  • YaBB God
  • *****
  • 2.384
Salü,
Für die Rackeinheit benötigst du doch eigentlich überhaupt kein EEPROM oder?
Presets speicherst du ja nur im Footcontroller. Und alles was nicht nur Laufzeit geändert und dauerhaft gespeichert werden soll kann in den Programmflash.
mfg sven
Rettet den Wald, esst mehr Biber!
PIC32-Tutorial

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Salü,
Für die Rackeinheit benötigst du doch eigentlich überhaupt kein EEPROM oder?
Presets speicherst du ja nur im Footcontroller. Und alles was nicht nur Laufzeit geändert und dauerhaft gespeichert werden soll kann in den Programmflash.
mfg sven

Doch. Die Rackeinheit soll auch programmierbar sein. Da ist es aber weniger kritisch, da sollte man mit 3 Byte pro Preset auskommen, da ist auch bei 512 Byte noch genug Platz für Konfigurationsdaten. Insofern muss ich das noch mal absondieren, ob ich das mit einem kleineren mC hinbekomme. Bei der Arduino-Umgebung will ich aber auf jeden Fall bleiben, die erscheint mir sehr komfortabel, und es gibt viele gute Erweiterungen.

Gruss, Nils

*

Offline Nils H.

  • YaBB God
  • *****
  • 3.067
Moin Sven,

Wenn du die Steckerleiste auf der Platine unterbringst muss du das Gerät natürlich aufschrauben, aber ich persönlich finde das nicht so schlimm. Wenn die Schaltung erstmal entgültig läuft, wird man nicht mehr ständig neue Software aufspielen und in der Testphase hat man die Platine/die Schaltung eh offen aufem Tisch liegen.

da bin ich mir nicht so sicher. Die Rackeinheit ist softwareseitig sicher deutlich simpler gestrickt und wenn's läuft, läuft's. Beim Floorboard will ich mir, glaube ich, den Luxus gönnen und im Zweifelsfalle einfach mit USB-Kabel und Laptop ohne Schrauberei im Proberaum eine neue Software einspielen können. Wir alle kennen das doch, dass wir von einem Gerät, egal wie ausgereift, immer gerade was anderes wollen als das, was es kann  ;D .


Zur Erweiterung des EEPROMs gibt es auch externe EEPROM-IC (via I2C oder SPI). Wenn du aber eh einen entsprechend großen µC wegen der IO-Pins vorsiehst, kannst du dir das ja sparen.

Ich denke, fürs Floorboard wird's darauf hinaus laufen. Ist doch wie beim Amps bauen - man denkt, der Klöterkram und das Hühnerfutter schluckt nicht viel, aber - überspitzt dargestellt - bei allen Verrenkungen, Erweiterungen, Expandern und so hat man vermutlich auch schnell das Preisniveau eines fertigen Boards erreicht.


Der 4Bit-Modus bezieht sich nur auf die Datenleitung. Zusammen mit den Steuerleitungen werden dann 7Pins benötigt.

Stimmt. Mein Fehler  :) . Der Gedanke, das seriell über einen einzelnen Pin abfrühstücken zu können, erscheint mir aber deutlich reizvoller, zumal ein entsprechendes LCD nur einige wenige Euros mehr kosten würde als das nackte LCD-Modul.


Die Taster würde ich generell als Matrix schalten, vielleicht freust du dich irgendwann noch über die freien Pins wenn dir noch irgend ne tolle Erweiterung einfällt. ;)

D'akkordeon ;D .

Gruß, Nils


Edit: P.S. die Lösung mit einem Schieberegister für die Outputs ist natürlich trotzdem sexy, denn das sind ja Pfennigartikel, und im DIL16-Gehäuse lässt sich das prima lokal dort unterbringen, wo's benötigt wird, was den Verdrahtungsaufwand überschaubar hält. Statt 20 Datenleitungen zu ziehen einfach ein paar 74HC595 verteilen....
« Letzte Änderung: 28.08.2011 01:07 von Nils H. »

*

Offline Thisamplifierisloud

  • YaBB God
  • *****
  • 754
I2C I/O - Expander : PCF8574

Schonmal an z8encore gedacht ?
In-Cicuit-Programmierung, On-Chip-Debugger, priorisierbare Interrupts,
Flashen über serielle Schnittstelle und vor allem kein Fuse-Bit-Gequarke.
Kost´ 6-7 Eu bei R&S.

Braucht an Peripherie nen Quarz, paar Cs und Rs und nen MAX3232 zum Flashen und Debuggen - Fertig.


Schaltpläne kannste von mir haben.

Gruß

Bernhard

Der den Argumentenverstärker trägt.

*

Offline Firebird

  • Sr. Member
  • ****
  • 183
Moin Nils,

ich habe hier

http://www.tube-town.de/ttforum/index.php/topic,14548.0.html

vor einer Weile schon mal ein Switching System für einen Amp eingestellt, daß auf dem Arduino Pro Mini basiert. Die Ausgangspins habe ich dort auch mit dem 74HC595 vervielfältigt, dabei mußt du aber darauf achten, daß der nur 35mA treiben kann, was für Relais nicht reicht. Abhilfe schafft ein nachgeschalteter ULN2803, da bist du mit 500mA pro Pin auf der sicheren Seite.
Um eingangsseitig Pins am Arduino zu sparen habe ich 74HC147 verwendet, mit dem Ding kann man neun Eingänge auf vier Bit codieren.