• 18.04.2024, 05:55
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Microcontroller - Entscheidungshilfe

Sonntag, 7. Oktober 2007, 02:50

Moin moin,

für eine Modellbau-Fernsteuerung sollen 3 Servo-Eingänge erfasst und 3 Ausgänge gesteuert werden.
Das Datenformat ist eine Pulsbreitenmodulation mit 1-2ms Pulsbreite und 50Hz.
Die Ausgänge sollen einfache logische und/oder mathematische Funktionen der Eingänge darstellen.

Welchen MC und welche Entwicklungsumgebung soll ich nehmen?
Eine tolle Hochsprache brauch' ich für die paar Zeilen nicht - dafür reicht Assembler.

Eckdaten:
========
Betriebsspannung: 4 - 6V
Inputs: 3 (TTL-Pegel)
Outputs: 3 (Source > 10mA wäre schön)
Timer: mindestens einen
Durchsatz: Mit 1 MIPs sollte ich locker auskommen.
Stromverbrauch: möglichst wenig
Größe: deutlich kleiner als DIP/DIL-14
Register: ich schätz' mal so 20 sollten reichen, aber je mehr Register desto einfacher wird der Code.
ROM/Flash: min. 1kB (ohne Kenntnis der Opcodes kann man das schwer abschätzen).

Im Moment hab' ich mich gerade ein wenig in den PIC12F509 verliebt - gibt's dazu Anmerkungen?

Ich weiß, daß es hier einige Amtel-Fans gibt.
Gibt's aus dieser Familie vielleicht etwas Passendes?

TIA

mfg, Thomas

Re: Microcontroller - Entscheidungshilfe

Sonntag, 7. Oktober 2007, 10:49

Hi

kannst genau so gut auch nen AVR 8 Bit von Atmel nehmen.
http://www.atmel.com/dyn/products/param_…o&Direction=ASC

Würde sogar ein Tiny (z.B. ATiny13 oder ATiny25) mit 8 pins reichen, wenn du den Reset Pin als normalen IO verwendest.

Entwicklungsumgebung AVRStudio
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725

Bischen in die Programmierung reinschnippern.
http://www.mikrocontroller.net/articles/AVR-Tutorial

Gruß MISZOU

Re: Microcontroller - Entscheidungshilfe

Sonntag, 7. Oktober 2007, 11:34

Zitat von »MISZOU«

kannst genau so gut auch nen AVR 8 Bit von Atmel nehmen.

TNX

ich hab' mich gerade mal ein wenig in die Atmel-Dox eingelesen.
Der Befehlssatz erinnert mich so an 6502 (insbesondere die Branches) - das kommt mir sehr gelegen, weil die Lernkurve steiler ist.
Irgendwo hab' ich auch was von Pascal gelesen - das ist mir natürlich noch lieber.

Für die Aufgabe würde auch ein ATiny11 reichen.
Da gibt's bei Reichelt auch ein hübsches Entwicklungsboard dazu.
Leider möchte Atmel die 11/12er Serie zugunsten der 13er abschaffen.
Für ATiny13 habe ich noch kein Entwicklerboard gesehen.
Das einfache Ding könnte man natürlich auch gleich einlöten und ISP testen und programmieren.

Hast Du ATiny13-Erfahrung?
Hast Du ein paar Tips für den Atmel-Newbie?

BTW: Eine weitere Alternative wäre Texas MSP430 - da hab' ich mich allerdings noch nicht in die Dokumentation vertieft.

mfg, Thomas

Re: Microcontroller - Entscheidungshilfe

Sonntag, 7. Oktober 2007, 12:13

Hi

MSPs sind sehr gut im stromsparen, sonst kann ich zu denen nicht viel sagen.

Tiny13 hab ich ein paar zu hause, habe sie aber noch nicht verwendet. Hab bisher immer größere gebraucht.

Wenn du das STK500 als Entwicklungsboard meinst, das unterstützt auch den Tiny13.
Siehe auch hier STK500


Pascal für Atmel sagt mir nichts. Für Basic gibts Bascom.
Ich benutze AVRStudio und WINAVR um mit C zu programmieren.

Tips... Die Tutorials auf mikrocontoller.net sind gut, bei speziellen Problemen hat mir die Suche im Forum stets gute Dienste erwiesen (aber nur als angemeldetet user, sonst ist sie Müll). Durch den Kauf vom STK500 waren auch elektrische bzw. Schaltungsprobleme erledigt. So konnte ich bei Fehlern immer sicher sein das der Verursacher vor dem Bildschrim sitzt.

Gruß MISZOU

P.S.: Falls du das STK500 meinst, kannst mir ja eine KM schreiben.

Edit: 50Hz(20ms) und 1-2ms... du willst wohl servos ansteuern (?, Wer alles lesen kann ist...) Hannes Lux AVRs im Modellbau

Edit2: Wenn es möglich wäre einen größeren zu nehmen, würde ich den verwenden. Ich würde mich scheuen meinen Reset Pin weg zu fusen, um den als normalen IO zu nutzen, ISP braucht den Reset Pin für die Programmierung.
Du könntest auch das AVR Dragon nehmen.
1. Brauchst du keine Serielle Schnittstelle.
2. ISP kannst du alle MCs programmieren.
3. Du hast DebugWire um dein Programm auf der Zielhardware zu untersuchen.
4. Falls es du gefallen daran findest kannst du auch noch größere Conroller bis <32k Flash über JTAG debuggen.

5. Du nimmst beide, es gab bei Atmel von Mai bis September eine Aktion, Hier hab gibt es noch Reste, nicht ganz so günstig wie original, aber immer noch ein sehr guter Preis. (Original 39 und 119 Euro Netto Aktionspreis)

Re: Microcontroller - Entscheidungshilfe

Sonntag, 7. Oktober 2007, 13:50

hallo,
ich würde dür die aufgabe einen avr irgenwas ab mega8 (SMD) oder MSP430 nehmen.
Die MSP sind super im Stromsparen, haben aber nur 3.3V (GCC Verfügbar).
Aber ich würde den Controller eh mit 3.3 V laufen lassen, dann hat men mehr luft fals der akku schlap macht.
Die AVRs gibt es auch als 3.3V Typen (mit L dahinter) die laufen dann von 2.8 - 5.5V.
Die meisten AVRs haben auch einen internen oszilator. Somit hat du nur ne minimlae beschaltung von 2-3 Bauteilen.
ZUm Programmieren würde ich den GCC Compiler nehmen, das geht immer noch schneller als ASM, selbst wenn man es kann.
Ich weis nicht wie abgeneigt du SMD bist, aber mit einem TINY26 oder MEGA8 kann man auch einiges in C machen und die gibt es auch noch im recht freundlichen SO oder TQ Package.

Sebastian

Re: Microcontroller - Entscheidungshilfe

Sonntag, 7. Oktober 2007, 14:31

Hi

nicht immer L, ein Blick ins Datenblatt zu dem ausgesuchten Controller gibt mehr Auskunft. Einige laufen bereits ab 1,8Volt. Kommt immer auf den jeweiligen Controller und die gewünschte Taktfrequenz an.
Und ob 3,3 Volt oder 5 Volt würde nicht nur vom Stromverbrauch sondern auch von der Ausenbeschaltung abhängig machen. Lieber langsamer laufen lassen und öfters mal schlafen schicken wenn es nichts zu tun gibt, dafür aber auf Level Shiften verzichten.

Mir ist gerade der erste Satz vom Tom noch mal aufgefallen. Wer lesen... jetzt kommt es drauf an ob du garantieren kannst das die Eingänge des AVRs maximal mit VCC+0,5 Volt angesteuert werden. Und ob dem Servo 3,3 Volt als High Signal reichen. Dann kann man die 3,3 Volt verwenden. Wenn aber noch nen Levelshifter für die 3 Eingänge oder 3 Spannungsteiler verwenden muss, weiß ich nicht ob der geringere Stromverbrauch bei 3,3 Volt immer noch gewinnt.

Gruß MISZOU

Re: Microcontroller - Entscheidungshilfe

Sonntag, 7. Oktober 2007, 19:40

Zuerst mal - Danke für die Unterstützung

Zitat von »MISZOU«

Tips... Die Tutorials auf mikrocontoller.net sind gut, bei speziellen Problemen hat mir die Suche im Forum stets gute Dienste erwiesen (aber nur als angemeldetet user, sonst ist sie Müll). Durch den Kauf vom STK500 waren auch elektrische bzw. Schaltungsprobleme erledigt. So konnte ich bei Fehlern immer sicher sein das der Verursacher vor dem Bildschrim sitzt.

Sehr gut - dann werde ich das auch mal so angehen.

Zitat von »Sebastian«

Edit: 50Hz(20ms) und 1-2ms... du willst wohl servos ansteuern

Genau.
Dieses stundenlange Herumgedrücke auf einer Computerfernsteuerung geht mir auf den Keks.
Und ein paar Funktionen (z.B. Steuerung der Schubumkehr beim Jet-Antrieb) sind auch mit dem tollsten Sender nicht vernünftig realisierbar.
Jetzt kommt die "Intelligenz" dahin, wo sie hingehört: Ins Modell.


Zitat von »Sebastian«

Aber ich würde den Controller eh mit 3.3 V laufen lassen, dann hat men mehr luft fals der akku schlap macht.

Sorry, das vergaß ich in den Eckdaten zu erwähnen:
Hier geht's wirklich darum das "as simple as possible" und "as small as possible" zu realisieren.
Also ein LPC-MC und möglichst wenige Teile.
Sehr gut gefallen mir bei den Atmels die integrierten Pullup-Widerstände - so reduziert sich der Schaltungsaufwand tatsächlich auf den MC, 2 Cs, den XTal und ggf. ein paar Angst-Widerstände.

BTW: Bei 3V muß das Ding nicht mehr funktionieren - da funktioniert der ganze Rest schon lange nicht mehr.

Zitat

Die meisten AVRs haben auch einen internen oszilator.

Einen Quartz werde ich schon brauchen - sonst wird das zu ungenau.

Zitat

ZUm Programmieren würde ich den GCC Compiler nehmen,

Die gängigen Hochsprachen vertragen sich afaik mit Echtzeitanwendungen i.d.R. nicht so besonders.
Außerdem hasse ich C - Ich bin ein alter N.Wirth-Jünger (ETHZ '79-'83).
...aber das ist ein anderes Thema.

Zitat

das geht immer noch schneller als ASM, selbst wenn man es kann.

Das erschreckt mich nicht.
Ich hab' eine komplette Grafik-Library in Z-80 Code gestrickt und einige Steuerungs-Applikationen für den 6502 geschrieben.

Die PWM-Decoder hab' ich schon im Kopf - der ganze Rest ist simpel.


Zitat

Ich weis nicht wie abgeneigt du SMD bist,

Solange das mit Hausmitteln lötbar bleibt (unter 1/20" wird's kniffelig), darf das auch alles in SMD sein.

TNX
mfg, Thomas

Re: Microcontroller - Entscheidungshilfe

Sonntag, 7. Oktober 2007, 19:58

Zitat


Einen Quartz werde ich schon brauchen - sonst wird das zu ungenau.

sorry, aber der interne oszilator ist hirnreichend genau für dein vorhaben. Du willst ja nur blöde servos einstellen.
Desweiteren kann man den oszilator kalibrieren und somit recht gut einstellen.
Ich würde mit dem takt max. auf 1Mhz gehen. das spart ne menge strom. und dann den controller immer alle paar ms wieder aus dem sleep modus aufwachen lassen.
Somit sollte es möglich sein den controller mit wenigen µA zu betreiben.

Was du vorhast kannst du locker mit c schreiben, ich glaube so schlechten code kann man gar nicht schreiben das man da in irgend einer weise timing probleme bekommt. und da ist die servo ansteuerung echt nur ne 2 min sache. Du hast ja je nach controller recht großzügig timer mit irqs und compare einheiten. und adcs für ne mögliche failsafe funktion haben die auch fast alle.
Für das minimum brauchst du einmal 100n an VCC und einmal 10K + 100n am reset.
Wenn du dir es zutraust besorge dir einen Mega8 im MLF Gehäuse (5x5mm) und 0603 Bauteile. Dann sollte das alles auf ne Briefmarke passen.

Sebastian

Re: Microcontroller - Entscheidungshilfe

Sonntag, 7. Oktober 2007, 22:15

Hi

richtig wenn was genau/berechenbar sein soll musst du dir nur den passenden Timer Interrupt auswählen, dann ist es (fast) egal ob ASM oder C. Der Timer wird sich schon melden, wenn es wieder Zeit wird ;)

Die 20ms gehen sehr gut mit dem interen Oszillator, hab mal mit Serovs rumgespielt, ich glaub von 7-20ms war es relativ egal. Wie genau die ca. 0,8 bis 1,9ms für den 0-90° Winkel sein mussten weiß ich nicht mehr. Hab auch keine genauen Messreihen durchgeführt, da nur gespielt.

Gruß MISZOU

P.S.: @ Herr Wirth, meine erste Programmiersprache war Component Pascal ;D

Re: Microcontroller - Entscheidungshilfe

Montag, 8. Oktober 2007, 00:08

Zitat von »MISZOU«

richtig wenn was genau/berechenbar sein soll musst du dir nur den passenden Timer Interrupt auswählen, dann ist es (fast) egal ob ASM oder C. Der Timer wird sich schon melden, wenn es wieder Zeit wird ;)

Genauso habe ich das vor - zumindest für die PWM-Decoder.
Kann man das denn auch anders realisieren?

BTW: Du hast mich überzeugt - es macht keinen Sinn wichtige Steuerleitungen weg zu "fusen".
Ich habe mich zu PDIP-14 durchgerungen - Der ATtiny24 scheint ein geeigneter Verteter zu sein.

@Sebastian: Nein, MLF trau' ich mir nicht zu und PDIP28 ist mir definitiv zu groß

Zitat

Wie genau die ca. 0,8 bis 1,9ms für den 0-90° Winkel sein mussten weiß ich nicht mehr. Hab auch keine genauen Messreihen durchgeführt, da nur gespielt.

Aktuell sind wir in der RC-Technik bei 11 bis 12 Bit Genauigkeit.
Die Positionierfehler liegen bereits bei Billigservos deutlich unter 0,3°.
Wenn ich da jetzt 2% Fehler einbaue (siehe Atmel-Diagramme für Temperatur-Drift und Vcc-Abhängigkeit des internen Oszis), wäre das nicht sonderlich geschickt.

Bei Leistungsgewichten von 0,5 kg/PS will ich auch keine unnötigen Toleranzen/Fehler einbauen.

mfg, Thomas