Hallo,
ich möchte Messdaten vom M90E32AS Energy Metering IC auslesen. Welcher
Mikrocontroller wäre dafür geeignet? Worauf muss ich achten?
Im Datenblatt und in der Application Note finde ich keine empfohlenen
Mikrocontroller für das IC.
Ich habe noch mangelhafte Erfahrung auf dem Gebiet und hoffe, dass
jemand mir die entscheidenden Eckdaten nennen kann.
Bisher habe ich nur Erfahrungen mit einem Atmega88 gemacht.
Das Datenblatt und die Application Note hänge ich an.
Grüße
Kommunikation erfolgt offenbar über "Four-wire SPI interface". Damit
eignet sich praktisch jeder Mikrocontroller, denn SPI ist of in HW
vorhanden und recht einfach in Software gelöst.
Die ollen ATMEGA laufen nur auf 5 Volt mit voller Geschwindigkeit, der
M90E32AS verträgt aber nur 3,3 Volt. Wenn also die 10 MHz bei 3.3V
ausreichen, könnte man es mit dem Atmega88 versuchen.
Ein 4-wire SPI habe ich auch schon mit dem Atmega gelöst, mit 2 Slaves.
Dazu müsste hier im Forum auch noch etwas sein.
Ich frage mich allerdings ob die SPI Schnittstelle die einzige Hürde
ist. Schließlich wird auf dem Demo-Board von Atmel ein ARM Prozessor
Atmel SAM4C verwendet.
Ich plane eine Ausgabe über ein Display, welchs über Taster navigiert
werden soll. Ein geeignetes LCD muss ich auch noch finden. Dies ist auch
noch Neuland für mich.
Wenn für das Auslesen der Register und anschließende Ausgabe über ein
Display ein ATmega reichen würde, wäre das fantastisch. Ich würde
eventuell auch zu einem aktuelleren Atmega greifen. Die Sprache bleibt
ja die selbe, nehme ich an.
ich bin inzwischen etwas weiter gekommen...
ich habe mich für einen ATmega324A entschieden, da dieser über genügend
I/O ports verfügt. das display soll ein DOGM204 mit I2C sein.
Nun zu meiner Frage. Würde es reichen, wenn ich meinen Mikrocontroller
mit 3,3V versorge? Dadurch verfügt er nicht mehr über die vollen 20MHz
Taktrate(stattdessen etwa 12,5MHz). Welche Taktrate sollte ich
mindestens verwenden, um Register vom M90E32AS auszulesen und am Display
auszugeben?
Meinem Verständnis nach werden die Messwerte in den Registern mit etwa
3Hz aktualisiert. (Seite 16 im Datenblatt des M90E32AS)
Du solltest tunlichst einen Isolator oder Optokoppler in die
SPI-Schnittstelle einbauen. Empfehlung:
http://www.silabs.com/Support%20Documents/TechnicalDocs/Si86xx.pdf
Eine Isolationsfestigkeit vom mindestens 2500V ist vorgeschrieben, und
Du solltest Isolationsabstände von minimal 7.62mm einhalten.
Da der Isolationsbaustein sowohl mit 3.3 als auch 5V läuft, kannst Du
auf der uC-Seite auf ruhig 5V verwenden.
Ansonsten: Wenn es unbedingt AVR sein soll, greife doch zu einem XMega.
Da hast Du das Problem nicht.
fchk
Die Isolation übernimmt der ISO7641 von TI. Aber danke für den Ratschlag
bezüglich der Isolation von der SPI-Schnittstelle. Den mega324A nehme
ich, weil ich ihn schon da habe. Da ich erst ein Projekt mit einem
Mikrocontroller gemacht habe, fehlt mir noch einiges Verständnis, das
ich aber gerne dazugewinnen möchte.
Ich habe ja gewisse Anforderungen an mein Projekt. Jedoch weiß ich nicht
welche Kriterien dabei zwingend erforderlich sind. Meine Birne ist auch
schon weich von den ganzen Datenblättern, die ich gelesen habe.
Ich stelle mir die Frage mit welcher Taktfrequenz mein Mikrocontroller
mindestens arbeiten muss, um sowohl das Auslesen der Register vom
M90E32AS und anschließendes Ausgeben auf mein Dotmatrix LCD zu
bewerkstelligen.
Könnte mir da jemand etwas Licht ins Dunkel führen. Das gute in diesem
Forum ist ja, dass hier viele User mit Know-How durch die Foren
geistern. Ich habe hier schon viel Hilfestellung durch nutzen der
Suchfunktion erhalten.
Ist das eine private Bastelei, eine Hausaufgabe/Studiumsprojekt, oder
sollen davon später Stückzahlen hergestellt werden? Davon hängen einige
Entscheidungen ab.
Einen Chip allein deswegen zu nehmen, weil man ihn gerade da hat, ist
keine gute Strategie - das kann später einiges an Mehrarbeit
verursachen. Zumal ein AVR ja maximal wenige Euro kostet und auch
anderweitig verwendbar wäre.
Deine Frage nach der minimalen Taktfrequenz ist nicht so einfach zu
beantworten. Da kann eine zunächst unscheinbar aussehende
Gleitkommaberechnung plötzlich die ganze Kalkulation durcheinander
werfen. Normalerweise nimmt man die maximale Rechenleistung, die man zu
einem bestimmten Euro- und Stromaufnahme-Budget bekommt, nimmt die
Variante mit dem meisten Speicher, baut das erste Muster und schaut
dann, was man tatsächlich braucht und ob man eine billigere Variante
einsetzen kann.
Wenn Du keine Massenproduktion Deines Produktes anstrebst, ist es
sinnlos, hier zu optimieren. Nimm die maximale Rechenleistung, die Du
bekommen kannst. Erfahrungsgemäß kommt später immer noch wieder etwas
hinzu. Überlege Dir, warum Atmel dem Chip einen Cortex M4 zur Seite
stellt. Der ist nämlich nicht teurer als ein größerer AVR, obwohl er
Faktor 100 leistungsfähiger ist. Du bezahlst nämlich nicht die
Rechenleistung, sondern in erster Näherung die mm^2 Chipfläche und das
Gehäuse.
Aus diesem Grund habe ich mich von AVR verabschiedet. Ich bekomme bei
PIC24/dsPIC33/PIC32 mehr Wumms und viel bessere Peripherie zum annähernd
gleichen Preis. Ich arbeite gerade an einem ähnlichen Projekt, aber nur
einphasig. Als Controller sitzt ein PIC24FJ64GA002 (32 MHz) mit auf dem
Board, und wenn der nicht reicht, gibt es pinkompatible dsPIC33EP mit
140 MHz internem Takt. Ich habe also genügend Luft nach oben.
fchk
Danke für die ausführliche Beschreibung. Es ist ein Studienprojekt und
soll somit nicht in Stückzahlen hergestellt werden. Vielmehr geht es
darum zu lernen, die richtigen Bauteile zu wählen und den Prototypen
anschließend in Betrieb zu nehmen. Sehr wohl habe ich mir Gedanken
gemacht, warum Atmel wohl einen Cortex verwendet. Mein Betreuer meinte
aber, dass es nicht zwingend etwas zu bedeuten habe. Wie du schon
sagtest...
Ich habe das Datenblatt des M90E32AS gelesen und versucht mir eine
Vorstellung zu machen wie dieser Chip arbeitet. Strom und Spannung
werden über kalibrierte A/D Wandler über die Zeit gemessen und die
restlichen Parameter für Leistung etc. werden vom Chip berechnet. Meiner
Ansicht nach muss der Controller also nur die Messwerte auslesen. Und
Auslesen von Registern habe ich in meinem vorherigen Projekt mit einen
mega88 gemacht. Deshalb würde ich gerne bei AVR bleiben, da ich die
Entwicklungsumgebung zumindest kennengelernt habe. Ein ARM Prozessor
würde den Rahmen dieses Projekts schon sprengen, da ich diese Familie
noch nicht kennengelernt habe. Für die Zukunft würde ich natürlich
gerne ARM Prozessoren verwenden, da mir die Vorteile dieser Familie
bewusst sind.
Ich hoffe es ist nachvollziehbar...
Deswegen habe ich ja XMega vorgeschlagen. Zum einen ist die Architektur
des Prozessorkerns gleich, und damit auch der Compiler. Du brauchst nur
einen Debugger, der PDI kann. Zum anderen ist der Chip komplett in 3.3V
Technologie gefertigt und eben mal doppelt so schnell, und und auch die
Peripherieeinheiten sind besser.
Konkret empfehle ich Dir einen XMega64A4U. Der ist sicher groß genug für
Deine Zwecke. Der XMega64A4 ohne U ist fehlerbehaftet (das war die erste
XMega-Familie), nimm die U-Version, auch wenn Du USB gar nicht brauchst.
Alternativ XMega32E5. In einem kommerziellen Projekt würde man später
schauen, ob es nicht auch der XMega16A4U tun würde. Das entfällt bei
Dir.
Zum Preis: Bei Farnell kostet ein Mega324p 5.05€, ein ATXMEGA64A4U-AU
aber nur 3.46€, beide im TQFP44. Du wärst doch schön blöd, wenn du den
teureren, aber schlechteren nehmen würdest, oder? Und wie würdest Du das
vor Deinem zukünftigen Chef verargumentieren? Oder jetzt Deinem
Betreuer.
Von der Leistung her: Ich verwende einen Cirrus CS5490, weil der klein
(SO16) und billig ist. Der gibt aber seine Werte als Festkommawert von 0
bis 1.0 bzw -1.0 bis +1.0 heraus, so dass man die realen Werte per
Skalierungsfaktoren etc ermitteln muss. Also ganz so einfach ist das
hier nicht.
fchk
Peter Ullrich schrieb:> Meinem Verständnis nach werden die Messwerte in den Registern mit etwa> 3Hz aktualisiert. (Seite 16 im Datenblatt des M90E32AS)
genau,
da es für die Ausgabe auf dem Display reicht maximal 1x pro Sekunde neue
Werte auszugeben währe der AVR selbst mit 1MHz noch schnell genug.
Sascha
Sascha Weber schrieb:> Peter Ullrich schrieb:>> Meinem Verständnis nach werden die Messwerte in den Registern mit etwa>> 3Hz aktualisiert. (Seite 16 im Datenblatt des M90E32AS)> genau,> da es für die Ausgabe auf dem Display reicht maximal 1x pro Sekunde neue> Werte auszugeben währe der AVR selbst mit 1MHz noch schnell genug.>> Sascha
So sehe ich das nämlich auch. Dann würde es völlig ausreichen, wenn ich
meinen Controller mit 3,3V und somit 11,0592 MHz betreiben würde.
Dadurch spare ich mir die Pegelwandlung des I2C Bus...
Du sollst lernen, wie man Bauteile auswählt, und das in Deiner
Ausarbeitung auch dokumentieren. Der Xmega ist auch ein 3.3V Chip und
billiger.
Und für später: kein DIL. Kein THT (Through Hole Technology, also Loch
ins Board, Pin durch und auf der anderen Seite festlöten). Hierzulande
sind die Bestückungskosten bei SMD viel viel geringer - bedrahtete
Bauelemente müssen oft per Hand nachbestückt werden. Außerdem zahlst Du
für die Plattinenfläche und hast daher ein Interesse daran, dass Dein
Board so klein wie möglich ist.
Ausnahmen sind große Bauteile wie Elkos und Steckverbinder etc, wo eine
mechanische Stabilität gefordert wird.
Das darfst Du jetzt auch gleich in die Tat umsetzen. Du lernst nicht für
die Uni, sondern fürs Leben.
fchk