Zusammenfassung

Preisgünstiger Selbstbau CAN-Bus Rückmelder mit zusätzlichen Features, wie Servo Ansteuerung oder S88 Interface.
Hier zwei Beispiele, wie der CANBuster verwendet werden kann:

Sofern kein PIC Programmer vorhanden ist, kann auch ein preiswertes USB-Serial Interface zum Flaschen benutzt werden. Der CANBuster ist zudem ein sehr preisgünstiges PC-CAN-Interface.

Bestückung


Bauteile

Core
====
U1		PIC18F45K80 oder PIC18F46K80
U2 oder U12	MCP2561 DIL oder SMD
U3		LM7805
U4,U5,U6,U7	LTV-844
C1,C2		100nF RM2,5
C3,C4		22pF  RM2,5
C5		47uF  RM2,5
C8,C9,C10	100nF RM2,5
D1,D2		LED 3mm 2mA gelb
D3		LED 3mm 2mA rot
D4		BAT43
R1		4k7 Ohm
R2,R3,R4	1k5 Ohm
R13		1k Ohm
R18,R19,R20	10k Ohm
R37		390 Ohm
RR1,RR2		10k Ohm SIL 9-8
R21,R22,R23,R24	47 Ohm SIL 8-4
Q1,Q2		NPN Kleinsignaltransistor z.B. BC547 oder BC549
Y1 		16MHz Quarz HC49U-S
J1,J2		RJ45 Buchse MEBP 8-8S
P1,P2		Anschlussklemme 10 Pol 3,5 mm z.B. AKL059-10
JP7		3 Pin Stiftleiste
P9		4 Pin Stiftleiste
P10		2x4 Pin Stiftleiste
P11,JP11	6 Pin Buchsenleiste
P13,P14		Printstecker PSS 254/10G
P15		Anschlussklemme 2 Pol 3,5 mm z.B. AKL059-02
P16		2 Pin Stiftleiste
SW1,SW2		Kurzhubtaster 6x6mm
D11..D162	noch nicht definiert

CAN Transceiver Option - galvanisch getrennt
--------------------------------------------
U8		ISO1050 DUB(R)

I2C
===
R9,R12		3k3 Ohm
P18		Stiftleiste 3 Pin
J3		RJ12 Buchse MEBP 6-6S

PWM
===
P3,P4,P5,P6	Stiftleiste 3 Pin

S88
===
OK6,OK7,OK8,OK9	6N137
C11,C16,C17,C18	100nF RM2,5
R38,R41,R42,R43 390 Ohm
R39,R40,R44,R45 1k Ohm
P12		6 Pin Stiftleiste
2x Sockel	16 Pin		

Serielle Verbindung
===================
OK1,OK2,OK3	6N137
C13,C14		100nF RM2,5
R5,R6		390 Ohm
R7,R8,R11	1k Ohm
R10		270 Ohm
Sockel		8, 16 Pins
gewinkelte Buchsenleiste 6 Pol

Sniffer
=======
OK10		6N137
C15		100nF RM2,5
R46		1k5 Ohm
R47		390 Ohm
D7		1N4148

Fehler der Platinen-Version 1

Leider hat die Platine der Version 1 einige Fehler:
- Stromversorung Hohlstecker GND und VCC vertauscht (nicht bestücken)
- USB-Power Pin GND falsch verbunden
- PWM1 und Status LED vertauscht (PIN 16 RC1 und PIN 17 RC2)

Für das einfachen Rückmelden stören diese Fehler nicht - man muss nur die Stromversorgung entsprechend anpassen.
Die Fehler lassen sich aber auch relativ einfach vor der Bestückung beheben:
- Leiterbahnen am Hohlstecker auf der Voder- und Unterseite auftrennen
- USB Leiterbahn auf der Vorderseite auftrennen und entsprechend verbinden (Bild folgt)

- Pin 16 (RC1) Leiterbahn auf der Vorderseite und Pin 17 (RC2) auf der Rückseite trennen


Wenn die Version1-Platinen aufgebraucht sind, dann wird ein neue, fehlerkorrigierte Version gefertigt.

Lötreihenfolge

Wenn keine galvanische Trennung verwendet wird, sollten zuerst die Brücken JP8, JP9 und JP10 aufgelötet werden. Danach der MCP2561 bzw. ein Equivalent sofern die SMD Variante verwendet wird. Dann sind die Kondensatoren und Widerstände dran. Bevor die IC-Sockel eingelötet werden, sollte man sich vergewissern, das alle Komponen unterhalb der ICs bestückt wurden.

Bootloader und Firmware erstellen

Die Software ist auf Github abgelegt und kann schnell und einfach herunter geladen werden:
sudo apt-get install git gputils gputils-common
cd ~
mkdir RM
cd RM
git clone https://github.com/GBert/misc.git
cd misc/CANBuster/software/fw
make
cd ../bootloader
make

Flashen der CAN-Buster Software

Die Software des CAN-Busters besteht aus zwei Teilen:
- CAN-Bootloader
- CANBuster Firmware

Der CAN-Bootloader ermöglicht einen einfachen Firmware Upgrade ohne das man den CAN-Buster ausbauen muss. Die CAN-Bootloader kann über zwei Methoden geflasht werden.

Flashen der CAN-Bootloaders mit Pickit2 (Pickit3)


Auf der CAN-Buster Platine befindet sich ein ICSP-Header mit verschränkten Löchern, so das man ohne Löten den CAN-Bootloader mittels Pickit2 programmieren kann. Hier die Sequenz, die ich dazu verwende:
# 
cd ~/RM/misc/CANBuster/software/bootloader
make
# bei einem PIC18F45K80
pk2cmd -B/usr/share/pickit2 -PPIC18F45K80 -E -MC -MP -F boot/canbuster-45k80.hex -R -T
# bei einem PIC18F46K80
pk2cmd -B/usr/share/pickit2 -PPIC18F46K80 -E -MC -MP -F boot/canbuster-46k80.hex -R -T

Flashen der CAN-Bootloaders mit FT232RL Board

Zusätzlich zur Pickit2(3) Methode gibt es noch die Möglickeit, einen preiswertes USB2Serial Board als Programmer zu verwenden. Dieses Boad kann nachher als CAN-Seriell-USB Wandler wieder verwendet werden.

Darron Broads PIC Programmer Software Pickle erlaubt es, das Board als Programmer zu verwenden:
cd ~/RM/misc/pickle-ftdi/src/
sudo apt-get install libftdi-dev
make ; sudo make install
mkdir ~/.pickle
cp dotconf/canbuster-ftdi ~/.pickle/config
cd ~/RM/misc/CANBuster/software/bootloader
# bei einem PIC18F45K80
p16 lvp p boot/canbuster-45k80.hex
# bei einem PIC18F46K80
p16 lvp p boot/canbuster-46k80.hex
Für den BPi sieht die Abfolge so aus:
cd
cp .pickle/config_canbuster .pickle/config
git clone --depth=1 https://github.com/GBert/misc
cd misc/CANBuster/software/bootloader/
make
p16 lvp p boot/canbuster-45k80.hex
cd ../fw/
easy-loader -i 666 can0 firmware/canbuster_4xk80_pwm.hex

Flashen der Firmware über CAN-Bootloader

Den Bootloader kann man über mehrere Methoden ansprechen:
- direkt nach dem Starten wird der Bootloader ausgeführt
- durch Drücken der Reset-Taste (nähe LEDs) springt der CANBuster in den Bootloader
- durch ein spezielles CAN-Paket wird der Bootloader aufgerufen
# zuerst ID bestimmen
# mittels CAN Dump CAN Frames beobachten
candump -tA -xe any,0:0,#FFFFFFFF
# CAN Ping 
cansend can1 00300300#
# CANbuster antwortet mit z.B. :can1  RX - -  0031B311   [8]  43 42 55 53 01 00 00 40
# 43 42 55 53 ist die ID -> 45425553 80 00 sind die notwendigen Data Bytes
# CAN Bootloader starten
cansend can0 00000301#434255538000 
Wenn sich der CANBuster im Bootloader befindet wird das durch schnelles Blinken der Status LED angezeigt.

Sobald der sich der Prozessor des CANBusters im CAN-Bootloader befindet ist das Flaschen über das Programm 'easy-loader' möglich:
# easy-loader installieren
cd ~/RM/misc/CANBuster/software/easy-loader
make ; sudo make install
cd ~/RM/misc/CANBuster/software/fw
make
# PIC18F45K80 und PIC18F46K80 haben die selbe Firmware
# S88 Firmware
easy-loader -i 666 can0 firmware/canbuster_4xk80_s88.hex
# PWM Firmware
easy-loader -i 666 can0 firmware/canbuster_4xk80_pwm.hex
Wenn die Firmware erfolgreich geflascht wurde, ist der CAN-Buster einsatzbereit und die Status-Led blinkt im Herzschlag Rhythmus.

CANBuster als CAN PC-Interface

Der CANBuster ist über die SLCAN-Api ansprechbar. Damit lässt sich z.B. Rocrail nutzen. Oder man verwendet die SocketCAN API:
sudo modprobe slcan
sudo slcand -S500000 /dev/ttyUSB0 can1
sudo ifconfig can1 up
und nutzt dann 'can2lan'. Damit ist der CANBuster neben einem Rückmelder auch ein sehr preisgünstiges CAN-Interface.

Entwicklung

Die Software basiert auf den CAN-CAN Code von Darron Broad. Zudem wird der Debouncing-Code von Peter Danegger verwendet.

Die aktuelle Entwicklung (Hard- und Software) findet man auf Github .

Versionen

Schaltplan Version 1.1 Gerber Daten V1.0
V1.1
- first version

Reduced to the max

Impressum: