Ich brauch halt eine Menge Eingänge. Hab im Wiki was über einen Portexpander gelesen allerdings werden da nur Ausgänge erweitert. Naja erstmal in BASCOM einlesen, so schwer scheint es ja nicht zu sein.
Druckbare Version
Ich brauch halt eine Menge Eingänge. Hab im Wiki was über einen Portexpander gelesen allerdings werden da nur Ausgänge erweitert. Naja erstmal in BASCOM einlesen, so schwer scheint es ja nicht zu sein.
Die Portexpander kann man so ähnlich auch für Eingänge machen. Wenn es um viele Taster geht, kann man die auch als Matrix abfragen.
Mit einem so großen Projekt würde ich nicht anfangen. Lieber erstmal was kleines, damit man auch Erfolge sieht. Dann kann man auch besser abschätzen was alles geht und weiss schon mal wie 1 Taster geht.
Die I²C Pordexpander können wie jeder Port lesen und schreiben die haben eine 7 Bit Adress (darum auch nur 128 Geräte) das 1.Bit wird zum Lesen/schreiben verwendet. Gerade Adressen "schreiben" ungerade Adressen "lesen".Zitat:
Zitat von blackfield
Dann gibt es auch noch Analog Multiplexer http://en.wikipedia.org/wiki/Multiplexer oder Schieberegister oder http://www.edv-techniker.de/klProjek...aturmatrix.htm u.s.w.
I²C kann allerdings keine lange BUS Leitungen treiben, das ist für Längen auf einer Platine gedacht......
Gruß Richard
Diese Portexpander kann man auch über Schieberegister realisieren.
Wir haben bei unserem derzeigiten Projekt ( Klimaanlagensteuerung ) einen ATMEGA 64 verbaut.
Als Schieberegister haben wir da drei 74HC165 ( parallel in , seriell out ) verwendet, um damit 24Taster einzulesen.
Die Kaskade wäre allerdings noch beliebig erweiterbar.
Das Ganze braucht 3 Ports des Controllers ( S-DATA, !EN, Clock ).
Wenn man mag kann man auch noch den INH Pin auf den Controller legen.
Der ATMEGA 64 - und auch andere AVR Controller - haben einen sog. SPI Bus in Hardware realisiert.
Mit diesem Bus kannst Du die Schieberegister, die bei uns in Reihe geschaltet sind wunderbar einlesen.
SPI Bus starten ( Library im Compiler ), 8 Bits aus dem SPI Datenregister abholen. Nächsten Block starten - Einlesen usw.
Es gibt auch Schieberegister mit Seriell in Parallel out, die man auch über SPI ansteuern kann um damit z.B. Leuchdioden zu treiben.
Man kann natürlich so eine SPI auch recht einfach in Software realisieren und somit mehrere Busse realisieren.
Ich würde an deiner Stelle die Hardware SPI für die Tastenabfrage verwenden und eine Software SPI für die Leuchtdioden Ausgabe verwenden. Ein weiterer Tipp von mir wäre Low Current LED's mit 2mA zu verwenden - die kann fast jeder Chip noch direkt treiben.
Die Tastenabfrage starte ich in unserer Anwendung alle 20ms und löse nur eine Aktion aus, wenn sich zum vorherigen Tastenbild was geändert hat. Damit ist dann auch gleich eine Tastenentprellung realisiert.
Die LED - SPI brauchst Du ja nur anzustoßen, wenn sich da was ändert.
Zur Sicherheit kann man aber auch alle 0,5...1 sek das aktuelle LED Bild senden.
I²C verwende ich persönlich nicht so gerne, weil man sich da relativ tief in die Materie einarbeiten muß um die richtigen Steuersequenzen, in der richtigen Reihenfolge zu generieren.
Von der Portanzahl her gibts aber kaum was sparsameres ( 2 Ports [ SDA, SCL ] ). Ein I²C Bus ist auch bei sehr vielen AVR Controllern in Hardware auf dem Chip und heisst dort TWI ( Two Wire Interface ) - Wohl aus lizenzrechlichen Gründen.
Um auch etwas höhere Lasten treiben zu können SSR- Relais oder kleine Motoren, verwende ich gerne ULN 2803.
Wenn Du uns sagst, welche Hardware mit welcher Anzahl Du verwenden willst, könnten wir Dir helfen einen passenden Controller zu finden.
Für mein neuestes Projekt ( MiDi Merger ) hab ich einen ATMEGA 1280 geplant, weil dieser 4 Hardware USART's hat, die ich als MiDi Eingänge verwenden will. Der ATMEGA 64 hat 2 USARTS - falls das interessiert.
Als LCD Display nehm ich gerne die 2x16 Zeichen Dotmatrix Displays von Pollin ( Best.Nr. 120 421 ), weil günstig und "schön" in Blau.
So ein Display braucht einen kompletten Port mit 7 bis 8 Leitungen.
Diese Dotmatrix Displays gibts bis 4*40 Zeichen, die dann aber schon recht teuer werden. Die meisten Compiler haben schon eine fertige Lib für diese Displays dabei.
Wenn Du dein Teil in ein 1HE 19" Gehäuse verfrachten willst, kannst Du z.B. auch ein LCD 204SW DIP von Reichelt nehmen, das aber dann schon mehr kostet.
Eine weitere Alternative wären auch noch rein grafische Displays wie das 120 424 von Pollin, die aber mehr Ports und mehr Rechenleistung vom Controller verlangen, da ja jedes einzelne Pixel des 128x64 Displays angesteuert werden muß.
Für die wirst Du Dir aber eine Library aus dem Internet holen müssen. Ausserdem wird hierbei meistens eine Zeichentabelle benötigt, in der die Form, Aussehen und Größe der Buchstaben und Zahlen festgelegt wird.
Ein einfaches Startbild benötigt da schon mal 1kB.
Nun hast Du ja wieder mal was zu Lesen und zu Recherchieren. ;)
Dann wäre sicher auch der 40polige Atmega32 eine Alternative.
Reichlich Ports und kein SMD-Gefummele. VG Micha
An allererste Stelle muss ich mal meinen Dank aussprechen!
Das war wirklich reichlich Input.
Um mal vorab zu nennen was ich umgefähr brauch:
Etwa 70 Taster. Davon gehn vier für ein Steuercross drauf, der Rest triggert diverse Funktionen.
Dazu kämen noch 5 Fader.
Das ganze soll als MIDI-Signal ausgegeben und an ein Programm namens Freestyler übertragen werden. Freestyler rechnet das ganze dann in ein DMX Signal um und sendet es an die Geräte.
Das Display soll vorallem als Feedback für den Controller dienen und einige wichtige Meldungen ausgeben. Als Beispiel wäre hier BlackOut oder FullON zu nennen. Weitere Funktionen aus Freestyler auszulesen wäre zwar möglich aber vorerst noch nicht geplant.
Als Gehäuse wird ein altes Behringer Eurodesk UB1832 Mischpult dienen(408x368mm). Da sollte genug Platz sein. Das Pult hat einen Elektronikschaden. Evtl kann ich ein paar Teile wiederverwenden wie z.B. die Fader, ein paar Potis und das Netzteil.
Eine nette Funktion wäre eine per Poti dimmbare Pultbeleuchtung. Wenn das über den Controller ginge wärs fein wenn nicht auch egal. Hierzu muss ich sagen das die Spezifikationen dieser Lampen (XLR-Anschluss, Spannung) halbwegs einheitlich sind.
Was fast schon ein muss ist, wär die Belegung der Tasten und das ausgegeben Midisignal ändern zu könnnen da ich je nach Location ein anderes Setup hab. Geht zwar über Freestyler ist da aber ein ziehmlich umständliches Geschäft
Ich würde gern einen Controller verwenden den ich mit dem Pollinboard flashen kann. Wenns dann wirklich nicht geht hab ich halt pech gehabt!
Als nächste Stufe wäre es das MIDI signal in USB zu wandeln sodass der PC ein MIDI Interface erkennt. Da werd ich vermutlich einen 5 Euro USB Midi Wandler hernehmen ist wahrscheinlich einfacher und billiger.
Erweiterbarkeit sollte dank MIDI-Protokoll auch kein Problem sein da man ein MIDI Signal theoretisch mergen kann. Probleme macht hier meistens die Midiclock.
Bei so vielen Tastern würde sich eine Matrixansteuerung anbieten.Zitat:
Etwa 70 Taster. Davon gehn vier für ein Steuercross drauf, der Rest triggert diverse Funktionen.
Also die Taster in Reihen und Spalten anordnen ( Schaltungstechnisch ) und die dann Abfragen.
Das dürfte Dich etwa 12Ports kosten.
4 für die Spaltenansteuerung und 8 als Feedbackleitung direkt zum Controller.
Die Schieberegister wären aber immer noch eine Option und würden die Möglichkeit eröffnen die Tastaturplatinen zu Blöcken mit jeweils 8 Tasten und einem Schieberegister aufzuteilen. Das wären dann 9 gleiche Platinen.
Der ATMEGA 32 hat 8 A/D Wandler - geht also.Zitat:
Dazu kämen noch 5 Fader.
Ich hab mir Free Styler auch mal kurz angeschaut, bin aber dann doch bei DMX Control hängen geblieben. Ob das so eine MiDi Funktion unterstützt kann ich leider nicht sagen.Zitat:
Das ganze soll als MIDI-Signal ausgegeben und an ein Programm namens Freestyler übertragen werden. Freestyler rechnet das ganze dann in ein DMX Signal um und sendet es an die Geräte.
Da hab ich Dir schon ein paar Möglichkeiten aufgezählt, es kommt halt auf die Menge der auszugebenden Daten an.Zitat:
Das Display soll vorallem als Feedback für den Controller dienen und einige wichtige Meldungen ausgeben. Als Beispiel wäre hier BlackOut oder FullON zu nennen. Weitere Funktionen aus Freestyler auszulesen wäre zwar möglich aber vorerst noch nicht geplant.
Dafür würde sich eine PWM anbieten. Fast jeder Timer eines ATMEGA Controllers kann als Hardware PWM genutzt werden. Ein passender Treiber MOS FET sollte auch nicht wirklich ein Problem sein.Zitat:
Eine nette Funktion wäre eine per Poti dimmbare Pultbeleuchtung. Wenn das über den Controller ginge wärs fein wenn nicht auch egal. Hierzu muss ich sagen das die Spezifikationen dieser Lampen (XLR-Anschluss, Spannung) halbwegs einheitlich sind.
Das denk ich mal könnte über eine Zuordnungstabelle geschehen.Zitat:
Was fast schon ein muss ist, wär die Belegung der Tasten und das ausgegeben Midisignal ändern zu könnnen da ich je nach Location ein anderes Setup hab. Geht zwar über Freestyler ist da aber ein ziehmlich umständliches Geschäft
Ein geeigneter Speicherort dafür wäre das EEPROM des Controllers, da dies auch die Werte ohne Strom beibehält.
Ein mögliches Speicherformat wäre:
1. Anzahl der MiDi Bytes
2. 1.Byte ( Status )
3. 2.Byte ( Parameter 1 )
4. 3.Byte ( Parameter 2 )
Das Ganze mal 70 ( Tasten ) wären 280 Bytes pro Setup.
MiDi Befehle mit mehr als 2 Parametern gibts eigentlich nur bei System Exclusive Befehlen, aber die würde ich für dein Projekt nicht nutzen wollen.
Wenn Du dich für einen Controller entscheidest solltest Du, falls Du das so machen willst, auch die EEPROM Größe im Auge behalten. Ein Externes EEPROM über I²C wäre aber auch möglich, ebenso eine Speicherung auf einer SD Karte. Allerdings schluckt eine FAT für die SD Karte ziemliche Controller Resourcen und ausserdem läuft so eine Karte nur mit 3,3V. Die meisten Displays hingegen brauchen 5V - Siehst Du das Problem ?
Gut das MiDi Signal in eine USB Schnittstelle zu packen ist eigentlich kein Problem. Das geht mit einem FT232R. Das der PC das aber auch als MiDi Schnittstelle erkennt dürfte schwieriger werden.Zitat:
Als nächste Stufe wäre es das MIDI signal in USB zu wandeln sodass der PC ein MIDI Interface erkennt. Da werd ich vermutlich einen 5 Euro USB Midi Wandler hernehmen ist wahrscheinlich einfacher und billiger.
Im Zweifelsfall würd ich da, wie Du vorgeschlagen hast, ein fertiges MiDi USB Kabel verwenden.
Wenn ich mir den Umfang deines Projekts so anschaue würde ich persönlich zu einem ATMEGA 64 tendieren.
Wenn Dir bei MEGA 32 die Ports ausgehen kannst Du da schon wieder einiges umstricken. Immerhin 5* A/D, 12*Tasten, 8*Display, 4*LED, 2*SPI.
Damit hast Du dann schon 32 I/O Ports verbraten. Damit dürfte ein MEGA 32 schon voll sein!
Beim MEGA 64 hast Du immer noch die Möglichkeit auf einen MEGA 128 oder gleich einen MEGA 256 umzurüsten, wenn der Speicher nicht reicht.
Ich würd mir für den MEGA 64 ein Adapterboard basteln auf dem auch gleich eine ISP Schnittstelle sitzt. Wenn Du dich dann auf eine Rastergröße eines Steckbretts festlegst kannst Du damit schon sehr viel probieren.
Wenn dann die Ports immer noch nicht reichen, kannst Du auch gleich auf einen ATMEGA 2580 ( TFQP100 ) hochrüsten ;) ;) ;)
Das hätte noch den Vorteil das man zwei drei Reserveplatinen löten könnte und ein schneller wechsel möglich wäre --> modularer AufbauZitat:
Bei so vielen Tastern würde sich eine Matrixansteuerung anbieten.
Also die Taster in Reihen und Spalten anordnen ( Schaltungstechnisch ) und die dann Abfragen.
Das dürfte Dich etwa 12Ports kosten.
4 für die Spaltenansteuerung und 8 als Feedbackleitung direkt zum Controller.
Die Schieberegister wären aber immer noch eine Option und würden die Möglichkeit eröffnen die Tastaturplatinen zu Blöcken mit jeweils 8 Tasten und einem Schieberegister aufzuteilen. Das wären dann 9 gleiche Platinen.
Freestyler hat MIDI, das ist nicht das Problem. Ich kann jede Note frei einer Funktion zuweisen.
Auf das Matrixprinzip werde ich auf jeden Fall zurückgreifen, sonst wird das ein haufen Ports verbraten.
Als Display wird maximal ein 4x20 Dotmatrix reinkommen, eher kleiner. Da wird natürlich auf den Preis geschaut und cool aussehn sollte es natürlich auch ein bissl ;)
Dann werd ich wohl doch auf einen ATmega 64 umsteigen. Dadurch wird auch das Display weniger kritisch. Das Pollinboard hat einen ISP Anschluss damit bräuchte ich nur einen Pinadapter. Ich denk der ATmega wirds mir danken wenn ich da einen LIF Sockel nehm. Alledings sind die größeren ATmegas nicht im DIL Gehäuse erhältlich was das löten wieder sehr interessant machen dürfte.
Ich seh schon ich hab mir da einiges vorgenommen baer man wächst ja bekanntlich mit seinen Aufgaben.
...das dachte ich anfangs auch immer.Zitat:
Alledings sind die größeren ATmegas nicht im DIL Gehäuse erhältlich was das löten wieder sehr interessant machen dürfte.
Lötstation, dünnes Lot ( 0,3...0,5 ) Flussmitteldispensor, Platine mit Lötstoplack, Lötsauglitze und SMD Pinzette heissen hier die Zauberworte.
So ein IC ist in 5 bis 10 min einzulöten.
Am längsten dauert da noch das genaue Positionieren der Pins.
Flussmittel drauf geben.
An 2 gegenüber liegenden Ecken anlöten.
Mit dem Lötkolben unter stetiger Zugabe von etwas Lötzinn an den 4 Seiten des IC mit dem Lötkolben entlangziehen.
Das Überschüssige Lot und die Brücken ( die dabei zwangsläufig entstehen ) mit Lötsauglitze absaugen. Mit der Lupe kontrollieren fertig.
Es ist mit geignetem Werkzeug wirklich so einfach!
Wird schon gehn irgendwie. Zur Not find ich bestimmt auch jemanden der mir sowas macht.
Betreibt hier jemand nen Platinenservice der bezahlbar ist?
Was den MiDi Merger angeht würde das die Erweiterung natürlich ziehmlich vereinfachen. Wenn ich viel konventionelles Licht hab brauch ich mehr Fader. Bei bewegtem Licht und LEDs sind wieder mehr Taster am Start.