July 22nd, 2017

Unterschiede der CAN Transceiver im Highspeed-Betrieb2

Vor einiger Zeit habe ich in einem Beitrag die Unterschiede zwischen dem MCP2551 und dem PCA82C250 aufgelistet. Ich hatte ebenfalls geschrieben, dass sie bis auf Kleinigkeiten keine nennenswerte Unterschiede haben. Das muss ich an der Stelle revidieren.

Beim CAN-Bus im Highspeed-Betrieb müssen die Leitungen CAN-H und CAN-L auf die Referenzspannung von 2,5V gezogen werden (5V CAN). Der große Unterschied ist, dass der MCP2551 das intern macht, der 82C250 jedoch nicht. Dort muss man das selbst bei den Knoten implementieren. Erkennen kann man das in den Block-Diagrammen der Chips im Datenblatt und beim Oszilloskopieren des Signals. Meiner Meinung nach ist das nicht nur gut zu wissen, sondern auch ein gravierender Entscheidungspunkt bei der Entwicklung eines eigenen Systems.

Tags:


Beispiel CAN Bus Testapplikation für AT90CAN1289

at90can128 Ich habe es in letzter Zeit oft erlebt, dass sich angehende Mikrocontrollerprogrammierer mit dem AT90CAN beschäftigen wollen oder müssen um eine CAN Anwendung zu entwickeln. Dabei stößt man immer auf folgendes Problem: Man wird in den Wald geworfen und weiß nicht welchen Baum man zuerst studieren soll. Wenn man nach einfachen Testanwendungen sucht, dann findet man meist ausgeklügelte Bibliotheken oder Anwendungen wo man zunächst nicht durchsieht. Außerdem sind die meist viel zu umfangreich und können auch beide CAN 2.0 Standards. Diesem Problem mache ich heute ein Ende, hier folgt eine einfache Anwendung für den AT90CAN und eine kleine Einführung in die Software. Es sind alle Derivate des AT90CAN verwendbar (32, 64, 128), man muss selbstverständlich beim Kompilieren darauf achten den Richtigen einzustellen.

Beginnen wir mit der Struktur der Software:

- main.c Hauptdatei, Aufruf der Funktionen
- at90can.c Sourcedatei für CAN-Funktionen, inkl. ISR
- at90can.h Headerdatei für CAN, Definition der Struktur, Geschwindigkeiten
- utils.h Korrekte Definitionen für True/False und nützliche Dinge

Für die Variablen in denen CAN-Nachrichten gespeichert werden sollen wurde eine Struktur CAN_messageType erstellt. Die im Datenblatt empfohlenen Einstellungen für die Geschwindigkeiten sind in einem Feld (array) in der at90can.h hinterlegt. Die Applikation besteht nun darin, dass in der main-Funktion zunächst die Initialisierung aufgerufen wird und anschließend eine CAN-Botschaft testweise gesendet wird. Die Empfangenen Nachrichten werden nur in der globalen Variable recMsg abgespeichert, jedoch nicht weiter verarbeitet. Bei jeder Operation mit MObs muss die CANPAGE auf das entsprechende gesetzt werden.

Wichtig ist zunächst die korrekte Initialisierung. Der CAN-Controller muss zum konfigurieren in den config-mode versetzt werden um Geschwindigkeit und Interrupteinstellungen zu ändern. Die globalen Interrupts sollte man erst nach der Konfiguration aktivieren, denn sonst könnte mitten in der Konfiguration beim aktivieren der einzelnen Interrupts ein kommender die Konfiguration verfälschen. Zur Initialisierung des CAN-Controllers gehört das aktivieren des config-mode, die Einstellungen der Interrupts und das Setzen der Busgeschwindigkeit. Die Konfiguration der einzelnen MObs kann auch in gesonderten Funktionen erledigt werden.

Bei einem Empfang einer Nachricht wird in der entsprechenden Interrupt-Service-Routine (ISR) die CAN-Botschaft aus den Registern ausgelesen und in eine globale Variable gespeichert. Variablen die in einer ISR beschrieben werden sollen, müssen als volatile deklariert werden. Nach dem speichern der Daten muss der Interrupt durch readmodwrite resetet werden. Ebenso muss das Bit CONMOBn gesetzt werden, um erneut Empfangsbereitschaft zu signalisieren.

Zum Senden einer Nachricht werden die gewünschten Daten und ID in einer Variable gespeichert und die Funktion can_tx aufgerufen werden. Diese kopiert die Daten in die Register des Controllers und setzt das Bit CONMOBn des als Sender konfigurierten MOb.

Fragen, Anregungen oder Verbesserungsvorschläge können gerne als Kommentare erfolgen!

Tags: , , ,


Alientech Powergate im Check4

Ich hatte neulich mal die Gelegenheit ein ECU-flasher (Programmiergerät für Motorsteuergerät) zu testen. Das Gerät kam aus dem Hause Alientech und nennt sich Powergate Pro. Interessant zu sehen fand ich, dass auch hier ein AT90CAN128 als Controller verwendet wurde, ein recht bekannter Chip mit integriertem CAN Controller und einigen mächtigen Features. Daneben platzierte man die üblichen Verdächtigen wie FT245BL, M6636B, 7805C, PCA82C250 und vier Flashbausteine a 16MB AT45DB161.

powergate

Zu sagen ist, dass die Komponenten recht gut verlötet sind und sehr sauber platziert. Die Leiterbahnverlegung und Anordnung der Controller halte ich allerdings für fragwürdig. Negativ anzumerken ist, dass ein Fahrzeug nur einmal geflasht werden kann.

Tags: , ,


CANlogger mit Temperaturmessung0

Vor einiger Zeit hatte ich das Konzept der Projektarbeit schon einmal vorgestellt. Nun wurde Version 1.0 fertig gestellt.

Features:

  • - Temperaturmessung mit Thermoelement und MAX6675
  • - ISP Stecker nach ATMEL Standard
  • - Schutz zum CAN durch DC-DC und Optokoppler
  • - CAN Stecker ist CAN-CiA konform
  • - Stromversorgung wählbar zwischen CAN und extern
  • - zusätzlich I²C EEPROM auflötbar für große Bilder
  • - Einstellmöglichkeit mit Drehgeber für CAN-Speed, ID und Filter
  • - Anzeige von empfangenen CAN-Nachrichten auf dem TFT
  • - 65k Farb-TFT mit 176×132 Pixel von display3000

Hier eine kleine Demo des Moduls:

Tags: , , , , ,


CAN Spezifikation2

Mit der Zeit kommen bei mir so die Projekte zusammen, in letzter Zeit gehäuft mit CAN. Temperatureinheit, Grafikeinheit, CANtoRS232 oder Mainboard für den Jugend forscht Truck. Aktuellestes Projekt ist ein CAN-/Temperaturlogger.

Gerne greift man später mal in den Schrank und möchte ein Modul mit einem Anderen zu Testzwecken verbinden. Damit das möglich ist, müssen alle mindestens eine bestimmte CAN-Baudratenkonfiguration unterstützen die bei allen gleich ist. Mehrere Geschwindigkeiten sind natürlich möglich, aber prinzipiell nicht erforderlich. Um das zu gewährleisten, damit man in 3 Jahren nicht ein Modul nur deswegen neu flashen muss habe ich eine CAN-Spezifikation definiert. Sie ist in erster Linie für mich, jedoch möchte ich sie euch nicht vorenthalten. Man muss ja nicht jedes Rad neu erfinden.

can_spezifikation

Tags: , ,


Projektarbeit, CANlogger mit Temperaturmessung9

Lange habe ich gewartet, aber nun soll es soweit sein. Ich hatte ja schonmal am Rande erwähnt, dass ich mit dem 2,1″TFT von display3000 einen Temperatur- und CANlogger bauen werde. Nun die versprochene Vorstellung der Idee und Hardware.

Es geht an sich nur um meine Projektarbeit im Rahmen des Diploms Fahrzeuginformatik. Das Projekt soll für mich gleichzeitig ein Vortest sein ob man Display und andere Elemente für eine MFA V2.0 für den Golf einsetzen könnte.

In dem Projekt geht es darum mit einem MAX6675 die Umgebungstermperatur über ein Thermoelement zu messen und durch den Controller (AT90CAN128) auf dem Display darzustellen und auf die CAN Schnittstelle zu senden. Gleichzeitig soll es möglich sein CAN-Nachrichten zu empfangen. Damit das Ganze etwas flexibel bleibt sollen auch Einstellungen möglich sein wie z.B. CAN ID, Temperatureinheit, Helligkeit des Displays, etc. Das wird von dem Modul selbst bewerkstelligt. Zu dem Projekt gehört außerdem eine Software, die auf einem PC mit Windows XP mit PCI-CAN-Karte von Peak System, laufen wird. Diese Software stellt die auf den CAN gesendete Temperatur dar und ermöglicht es dem Benutzer CAN-Nachrichten mit beliebiger ID (außer der, der Temperaturnachricht) zu versenden. Das Modul wird diese dann aufgrund der Logging-Funktionalität darstellen. Die CAN-Stecker sind in SUB-D 9 nach CiA DS102-1 ausgeführt.

Die Hardware und 30% der Firmware sind bereits fertig gestellt (13.11.2008, 01:23). Hier ein aktuelles Bild des Moduls:

Die fertige Platine hatte ich HIER schon einmal präsentiert. Des Weiteren ein kleiner Vorgeschmack aus meinem Konzeptbuch:

Tags: , , ,


Verwirrung bei Buchbestellung0

Wie viele sicher wissen und merken beschäftige ich mich oft und viel mit dem CAN Bus. Nun ist es soweit, dass ich es endlich professionell und beruflich betreiben darf. Dazu gehört natürlich auch CANopen.

Um mich diesbezüglich weiterzubilden habe ich ein Buch in meine engere Wahl gezogen:

Embedded Networking with CAN and CANopen

Dabei bin ich auf das Problem gestoßen, dass für den Europäischen Markt das Buch mit dem Cover von 2003 angeboten wird und für den Amerikanischen Markt das Buch von 2008 (auch mit anderer Seitenzahl). Ich dachte mir, man nimmt natürlich die neuere Ausgabe bei dem Thema. Das ging leider nicht, da die neuere Ausgabe nicht nach Europa verschifft wird. Dann habe ich beim deutschen Vertrieb mal nachgefragt und bekam folgende Antwort:

“die beiden Ausgaben sind inhaltlich identisch. Beide Ausgaben sind neu gedruckt. Für den amerikanischen Markt wurde lediglich ein anderer Verleger gewählt und die Titelgestaltung sowie der Schriftsatz geändert. aber wie gesagt bekämen Sie keinen neuen Inhalt.”

Das habe ich erfreut zu Kenntnis genommen (denn das Exemplar für den deutschen Markt hat 350 Seiten statt 535) und sofort bei canopenstore bestellt. Heute sollte es ankommen, mal schauen ob es sich gelohnt hat…

Die aktuellen Korrekturen sind hier zu finden.

… einige Tage später ist das Buch nun bei mir angekommen. Frisch verpackt und neu:

Und die Bestätigung findet man direkt in der Innenseite: Gedruckt March 2008. Die Vorworte lesen sich recht interessant. Nach wie vor bin ich begeistert von diesem Buch.

Tags: , ,


Veröffentlichung des fertigen LET1

Nach dem Wettbewerb werden nun von uns die Dateien und Bild des fertigen Trucks veröffentlicht. Erreicht haben wir einen Sonderpreis für Naturschutz und Umwelttechnik.

LET Schaltungen

LET Software GLCD

img_3517_1.jpg

Tags: ,


Schnittstellenadapter CAN <=> RS2325

Um die Daten eines CAN Netzwerkes auf dem PC auswerten zu können, habe ich einen Adapter entwickelt. Er war zunächst eine Projektarbeit im Fach Rechnerstruckturen.

Bisher funktinoert er nur in eine Richtung, ist aber für die Bidirektionale Datenübertragung ausgelegt. Die Entwicklung dessen muss leider auf sich warten lassen.

final_platine-001.jpg

CAN to RS232 Dokumentation

CAN to RS232 Schaltung

CAN to RS232 Software

Tags: ,


Adapter CAN-Bus Versorgung2

Um einen kleinen CAN-Bus mit 5V zu versorgen braucht es meißt ein Modul, was aus einer Quelle mit einem Wandler 5V stabil erzeugt und auf Pin 9 legt. Damit ich alle CAN-Knoten so konzipieren kann, dass sie alle eine Versorgung über die CAN-Leitung bekommen habe ich einen kleinen Adapter gebaut, der mit Schraubklemmen versehen ganz komfortabel an den Bus angeschlossen werden kann.

cantosupply_complete_rear.jpg

can_supply_schem.png

can_supply_lay.png

Tags: , ,


Super Ergebnis durch Kombination von Positivlack und Tonermethode0

Nun habe ich scheinbar das Optimum gefunden. Man ätze die Platinenunterseite mit der herkömlichen Belichtungsmethode und bringe den Bestückungsdruck mit der Tonermethode auf die oberseite.

Die Belichtungsmethode mit Inkjetfolie von Zweckform, UV Belichtungsapparat und auf 1Liter genau angerührte Lauge bringt einfach die besten und schärfsten Ergebnisse. Es ist auch durch eine einmalig einzustellende Belichtungszeit recht praktikabel.

Die Platinenoberseite kann man dann nach dem Ätzvorgang wunderbar mit der Tonermetode durch aufbügeln mit dem Bestückungsdruck versehen. Durch ein paar gebohrete Löcher wird das Papier fixiert, so dass es mit den Löchern genau passt.

Hier das Ergebnis:

platine_rear.jpg

platine_front.jpg

Tags: , , , ,


CAN-Teilnehmer Temperaturauswertung0

Das Projekt ist im Rahmen des Elektronik II Labors entstanden. Die eigentliche Aufgabe sollte eine Schaltung mit PLDs, dem AD595 und 7-Segment-Anzeigen sein, die ein digitales Thermometer darstellt. Doch es gab das Angebot mit Hilfe von Mikrocontrollern der eigenen Wahl mehr zu errreichen. Es wäre Zeitverschwendung gewesen dieses nicht anzunehmen.

So kam Jonas und mir also die Idee, (mehr…)

Tags: , , , ,


EL II Projekt fertiggestellt0

Die letzten Feinheiten des Projekts sind erledigt. Die Platinen wurden gestern bestückt und getestet:

can1_fertig.jpg can2_fertig.jpg

Heute habe ich die Auswertung der Temperaturen so wie ich sie mir vorstelle programmiert. Am unteren Rand werden beide Temperaturen als Zahlen geschrieben und in dem Grafikfenster wird die Ofentemperatur mit einer Auflösung von 2°C pro Pixel in einem Bereich von 100K dargestellt. Die Durchlaufzeit beträgt ca. 20 Sekunden.

Die falschen Pixel auf dem ersten Bild sind bereits beseitigt.

graph_2.jpg graph_1.jpg

Tags: , ,


Prototypen hergestellt0

Heute haben wir die ersten Prototypen der Platinen für die CAN-Bus-Teilnehmer hergestellt. Wiedereinmal hat die Ätzanlage ihr Können bewiesen.

Da wir uns ja schon ausgiebeig mit dem Toner-Verfahren beschäftigt haben, wurde das heute angewendet um auf die Oberseite den Bestückungsdruck aufzubügeln. Das Ergebnis kann sich sehen lassen:

can2_top.jpg can2_bottom.jpg

can1_top.jpg can1_bottom.jpg

Tags: , , ,


CANBus Empfänger, Interrupt gesteuert0

Die Entwicklung unseres Projekts für das EL2 Labor nähert sich mit großen Schritten dem Ziel. Heute ist es mir gelungen denPIC so zu programmieren, dass er CAN-Nachrichten mit zwei verschiedenen IDs liest und die darin enthaltene Temperatur auf dem Display ausgibt.

Das Konzept ist so gestaltet, dass der Prozessor im Hauptprogramm die Werte der temporären Speicher für die zwei Temperaturen auf das Display schreibt. Das lesen der CAN-Nachrichten ist Interrupt gesteuert, d.h. wenn eine Nachricht eintrifft wird ein Interrupt ausgelöst der dann den Inhalt in die oben genannten Speicherzellen kopiert.

Die Software ist bei den Projektdateien oder hier zu finden.

Tags: , , ,


Imhotep theme designed by Chris Lin. Proudly powered by Wordpress.
XHTML | CSS | RSS | Kommentare-RSS