Forum: Mikrocontroller und Digitale Elektronik Richtiger µc für meine Applikation


von Fritz (Gast)


Lesenswert?

Ich bin auf der Suche nach dem richtigen Mikrocontroller für meine 
Anwendung.

Leider bin ich bei Atmel nicht auf den passenden µc gestoßen und bei 
anderen Herstellern habe ich keine Erfahrungswerte, vielleicht könnt ihr 
mir helfen.


Spannungsversorgung 5Volt
Hardware Multiplier und Divider
15-20 I/Os
1-2 Uart ( der zweite wäre n1 wenns ein USB ist ( Host funktionalität 
wird nicht benötigt))
6 Timer ( 16-bit )
1-2 mal SPI
2-3 ADC ( mind 4 Kanäle pro ADC )
externe Interrupts ( idealerweise mit Prioritätenmanagement)

idealerweise noch Eeprom ( kann ich aber auch über Spi realisieren)

mfg Jan

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Für eine sinnvolle Antwort sind noch ein paar Fragen offen:
Was darf er denn kosten?
Willst du ein bestimmtes Gehäuse?

von Fritz (Gast)


Lesenswert?

Es ist für den Hobbybetrieb gedacht, daher ist der Preis eher 
zweitrangig sollte natürlich sagen wir mal 30 € nicht übersteigen.

Es sollte ein hobbymäßig lötbares Format sein. ( Die Pins außen nicht 
untendrunter). Stecksockel geht natürlich auch

p.s. er sollte nicht zu empfnindlich gegenüber Vibrationen sein.

mfg Jan

von Zack (Gast)


Lesenswert?

Auch, wenn Du meinem Rat mit Sicherheit nicht folgen wirst, nachfolgend 
die "Richtigen" für Dich:

SH7286 läuft mit 5V und ist sehr leistungsfähig oder
H8SX1668 läuft nur mit 3,3V hat dafür aber noch USB

Unter 30€ wird locker eingehalten, sofern Du mit dem Preis nicht Deine 
Gesamtkosten gemeint hast.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Wenn es 5V sein müssen dann kann ich nicht dienen. Aber bei 2..3,3V 
hätte ich da einen.

Der STM32F103xC-D-E (ab 256KB Flash) hat 3AD-Wandler (16CH) und 8 Timer, 
genügend UARTs, SPI und IIC.
Gibt es in verschiendene Gehäuse, Pins außen (nicht unten).
Schaue mal hier, Artikel: STM32

EEPROM muss extern sein oder man nutzt das Flash für Parameter die wenig 
ändern.

von Fritz (Gast)


Lesenswert?

>SH7286 läuft mit 5V und ist sehr leistungsfähig oder
>H8SX1668 läuft nur mit 3,3V hat dafür aber noch USB

Der Sh7286 hat doch auch USB ?

Leider gibts den bei Farnell nicht.

    * LQFP-176 (20mm x 20mm, 0.4mm pitch)
    * LQFP-176 (24mm x 24mm, 0.5mm pitch)

Und der ist dann pinmäßig doch etwas übertrieben für meine Anforderungen 
( 15-20 Pins ) ^^

5Volt sollten es schon sein, da ich noch peripherie habe die ich mit 
5Volt betreiben möchte.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ein SN74LVC8T245 (z.B. TI) könnte als Level-Shifter dienen. Ich weiß ja 
nicht wie viele Signale auf 5V bleiben sollten.
Der STM32 ist bei den meisten Eingängen 5V Tolerant.

Ansonsten wenn eine Galvanische Trennung nötig ist, kann ein ADUM1201 
verwendet werden, der kann 3,3 und 5V.

Ansonsten ein dsPIC30Fxxxx. Aber den kann ich nicht empfehlen, denn der 
Stromverbrauch ist enorm, der glüht wenn man ihn mit voller Leistung 
betreiben möchte. Ich habe damit schon gearbeitet, war nicht zufrieden 
(und hab ihn gegen einen STM32 getauscht).

Daher empfehle ich den STM32 mit einem Level-Shifter. Ist in jedem Fall 
etwas für die Zukunft. Der dsPIC30 wird nicht mehr weiter entwickelt.

von Zack (Gast)


Lesenswert?

>Der Sh7286 hat doch auch USB ?

Oh, da hast Du gut aufgepaßt :-)
Wenn Dich die vielen Pins stören, der SH7285 hat nur 144 und der SH7243 
nur noch 100. Den gibt es auch nicht bei Farnell, aber bei Distributoren 
von Renesas.

>Es ist für den Hobbybetrieb gedacht,

Damit scheiden die erwähnten Lieferanten aber aus.

von Olaf (Gast)


Lesenswert?

> 5Volt sollten es schon sein, da ich noch peripherie habe die ich mit
> 5Volt betreiben möchte.

Dann ist Renesas schonmal nicht schlecht. Selbst ein moderner R32 mit 
50Mhz und Fliesskommaeinheit kann noch mit 5V laufen. Allerdings wohl 
auch leicht uebertrieben fuer deine Beduerfnisse.

Schau doch mal was es an M16C gibt.
In der Mittelklasse benutze ich gerne den M16C29:

8x Timer
2x Uart syncron/async
1x Uart syncron/Async/I2c
2x SPI
1x Multimaster I2C

10Bit AD mit 27Kanaelen
2x DMA
CRC-Generator
64pin oder 80pin Gehaeuse.

Das Problem ist natuerlich wenn du mehr Rechenleistung willst, wie z.B 
im R32, so werden die vermutlich ueberall mehr Pinne haben. Wenn die 
Hersteller schon ein grosses Stueck Silizium brauchen dann machen sie 
halt rundrum alles voller Pinne. :-)
Es gibt auch welche mit integriertem USB. (M16C6C)

BTW: Hier im Markt-Forum hat jemand eine Rolle mit alten M16C62A 
(M30624FGAP) und verkauft sie preiswert. Der hat nur den Nachteil das er 
kein Interface zum E8 hat und nur ueber RS232 programmiert werden kann. 
Ansonsten aber auch ein toller Prozessor mit viel Ram. Es kann sich 
lohnen davon 10Stueck zu beschaffen. Layout fuer ein Testboard koennte 
ich zur Verfuegung stellen.

Olaf

von Tytus W. (tytus)


Lesenswert?

> Leider bin ich bei Atmel nicht auf den passenden µc gestoßen und bei
> anderen Herstellern habe ich keine Erfahrungswerte, vielleicht könnt ihr
> mir helfen.

Der ATMEGA1280 könnte passen. Ist zwar ein bisschen gross, erfült aber 
deine anforderung. Gibt es sogar auf einem Arduino Ev. Board.

http://de.farnell.com/multicomp/mc-mega/bord-atmega1280-mega-compatible/dp/1813413

oder

Sparkfun.com

Tytus

von Thomas K. (thkusch)


Lesenswert?

Den Megas fehlt aber der HW-Divider!

von Zack (Gast)


Lesenswert?

Den Megas fehlt auch der 2. oder 3. ADC. Ebenso eine 
Prioritätenzuteilung von Interrupts.

An diesem Punkt muß jetzt die Frage kommen: Wozu brauchst Du denn das
Alles?
Und dann werden die Anforderungen solange reduziert, bis ein ATtiny 45 
sowie ein paar Schieberegister und LEDs reichen :-)

Aber ernsthaft: für welche Hobbyanwendung braucht man die erfragten 
Eigenschaften?

von Olaf (Gast)


Lesenswert?

> Den Megas fehlt auch der 2. oder 3. ADC.

Das fehlt den M16C/R32 auch. Wenn ich ehrlich bin ich kann mich auch
nicht erinnern jemals einen Controller gesehen zu haben der mehr als
einen AD-Wandler hatte.

> Ebenso eine
> Prioritätenzuteilung von Interrupts.

Das allerdings koennen doch IMHO alle Controller ausser den ollen alten 
Atmels oder? Ist auch IMHO unverzichtbar.

> Wozu brauchst Du denn das Alles?

Bitte! Keine intelligente Fragen in Threads! Wo kommen wir denn da hin?

Olaf

von Zack (Gast)


Lesenswert?

>Bitte! Keine intelligente Fragen in Threads! Wo kommen wir denn da hin?

Entschuldigung! Du hast Recht, das geht mich nun wirklich nichts an.

von Fritz (Gast)


Lesenswert?

Ich wollte meine erste Variante meines Motorsteuergeräts neu aufsetzen, 
diese arbeitet im Moment mit 3V3. Für die IGBTs und den IC vom Knock 
interface wären aber eigentlich 5Volt besser daher die Frage. Ich denke 
es würde auch dem ADC der Gaspedalposition gut tun, den ich allerdings 
bis jetzt noch nicht integriert habe ( daher weiß ich es nicht).

mfg Jan

von Zack (Gast)


Lesenswert?

Welchen µC verwendest Du jetzt? (bleib ruhig, Olaf, sonst erzähl ich 
allen, welche Macken die M16 und R32 haben :-)
Hast Du Probleme wegen der 3,3V?
Der SH728x läuft gerade auch mit 5V, um die Störfestigkeit zu erhöhen.

von Olaf (Gast)


Lesenswert?

> Ich wollte meine erste Variante meines Motorsteuergeräts neu aufsetzen,
> diese arbeitet im Moment mit 3V3.

Glyn sagte mir das irgendein deutscher Autohersteller
den R32 verwendet. Allerdings wuerde ich den privat nicht empfehlen
weil es fuer die R32 keinen gcc gibt und man sonst die 64k Grenze hat.

> Ich denke
> es würde auch dem ADC der Gaspedalposition gut tun, den ich allerdings
> bis jetzt noch nicht integriert habe ( daher weiß ich es nicht).

Also fuer solche Aufgaben reicht doch mit Sicherheit immer ein 
eingebauter ADC. Es gibt doch am Automotor keinen analogen Messwert den 
du oefters als 100mal pro Sekunde brauchst. Da kann man dann doch wohl 
den eingebauten Wandler auf einen anderen Kanal umstellen.

Eine Frage die du unbedingt Stellen solltest ist aber nach dem 
Temperaturbereich. Du brauchst einen Controller der im Motorraum im 
Sommer und Winter ueberlebt!

> Welchen µC verwendest Du jetzt? (bleib ruhig, Olaf, sonst erzähl ich
> allen, welche Macken die M16 und R32 haben :-)

Ich arbeite nicht fuer Renesas und kann die Wahrheit gut vertragen. :-)
Also erzaehl mal ruhig.

R32 hat sicher die Macke das er alles kann und Dinge eingebaut sind die 
man niemals fuer moeglich haelt und das man deshalb leider oft lange im 
Datenblatt nach irgendeinen §$%§$%"$% Bit sucht das man auch noch setzen 
muss damit eine Funktion endlich laeuft. Ausserdem merkt man dem Teil an
das er wohl fuer wichtige Steuerungen wie z.B Motorsteuergeraete gedacht 
ist. Es gibt bergeweise Bits mit denen man Registerzugriffen 
freischalten muss damit ein ausserkontrolle laufendes Programm nicht zu 
viel zerstoert.
Im Gegenteil dazu merkt man den SH deutlich an das sie bereits eine 
lange Geschichte haben. Irgendwie gereifter, aber teilweise (z.B 
Taktgenerierung) sehr primitiv.

Der M16C hat unter dem gcc die bloede Macke das der gcc nur Pointer 
vom Type 16bit unterstuetzt und dies bei 24Bit Adressen leider zu einer 
Sprungtabelle im kostbaren Ram fuer jede Funktion fuehrt die man 
verwendet.

Sonst wueste ich jetzt aber nichts.

BTW: In den letzten Tagen habe ich das erstemal seit zehn Jahren wieder 
in Assembler programmiert. (Scheduler fuer Multitasking auf dem M16C) Es 
ist schon interessant was man da mittlerweile fuer Befehle hat. Da 
koennte es fast wieder Spass machen sich auf alte Tugenden zu besinnen. 
:-)

Kann ein AVR sowas auch:  mov.w 12[fp],2[sp]
Da fragt man sich ja fast wofuer die CPU noch Register hat.

> Der SH728x läuft gerade auch mit 5V, um die Störfestigkeit zu erhöhen.

Ist das denn wirklich von Bedeutung? Ich wuerde sagen Stoerfestigkeit 
erreicht man doch ueberwiegend durch Layout und Gehaeuse.


Olaf

von Peter D. (peda)


Lesenswert?

Fritz schrieb:
> Hardware Multiplier und Divider

Ich halte die Forderungen für übertrieben.
Wozu braucht man bei Motorsteuerungen schnelles Rechnen?
Das ist doch Mechanik und die ist per se viel langsamer als Software.
Die zeitkritische Steuerung machen ja die PWM-Einheiten in Hardware.

> 6 Timer ( 16-bit )

6 Timer habe ich noch nie benötigt.
Ein Timer reicht eigentlich immer, wenn er die benötigte Anzahl 
PWM-Einheiten hat. Es ist Unsinn, für jede Timeraufgabe nen extra Timer 
zu benutzen.

> 2-3 ADC ( mind 4 Kanäle pro ADC )

Warum nicht ein ADC reicht, erschließt sich mir nicht.
Es ist doch wurscht, ob ein schneller ADC oder viele langsame ADCs.
Informativer wäre daher die Angabe der maximalen Wandlungen pro s und 
natürlich die Auflösung.


Peter

von Tytus W. (tytus)


Lesenswert?

Ich hät noch die DSPIC33F reihe im angebot.

Zum beispiel :

http://de.farnell.com/microchip/dv164033/entwicklungsboard-kit-icd2-w-explorer/dp/1439839

:-(
Olaf schrieb:
> Das allerdings koennen doch IMHO alle Controller ausser den ollen alten
> Atmels oder? Ist auch IMHO unverzichtbar.
:-(

Mikrokopter benutzt einen Atmel für den Speedcontroler um den Brushless 
motor zu steuern.

von Olaf (Gast)


Lesenswert?

> 6 Timer habe ich noch nie benötigt.

Ich auch nicht. Aber so 3-4 braucht man schon. Man kann dann verschieden 
wichte Aufgaben mit verschiedenen IRQ-Prioritaeten laufen lassen.

Ein Beispiel...
Ich lese den DS1820 mit einer Statemachine im IRQ aus. Ist sehr wichtig 
also hohe Prioritaet weil sonst die Uebertragung schief gehen kann.
Scheduler fuer Multitasking hingegen ist relativ unwichtig und kann 
gerne auch mal verzoegert laufen. Also eigener Timer mit geringer 
Prioritaet.
Eigener Timer fuer die Delayfunktion ist auch nett.

Ich weiss wenn man nichts hat kann man es sich immer auch irgendwie 
hinbiegen. Aber es macht einfach mehr Spass wenn man ein paar Timer mehr 
hat.

Olaf

von Fritz (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Fritz schrieb:
>> Hardware Multiplier und Divider
>
> Ich halte die Forderungen für übertrieben.
> Wozu braucht man bei Motorsteuerungen schnelles Rechnen?
> Das ist doch Mechanik und die ist per se viel langsamer als Software.
> Die zeitkritische Steuerung machen ja die PWM-Einheiten in Hardware.

Um eine präzise Berechnung des Zündzeitpunkts und der Einspritzmenge zu 
erreichen, mache ich die Berechnung nicht über das verschieben. Diese 
Tatsache im Zusammenhang damit, dass ich viele Zähne auf dem 
Inkrementenrad habe ( Zündaussetzererkennung und wasted spark nach dem 
Anlassen). Führt dazu, dass diese Berechnungen sehr schnell ausgeführt 
werden müssen. Abgesehen davon möchte ich auch noch zusätzlich ein 
Telemetriesystem benutzen.


>> 6 Timer ( 16-bit )
>
> 6 Timer habe ich noch nie benötigt.
> Ein Timer reicht eigentlich immer, wenn er die benötigte Anzahl
> PWM-Einheiten hat. Es ist Unsinn, für jede Timeraufgabe nen extra Timer
> zu benutzen.
>
Aufstellung der Timer:
1. Drehzahl
2. Einspritzzeitpunkt / Einspitzzeit Bank A
3. Einspritzzeitpunkt / Einspitzzeit Bank B
4. Zündzeitpunkt/Ladezeit Bank A
5. Zündzeitpunkt/Ladezeit Bank B
6. Rundenzeit

Wenn ich jetzt Bank A und B über einen Timer laufen lassen ergibt sich 
bei meinem Inkrementenrad eine rechnerische Höchstdrehzahl, die leider 
unter meiner geforderten liegt.

>> 2-3 ADC ( mind 4 Kanäle pro ADC )
>
> Warum nicht ein ADC reicht, erschließt sich mir nicht.
> Es ist doch wurscht, ob ein schneller ADC oder viele langsame ADCs.
> Informativer wäre daher die Angabe der maximalen Wandlungen pro s und
> natürlich die Auflösung.

Die Gaspedalstellung wird über zwei gegenläufige Widerstände errechnet. 
Diese möchte ich aus Sicherheitsgründen nicht über denselben ADC laufen 
lassen.
Außerdem werden noch einige Betriebsparameter des Motors erfasst.


mfg Fritz

von Zack (Gast)


Lesenswert?

>> Der SH728x läuft gerade auch mit 5V, um die Störfestigkeit zu erhöhen.

>Ist das denn wirklich von Bedeutung? Ich wuerde sagen Stoerfestigkeit
>erreicht man doch ueberwiegend durch Layout und Gehaeuse.

Die µC internen Schaltschwellen haben bei höherer Vcc einen größeren 
Abstand '0' zu '1'.


>Ich halte die Forderungen für übertrieben.
>Wozu braucht man bei Motorsteuerungen schnelles Rechnen?

Ich weiß nicht, was Fritz letztlich vor hat, aber bei neueren Autos - 
zum Beispiel - werden mehrere Einspritzungen pro Zündvorgang gesteuert. 
Da ist keine Zeit für Bittrixereien.
Mehrere ADCs braucht man in der Regel bei Elektromotoren, um die 
Phasenströme synchron zu messen.

von Peter D. (peda)


Lesenswert?

Fritz schrieb:
> Um eine präzise Berechnung des Zündzeitpunkts und der Einspritzmenge zu
> erreichen, mache ich die Berechnung nicht über das verschieben.

Du hast ein mechanisches System mit einer Trägheit, quasi ein 
Schwungrad.
Du kannst die Zündzeitpunkte nicht abrupt verschieben, sondern mußt sie 
in kleinen Schritten nachführen. Sonst werden die mechanischen Kräfte zu 
groß und alles fliegt Dir um die Ohren.

Überschlage doch erstmal, welche und wieviele Berechnungen pro Sekunde 
Du brauchst und mit welcher Genauigkeit.
Jeder 8051 hat übrigends HW-Multiplikation/Division.


> Wenn ich jetzt Bank A und B über einen Timer laufen lassen ergibt sich
> bei meinem Inkrementenrad eine rechnerische Höchstdrehzahl, die leider
> unter meiner geforderten liegt.

Heißt das jetzt, Bank A, B sind 2 Motoren mit verschiedenen Drehzahlen?

Ansonsten, wenn Du 4 Zeitpunkte brauchst, die zueinander synchron sind, 
brauchst Du nur einen Timer mit 4 Capture-Ausgängen.


> Die Gaspedalstellung wird über zwei gegenläufige Widerstände errechnet.
> Diese möchte ich aus Sicherheitsgründen nicht über denselben ADC laufen
> lassen.

Das bringt genau 0,nix an Sicherheit.
Wenn durch ESD was kaputt geht, dann ist es der Eingangspin und nicht 
der ADC.
Sicherheit bringt nur eine Schutzbeschaltung und ein entsprechendes 
Layout.


Peter

von (prx) A. K. (prx)


Lesenswert?

Olaf schrieb:

> Das fehlt den M16C/R32 auch. Wenn ich ehrlich bin ich kann mich auch
> nicht erinnern jemals einen Controller gesehen zu haben der mehr als
> einen AD-Wandler hatte.

Die STM32 haben bis zu 3 ADCs.

von Olaf (Gast)


Lesenswert?

> Die Gaspedalstellung wird über zwei gegenläufige Widerstände errechnet.
> Diese möchte ich aus Sicherheitsgründen nicht über denselben ADC laufen
> lassen.

Das ist quatsch! Ich wuerde Sicherheit eher so angehen das ein externes 
primitives Monoflop die Zuendung ausschaltet wenn es nicht regelmaessig 
von der Leseroutine zurueckgesetzt wird. Oder man vergleicht die 
Widerstaende ueber ein Opamp und stellt alles ab wenn es unplausibel 
wird.
Dem Code im Prozessor kann man nicht trauen.

> Jeder 8051 hat übrigends HW-Multiplikation/Division.

Die haben Bosch ja auch fuer die ersten Steuergeraete gereicht. Ich hab 
mal sowas vom Lancia Theme V6 zerlegt weil der Zuendaussetzer hatte. Da 
war ein MCS51 im Zuendsteuergeraet und einer im Einspitzsteuergeraet. 
Oh..und letztens habe ich ein ABS-Steuergeraet von BMW auf dem Tisch 
gehabt. Da war ein 6805 oder was aehnliches drin. Und erzaehlen sie 
immer was von hochentwickelter Technik und man muesse schon verstehen 
das ein Ersatzeil 1000Euro kostet....

Aber gut, ich wuerde gerade fuer private Projecte immer einen Controller 
nehmen der deutlich groesser ist als man es brauchen wuerde. Macht die 
Entwicklung und Fehlersuche doch etwas angenehmer. Vor allem da man 
privat nicht unbedingt die ganzen Luxus Debugger und Emulatoren hat. Da 
ist es doch nett wenn man ordentlich Code fuer die Fehlersucher und 
Ueberwachung in sein Programm packen kann.

> Sicherheit bringt nur eine Schutzbeschaltung und ein entsprechendes
> Layout.

Ich wuerde bei soetwas wichtiges wie der Gaspedalstellung schon eine 
gewisse Sicherheitsueberwachung haben wollen. Bei Motorraedern hat man 
ja nicht ohne Grund immer einen Killschalter. Wundert mich eigentlich 
das soetwas bei Autos nicht vorgeschrieben ist.

Olaf

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.