Forum: Mikrocontroller und Digitale Elektronik Welchen Controller verwenden


von Ampfing (Gast)


Lesenswert?

Hallo zusammen,

ich bin auf der Suche nach einem passenden Microcontroller.
Er soll folgende Merkmale besitzen:
- 32 I/O-Pins
- serielle Schnittstelle (die beiden Pins zählen nicht zu den 32!)

Ich habe bisher sowohl 8051 als auch AVR's programmiert, bin da also
nicht festgelegt - sind von den Befehlen her ja eh fast gleich, wenn
man C nimmt.

Zu der seriellen Schnittstelle hätte ich noch ne Frage: Die
RS232-Schnittstelle von PC's arbeitet ja - laut verschiedener
Homepages - mit +-12 V. Muss ich die dann erstmal noch transformieren,
bevor ich die Signale an den µC gebe (wahrscheinlich schon)?
Ach ja, bisher hab ich eigentlich immer irgendwelche StarterKits oder
ähnliches gehabt, wo man sich einfach per Kabel aufgesteckt hatte zum
Programmieren des Controllers. Das möchte ich diesesmal nicht, da ich
mehr als einen Controller brauchen werde. Hat jemand (zum
entsprechenden Controller) Vorschläge für Programmierschaltungen?

Vielen Dank schonmal im voraus fürs lesen und viele Grüße

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Für die serielle Schnittstelle brauchst du einen Pegelwandler (keinen
Transformator...).
Auf www.atmel.com gibt es einen "parametric table", den man
wunderschön nach den gesuchten Parametern sortieren kann.
Um es gleich vorwegzunehmen: Benutze einen Baudratenquarz (das sind die
mit den "komischen" "ungerade" Frequenzen)!
Das verhindert eine Menge Unanehmlichkeiten, auch wenn es ein paar
Leute gibt, die keine Probleme damit haben, den internen RC-Oszillator
zu benutzen.

Vorschlag wäre ein Mega16 oder 32 (40Pins; DIP-Gehäuse verfügbar).

von Wolfgang (Gast)


Lesenswert?

Hallo,

"Für die serielle Schnittstelle brauchst du einen Pegelwandler (keinen
Transformator...)."

wenn ich etwas ausfühlicher werden darf:

die Mikrocontroller haben einen Spannungspegel an den Ports, wie eben
ihre Spannungsversorgung ist. Also z.B. 5V bei high und 0V bei low.

Bei der RS232 Übertragung werden aber ca. +10V und -10V für die
Übertragung auf dem Bus benutzt. Damit wird das ganze störsicherer.
Zudem wird das Signal invertiert.

Delhalb brauchst Du einen RS232-Baustein (z.B. ST232), der aus 0V ->
+10V und aus 5V -> -10V für den Bus generiert. am anderen Ende sitzt
dann wieder ein RS232-Treiber, der aus +10V -> 0V und aus -10V -> 5V
macht. Dieses Signal benutzt dann z.B. der PC intern. Der PC hatden
RS232-Treiber aber integriert, so daß auf dieser Seite nicht zusätzlich
gemacht werden muß.

Gruß

Wolfgang
--
www.ibweinmann.de

von Ampfing (Gast)


Lesenswert?

Hallo ihr zwei,

danke für die Antworten.
Okay, wegen der RS232 Geschichte schau ich nochmal.
Nochmal kurz zum Mega16 (bzw. 32): Da steht maximal 32 I/O-Ports. Im
Datenblatt sind dann zwei Pins davon für TX und RX belegt (das ist doch
die serielle Schnittstelle, oder). Damit fallen die Beiden aber leider
für mich aus, da ich wirklich 32 Ports für E/A brauche...

Aber ich werd morgen nochmal schauen in der Liste.

Viele Grüße

von JojoS (Gast)


Lesenswert?

es gibt noch die 'aufgemotzten' mega32: ATMega3250 und ATMega329. Die
haben insgesamt 68 bzw. 53 I/O Leitungen (alle I/O's inklusive).
Kosten bei www.csd-electronics.de ca. 6 Euro.

von Ampfing (Gast)


Lesenswert?

Alles klar, danke für den Tipp.
Dann mach ich mich mal auf die Suche nach Programmierschaltungen.

Viele Grüße

von Tobias (Gast)


Lesenswert?

> Dann mach ich mich mal auf die Suche nach
> Programmierschaltungen.

Schau mal im Tutorial hier auf der Seite, da wirst du schnell fündig.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>da ich wirklich 32 Ports für E/A brauche...

Wofür? 32Tasten? 32 LEDs?

In der Regel kann man das mit einer gewissen Menge Periferie
(Schieberegister o.ä) erschlagen.

von Ampfing (Gast)


Lesenswert?

Guten Morgen :-)

@Tobias:
Danke für den Tipp, der Programmer für 15,90 hört sich ned schlecht an.
Aber dazu hätte ich gleich noch ne Verständnisfrage:
Wenn ich so einen Programmer habe, muss ich den dann tatsächlich
einfach nur mit den entsprechenden Pins (des ISP-Interfaces) des µC
verbinden, oder braucht der Controller nicht auch eine Art Programm,
damit er weiß, wie er mit den Daten, die er von dem Programmer bekommt,
umgehen soll? Das habe ich - trotz mehrfachem lesens verschiedener
Artikel - immer noch nicht so ganz verstanden ehrlich gesagt. Oder ist
es so, dass der Controller (wenn er InSystemProgramming unterstützt)
bei negativem Reset in einen Modus geht, wo der Programmer dann in den
Speicher des Controllers schreiben kann?

@inoffizieller WM-Rahul:
Folgende Situation: Wir haben hier Generatoren, die über eine optische
Schnittstelle (LightBus der Firma Beckhoff) angesprochen werden. Das
Steuerprogramm läuft auf DOS. Jetzt soll dieses Programm auf Windows
2000 portiert werden. Das Problem ist, dass Beckhoff zwar Karten für
Windows 2000 zur Verfügung stellt, aber um diese zu verwenden braucht
man erstens einen extra Treiber (den man zusätzlich zur Karte kaufen
muss) und zweitens geht das dann nur über deren Software - was
natürlich auch nicht ganz unser Anliegen ist.
In den Generatoren sitzen Wandler von LightBus nach I/O. Und diese
haben eben 16 Ein- und 16 Ausgänge. Jetzt war unsere Idee, dass wir
diese Wandler ausbauen und stattdessen einen Microcontroller einbauen,
der vom PC aus per serieller Schnittstelle angesprochen wird. Das hätte
weiterhin den Vorteil, dass man dann ein Programm für alte und neue (die
haben schon ein serielles Interface) Generatoren hätte, das die gleichen
Befehle sendet, unabhängig davon, ob alte oder neue Generatoren
verwendet werden.
Das heißt, der Controller macht dann sozusagen die Umsetzung von
seriell nach I/O. Und genau deshalb brauche ich auch 32 Pins. Natürlich
könnte man z.B. Decoder an weniger Pins am Controller anschließen, aber
1. bräuchte man die Decoder dann erstmal und 2. hat dann der Controller
nicht die Möglichkeit mehrere Pins gleichzeitig zu beeinflussen, wenn
diese am gleichen Decoder hängen.
Oder hab ich da nen Denkfehler drin?

Danke schonmal für eure Antworten und viele Grüße

von Peter D. (peda)


Lesenswert?

Wenn Du 34 IOs brauchst, da gibts einige von Atmel:

AT89C51CC01
AT89C51ID2

Der Vorteil ist, wenn Du sowieso ne UART ranstöpselst, kannst Du die
darüber auch programmieren (interner Bootloader).

Ein Programmiergerät ist völlig überflüssig !


RS-232 Pegelkonverter sind MAX202 usw.


Peter

von Hannes L. (hannes)


Lesenswert?

Ein Mega8515 im (für Jeden benutzbaren) DIL40-Gehäuse sollte geeignet
sein. Die 2 Portpins, die die serielle Schnittstelle von PortD
blockiert, können durch 2 (der 3 vorhandenen) Portpins von PortE
ausgeglichen werden.

Da UART (serielle Schnittstelle) im Spiel ist, sollte grundsätzlich
auch ein baudratentauglicher Quarz verwendet werden, z.B. 3,6864 MHz.

Dann wird ein Pegelwandler für RS232 benötigt (MAX232 oder dessen
Plagiate).

Die Software dürfte auch kein Problem sein, denn ich vermute mal, dass
man mit seriellen Telegrammen Bits an den 16 binären Ausgängen
setzt/löscht und die 16 binären Eingänge einliest.

...

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Laut Beckhoff hat der Lightbus 2,5MBit/s...
Oder sehe ich jetzt die falsche Anwendungsseite?

von Peter D. (peda)


Lesenswert?

"hat dann der Controller nicht die Möglichkeit mehrere Pins
gleichzeitig zu beeinflussen, wenn diese am gleichen Decoder hängen."


Kann der Controller auch nicht. Er kann nur byteweise zugreifen, d.h.
nacheinander die Port setzen und damit hast Du einige µs Verzögerung.

Wenn Gleichzeitigkeit gefordert ist, empfehle ich die 74HC595 als
Porterweiterung. Da werden mit dem Registerclock alle Ausgänge exakt
gleichzeitig gesetzt (~1ns genau).


Peter

von Ampfing (Gast)


Lesenswert?

Hallo zusammen,

@PeDa
Der Tipp mit den C51er war gut. Wenn ich das richtig verstanden habe
(wenn nicht korrigiert mich bitte), brauche ich nur vor dem Reset den
EA-Pin auf high ziehen und PSEN auf low, damit ich den Controller
programmieren kann.
Aber wie verbinde ich die Leitungen vom PC? Einfach nur RX-PC mit TX-µC
und umgekehrt (okay, vorher Pegelwandler, is klar)?

HanneS:
Danke, werd ihn mir auch mal anschauen (warum muss es nur so viele
verschiedene Versionen geben!?)

@inoffizieller WM-Rahul
Richtig. Aber nachdem wir uns dann (mit dem Controller) komplett vom
LightBus verabschieden brauchen wir darauf ja keine Rücksicht nehmen.
Für die Steuerung der Generatoren brauchen wir keine 2,5 Mb

@Peter
Naja, zumindest 8 Pins kann ich doch wirklich zeitgleich ansprechen,
oder? Das würde mir reichen.

Und noch an alle: bitte entschuldigt die vielen Fragen, ist das erste
Mal, dass ich kein Starter-Paket nehme und sehr viel habe ich mit denen
auch noch nicht gemacht.

Vielen Dank für die Antworten und viele Grüße

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Wenn sowieso auf ein anderes System umgebaut werden soll, sollte man
vielleicht auch gleich überlegen, ob man dem ganzen Spaß nicht noch ein
"aktuelles" Interface verpasst. Ich könnte mir vorstellen, dass eine
(industrial) Ethernet-Schnittstelle praktisch wäre. Oder ist die
Schnittstelle nur für den Service notwendig?

von Ampfing (Gast)


Lesenswert?

Hallo inoffizieller WM-Rahul,

die Schnittstelle ist nicht für den Service gedacht, sondern um die
Generatoren anzusteuern.
Dazu sollte ich vielleicht sagen, dass das keine Generatoren in
Kraftwerken sind, sondern Prüfgeneratoren für Blitzschutzprüfungen.
Sprich, der Generator kriegt vom Rechner den Befehl "lade eine
Spannung von 10 kV". Das macht der Generator und wartet anschließend,
bis er die Testfreigabe vom Rechner bekommt (die Elektronik, die hinter
dem Laden usw. steht ist schon vorhanden).
Warum wir auf die serielle Schnittstelle umstellen ist ganz einfach:
1. Das Beckhoff-System ist nicht praktikabel
2. Die neuen Generatoren haben schon eine serielle Schnittstelle
(irgendwann hat wohl der Hersteller der Generatoren wohl gemerkt, dass
LightBus nicht so toll ist...)
3. Wir haben hier einen Wandler seriell->optisch, den man relativ
günstig nachbauen kann. Ist für uns wichtig, dass der Rechner vor
eventuell auftretenden Überspannungen geschützt ist (deswegen eben
optisch entkoppelt)

Viele Grüße

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.