Apr 132020
 

Qt erlaubt es, durch hierarchische Anordnung von Layouts das Aussehen zu optimieren. Beim Anlegen der Layout-Hierarchie geht man Bottom-up vor. Dabei werden erst alle GUI Elemente wie Push-Buttons, Radio-Buttons, Checkboxes, etc. auf die Dialogfläche grob angeordnet. Speziell bei Radio-Buttons gibt es noch zusätzlich die Gruppierung zu beachten. Innerhalb einer Gruppierung kann nur ein Radio-Button aktiviert sein. Es natürlich möglich, mehrere Radio-Groups anzulegen.

Continue reading »
Mrz 052016
 

YAKINDU statechart tools are a pretty nice tool to model statemachines. You can generate code for C/C++ and Java out of the model. Further you can validate and simulate your statemachine to verify the behaviour. If you want to integrate your statemachine into a Qt application the concept of signals and slots fits perfectly into the in and out events of the statechart definition language of the YAKINDU SCT. My new custom Qt generator links both concepts together. It generates a C++ class which links between the C++ class generated from the C++ generator of YAKINDU SCT and the custom implementation code which must be implemented for custom behaviour of your application.

Continue reading »

O&K-Radlader L25 als Modell

 Eingebettete Systeme, Modellbau  Kommentare deaktiviert für O&K-Radlader L25 als Modell
Feb 232011
 

Vor ein paar Tagen war ich bei meinem Freund Tobias Braeker. Er hat sich als Dipl. Ing. (Maschinenbau) einen Kindheitstraum verwirklicht und einen Radlader im Maßstab 1:12 nachgebaut. Der O&K L25 ist aus Edelstahl gefertigt, wiegt stattliche 12 kg und kann bis zu 9 kg heben. Das Modell ist sehr detailliert gearbeitet. Jedes Rad wird durch einen eigenen Glockenankermotor (Faulhaber) angetrieben, die Schaufel wird hydraulisch betätigt. Ein Soundmodul sorgt für Hörgenuss, denn das Motorengeräusch passt zu den gesteuerten Fahrkommandos. Natürlich ist das Modell auch vorbildlich mit Leuchten (Blinker, Rückfahrscheinwerfer, etc.) ausgestattet. Übrigens kann die Schaufel hydraulisch durch ein anderes Anbaugerät ausgewechselt werden.

Radlader

Die Steuerung ist ein waschechtes Embedded System. Sie beinhaltet den Empfänger, die Motorensteuerung, die Sound- und Lichtsteuerung. Der linke Steuerhebel bedient das Fahrzeug selbst, der rechte Steuerhebel bedient die Schaufel. Die Bedienung braucht natürlich Übung, denn meistens ist man es gewöhnt, mit links die Geschwindigkeit und mit rechts die Lenkung zu bedienen. Es macht aber in jedem Fall viel Spaß, Sand und Steine durch das Gelände zu transportieren.

Tobias verkauft das Modell als Bausatz oder als Fertigmodell. Die Preise können über seine Homepage erfragt werden. Auf YouTube können weitere interessante Filme mit dem L25 betrachtet werden. Für die Zukunft plant er die Konstruktion eines Kippers. Ich bin mal gespannt 🙂

Eisenbahnsteuerung jetzt Open Source

 ATmega, CAN-Bus, Eclipse, Eingebettete Systeme, Linux, MDSD, Modellbau, Software  Kommentare deaktiviert für Eisenbahnsteuerung jetzt Open Source
Jul 072010
 

Das Projekt der modell(-bau-)basierten Eisenbahnsteuerung ist ab sofort auf SourceForge als Open Source verfügbar. Die Startseite ist unter http://sourceforge.net/p/mrw/wiki/Home/ erreichbar. Der Quellcode und die Schaltungen können aus dem Subversion-Repository heruntergeladen werden.

Viel Spaß!

Nov 182008
 

Auf dem Yakindu-Tag wurde die modell(-bau-)getriebene Eisenbahnsteuerung vorgestellt. Dabei wurde der Gleisplan schon modellgetrieben generiert. Bisher war die Firmware der CAN-Knoten als Referenzimplementierung noch klassisch implementiert. Die Kommandoverarbeitung in der Firmware der CAN-Knoten war ein unschönes Stück Spaghetti-Code. Aus diesem Grund wurde ein Zustandsdiagramm gefertigt, das die Betriebszustände der CAN-Knoten enthält. Die eingehenden Kommandos sind als Zustandsübergänge modelliert. Aus diesem Diagramm wird mit Hilfe von openArchitectureWare der Code für die Kommandoauswertung generiert.

Der generierte Code enthält zwar relativ viele Callbacks und switch/case-Anweisungen und bläht den Binärcode um ca. 1,5 KByte auf. Das ist aber nicht weiter schlimm, da jetzt noch Platz für ca. 18 KByte im Flash des ATmega32 vorhanden ist. Ein weiterer Vorteil ist, dass der generierte Code wesentlich übersichtlicher aussieht. Änderungen und Erweiterungen der Steuerkommandos lassen sich jetzt viel leichter einpflegen. Die Integration des generierten Codes in den bestehenden Firmware-Rahmen gestaltete sich als unproblematisch, da der restliche klassisch implementierte Teil nur aus Service-Methoden zur Ansteuerung der Hardware dient.

Sep 072008
 

Im Januar 2004 hat George W. Bush verkündet, dass die Vereinigten Staaten bis 2018 wieder zum Mond fliegen würden. Die Meldung hat nicht unbedingt Schlagzeilen gemacht, aber man muss sich die Frage stellen, was ein solch komplexes Unternehmen bringen soll. Dazu muss man zu den Ursprüngen der bemannten Raumfahrt Anfang der 60er des letzten Jahrhunderts gehen. Auch damals hat Präsident Kennedy die Absicht samt Termin vor dem Kongress bekanntgegeben. Anlass war der kalte Krieg und der Wettlauf mit der Sowjetunion. Diese war im Raumfahrtprogramm klar vor den Amerikanern. Wir wissen, dass Amerika die Mondlandung erfolgreich absolviert hat. Die Aufwände waren für damalige Verhältnisse unvorstellbar. Fast 400.000 Menschen waren direkt und indirekt daran beteiligt, dass gerademal 12 Astronauten den Mond betreten haben. Welcher Nutzen soll so ein krasses Missverhältnis für die Menschheit bringen?

Continue reading »

Prototypen der CAN-Controller

 ATmega, CAN-Bus, Eingebettete Systeme, Modellbau  Kommentare deaktiviert für Prototypen der CAN-Controller
Jul 102008
 

Nach der Entwicklung der CAN-Controller, wird jetzt als nächster Schritt das Bauen der Prototypen angegangen. An ihnen kann man das erste Mal testen, wie sich mehrere CAN-Controller an einem Bus verhalten. Erwartungsgemäß funktioniert der CAN-Bus mit mehreren Teilnehmern gemäß Spezifikation. Auch das Flashen einer neuen Firmware funktioniert einwandfrei. Dabei wird ein Bootloader verwendet, der die Firmware über den CAN-Bus entgegennimmt.

Auf dem Bild kann man vier CAN-Teilnehmer erkennen. Man kann inzwischen auch von den itemis Hardware Labs Lünen sprechen.

itemis Hardware Labs Lünen

Als nächster Schritt wird ein Platinen-Layout entwickelt, um die endgültigen CAN-Controller zu erhalten. Desweiteren werden jetzt die Schaltungen für die Leistungselektronik entwickelt. Schließlich sollen die CAN-Controller ja eine Modellbahn steuern.

Mehr Komfort mit C++

 Eingebettete Systeme  Kommentare deaktiviert für Mehr Komfort mit C++
Jun 212008
 

In der Elektronikpraxis ist ein Artikel von mir erschienen, der sich mit der Verwendung von C++ im Embedded Systems beschäftigt. Obwohl mit C++ schon seit über 20 Jahren entwickelt wird, hält diese Sprache nur langsam in die Mikrocontroller-Programmierung Einzug. Sie enthält aber viele Sprachkonstrukte die die Qualität der Firmware erheblich verbessern kann und dem Entwickler die Arbeit vereinfacht. Ein Grund für die zögerliche Nutzung liegt im höheren Ressourcen-Bedarf. Viele moderne Mikrocontroller haben diese Hürde aber nicht mehr.

Der gesamte Artikel kann hier eingesehen werden: http://www.elektronikpraxis.vogel.de/themen/embeddedsoftwareengineering/implementierung/articles/120537/

Fallstricke bei der Mikrocontroller-Programmierung

 ATmega, Eingebettete Systeme, Modellbau  Kommentare deaktiviert für Fallstricke bei der Mikrocontroller-Programmierung
Jun 052008
 

Seit geraumer Zeit programmiere ich mit einem Kollegen der itemis AG an einer Mikrocontroller-gesteuerten Modellbahnanlage. Im Großen und Ganzen ging die Entwicklung sehr zügig voran. Es kam aber zu einigen Fallstricken, über die ich hier gerne mal berichten möchte. Zuerst bleibt zu erwähnen, dass die Entwicklungsumgebung für die AVR-Mikrocontroller recht gut sind. Die Gesamtanlage ist ein relativ komplexes System. In der Kette wurden Stellwerkssoftware in Java, ein Übertragungskanal über RS232-Schnittstelle an ein CAN-Gateway mit ATmega32 und MCP2515 gekoppelt. Daran sind mehrere CAN-Knoten derselben Hardware miteinander gekoppelt. Die Firmware ist C programmiert. Die Entwicklung aller Komponenten kann sowohl unter Windows, als auch unter Linux erfolgen. Linux hat den Vorteil, dass auch mal Remote entwickelt werden kann.

Continue reading »

Modellbahnsteuerung fertig entwickelt

 ATmega, Eingebettete Systeme, Modellbau  Kommentare deaktiviert für Modellbahnsteuerung fertig entwickelt
Mai 232008
 

Die Schaltung, um Weichen und Signale über Mikrocontroller zu steuern ist jetzt fertig entwickelt. An einem Steckbrett wurde ein Steuerungsknoten und ein Gateway zusammengebaut und programmiert. Das Gateway ist ein Protokollumsetzer. Die CAN-Frames werden vom PC über RS232 zu diesem Gateway getunnelt und von dort aus über den CAN-Bus weitertransportiert. Die Kommunikation ist dabei bidirektional. Dabei ist zu beachten, dass die Steuerungsknoten sich nicht untereinander unterhalten, sondern jede Information an das Gateway schicken. Das Schalten von Weichen und die Gleisbesetztanzeige werden auch schon korrekt im controller verarbeitet. Jetzt müssen die mehrere Prototypen auf testweise auf Laborplatinen gelötet werden.

Danach muss die Leistungselektronik entwickelt werden. Diese übernehmen die eigentliche Ansteuerung der Weichen und Signale. Diese Aufgabe ist reine Fleißarbeit. Denn es müssen mindestens 15 Steuerungsknoten, vier Gateways und unzählige Module zur Ansteuerung gelötet werden.

schaltung.jpg

Das Bild zeigt links unten das unscheinbare Steckbrett. Auf der linken Hälfte des Bretts ist der Steuerungsknoten auf der rechten das Gateway. Dieses kommuniziert mit einer kleinen Zusatzplatine über die serielle Schnittstelle am PC mit der Steuerungssoftware. Die Steuerungssoftware kann man auf dem linken Monitor erkennen. Der rechte Monitor zeigt die Entwicklungsumgebung Eclipse. Am rechten Bildrand kann man ein MacBook erkennen. Auf diesem läuft die Entwicklungsumgebung, um die Firmware der Mikrocontroller über JTAG zu debuggen.

Die Steuerungssoftware kommuniziert bereits mit den Mikrocontrollern und kann schon Aufgaben verteilen. Die Steuerungsaufgaben werden in mehreren Stapeln verarbeitet. So dürfen erst Signale geschaltet werden, wenn alle Weichen die gewünschte Fahrstraße eingestellt haben. Erst danach kommt die Gleisfreigabe.

Feb 282008
 

Kann man modellgetrieben eine Modelleisenbahnsteuerung aus Mikrocontrollern bauen? Dieser Frage gehen Entwickler des Yakindu-Projektes nach. Hintergrund ist, dass eine digitale Ansteuerung der Weichen und Signale über konventionelle Mittel sehr teuer ist. Eine digitale Steuerung hat aber den Vorteil, dass der Verdrahtungsaufwand minimiert wird. Dieser fällt deswegen unangenehm auf, weil ein Großteil der elektrischen Verkabelung kopfüber geschehen muss. Hier setzt die Idee an, die Mikrocontroller bequem an einem ergonomischen Arbeitsplatz zu bauen und nur die fertigen Module kopfüber zu montieren und anzuschließen. Als Mikrocontroller werden von ATmel die ATmega32 eingesetzt. Diese sind vielseitig einsetzbar und es gibt sehr viele fertige freie Tools, um diese Controller zu programmieren. Zusätzlich gibt es eine große Auswahl an weiteren Spezial-ICs, wie z.B. den CAN-Controller MCP2515.

An den Mikrocontrollern sollen spezielle Ansteuerungsmodule verwendet werden. So können unterschiedliche Aufgaben an die Microcontroller vergeben werden, ohne jeweils eine spezielle Hardware bauen zu müssen. Dazu erhalten die Microcontroller eine universelle Firmware. Diese wird dann so konfiguriert, wie der Anschluss der Ansteuerungsmodule erfolgt. Als Ansteuerungsmodule sind derzeit geplant:

  • Lichtsignal-Ansteuerung, im Prinzip eine einfache LED-Ansteuerung
  • Magnetartikel-Ansteuerung. Darüber werden Weichen und Formsignale angesteuert.
  • Gleisabschnitt-Steuerung mit Gleisbesetztmeldung
  • JTAG-Modul zum Debuggen

Die drei letzten Module werden direkt mit den einzelnen Ports des ATmega gekoppelt ein Port fällt für spezielle Aufgaben weg, da z.B. die Microcontroller untereinander kommunizieren müssen. Diese Kommunikation soll über CAN-Bus erfolgen. Dieser ist sehr robust gegenüber Störungen und gilt nach 20 Jahren als ausgereift. Es gibt günstige Bauteile, die die Kommunikation auf physikalischer Ebene übernehmen. Darin enthalten ist z.B. eine Fehlerkorrektur über CRC und das Protokoll-Handling. Bei einem ATmega32 bleiben so drei Ports für die Module frei, was den individuellen Verbau der Module ermöglicht.

stellwerk.jpg

Als zweite Software-Komponente neben der Microcontroller-Firmware gibt es das Frontend. Diese GUI-Applikation ermöglicht die bequeme Ansteuerung der Microcontroller mit einer Visualisierung als Stellwerk. Insbesondere ist hier die Fahrstraßenschaltung zu nennen. Durch Anklicken von Stützpunkten welche die Route definieren und anschließender Auswahl von Rangieren oder Fahrt, wird eine freie Gleisroute vom Anfangspunkt über die Stützpunkte zum Endpunkt gesucht, danach die Weichen und Signale geschaltet und die Gleisabschnitte unter Fahrstrom gesetzt. Diese Applikation ist mit Eclipse und dem SWT/RCP-Framework umgesetzt. So kann das Stellwerk plattformunanhängig eingesetzt werden.

Zum Schluss bleibt die Frage offen, was daran modellgetrieben ist? Die gesamte Modellbahnanlage wird in einem EMF-Modell nachmodelliert. Daraus wird die Gesamtkonfiguration für die Microcontroller generiert sowie die GUI für das Stellwerk. Das generierte Gleisschema wird dann durch den universellen Router-Algorithmus für die Fahrstraße ergänzt. Dieser wertet noch Informationen aus, wie Langsamfahrstellen und bevorzugte Fahrwege an Weichen. In der Zukunft ist geplant, die Modellierung mittels GMF zu erreichen, weil die Eingabe über EMF gerade bei einer Modelleisenbahn wenig intuitiv ist.

Embedded World 2008: ATmega jetzt auch mit integriertem CAN-Controller

 ATmega, Eingebettete Systeme  Kommentare deaktiviert für Embedded World 2008: ATmega jetzt auch mit integriertem CAN-Controller
Feb 272008
 

Seit Neuestem bietet ATmel auch eine Variante ihres erfolgreichen ATmega Mikrocontrollers mit integriertem CAN-Controller an. Laut Dokumentation ist die Spezifikation zwar noch vorläufig, es ist aber erkennbar, dass ATmel weitere Unterstützung im Automotive-Bereich liefern will. Derzeit sind drei Varianten (AT90CAN32, AT90CAN64 und AT90CAN128) aufgelistet, die sich in der Größe des Flash-Speichers, EEPROMs und des SRAMs unterscheiden. Der Mikrocontroller ist im 64-Pin TQFP lieferbar und hat sechs 8-Bit-IO-Ports zur Verfügung. Ansonsten enthält der Mikrocontroller die üblichen Baugruppen, die man von den bekannten ATmels gewohnt ist: Timer, PWM, JTAG, ISP, UART, um nur einige zu nennen.

Hier ist die (vorläufige) Spezifikation zu finden:
http://www.atmel.com/dyn/resources/prod_documents/doc7682.pdf

Mikrokopter

 ATmega, Eingebettete Systeme  Kommentare deaktiviert für Mikrokopter
Feb 172008
 

Der Mikrokopter ist ein Beispiel dafür, was man mit den ATmel ATmega Microcontrollern machen kann. Vier überkreuz positionierte Propeller geben den Auftrieb. Die Lagereglung wird über Beschleunigungssensoren an die drehzahlgeregelten Motoren für die Propeller weitergereicht. Als Bonbon ist noch ein GPS-Positionsmelder eingebaut. So kann ein Mikrokopter relativ ortsfest im Rahmen der GPS-Genauigkeit gehalten werden. Zusätzlich ist noch ein Kompass und ein Drucksensor zur Höhenmessung eingebaut. Eine lagegeregelte 3D-Kamera samt Brille runden das Gesamtbild ab. Jeder Motor hat seinen eigenen ATmega, der die Solldrehzahl umsetzt. Ein zentraler ATmega übernimmt den Rest der Lageregelung.

Unter http://www.mikrokopter.com/ucwiki/ sind mehrere beeindruckende Videos untergebracht.

CAN-Protokoll im Linux Kernel

 Eingebettete Systeme, Linux  Kommentare deaktiviert für CAN-Protokoll im Linux Kernel
Feb 172008
 

Heute wurde bekanntgegeben, dass ab der Linux-Version 2.6.25-rc1 Unterstützung für den CAN-Bus aufgenommen wurde. Die Unterstützung sieht derzeit so aus, dass CAN als zusätzliches Protokoll benutzt wird. So wird die schon bekannte Schnittstelle mittels socket(), read() und write() angesprochen. Die Unterstützung für Devices sieht im Moment leider ein wenig mager aus: Außer einem virtuellem Device steht im Moment kein Treiber zur Verfügung. Es wäre vielleicht denkbar, eigene Hardware unter Benutzung des CAN-Controllers MCP2515 zu bauen, die man z.B. über USB anspricht.

Interessanterweise wurde die Implementierung von Volkswagen beigesteuert. Ob allerdings ein „Treiber für Autos“ entwickelt wird, oder Embedded Linux in VWs Einzug hält, ist derzeit offen.

Heise-Meldung:
http://www.heise.de/newsticker/meldung/103552

Nähere Erläuterung zur CAN-Integration
http://lwn.net/Articles/253425/