From edaf00681f6250116c4eecd1c4e56813660f22ff Mon Sep 17 00:00:00 2001 From: Hakan Bastedt Date: Wed, 12 Feb 2025 15:31:59 +0100 Subject: [PATCH] Build.md initial --- Build.md | 66 ++++++++++++++++++++++++++++++ README.md | 2 + Utils/Pictures/RJ45-magnetics.png | Bin 0 -> 35720 bytes 3 files changed, 68 insertions(+) create mode 100644 Build.md create mode 100755 Utils/Pictures/RJ45-magnetics.png diff --git a/Build.md b/Build.md new file mode 100644 index 0000000..66f789a --- /dev/null +++ b/Build.md @@ -0,0 +1,66 @@ +# Building a EaserCAT board + +## Parts + +Most parts are generic and can be found in many places. SMD resistors and capacitors are standard, nothing special. + +Crystals are standard type hc49/s. + +In case of smd crystal then it's a "passive smd crystal 3225" + +Ferrite beads marked BLM18EG221SN1D, you can use any generic "ferrite bead 220 Ohm 0603 1ln" can be used. Not sure of 1ln is important nor what it means. In the schematics some are called BLM18EG221SN1D, others are called BLM18EG221S. It is the same, just a mistake in the naming. + +RJ45 connectors must include "magnetics" and be configured in this way +![RJ45 Symbol](Utils/Pictures/RJ45-magnetics.png) +I have used PulseJack JN0011D01BNL (and most likely a chinese knockoff) and it works fine, but any that meets the diagram above will work. + +The EtherCAT ICs are from aliexpress. There are quite a few sellers that has the LAN9252i/PT and the Ax58100 (LAN9252/PT and LAN9252V/PT are also possible, temperature range differs). Afaik, there is only one variant of the Ax58100 - AX58100LT. + +The pcb needs to be ordered. Consider using a solder stencil - but hey it's up to you. I have bought pcbs from some chinese factories and from Aisler, Germany. The Aisler pcb is the nicest and came with excellent solder stencil. At a bit higher cost, nothing dramatic though. If you are hunting pennies then go to one of the chinese ones, maybe check prices at https://pcbshopper.com. + +## EEPROM + +You need to fill the EEPROM with valid contents before putting it on the pcb. It is actually a must, the EtherCAT will not start with an empty EEPROM, or with a non-valid content. It doesn't have to be for a real EtherCAT slave, because the first thing you will do when the card works, is to upload the correct contents using TwinCAT. + +There is a small Arduino program [Link here](Utils/EEPROM_generator/) that helps to fill the empty EEPROM. Follow the link + +## Populating the pcb + +Enjoy! + +## Soldering + +I have put the pcb in the soldering oven. + +## Powering up + +Connect the STLINK/V2 unit and the serial port. The serial port will provide 5V, you don't need to see the output (there isn't any). + +Ax58100\ +Red led status - Blinking pattern means succesful read of eeprom +Gree led status - Blinking pattern indicates EtherCAT state (init, op, etc.) + +LAN9252\ +There is no indication. + +## Hookup to TwinCAT + +Install TwinCAT/XAE\ +Ethernet cable\ +Network interface assignment\ +scan\ +free-run\ +download EEPROM contents + +## Build and download firmware + +vscode\ +platformio\ +open folder\ +Build and upload\ + +## Twincat verification + +## Linuxcnc + +## Modifying the firmware \ No newline at end of file diff --git a/README.md b/README.md index a28b97b..103f440 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,8 @@ There are accompanying git branches. For example, for video 8 you can check out Video8 branch to get the software tree in the state at the video. More info on the videos, which are now more of historical interest, but also a bit of learning by following [this link](Videos.md) +Here is the start of [building instructions](Build.md) + ## EaserCAT 2000 - a testbench for ESC+MCU, SOES, stepper generator, linuxcnc ![Picture of EaserCAT 2000 board](Utils/Pictures/EaserCAT-2000.png) diff --git a/Utils/Pictures/RJ45-magnetics.png b/Utils/Pictures/RJ45-magnetics.png new file mode 100755 index 0000000000000000000000000000000000000000..79cad25e30435e14f6e218d776928f322b9e6810 GIT binary patch literal 35720 zcmZ^~WmFq|*zH|f+}+)wxVvj{cPLuip}1?Y;0~oY#oZ|c39iM9yA*eOr}y)`Yn>10 ze8|d5GD&95{AFKz|E_3NWmyzNLd19P-l53LNvXek2W0^~%;8~ycMwTkGJq#2H+5Nw zchwWbhrkQyFXBq#@7~oVAU&JH0Iw08<@DU%y~A|>_kdcnBJ+CpE`~&2N?g;+_%s*E zaQyCV$mFSE*?!2L!(a@}e0X(Nzu-rs=8=brq@J2&?pvYex<>wAIytJi?;_1U(riKnNBPSLYF0}d!>K4R4U zxU0aEH1MV~pA$X{gcvolklI;%5BP*87>Oeiyh)E>2;wJ3m6hKJ83PXb^d8RwH4?0b z*-GxlM;xE@3nmlzZVL4O{i{N4pd?EFOXzgg;!Rh5fy>KRX;~!{Yg^BtEPajnP;j}w zT(PSG3GLw*x=Ae`v}og8f|9v(YH{&40augiY+(BGO3viKPR}DSLv#t%05IVsEEl~ zx1JLy53Td_hiDYYh%U@;4}DiiSFXg1RDFYf@FPF@S_=QQ9^@tTL0#P4;Cd#a2*=#R^A$@}A`H-@N@kXI$pMDAmu{^m3yM}{*h7{`a0jE0Hg+-lAFuIUF(-3UQSdG3 zeecgH8d4_8rnfB<6Q?T&HtFdMnqTP~-saVAcZM~r7(Q89rP=4)P-kukb1KLO{ApI@ zaWW1%d2go!*`%ot*zwgK;aR?cTe9|9*KZCE*yptD##-!Fa>ej!IG682JeVyE_1f1L znCbUzCD{$P{HWb`M$D;+DBLd%;BunPs&s5y-xmU=3@nBq^ zIQ}v*CkN4_=N*%CM&#X^U4Nytn$8<`JW@AK=YdD7+dfMJW|5pACX}cS(by_+Ovbi6 z#KM=cNDppP@F$J^(Jym`q6D|;R$&{v0)smzwhoi(&!a(;BmR(B_o2ZniTuvj3}K_t z+>P-*m^MVA@hE9)IcPJEqQ+cro{(m&2J41F5Ic{Nk;6P=_F7lt`AL2tC|4;$gO7N3 zd!fJK{^+NgyH}ME1i!vIo+m)?Yn~oF8phdixPxppRk|Ld(%r@RwL2D%oqHiHH?pzV zvZJp340gNn#1u^r8pB^U<1F$V6PR`dJc$;lQzo$p-0-s-433+!7_Y*mh zQG!Zo>$q~?u%E+x;zF6yrgE_xdu1?MuA*eBBnQa6$$jf>n)e7gJ)=TsI9aQK{&U;4 zE#TVYqgbypa|vgBVhD~x1YT^_`@|(FB#nLi!U3?Z{c29oiCMCbOwz*ykTH+a&T=D(kF6h3`UyCh(Ppo1d~#Hwr_z(hC~ckBEa+-`(+E=N=`xU2)R zWC0NUZ<|}iqZ$0>jE~oc15B1!?V`jzFP@~;AA7#w@?V~n@vJ5Zn~qeb7N(r>N)kGt zbxHRN;zGBrWA;08M}{f2f1#8{-+?zwwhNN_Ac@Q!_EH1K0x3qQUlfLw1<$JI z5*WvkV?`to$1F9JNSf34bCUg*kFTDrLqW}>UWe^^?DwlZuYsg?Q|hZyW9lZ`mhwqtsnaK zQiFpM`f=nV`pz>n-_at~5rJJYMa=K%a~}DS?O&-9fgFQ5vZqP3eaF*%giyY;1yzd= zsbIVadJMs@4@h}^{Pt@*!@!vL8(@6g)!X6A*Q=Pc{%F_Q$|MaJ$C|PGdz%bB4C?|R zL%$2s~|yXjF^g%|>XtnYj43Ayex;uYzE8E<^6%f@jf^qNj$U3}Wfoh3(AyiYk>`DcPj1(#+zcAxn~r#tCq^xwz^Jup zu9RMo`kWl%d39pWFH57%XXoZsGkQ0n9VbsXKXrfdT~5t;*N2X&dw)W(>w@&@?>6Io zu~fK`??|_wx@<5bdvGZZEAB>ZjjXg-?f9BsJ<}2R1{Gm|TA2Kmk&&_0j~^uxZD_;W zk%bs%gy31N@C^~EWq}2k(<}RY``bGtH%@`+y2V4^vD}t-7Z;^d zKXp`m5X$J;_neJs-t2A&`Xufsd0AD^{e>0lbK})QKCrD>aUe%zY;GrHQ+S;@vJ8fA zkh%&-`a){b9#1InXz64>Np4mfzJx}AZES5f{(N1x^yPPLjT|e-RmtzpDG89z+dy#P zD;D26mWL;fE+S9VwDz_r23rFBZC=XWaxNqu02%4HaPQY={+kMU%uJSCK?;$-@GHQUjtGWn%X52qM7f89ogOo63vp)A+mdUTU`U#J z!La^aK_hW{THuZJ{_Z)9MDPXVbAfr>yXg!M{4cvyEOSI)xcQKojgYnGH3rku8jgwQ zTz|8Jpl(eT79n9g2ACNgy%kTRbi728syiUK_TiD}nHY1>$AyoW1#**-+x_bG_Hsv_ zDpGK|x@stJEfzu1{CM&`M#FYwIBeGX-c!==LRzrZx3UzB7x;1mpFk!m6Yz@kT)X^% z)wuI>7k|zp3f_*7qV32)x*3x!?Gu{LTdRy4vfsJ5xmA^jMUv`eH+1?e$5ds?`zoiG z^|xt>YC!rRxptMf?XzCot~fPlLn(>e2U+E4NZr<8fX8h#Wo8pZ`b9(FjC0;DuP$5~ ztbiSK&Z(7r!CcN|_zg>Fu4Rq!9>4SHuVBcRXDC<{!e30>+YOWYKTLYoDbsrauB z8{`}uSrH}U8LudvyxwNNg1#YDX{XjW44SI^V!1wF9VL@{W5nenoamb^3u2?Q0X-=c{!ebJsc4%#8z``=@^>`EeRH0ZXS-T7i8@INnc z;63hYVaq0vO3Do4guN0&qups8tkn{X|iAn;b3ET0o93nT{m`jG!N6d>3KcIY>g8q!u>MU#37NlC4LYR$x}KatLB4U= z_l&!*rYFyIeukpë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 V;ZQ`W)