Kampi
10.06.2012, 17:02
Hallo Forum,
ich möchte euch mal das zeigen woran ich im Moment und in naher Zukunft noch arbeiten möchte.
Und zwar handelt es sich um einen CAN-Bus mit einem Mega32, einem MCP2515 CAN-Controller und einem MCP2551 CAN Transreciever.
Das Internet gab leider nicht all zu viele Informationen her und dementsprechend ist sehr viel davon selbst erarbeitet (nochmals danke an den Verfasser dieses C-Tutorials http://www.kreatives-chaos.com/artikel/ansteuerung-eines-mcp2515#receive).
Die erste Idee zu dem Projekt kam mir beim lesen eines Buchs über den CAN-Bus vom Elektorverlag.
Da ich mich etwas mit dem Bus beschäftigen wollte, habe ich dazu eine kleine Platine entworfen.
Leider hat die Version 0 meiner Platine zwei kleine Fehler (Testpin des FT232 ist nicht mit GND verbunden und deswegen ist es Glück ob der funktioniert. Aber das Problem lässt sich mit einer kleinen Lötbrücke lösen und die Rx und Tx LEDs sind falsch angeschlossen.
Den Schaltplan des CAN-Knotens habe ich mal als Anhang angehängt.
Der Bus sieht im Moment so aus, dass ich einen fertig bestückten CAN-Knoten habe und ein RN-Control + Steckbrettaufbau.
RN-Control + MCP2515 und MCP2551:
http://img442.imageshack.us/img442/169/dscf0328l.jpg (http://imageshack.us/photo/my-images/442/dscf0328l.jpg/)
CAN-Knoten (selbst entworfen und bestückt):
http://img839.imageshack.us/img839/457/dscf0329c.jpg (http://imageshack.us/photo/my-images/839/dscf0329c.jpg/)
Das RN-Control sendet im Sekundentakt eine sich ständig erhöhende Zahl und der CAN-Knoten empfängt diese und gibt die auf einem PC Terminal aus:
Sender:
http://img560.imageshack.us/img560/5489/unbenanntrsz.png (http://imageshack.us/photo/my-images/560/unbenanntrsz.png/)
Empfänger:
http://img12.imageshack.us/img12/7018/unbenanntykp.png (http://imageshack.us/photo/my-images/12/unbenanntykp.png/)
Das ganze läuft komplett Interruptgesteuert ab. Somit wird der Controller nicht zu stark ausgelastet. Als Spannungsversorgung für die CAN-Knoten habe ich solch ein Kabel:
http://img407.imageshack.us/img407/9721/netzteilcanknoten.jpg (http://imageshack.us/photo/my-images/407/netzteilcanknoten.jpg/)
Dabei handelt es sich um ein Netzteil, welches ich bei mir aus der Firma bekommen habe, weil es sonst im Müll landet würde ;)
Und um die Knoten miteinander zu verbinden, habe ich mir dieses Kabel hier gebaut:
http://img403.imageshack.us/img403/5264/kabelcankomplett.jpg (http://imageshack.us/photo/my-images/403/kabelcankomplett.jpg/)
http://img710.imageshack.us/img710/5808/kabelcansteckeroben.jpg (http://imageshack.us/photo/my-images/710/kabelcansteckeroben.jpg/)
Über das Kabel wird die 12V Spannungsversorgung der einzelnen Knoten gewährleistet und es wird das CANH und CANL Signal übertragen.
Durch die 12V Spannungsversorgung ist es möglich, dass nur ein Knoten am Stromnetz hängt und die anderen Knoten werden dann über die CAN-Kabel versorgt. Auf den Platinen befindet sich ein 7805 kompatibler Schaltregler, der bis zu 1,5A Strom bereitstellen kann.
Die nächsten Schritte werden dann sein, dass ich eine PC-Software dafür schreiben wollte (mit Visual Basic oder so) womit die Knoten ausgelesen werden können (z.B. Sensorwerte anderer Knoten).
Außerdem wollte ich gucken ob ich die Anbindung eines MCP2515 an mein Raspberry Pi hin bekomme. Dann würde das Pi den Job des "CAN Master" übernehmen. An die Knoten selber wollte ich verschiedene Sensoren anschließen und damit was aufbauen.
Zwei Sensoren habe ich hier schon rumliegen (einmal Luftdruck und Temperatur und einmal Feuchtigkeit). Den Feuchtigkeitssensor kann ich aber nicht ohne weiteres nehmen, da dieser eine von der Feuchtigkeit abhängige Frequenz angibt und ich bei meinem CAN-Knoten keine Interrupts rausgeführt habe.....
Mal schauen wie sich das Problem lösen lässt. Vielleicht steige ich auch auf eine I²C Variante um.
Vielleicht wandel ich die Frequenz auch in eine analoge Spannung um und messe diese einfach.
Wie dem auch sei. Ich werde schauen, dass ich diesen Thread hier nach und nach aktualisiere sobald es was neues gibt. Dies soll für die Leute sein, die selber mal mit dem Controller rumspielen möchten. Bei meiner Recherche habe ich gemerkt, dass es nicht all zu viel über CAN und Bascom im Internet gibt. Deswegen möchte ich hier gerne etwas für die Leute schaffen womit ihnen der Einstieg erleichtert wird.
Ich stehe auch gerne jedem zur Seite, der sich selber mit dem Controller beschäftigt und dabei Hilfe braucht :)
Für weitere Infos usw. könnt ihr auch auf meine Page schauen:
http://kampis-elektroecke.de/?page_id=453
ich möchte euch mal das zeigen woran ich im Moment und in naher Zukunft noch arbeiten möchte.
Und zwar handelt es sich um einen CAN-Bus mit einem Mega32, einem MCP2515 CAN-Controller und einem MCP2551 CAN Transreciever.
Das Internet gab leider nicht all zu viele Informationen her und dementsprechend ist sehr viel davon selbst erarbeitet (nochmals danke an den Verfasser dieses C-Tutorials http://www.kreatives-chaos.com/artikel/ansteuerung-eines-mcp2515#receive).
Die erste Idee zu dem Projekt kam mir beim lesen eines Buchs über den CAN-Bus vom Elektorverlag.
Da ich mich etwas mit dem Bus beschäftigen wollte, habe ich dazu eine kleine Platine entworfen.
Leider hat die Version 0 meiner Platine zwei kleine Fehler (Testpin des FT232 ist nicht mit GND verbunden und deswegen ist es Glück ob der funktioniert. Aber das Problem lässt sich mit einer kleinen Lötbrücke lösen und die Rx und Tx LEDs sind falsch angeschlossen.
Den Schaltplan des CAN-Knotens habe ich mal als Anhang angehängt.
Der Bus sieht im Moment so aus, dass ich einen fertig bestückten CAN-Knoten habe und ein RN-Control + Steckbrettaufbau.
RN-Control + MCP2515 und MCP2551:
http://img442.imageshack.us/img442/169/dscf0328l.jpg (http://imageshack.us/photo/my-images/442/dscf0328l.jpg/)
CAN-Knoten (selbst entworfen und bestückt):
http://img839.imageshack.us/img839/457/dscf0329c.jpg (http://imageshack.us/photo/my-images/839/dscf0329c.jpg/)
Das RN-Control sendet im Sekundentakt eine sich ständig erhöhende Zahl und der CAN-Knoten empfängt diese und gibt die auf einem PC Terminal aus:
Sender:
http://img560.imageshack.us/img560/5489/unbenanntrsz.png (http://imageshack.us/photo/my-images/560/unbenanntrsz.png/)
Empfänger:
http://img12.imageshack.us/img12/7018/unbenanntykp.png (http://imageshack.us/photo/my-images/12/unbenanntykp.png/)
Das ganze läuft komplett Interruptgesteuert ab. Somit wird der Controller nicht zu stark ausgelastet. Als Spannungsversorgung für die CAN-Knoten habe ich solch ein Kabel:
http://img407.imageshack.us/img407/9721/netzteilcanknoten.jpg (http://imageshack.us/photo/my-images/407/netzteilcanknoten.jpg/)
Dabei handelt es sich um ein Netzteil, welches ich bei mir aus der Firma bekommen habe, weil es sonst im Müll landet würde ;)
Und um die Knoten miteinander zu verbinden, habe ich mir dieses Kabel hier gebaut:
http://img403.imageshack.us/img403/5264/kabelcankomplett.jpg (http://imageshack.us/photo/my-images/403/kabelcankomplett.jpg/)
http://img710.imageshack.us/img710/5808/kabelcansteckeroben.jpg (http://imageshack.us/photo/my-images/710/kabelcansteckeroben.jpg/)
Über das Kabel wird die 12V Spannungsversorgung der einzelnen Knoten gewährleistet und es wird das CANH und CANL Signal übertragen.
Durch die 12V Spannungsversorgung ist es möglich, dass nur ein Knoten am Stromnetz hängt und die anderen Knoten werden dann über die CAN-Kabel versorgt. Auf den Platinen befindet sich ein 7805 kompatibler Schaltregler, der bis zu 1,5A Strom bereitstellen kann.
Die nächsten Schritte werden dann sein, dass ich eine PC-Software dafür schreiben wollte (mit Visual Basic oder so) womit die Knoten ausgelesen werden können (z.B. Sensorwerte anderer Knoten).
Außerdem wollte ich gucken ob ich die Anbindung eines MCP2515 an mein Raspberry Pi hin bekomme. Dann würde das Pi den Job des "CAN Master" übernehmen. An die Knoten selber wollte ich verschiedene Sensoren anschließen und damit was aufbauen.
Zwei Sensoren habe ich hier schon rumliegen (einmal Luftdruck und Temperatur und einmal Feuchtigkeit). Den Feuchtigkeitssensor kann ich aber nicht ohne weiteres nehmen, da dieser eine von der Feuchtigkeit abhängige Frequenz angibt und ich bei meinem CAN-Knoten keine Interrupts rausgeführt habe.....
Mal schauen wie sich das Problem lösen lässt. Vielleicht steige ich auch auf eine I²C Variante um.
Vielleicht wandel ich die Frequenz auch in eine analoge Spannung um und messe diese einfach.
Wie dem auch sei. Ich werde schauen, dass ich diesen Thread hier nach und nach aktualisiere sobald es was neues gibt. Dies soll für die Leute sein, die selber mal mit dem Controller rumspielen möchten. Bei meiner Recherche habe ich gemerkt, dass es nicht all zu viel über CAN und Bascom im Internet gibt. Deswegen möchte ich hier gerne etwas für die Leute schaffen womit ihnen der Einstieg erleichtert wird.
Ich stehe auch gerne jedem zur Seite, der sich selber mit dem Controller beschäftigt und dabei Hilfe braucht :)
Für weitere Infos usw. könnt ihr auch auf meine Page schauen:
http://kampis-elektroecke.de/?page_id=453