-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: 58 I/O Pins --> Porterweiterung --> welchen uC?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    21.03.2008
    Ort
    Liestal
    Alter
    33
    Beiträge
    17

    58 I/O Pins --> Porterweiterung --> welchen uC?

    Anzeige

    Hallo Leute

    Da ich noch nicht so viel Erfahrung habe in Sache Elektronik / Mikrocontroller, wollte ich hier kurz mein Projekt vorstellen und hören, was die Profis darüber denken.

    Ich habe einen alten MIDI-Controller ausgegraben. Da ich keine Betriebsanleitung dafür habe und der Controller wirre (nicht nachvollzierbare) MIDI Messages ausspuckt, will ich die Elektronik ersetzen (-> neuer Mikrocontroller einbauen mit eigener Software). Das Gehäuse mit den Knöpfen, Potis soll natürlich bestehen bleiben.

    Gegeben sind: 27 Druckknöpfe, 5 Drehregler, 15 LEDs und zwei 8-Segment Anzeigen. Ergibt 58 digitale I/O Pins und 5 analoge Eingänge. All das soll mit dem Mikrocontroller verbunden werden.

    Nach einer Recherche habe ich bei mikrocontroller.net (http://www.mikrocontroller.net/artic...chieberegister) gelesen, dass man mit Schieberegistern den Mikrocontroller mit weiteren Ausgangs- und Eingangspins erweitern kann.

    Frage: welchen AVR Mikrocontroller würdet ihr nehmen? Ich habe bis jetzt nur mit dem ATmega32 Erfahrungen und würde auch gerne in dieser Produktlinie bleiben.

    Ich dachte am Mega8 mit 4 Porterweiterungen für die Ausgänge (74HC595D) und 3 Porterweiterung für die Eingänge (74LS165D). Kann es zu Performanceproblemen kommen, wenn ich so viele Porterweiterungen habe?

    Im Attachment ist noch ein Bild vom Gerät.

    Danke für Rückmeldungen
    Lieber Gruss Frédéric
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken midictrl.jpg  

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die LEDs und 8 Segment Anzeigen könnte man wahrscheinlich als Matrix mit relativ wenigen Pins Betreiben. Als Matrix 8 x 4 bräuchte man da zum Beispiel 12 IO Pins und ggf. ein paar Treiber für mehr Strom.

    Mit ein Paar Dioden (eine je Taster) kann man auch die Taster/Schalter als Matirx abfragen. Für die 27 taster würden da 5+6 IO Pins reichen. Man kann dabei sogar noch die Pins für die LEDs und Taster gemeinsam nutzen. Dann brächte man nur 4 extra Pins für die Taster.

    Es könnte also sogar reichen alles direkt von einem Mega32 anzusteuern, ganz ohne Porterweiterung, oder einen 2 ten Controller. Von der Rechenzeit, sollte man mit vielleicht 1-5% der Rechenzeit fürs Abfragen der Eingänge und Steuern der LEDs auskommen.


    Wenn man die Schieberegister am Hardware SPI Port hat, geht das ziehmlich schnell im Vergleich zu den nötigen eher geringen Geschwindigkeiten. Es ginge also auch mit den Porterweiterungen.

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    38
    Beiträge
    642
    Guten Abend,

    ich selber würde dafür I2C Port expander wählen(PCF8574), zumindest für die digitalen Signale. Die 8(?) Segment Anzeigen kann man am einfachsten Multiplexen, z.B 4051. Die kann man auch zum Umschalten der Analogen Signale verwenden. Somit müsstest du also was die Port Pins betrifft mit einem MEGA8 hinkommen, was die Speicherkapazität angeht bin ich mir da nicht sicher, da ich nicht weis was der Controller zusätzlich noch machen muss.

    MfG

    Neutro
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Zum Multiplexen der LEDs / 7 Seg braucht man kein IC, das geht einfach als Diodenmatrix. Der 4051 würde einem da nur sehr wenig helfen (3 statt 4 Pins). Solange man mit den Pins am µC direkt auskommt, würde ich auf Portexpander wenn möglich verzichten, dafür ruhig einen größeren µC.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    375
    Den mega32 hat sowohl SPI wie I2C. Beide moglichkeiten stehen offen. Bei SPI geht das auch sehr schnell : meine mega32 lauft an 16 MHz, den hardware SPI lauf an 8 MHz. Die porterweiterung 74HC595 (Ausgange !!)brauchen nur 3 Anschlusse : SCK, MOSI, STROBE. Diese konnen dan auch nochmal in serien gesetzt werden. Wie langer die serie, wie mehr bytes da jeden mal durch der SPI port mussen. Aber an 8 MHz geht das noch verdammt schnell !!!

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    42
    Beiträge
    849
    So, hab nachdem der gesamte Threat den Gulli hinutengieng aufgrund mangelndem Login keine Lust mehr das ganze nocheinmal zu schreiben. Schreib mich einfach an, PN kennst ja, meine Mail ist ja auch nicht unbekannt.

    Grüße Wolfgang

    P.S. Bin auch ein Musikus der alten Schule, und kenne das MIDI-Protokoll in und auswendig. Denke ich kann dir da zu einem funktionellen Source unter die Arme greifen.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    42
    Beiträge
    849
    Servus,

    ...neuer Tag, neues Glück, hab die Schaltung noch einmal gezeichnet und als Grafik hinterlegt.

    http://wiesolator.gotdns.org/rn/Midi..._Schaltung.PNG

    So in der Art ist ein Anschaltung deiner MIDI-Controller-Einheit einfach an einem ATMEGA32 möglich mitsamt der MIDI-Schnittstellen und was man so in etwa noch dazu braucht. Prinzipiell besteht es aus 4 LED-Gruppen zu je acht LED's (zwei 7-Segment-Anzeigen und rote 15 LED's). Diese werden einfach reihum so schnell softseitig gemultiplext das nichts mehr flimmert.
    Dann kommen noch die Taster, diese sind als Matrix über den eh schon gemultiplexten Anzeigeteil gelegt. Damit kannst mit dem Anzeige ausgeben auch gleich auf einen Rutsch die Taster mitlesen.
    Den ULN2803 habe ich genommen, weil er recht kompakt gleich 8 Transistoren in einem Gehäuse hat, das reicht genau die je 8 angesteuerten Segmente als Treiberbaustein. Kannst natürlich auch diskret mit einem 2k2-Widerstand und einem BC547C aufbauen.
    Die UART brauchst für die spezielle Baudrate der MIDI-Schnittstelle, hoffe der Schaltungsteil funktioniert so, hatte es noch so im Kopf. Mußt du eben nochmal testen.

    Die als "Reserve" gezeichneten Leitungen kannst du für weitere Controller-Kaskadierungen verwenden, oder wenn du sie nicht brauchst ist es ideal den MIDI-Kanal damit festzuelgen auf den der MIDI-Controller nacher horchen bzw. Senden soll (reichen 4-Bit als DIP-Schalter).

    Hier noch ein Link zu Informationen für den MIDI-Standard (brauchst zum Protokoll coden nach deinen Wünschen)
    http://de.wikipedia.org/wiki/Musical...ital_Interface
    http://www.midi.org/techspecs/midimessages.php

    Grüße Wolfgang

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    21.03.2008
    Ort
    Liestal
    Alter
    33
    Beiträge
    17
    Wow, soviel Hilfe! Vielen vielen Dank Leute!!

    Ich hatte bis jetzt noch nie was von Dioden-Matrizen gehört. Ist aber hier wohl die einfachste Lösung.

    Die Schaltung von BlueNature sieht ganz gut aus. Danke.

    Ich habe aber noch ein paar Fragen:
    1. Wie funktioniert genau der ULN2803?
    2. Die BC327 verstärken nur das Signal, oder?
    3. Ich habe irgendwo gelesen, dass externe Pullups Strom sparen. Ist das richtig?
    4. Was für einen Quarz würdet ihr nehmen? Reichen 4Mhz? Die Software macht nichts anderes als Tasten abfragen und bei Tastendruck ein Paar Bytes durch den UART schicken.

    Dann ist mir noch eine Idee in den Sinn gekommen. Ist es schwierig / aufwändig zusätzlich noch eine USB-Schnittstelle einzubauen, um die MIDI Messages direkt zum Computer zu schicken? Optimal müsste man mit USB auch Zugriff auf das EEProm des uC haben (für die Konfiguration der Knöpfe). Und dann eventuell sogar auch den nötigen Strom fürs Gerät liefern.
    Die USB Schnittstelle würde ich aber erst in einem zweiten Schritt einbauen. Die Frage ist, ob ich jetzt schon Vorkehrungen treffen muss, damit ich später nicht alles wieder herauslöten muss. Im Prinzip sollte ich nach dem Schaltplan von BlueNature genügende Reseve Pins haben, oder?

    @BlueNature
    Ich habe an einem (selbstgebastelten) Controllerboard erfolgreich MIDI Befehle hin und her geschickt. Die Software ist recht primitiv, aber es funktioniert. Wenn es für dich OK ist, würde ich dir meinen Code schicken. Mit deiner Erfahrung kannst du vieleicht sagen, ob es was taugt oder nicht. Ich würde es aber erst dann schicken, wenn ich mich wieder mit der Software beschäftigen werde.

    Gruss Frederic

  9. #9
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Schaltung von BlueNature sieht schon ganz gut aus. Die Spule bei AVCC sollte hier kaum nötig sein, das sollte auch ohne gehen, schaden tut sie aber kaum. Statt des 74ALS00 würde, glaube ich auch eine 74HC00 oder HCT00 reichen.

    Der UL2803 ist ein recht einfaches Treiber IC für mehr Strom für die LEDs. Da sind 8 NPN Darlingtontransistoren mit Basiswiderständen drin.

    Die BC327 dienen als Schalter für einen etwas höheren Strom, von bis zu 8 LEDs. Je nach Typ der 7 Segmentanzeigen, müßte man hier auch noch was ändern und andere Treiber wählen. Wenn die LEDs genügend hell sind, auch mit etwa 5 mA, könnte man auf einen Teil der Treiber sogar verzichten.

    Den Quarz sollte man passend zur Baudrate bei Midi wählen, damit man auch die richtige Baudrate einstellen kann. Bei 4 Mhz muß das nicht unbedingt gehen. Sonst würden 4 MHz aber wohl ausreichen.

    Externe Pullups sparen normalerweise keinen Strom, und wenn dann nur sehr wenig, wenn die externen pullups hochohmiger sind als die internen. Gegen den Strom der ganzen LEDs fällt das kaum ins Gewicht. Was man vermeiden sollte sind offene digitale Eigänge. Bei mittleren Spannungspegeln brauchen viele Ics (auch die µCs) etwas mehr Strom, als bei einem gut definierten H oder L Pegel.

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    42
    Beiträge
    849
    Servus Frederic,

    von einem USB-Treiber kann ich dir nur abraten. Das wird nicht so leicht. USB/MIDI-Adpater bekommst im China-Preissegment nachgeschmissen mitsamt Treibern.
    Als Versorgung kannst es vieleicht nehmen. Die 5V werden aber auch nicht sauber sein, da die Schaltung auch schon etliches an Strom für die LED's aufnehmen wird, und die 5V nie saubere 5V in der Schaltung bringen werden. Wenn Du es aber trotzdem über USB versorgen willst, würde ich dir dringend raten die AREF auf eine kleinere Referenz zu legen, sowie auch die Potentiometer (zwischen AGND und AREF incl. interne AREF von ca. 2,5V).

    @Besserwessi
    Den ULN2803 (oder funktionsgleiches Teil) würde ich auf keinen Fall weglassen. Die Leitungen führen im schlechtesten Fall den Hauptstrom aller 4 Segmente über die gesamte Dauer und das packt der AVR nicht. Seine "Hardware" besteht ja bereits und ist sicher nicht Low-Current.
    Die Spule kann man auf jeden Fall im Layout vorsehen, für den Fall das es zu Komplikationen (permanenten Wertesprüngen) kommt, hat das auf MIDI einen bösen Nebeneffekt. Es werden permanent Controller-Messages generiert, und die MIDI-Verbindung unsinnig mit irrelevanten Datenpacketen belastet.
    Den LS-Typen der Treiberschaltung (für die MIDI-Stromschleife) und den Optokoppler würde ich nicht wild durch andere ersetzen versuchen. Ich hatte mit diesen Bausteinen die besten Resultate.
    Zur Baudrate und den MHz... im Grunde sollen technisch um die MHz locker reichen bei sauberem Coding (meiner Ansicht sollte es sogar schon um die 1MHz locker machbar sein, aber was schadet es den AVR höher anzutakten, er kann ja bis 16MHz). Das ist etwas relativ einfaches. Das MIDI-Protokoll fährt keine hohen Baudraten. Der Standard stammt ursprüglich noch aus einem Normungs-Gremium das um 1981 entstand, und den Wildwuchs der Kommunikation einfach einmal auf einen klaren Nenner bringen sollte.

    Grüße Wolfgang

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •