Pages: [1] 2   Go Down
Author Topic: Midi Controller 27 Potis Problem  (Read 1011 times)
0 Members and 1 Guest are viewing this topic.
Berlin
Offline Offline
Jr. Member
**
Karma: 0
Posts: 62
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen,

ich baue mir gerade eine Schaltung zusammen um mit dem Arduino Mega die Software Traktor Scratch Pro zu steuern. Ich hab nun folgendes Problem, die insgesamt 38 Taster kann ich ja problemlos über die I/Os des Mega schalten. Wie sieht's denn aber mit den insgesamt 27 ( 22 Dreh und 5 Schiebe ) Potentiometer aus, der Mega hat ja leider nur 16 analoge Eingänge. Komm ich hier mit Multiplexing weiter ? Wenn ja wie geht das ? An was sollte / muss ich mich orientieren ?

Hoffe mir kann jemand helfen.

PS : Das Projekt wird von mir fleisig dokumentiert und dann ins Netz gestellt.

Beste Grüße

« Last Edit: October 19, 2013, 06:58:08 pm by DonQuijote » Logged

Offline Offline
Faraday Member
**
Karma: 104
Posts: 3613
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Einen 32-Bit Multiplexer kannst du aus vier 74HC4051 8-Bit Analog-Multiplexern und einem 74HC139 1-aus-4 Decoder (für die Enable Eingänge) basteln. Benötigt 5 I/Os für die Adressierung.
Logged

Berlin
Offline Offline
Jr. Member
**
Karma: 0
Posts: 62
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Serenifly,,

Zunächst vielen dank. Wenn mir jetzt jemand noch hilft, wobei ich darauf achten muss und wie es mit der Porgrammierung aussieht wäre ich sehr sehr dankbar, wenn es sich um die Digi I/Os handelt, muss ich ja die PWM Ports benutzen.

PS: gibt's hierzu eventuell auch einen passenden Shield ? Nur um eventuelle die Wahl zu haben.

Grüsse
« Last Edit: October 20, 2013, 02:35:44 am by DonQuijote » Logged

DE
Offline Offline
God Member
*****
Karma: 20
Posts: 705
| Germany | NRW |
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich würde einfach einen 2. ARDUINO nehmen und die beiden verbinden  smiley-lol
Logged

Dum spiro, spero - if you find my posting helpful, please click my Karma smiley
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Do you know A.R.T

D-49565 Bramsche
Offline Offline
Sr. Member
****
Karma: 6
Posts: 477
Geht nich ? Gipp's nich !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ein entsprechendes Shield wirst du so fertig sicherlich nicht bekommen - da ist schon ein wenig Bastelei angesagt. Aber das sind ja nur 5 Käfer ....
Den 74HC139 brauchst du nicht zwingend - geht auch ohne. Du benötigst dann aber 7 digitale Ausgänge.

Mit PWM hast du da nix am Hut, oder willst du für irgendwas eine Spannung generieren ?
Die 4 Ausgänge der 4051 hängst du an 4 analoge Eingänge.
Die S0-S2 kommen parallel an 3 digitale Ausgänge, die vier /E einzeln an 4 digitale Ausgänge.
Je nach dem, welchen /E-Eingang du nun auf Masse ziehst, ist dieser Multiplexer aktiv.
Und je nach dem die die Eingänge S0-S2 nun gesteuert werden, der entsprechende Eingang des aktivierten IC's an dessen Ausgang geschaltet.
Nun nur noch den entsprechenden Analog-Wert lesen - fettich.

Hier gibts ein PDF des 74HC4051:
http://www.nxp.com/documents/data_sheet/74HC_HCT4051.pdf
Auf Seite 5 findest du eine Logiktabelle, wie die Steuereinänge zu beschalten sind.
« Last Edit: October 20, 2013, 04:53:29 am by TERWI » Logged

To young to die - never to old for rock'n roll

Offline Offline
Faraday Member
**
Karma: 104
Posts: 3613
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 @DonQuijote
Wenn du am Ende deiner Pins bist kannst auch die Analog-Pins als digitale I/Os verwenden, z.B. digitalWrite(A5, HIGH);


Zur Adressierung kannst du dir mal direkte Port-Manipulation anschauen:
http://www.arduino.cc/en/Reference/PortManipulation
http://www.pighixxx.com/pgdev/Temp/ArduinoMega_b.png

Damit kannst die die ganzen Adress-Pins mit einem Befehl setzen. Es geht auch mit digitalWrite, aber das wird dann sehr unleserlich.
Dazu solltest du aber mit Boolescher Algebra vertraut sein. Und, Oder und Bit-Shift Operationen. Wie genau das aussehen muss hängt davon ob an welchen Pins die Adress-Leitungen hängen und ob an dem entsprechendem Port noch andere Leitungen angeschlossen sind.


Es würde auch reichen den Multiplexer nur mit 3 ICs für 24 Bit aufzubauen und die andere 3 Potis direkt an den ADC anzuschließen.

Für den Aufbau als Shield kannst du dir mal das Prototype Shield anschauen. 3 ICs sollten da drauf gehen. Vielleicht sogar 4. Oder gleich eins in Mega-Größe nehmen:
http://www.ebay.de/itm/New-Prototype-Shield-ProtoShield-V3-Mini-Bread-Board-For-Arduino-MEGA-A1-/221295073327?pt=LH_DefaultDomain_186&hash=item338636d82f


Quote from: TERWI
Die 4 Ausgänge der 4051 hängst du an 4 analoge Eingänge.
Man könnte die Ausgänge auch zusammenhängen und auf einen Eingang legen. Dann muss man aber tunlichst aufpassen, dass immer nur ein MUX aktiviert ist! Das kann man nur garantieren wenn man den 1-aus-4 Decoder verwendet. Daher das bei direkter Beschaltung der Enable-Eingänge nicht machen und für jeden MUX einen eigenen Analog-Eingang verwenden.

Es gibt auch noch ein andere Variante mit einem weiteren MUX um die Ausgänge auszuwählen, aber das hat bei nur 4 Ausgängen keinen Vorteil.
« Last Edit: October 20, 2013, 11:25:11 am by Serenifly » Logged

Offline Offline
Faraday Member
**
Karma: 104
Posts: 3613
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hier wäre noch ne halbwegs fertige Alternative:
http://www.exp-tech.de/Shields/Analog-Digital-MUX-Breakout-BOB-09056.html

Kein Shield aber ein fertiges 16-Bit Breakout Board. Davon bräuchte man dann 2.

Der darauf verbaute 74HC4067 ist auch ne Alternative zu den 4051 wenn man es selbst bauen will. Gibt es nämlich auch in DIP-24.

Und es gibt doch ein fertiges Shield aber mit 24€ ist dann IMO unverhältnismäßig teuer:
http://www.exp-tech.de/Shields/Mux-Shield-II.html
Logged

Berlin
Offline Offline
Jr. Member
**
Karma: 0
Posts: 62
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke euch allen für die viele Tips!

@ Serenifly, das MUX Shield 2 ist sicher ein wenig zu teuer wenn man sich anschaut was die Teile so kosten. Aber ohnehin würde es mit ihm ja nicht funktionieren oder ? Da ich insgesamt ( 38 Taster + 22 Drehpotis und 5 Schiebpotis = 65 Eingänge brauche ) und das Shield aber leider nur 48 bietet oder liege ich da irgendwie falsch ?

Logged

D-49565 Bramsche
Offline Offline
Sr. Member
****
Karma: 6
Posts: 477
Geht nich ? Gipp's nich !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

....  oder liege ich da irgendwie falsch ?
Ein kleines bischen.  smiley-grin
Wenn ich das Schaltbild dazu http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/Mux_Shield_II_Rev0%20Schematic.pdf richtig interpretiert habehast du 3x I/O zu 16 Kanälen.
Darauf kannst du seriell digital schreiben und analog lesen. Gesamt also 48 analoge Eingänge oder digitale Ausgänge.
Dafür würdest du komplett ca. 20 Pins am Arduino brauchen - wenn du lesen und schreiben willst.
Wenn du nur analog-In brauchst, eben auch weniger. Wie ogen gesagt für 48 A-In 7 Leitungen.

Der andere Vorschlag mit dem 16-1 Analog Board für nur die Erfassung deiner Potis wäre nicht zwingend sinniger - bräuchtest du da aber 4 Stück a 4,57 sind fast der gleiche Preis.
Da ist alles auf einem Board schon praktischer - allein wegen Montage und verkabelei.
Logged

To young to die - never to old for rock'n roll

Offline Offline
Faraday Member
**
Karma: 104
Posts: 3613
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, bisher war mir nicht klar, dass die du Taster auch so einlesen willst. Das ist aber gar nicht nötig.

Das einfachste sind PCF8574 I2C Port-Expander. Auch hier 8 Bit pro IC. Und über nur zwei Leitungen auslesbar:
http://www.reichelt.de/index.html?ACTION=3;ARTICLE=14527;SEARCH=PCF%208574%20P

Oder MCP23017 in 16 Bit (ist aber intern komplizierter mit dem Auslesen):
http://www.ebay.de/itm/1-Stk-I2C-16-bit-E-A-Expander-MCP23017-E-SP-im-PDIP-28-Gehause-/271195978629?pt=Bauteile&hash=item3f248a3b85

Als Breakout Board mit einem anderen IC auch in 16 Bit verfügbar:
http://www.exp-tech.de/Shields/SX1509-16-Output-I-O-Expander-Breakout.html

Mit 16 I/Os und die Tasten als Matrix angeordnet, hast du 8*8 = 64 Tasten. Das Breakout Board ist mit 10 Euro vielleicht auch etwas teurer, aber es enthält auch schon die Lib für die Matrix. Der Chip enthält das schon direkt und es wird nicht über die Lib gemacht. Man kann das aber auch selbst für den PCF programmieren.


Mit 2 MUX Breakouts und dem Port Expander Breakout bist du auch bei 20 Euro (oder du sucht ob die es woanders billiger bekommst), aber du brauchst wesentlich weniger Pins zum ansteuern. Dafür auch wieder etwas umständlicher zum Einbauen. Oder du baust es selbst  wenn du die Zeit hast. 2 * 74HC4067 + 2 * PCF8574 geht auch auf eine Platine und kosten dich vielleicht 5 Euro. Der PCF8574 als Matrix ist nicht ganz trivial zum programmieren. Oder du packst 5 Port Expander darauf. Dann kannst du die alle einzeln einlesen.


Alternative:
Widerstandsnetzwerke und mehrere Taster analog lesen. Man kann 6-10 Taster an einen Analog-Eingang hängen. Das ist aber letztendlich aufwendiger, da du recht viele Widerstände brauchst.
« Last Edit: October 21, 2013, 09:00:58 am by Serenifly » Logged

D-49565 Bramsche
Offline Offline
Sr. Member
****
Karma: 6
Posts: 477
Geht nich ? Gipp's nich !
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Er sprach doch davon, dass er die Taster über die digitalen IOs abfragen will (reicht bei 38 Stück) - nur die 27 analogen machen ihm Sorgen.
Also käme er 2x mit diesem Board http://www.exp-tech.de/Shields/Analog-Digital-MUX-Breakout-BOB-09056.html locker aus.
Nicht 3x wie ich sagte ....
Die benötigten 7 Pins kann er über die analogen Eingänge fahren.
Logged

To young to die - never to old for rock'n roll

Offline Offline
Faraday Member
**
Karma: 104
Posts: 3613
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich war etwas verwirrt, weil er unten dann davon schrieb die digitalen Eingänge auch zu multiplexen smiley

Aber digital direkt zu machen und nur analog über Multiplexer ist sicherlich erst mal das einfachste. Kann man später immer noch anders machen wenn nötig. Die Tasten als Matrix anordnen und direkt am Mega auslesen kann man auch machen. Dafür geht dann sogar die Standard Keypad Lib smiley
« Last Edit: October 21, 2013, 09:07:41 am by Serenifly » Logged

Berlin
Offline Offline
Jr. Member
**
Karma: 0
Posts: 62
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@TERWI

und @Serinifly

Vielen Dank für eure Hilfe. Perfekt sowas habe ich gesucht und der Preis passt ja auch. Stimmt ich mache mir nur sorgen wegen den Analogen Eingängen, das sollte aber jetzt behoben sein wenn ich mir 2 solcher schicken Boards kaufe oder ?

Beste Grüße
Logged

Offline Offline
Faraday Member
**
Karma: 104
Posts: 3613
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja, zwei davon verschaffen dir 32 Analog-Eingänge auf Kosten von 2 Analog-Eingängen am Arduino und 6 Ausgängen (4 Adress-Leitungen, 2 Enable) - nicht 7 (das war für die 4051, wo man 3 mal Adresse und 4 mal Enable bräuchte).

EDIT:
Wobei man die Enable Eingänge gar nicht unbedingt schalten muss wenn man sowieso die Ausgänge der Multiplexer auf getrennte ADC-Eingänge legt. Könnte man auch fest auf Masse legen. Die Multiplexer wählt man dass an aus indem man einfach den entsprechend Analog-Eingang liest.
« Last Edit: October 21, 2013, 03:47:16 pm by Serenifly » Logged

DE
Offline Offline
God Member
*****
Karma: 20
Posts: 705
| Germany | NRW |
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Hallo,

ich würde einfach einen 2. ARDUINO nehmen und die beiden verbinden  smiley-lol
Immer noch meine Meinung - kost genau so wenig und ist letztendlich doch flexibler einzusetzen.
Klar, Bastelspass kommt da nicht auf  smiley-cool
Logged

Dum spiro, spero - if you find my posting helpful, please click my Karma smiley
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Do you know A.R.T

Pages: [1] 2   Go Up
Jump to: