µC - aber welchen

Hallo zusammen,

ich stehe mal wieder vor der schweren Entscheidung einen µC auswählen zu müssen und kann mich einfach nicht entscheiden.

Folgende Aufgaben müssen bewältigt werden:

8 x AD - Wandlung
22 LEDs ansteuern
34 Taster abfragen
RS232 Schnittstelle

In der Summe sind das also 8 AD und ca. 56 I/O plus die RS232

Multiplex kommt nicht in Frage…ich brauche so viele I/Os
Der Speicherbedarf für das zu implementierende Prog ist nicht sehr gross.

Welche Vorschläge habt Ihr.
Ich persönlich kann mir viele Lösungen vorstellen. Momentan überlege ich mir sogar di LC - Variante mit einem PIC…hätte den Vorteil, das man die LEDs direkt mit den Ausgängen treiben kann. Es wären dan evtl. zwei PIC16F77. Der externe Schaltungsaufwand wär eben sehr gering und billig wärs auch noch.

Wie gesagt, meinungen dazu sind sehr erwünscht.

Vielen Dank schonmal im Voraus.

Gruss Tobi

Hallo Tobi,

was heisst, Multiplex kommt nicht in Frage? Man braucht nur 1 zusätzliches IC für Tasten und Leds, dafür 56 I/Os zu verbraten ist der reine Unsinn. Oder weisst du nur nicht, wie so etwas geht?

Mit einfachem Einlesen ist es übrigens sowieso nicht getan, weil ein Entprellen per Software in beiden Fällen nötig ist. Das erledigt man beim Multiplexen nebenher mit.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hallo.

wenn sich’s um ein einzelstück handelt, isses ja zunächst mal egal, ob du mit kanonen auf spatzen schießt. der preis spielt da ja in der regel keine große rolle.

8 x AD - Wandlung
22 LEDs ansteuern
34 Taster abfragen
RS232 Schnittstelle

In der Summe sind das also 8 AD und ca. 56 I/O plus die RS232

gibt’s. und wenn’s bei deiner applikation wirklich nur drum geht, irgendwelche werte zu kontrollieren bzw. deren abfrage zu konfigurieren, isses echt egal, welchen µc du nimmst.

Multiplex kommt nicht in Frage…ich brauche so viele I/Os

warum?
die analogeingänge sollten problemlos muxbar sein. oder brauchst du alle 8 synchron? dann wird’s erst recht schwierig, weil viele µcs nur eine adc-einheit haben und die kanäle selbst multiplexen.

leds zu multiplexen ist auch kein problem, wenn du’s schnell genug machst.

und warum willst du die taster einzeln abfragen? käme evtl. eine 7x5 matrix in frage? dann werden aus den 34 eingängen 7 ausgänge und fünf eingänge, oder umgekehrt.

Der Speicherbedarf für das zu implementierende Prog ist nicht
sehr gross.

ein grund mehr, einen kleinen prozessor zu wählen.

gruß

michael

Hallo!

Natürlich weiss ich wie multiplex geht und das entprellen ist auch kein Thema.

Das Multiplex war auch nur auf die Taster bezogen. Ad - Wandlung ist kein Problem.
Die Taster hätte ich gerne parallel, da man auch mehrere gleichzeitig erkennen soll. Also nicht nur zwei oder drei…im schlechtesten Fall sind es 8.

Die LEDs multiplexen wäre kein Problem. Die Sache ist nur die, das ich dafür gerne nen Treiberbaustein benutz hätte, der parallel adressierbar ist und die Werte in nem latch zwischenspeichert…gibt es auch alles. Der Hacken: Ich brau das Ding als High - side Treiber…hab bissher aber nur low - side gefunden.

‚Echtes‘ multiplex, also ohne Zwischenspeicherung, kommt nicht in Frage.

Ziel ist es einfach die Kosten und bauteilanzahl minimal zu halten. Deshalb auch die Überlegung mit den PICs.

Gruss, Tobi

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Tobi,

ich stehe mal wieder vor der schweren Entscheidung einen µC
auswählen zu müssen und kann mich einfach nicht entscheiden.

vielleicht findest Du hier:
http://microchip.com/stellent/idcplg?IdcService=SS_G…
was Du brauchst.
Wie man die Dinger anwendet (Speziell das Multiplexen), findest Du dann z.B. hier:
http://ww1.microchip.com/downloads/en/AppNotes/00557…

Folgende Aufgaben müssen bewältigt werden:
8 x AD - Wandlung

Ein Wandler, 8 Eingänge. Auflösung wäre auch noch interessant…

22 LEDs ansteuern

Multiplexen, notfalls je Reihe einen Transistor als ‚Nachbrenner‘ (siehe Application Note). Wenn man den vierfachen Strom durch die Dioden schickt, kann man sie ein Viertel der Zeit einschalten bei gleicher Helligkeit. Das Auge mittelt es aus.

34 Taster abfragen

Multiplexen. Mit Entkopplungsdioden in Reihe zu jedem Schalter kann man auch mehrere gleichzeitig drücken.
Wobei ich nicht verstehe, warum unbedingt 8 Tasten gleichzeitig gedrückt werden müssen.

RS232 Schnittstelle

Kann man damit auch machen. Ein Pegelwandler wäre aber notwendig (so wie bei den meisten anderen Prozessoren auch).
Aber warum nicht USB?

In der Summe sind das also 8 AD und ca. 56 I/O plus die RS232

Und Versorgung und Quarz und Referenzspannung…
Was für ein Gehäuse hast Du Dir denn vorgestellt?

Multiplex kommt nicht in Frage…ich brauche so viele I/Os

Aber sicher kannst Du das Multiplexen. S.O.

Der Speicherbedarf für das zu implementierende Prog ist nicht
sehr gross.

Was ist ‚nicht sehr groß‘ im Zeitalter des Gigabyte-RAM? 2KByte oder 1MByte?

Gruß
Axel

Hallo!

Natürlich weiss ich wie multiplex geht und das entprellen ist
auch kein Thema.

Hallo Tobi, kleine Ergänzungen:

  1. Taster direkt anzuschliessen macht nur Sinn, wenn sie alle direkt Interrupts auslösen sollen. Das wiederum ist aber für von Hand betätigte Tasten aus Zeitgründen völlig unsinnig.

  2. Man kann auch mit Multiplexern o.ä. Bausteinen multiplexen! Ein LS/HCT 245 liefert 8 zusätzliche Eingänge für 1 Steuerleitung. Gedanken darüber, was zwischen den Abfragen passiert, sind schlichte Denkfehler - auch bei Direktanschluss kennt das Programm den Pegel nur zum Zeitpunkt des Input-Befehls. In Wirklichkeit ist das eine Hardwareerweiterung, nicht ein echtes Multiplexen. Werden die Leds multiplexed, stehen die Steuerleitungen für die 245er sogar umsonst zur Verfügung.

  3. Hiside-Treiber gibt es natürlich, als reine Treiber haben sie am Anfang 29xx statt 28xx. So etwas wie ein HC374 täte es sicher auch, du brauchst ja keine Scheinwerfer.

Gruss Reinhard

USB?! - Wäre schön
Hallo Axel,

Zum USB: Das wäre natürlich toll. Hast Du damit Erfahrung? Ich war der Meinung das es ein relativ grosser Aufwand im Vergleich zu RS232 darstellt.
RS232 sind bei PICs z.B. nur zwei Befehle…und ich kann jeden I/O Pin verwenden. USB benötigt auch noch Treiber (PC Seitig).

Es sind 8 Taster, da es sich hier um ein Bedienpult handelt, bei dem eben im schlechtesten Falle alle 8 Kanäle gleichzeitig geschaltet werden.

Zur Grösse des Progs kann ich noch nichts sagen. Aber die paar Taster abfragen und die leds ansteuern dürfte wohl kein Problem sein.

Ich hab schon gemerkt: Ihr wollt mir hier die Multiplexgeschichte schmackhaft machen :smile: Vielleicht sollte ich wirklich nochmal drüber nachdenken. Bisher wollte ich eben die externe Beschaltung sehr gering halten. Dioden, zusätzliche Treiber etc. wollte ich eigentlich nicht.

Naja, mal sehen…

Gruss Tobi

Hallo Tobi

RS232 sind bei PICs z.B. nur zwei Befehle…und ich kann jeden
I/O Pin verwenden.

RS232 ist praktisch nur mit eingebautem UART möglich. (Alles andere vervielfacht die Entwicklung und die Probleme). Folglich kannst Du nur genau die zugehörigen I/O-Pins nehmen.

Es sind 8 Taster, da es sich hier um ein Bedienpult handelt,
bei dem eben im schlechtesten Falle alle 8 Kanäle gleichzeitig
geschaltet werden.

kein Problem beim Multiplexen

Ich hab schon gemerkt: Ihr wollt mir hier die
Multiplexgeschichte schmackhaft machen :smile: Vielleicht sollte
ich wirklich nochmal drüber nachdenken. Bisher wollte ich eben
die externe Beschaltung sehr gering halten. Dioden,
zusätzliche Treiber etc. wollte ich eigentlich nicht.

Das sind auch gute Argument. z.B. ein 18F8720 hat genügend Pins, ist aber mit fast 10 Euro sehr teuer. Andererseits beschränkt sich die Schaltung dann nur noch auf Pull-Ups bei den Tastern und Vorwiderstände bei den LEDs. Wenn Du evt. sogar schon einen ICD2 (Entwicklungs-In-Circuit-Debugger) hast, dann kannst Du für erste Tests die ganze Schaltung auch fliegend verdrahten und bist nicht auf eine funktionierende Hardware angewiesen. Also… es gibt auch gute Gründe für Deinen Weg, vor allem wenn Du nicht zigTausende Exemplare bauen willst.

Gruß
achim

80C517
Hallo,

z.B. der 80C517 (Infineon) ist ein 8051-Derivat
(also sehr gängige Architektur).
Der hat einen Haufen Ports und auch 12 AD-Kanäle mit 10Bit
sowie 2 RS232-Kanäle.

Allerdings wird der derzeit schon abgekündigt :frowning:
Es gibt aber noch andere in der Reihe 80C5xx .
Gruß Uwi

ich stehe mal wieder vor der schweren Entscheidung einen µC
auswählen zu müssen und kann mich einfach nicht entscheiden.

Folgende Aufgaben müssen bewältigt werden:

8 x AD - Wandlung
22 LEDs ansteuern
34 Taster abfragen
RS232 Schnittstelle

In der Summe sind das also 8 AD und ca. 56 I/O plus die RS232

Multiplex kommt nicht in Frage…ich brauche so viele I/Os
Der Speicherbedarf für das zu implementierende Prog ist nicht
sehr gross.

Welche Vorschläge habt Ihr.
Ich persönlich kann mir viele Lösungen vorstellen. Momentan
überlege ich mir sogar di LC - Variante mit einem PIC…hätte
den Vorteil, das man die LEDs direkt mit den Ausgängen
treiben kann. Es wären dan evtl. zwei PIC16F77. Der externe
Schaltungsaufwand wär eben sehr gering und billig wärs auch
noch.

Wie gesagt, meinungen dazu sind sehr erwünscht.

Vielen Dank schonmal im Voraus.

Gruss Tobi

Hallo Uwi,

danke für Deinen Vorschlag.
Bei Deiner Variante benötige ich aber noch Treiberbausteine. Bei 22 LEDs ist das je nach Methode ein relativ großer Bauteil / Kosten Aufwand. Wobei die Kosten echt nicht das Problem sind. Es ist wirklich nur ein Einzelstück.

Was ist Deine Meinung zum Thema PIC?

VG Tobi

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Tobi,

Bei Deiner Variante benötige ich aber noch Treiberbausteine.
Bei 22 LEDs ist das je nach Methode ein relativ großer Bauteil
/ Kosten Aufwand.

die ebenso einfache wie wirkungsvolle Methode, den Bauteilaufwand auf ein Minimum zu beschränken, heißt Multiplexen.

Wenigstens _einen_ Treiberbaustein brauchst Du sowieso. Du kannst nicht 22 LEDs direkt an den µC anschließen. Es stimmt zwar, daß die Pins vieler Controller 20 mA sinken können, aber es gibt darüberhinaus Beschränkungen für den Strom bzgl. Ports und bzgl. des ganzen Chips (Details siehe Datenblätter). 22 gleichzeitig anne LEDs = 440 mA. Das schafft kein Controller.

Wenn Du Deine unverständliche Multiplex-Abneigung überwindest, wirst Du damit belohnt, mit nur einem einzigen Treiberbaustein auszukommen. 24 LEDs kannst Du bestens 8x3-gemultiplext ansteuern (8 Zeilen, 3 Spalten). Ein 8-fach-Treiber-IC steht z. B. mit dem ULN2803 zur Verfügung (8 Eingänge TTL-Pegel, 8 Ausgänge max. 50V / 500mA, Gehäuse 18pol. PDIP). Das kannst Du direkt an einen als Ausgang geschalteten 8-Bit-Port Deines µCs hängen. Mit drei Transistoren BC338 o. ä. selektierst Du die Spalten. Fertig ist die LED-Geschichte.

Nun zu den Tasten. 32 der 34 Tasten ordnest Du in einer 8x4-Matrix an (8 Zeilen, 4 Spalten). Die 8 Zeilen werden mit dem LED-Ausgangs-Port von oben bedient. Die vier Spaltenleitungen gehen an vier als Eingang geschaltete IO-Pins.

Die beiden übrigen Taster gehen separat an zwei weitere IO-Pins.

Die RS232-Schnittstelle benötigt minimum zwei Pins (TxD, RxD). Wenn Du Handshaking machen willst, sollte das in der Bedarfsplanung mit zwei weiteren Pins berücksichtigt werden.

Somit haben wir folgende Bilanz:

8 Out-Pins gemeinsam für LEDs-Zeilen + Tastenmatrix-Zeilen
3 Out-Pins für die LEDs-Spalten-Select-Transistoren
4 In-Pins für die Tastenmatrix-Spalten
2 In-Pins für zwei Tasten
4 Pins für RS232

21 Pins total.

Nun noch zur Sache mit dem ADC. Leider schreibst Du nicht, was für Anforderungen an die Genauigkeit (wieviele Bits) gestellt werden. Wenn 10 Bit ausreichen, bietet sich an, einen µC mit integriertem ADC zu verwenden. Ansonsten mußt Du einen externen ADC-Baustein einsetzen, z. B. den LTC1290 (8 Kanäle, 12 Bit).

Ein µC, der alle Anforderungen erfüllt, wäre der ATmega8535 aus der AVR-Familie von ATMEL. Den gibts im 40pol-DIP-Gehäuse. Er verfügt über 8 KByte Flash-Memory, 512 Bytes SRAM, Hardware-UART und max. 32 IO-Pins, die ausreichen sollten (21 digitale + 8 für den ADC macht zusammen 29). Unter den vielen Mitgliedern der PIC-Familie solltest Du mindestens einen gleichwertigen Vertreter finden können.

ich stehe mal wieder vor der schweren Entscheidung einen µC
auswählen zu müssen und kann mich einfach nicht entscheiden.

Das hört sich so an, als ob Du schon Erfahrungen mit µCs hast, aber Deine Fragen lassen ehrlich gesagt eher darauf schließen, daß Du noch Anfänger bist.

Und nein: Bei Anordnung der Tasten in einer Tastenmatrix kannst Du selbstverständlich den Status jeder einzelnen Taste korrekt erfassen, unabhängig davon, wieviele gerade gleichzeitig niedergedrückt sind. Das beeinflußt sich nichts gegenseitig. Als Abfrageintervall für die Tasten reichen 20 ms – also 50 Abfragen pro Sekunde – völlig aus, ohne daß der Benutzer den Hauch einer Reaktionsverzögerung spürt. Die Multiplex-Frequenz für die LED’s muß jedoch um einiges höher sein, damit kein Flackern mehr erkennbar ist.

treiben kann. Es wären dan evtl. zwei PIC16F77. Der externe
Schaltungsaufwand wär eben sehr gering und billig wärs auch

Der Glaube, ein Problem am besten mit mehreren µCs lösen zu können, ist – sorry – typisches Anfängerdenken. Mach Dich davon frei. Mehrere µCs müssen notwendigerweise untereinander Daten austauschen, und auch, wenn Du meinst, daß das Protokoll ja „nur ganz einfach“ sein muß: vergiß es! Wie die Erfahrung lehrt, hat sich die praktische Umsetzung nämlich stets als „doch viel komplizierter als gedacht“ herausgestellt, und deshalb kann ich Dir bei diesem Weg jede Menge Frust prophezeihen. An Verdrahtungsaufwand würdest Du dabei letztlich garnichts sparen, dürftest Dich aber völlig unnötigerweise damit herumschlagen, ein Inter-µC-Kommunikationsprotokoll zu entwerfen, zu implementieren und solange zu testen, bis es auch funktioniert.

Die Erweiterung von Ports für den Fall, daß man mehr davon braucht, als ein µC zur Verfügung stellt, ist ein Standardproblem in der µC-Technik, für das es zuverlässige, bewährte Standard-Lösungen gibt, mit Multiplex-Verfahren an erster Stelle.

Gruß
Martin