Hallo! Ich bin leider ein ziemlicher Anfänger in Sachen Mikrocontroller und hoffe hier etwas Einstiegshilfe zu finden. Für ein kleines Projekt brauche ich einen möglichst preisgünstigen µC, der aber auch sehr verlässlich (Ausfallsicherheit sehr wichtig!) ist. Das will ich mit dem µC machen: *Werte von maximal 12 Eingänge mit 4-20 mA einlesen *LC Display ansteuern *7-8 Relais ansteuern Danke für Tips und Hilfe! Grüße Hans
Was heißt Werte einlesen. Pegelzustände also Logisch 1 und 0 oder willst du Spannungswerte von 0 bis 5 Volt digitalisieren, dann brauchst du AD Wandler Eingänge LCDsist nicht das Problem, kannst du mit jedem Chip. Relais kannst du über Transistoren ansteuern.
Ich will die Werte von 4-20mA digitalisieren. Gibt es irgendwo eine Seite, wo man alle µC im Überblick hat, damit man sich den gewünschten auswählen kann? Außerdem müßte der µC mit integrierten EEPROM sein, damit ich dort Werte reinschreiben kann, die man nach einem Spannungsausfall wieder einlesen kann.
Um die 4-20mA zu digitalisieren, brauchst du zuerst einmal einen Strom-Spannungswandler. Danach einfach auf einen ADC-Eingang vom µC. WElche Auflösung soll den der AD-Wandler haben? Reichen 10bit? Ich benutze PICs und empfehle dir mal bei Microchip(www.microchip.com) nachzuschauen. Es gibt in der PIC18F-Serie µC die besitzen bis zu 12 AD-Wandler(10Bit), haben einige IO-Pins(fürs LCD und für die Relais,welche über Transistoren angesteuert werden müssen) und haben auch noch ein internes EEPROM. Programmierne kannst du diese in C, ASM und noch ein paar anderen Sprachen :-) Programmer gibts auch einfache und billige zum selber bauen. Und Infos,Tutorials und Libs usw. gibts auch massig im Netz :-) Atmel bietet auch sicherlich einen Chip, der all diesen Anforderungen entspricht, jedoch benutze ich diese nicht und kenne dadurch die Palette der AVRs nicht. Aber einfach einmal auf der HP von Atmel nachschauen www.atmel.com In sachen Programmierung und Programmer und den Infos gilt das selbe wie für die PICs: es gibt massenweise Information im Internet. Ich hoffe ich konnte helfen. mfg Schoasch
Hallo, danke für deine Hilfe Beim A/D sollten 10 bit auf alle Fälle reichen. Der Preis des Programmers spielt eigentlich keine Rolle, weiß nicht ob ich die Zeit zum selbst basteln haben werde. Wie schaut es mit der Ausfallsicherheit bei den µC aus? Gibt es da spezielle beständigere Produkte? Ich hätte gerne einen µC der lange läuft und wenn er sich mal aufhängt, dann solte er auch ohne zutun zum Laufen anfangen. Deshalb will ich manche Messwerte in einem EEPROM zwischenspeichern. Was muss ich bei der Speichergröße beachten? (LCD, Mittelwertberechnung mit 100 Werten pro Eingang und ein paar kleine Abfragen). Ist es einfacher, wenn ich einen 16bit µC nehme? Danke nochmals für eure Bemühungen! Grüße Hans
Ausfallsicherheit? Wenn kein Strom da ist, laufen sie nicht. Es gibt verschiedene Mechanismen (watchdog, brown-out-detection), die die Ausfallsicherheit erhöhen (sollen). In erster Linie liegt es aber wohl an der Software, wie zuverlässig Mikrocontroller sind. 16 Bit hat nichts (naja, fast nichts) mit der Speichergrösse zutun, sondern mit der Geschwindigkeit. 12 Eingänge mit 100 Werten erfordert 2400 Byte. Man könnte auch kontinuierlich einen Mittelwert bilden, was weniger Speicherbedarf bedeutet. LCD und die Relais sind nicht das Problem. Ein Strom-Spannungs-Wandler ist doch auch ein einfacher ohmscher Widerstand...
Das ganze sollte mit einem 8Bit auch kein Problem sein. Welche Abtastrate brauchst du? Die PICs (wie auch die AVRs.. damit ich etwas Unparteiischer bleibe) habe einen Watchdog. dH. Wenn du per Software nicht ein gewisses Flag zurücksetzt, in einem gewissen Zeitraum, dann macht der Watchdog einen Reset und der µC startet neu. Ausfallsicherheit?! Die PICs die bei mir in meine Geräten laufen, laufen noch immer ohne irgendwelchen Zwischenfall ;-). Sie sind in der Autoindustrie beheimatet(sagen wir mal so), was auf Störsicherheit schließen lässt oder nicht? Vom speicher her habe ich nicht nachgerechnet. Ich hab jetzt mal so bei Microchip nachgesehen und hätte da den PIC18F6722 gesehen. Der hat ein Ram von 3936Byte, Flash von 128kByte und ein EEPROM mit 1024Byte. Den PIC-Programmer gibts zb hier im Shop um 10Euro. Wie siehts mit dem Gehäuse aus? DIP oder SMD? Und wie schnell soll das ganze denn sein?
Hallo, hier noch einige Atmel Controller zur Auswahl: http://www.atmel.com/dyn/products/param_table.asp?family_id=607&subcat_id=&OrderBy=1265&Direction=DESC# Es grüsst, Arno
Danke für eure Antworten und die Hilfe! Die Messwerte würde ich gerne jede sec aktualisiern und dann abwechselnd am LCD ausgeben. Den EEPROM würde ich zur Sicherung der Mittelwerte bei Spannungsausfall, jede Minute beschreiben. Die Bauform ist eigentlich egal, naja ganz widerum auch nicht, auf alle Fälle will ich den µC zum leichten Austausch mit einem Sockel versehen. SMD fällt dann ja weg. Da das Programm ja wegen der Ausfallsicherheit "gut" sein soll, ist es besser in ASM oder C zu programmieren? Kann ich zur Kontrolld der Ausfallsicherheit ins EEPROM schreiben, wie oft der µC abgestürzt ist (in einem Programmteil der nur einmalig beim Neustart ausgeführt wird). Grüße Hans
Ob ASM oder C ist egal, was die Ausfallsicherheit angeht. Es kommt mehr drauf an, wie man diese Werkzeuge benutzt. Sowohl mit Hammer, wie mit Zange kann man sich verletzten, wenn man nicht weiß, was man tut. EEProm kannst du verwenden, um Ausfälle/Neustarts zu protokollieren. Ebenso kannst du dir mal den Watchdog anschauen, den fast alle Controller haben. Ich würde erstmal mit einem Super-Klein Programm anfangen, um Erfahrungen zu sammeln. Wenn man das, was du vor hast sauber lösen will, sollte man schon 1 Jahr Programmiererfahrung haben.
Danke für den Ratschlag. Wie schaut es nun aber mit der Geschwindigkeit aus (siehe oben). Grüße Hans
Was du da machen willst, ist des mit 8Bit AVR-Prozessoren von der Geschwindigkeit überhaupt kein Problem. 10 Millionen Befehle pro Sekunde sollten reichen... Assembler und C sind sehr effizient, wenn du aber mit Basic rangehst, wirst du oft Timingprobleme haben, wenn zeitkritische Sachen programmieren willst.
Die Werte für die Mittelwertberechnung müssen bei Spannungsausfall nicht erhalten bleiben, es ist wahrscheinlich einfacher sie nur im RAM zu speichern. Der Programmieraufwand wird dadurch einfacher, wenn ich nur Ausfälle, Neustarts im EEPROM protokolliere, oder nicht? Zur Speichergröße habe ich allerdings noch eine Frage. Bei 12 Eingängen, die mit 10 bit digitalisiert werden, will ich pro Eingang die letzten 60 gemessenen Werte im RAM speichern. Stimmt es also, dass ich einen RAM mit der Größe von 1440 Byte benötige? Ist es am einfachsten wenn ich einem µC mit 12 A/D wandler habe, oder ist ein Multiplexor besser?
Welcher µC hat denn 12 A/D-Wandler? Die AVRs und PICs haben einen einzigen ADC und einen vorgeschalteten Kanal-Multiplexer. Die größeren Controller der Familien haben z.T. auch mehr als 8 Kanäle, ansonsten nen 4067 oder so vorschalten. Die Wandlungsgeschwindigkeit sollte auch kein Problem darstellen. Wenns wirklich 12 Kanäle sein sollen, kannste (zumindest bei AVR, mit PIC kenn ich mich nicht aus) bei geschickter Wahl des Oszillators und geschickter Konfig gut 1000 Messwerte pro Kanal und Sekunde einlesen. Zum Speichern des Wandlungsergebnisses brauchste nen Integer (2 Bytes). Macht bei 12 Kanälen und 60 Werten 1440 Bytes... Gruß Johnny
"Kann ich zur Kontrolld der Ausfallsicherheit ins EEPROM schreiben, wie oft der µC abgestürzt ist" Du kannst (zumindest bei den AVR's - bei PIC's weiss ich es nicht) nach einen Reset feststellen, was den Reset ausgelöst hat (Watchdog, Brown-out, External, Power-on) (Register MCUCSR) Wenn Du doch lieber ein paar mehr Werte ins EEPROM schreiben willst ist es auch kein größeres (technisches) Problem, ein externes EEPROM (Seriell, I2C, SPI - z.B. 32Kx8, I2C, 8 Pin, <2) anzuschließen.
Danke vielmals für eure Tips. Im Moment hab ich den AVR "ATMEGA32-16AU" ins Auge gefasst. Der µC hat 8 Kanäle für den A/D wandler, ich müsste also einen Multiplexer vorschalten. Ich habe 12 Fühler, die jede Sekunde nur einmal abgetastet werden sollen. Ist dazu nun ein 8 Kanal Multiplexer oder ein 16 Kanal Multiplexer besser (einfacher bei der Programmierung,...)? Der 32 kByte Flash Programmspeicher sollte für LCD, Mittelwertberechnung, Ansteuerung von ca. 10 Relais, Protokolle im EEPROM wohl mehr als reichen (werd mit C programmieren). Grüße Hans
Am Rande: Ich weiß nicht welche Sensoren Du verwendest und wie genau die Ergebnisse sein müssen. ADCs mit 10 Bit Auflösung mögen für viele Anwendungen ausreichen, für einge Anwendungen reichen die internen ADCs der µPs nicht mehr aus. Sei es, weil das Eingangssignal nicht volle 5V beträgt, der Eingang bipolar messen muß (0 Wert bei 12mA +/-8mA) oder die gelieferten 10 Bit nicht genau genug sind (externe ADCs liefern bessere Genauigkeit). Unter Umständen muß man dann auf 12 Bit gehen, um 'echte' 10 Bit zu erhalten. Aber dies nur am Rande.
10 bit ist schon mehr als ausreichend, damit dürfte es also keine Probleme geben. Aber welchen Multiplexer soll ich besser einstezen (siehe vorheriger Beitrag)? Grüße Hans
Als Multiplexer würde ich den 74HC4051 nehmen und den Ausgang an ADC0 vom µP legen, die weiteren Eingänge an ADC1-ADC4 (müßte 12 Kanäle geben). Die Programmierung ist simpel; wichtiger ist hingegen, eine Schutzbeschaltung an den '4051- und µP-Eingängen. Einfachste Lösung ist ein 1k Widerstand in Reihe (12 Stück), damit bei Überspannung der Strom begrenzt wird.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.