CNC PCB milling


  • Hero Member

    @andrew Looks as though your new nema steppers either have encoders or else those are knobs for manually jogging. Aside from that, it looks generally stiffer due to all metal with no plastic.



  • @andrew

    • Does it use ball screws or trapezoidal ones?
    • how stiff it is in X an Y directions?
      (on my machine slight push on spindle, yields ~0.2mm of flex, and heavier one around 0.5mm, which is roughly precision I get when cutting plastic. For PCB routing error seems to stay within 0.2mm boundary)
    • how big is backlash
    • screw (movement) linearity in X,Y planes


  • @NeverDie it is a knob for manual positioning. the whole assembly and machine is very massive and stable, all metal parts do matter a lot.



  • @niallain it is 3020T which uses trapezoidal screws. "Z" uses ball screws.
    you can check the "official" technical details on the item's specification (scroll down to the description then click on the "specification"):

    ...
    Driving units X axis: 1204 trapezoidal screws
    Driving units Y axis: 1204 trapezoidal screws
    Driving units Z axis: 1204 trapezoidal screws
    ...
    Repeat accuracy: 0.05mm
    ...
    Spindle precision: radial beat acuities 0.03 mm
    ...

    Note that none of these parameters above are confirmed. To be honest I don't have the right measurement tools for that, but the fine trace PCB samples will prove it, or not 🙂



  • @andrew

    @andrew said in CNC PCB milling:

    @niallain it is 3020T which uses trapezoidal screws. "Z" uses ball screws.
    you can check the "official" technical details on the item's specification (scroll down to the description then click on the "specification"):

    declared specs for mine were in the same ballpark as your's 3020T, modulo 8mm trapezoidal screw. But in reality that wasn't true at all, in my case cuplrit of the biggest error is the flex from the way screw nuts are attached to carriage, and the second/third are nonlinear screws (+-0.060mm) and backlash.

    I'm ordered a 1204 ball screw kit for Y axis, to test how much it would reduce error.

    PS:
    As for testing, I just used regular digital calliper with 0.01mm resolution.


  • Hero Member

    @niallain said in CNC PCB milling:

    in my case cuplrit of the biggest error is the flex from the way screw nuts are attached to carriage, and the second/third are nonlinear screws (+-0.060mm) and backlash.

    I'm curious to know how is it that you're measuring those things? I'd like to quantify as many sources of error as possible, but I'm not sure how to go about it.



  • @NeverDie How about a dial gauge in a magnetic mount attached to the spindle and measuring against x/y/z frame points, and a simple gcode like g0x100 g0x0 a hundred times? At least that's how I did it to check for lost steps.



  • @NeverDie
    I shoot a short clip to demo following measurements

    • backlash :
    • flex: for example I used dial gauge, since my Y screw and table are currently dismantled, so I can't show how it's done with calliper on the table
    • non-linearity is measured only on 1mm, with calliper or glass scale it would be possible to measure whole screw. (linuxcnc can use glass scale to map screw and then compensate, but I still don't have all components for it yet)

  • Hero Member

    @niallain said in CNC PCB milling:

    • non-linearity is measured only on 1mm, with calliper or glass scale it would be possible to measure whole screw. (linuxcnc can use glass scale to map screw and then compensate, but I still don't have all components for it yet)

    That's quite an interesting result! I would not have imagined it would be so bad. What exactly is happening that causes this? Is the screw being wound up almost like a spring and some kind of stiction is causing the carriage to jump about like that? Is the anti-backlash nut causing it? Or is the stepper in fact not advancing as much as it should be due to no closed-loop feedback? What's the cause? How repeatable is it? i.e. does it jump about to the same amount in the same places each time it's cycled through the test, or does it vary each time the test is repeated?

    It's a great advertisement for DRO's.


  • Hero Member

    Reporting back: Regarding Sharpie-Oil pens, I found that it doesn't chip-off and disintegrate, even after letting it dry for a few days, if I write it onto inkjet transparency material instead of polypropylene:
    P1100137 (2).JPG

    Because it's so opaque, especially when compared to other black pens, it's the best pen I've found. The linewidth of the "Sharpie-Oil Extra Fine" pen is about 1mm, though, so that precludes using it in a plotter if ultra fine detail is required.



  • @NeverDie however.... The material sticks a bit to the paint.


  • Hero Member

    @Joerideman said in CNC PCB milling:

    @NeverDie however.... The material sticks a bit to the paint.

    ??? Which thing are you referring to?

    Right, so I still use the polyproylene against the solder mask, but I can layer this inkjet tranparency on top of that. It's an extra layer, but it's kept separate from the solder mask by the polypropylene layer underneath it. Is that what you mean?



  • @NeverDie yes.


  • Hero Member

    @NeverDie said in CNC PCB milling:

    I found a good "once and done" lubricant for my CNC called Krytox. It's made by Dupont, is non-toxic, never dries out, and is non-reactive with just about everything. It is more or less liquid teflon (PTFE). It comes in a wide spectrum of different viscosities. I'm using GPL105, but I think for a CNC one could argue for using a version that's a least slightly more viscous (i.e. GPL106 or higher).

    There also exists grease versions of Krytox, so perhaps (?) that would be even better. In general, for any given lubricant, how does one decide what the right viscosity is to use?

    I guess maybe a dry lubricant would be a better choice, so that it doesn't attract dust or debris. To that end, I'm thinking maybe one of these:
    https://smile.amazon.com/gp/product/B000GE1F9K/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1

    https://smile.amazon.com/gp/product/B00AF0ODGM/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1

    Anyone have a preference, opinion, or other suggestions?



  • quick update, just managed to make some test milling.
    pro tip: always check your tip before milling 🙂 I had to trash the one I used for the first two, as its end was chipped

    traces are 6 mil, the footprint is tqfp100 p0.5, built in from kicad.
    some of the the standalone traces are 6 mil with 6 mil clearance, their open end came up, but otherwise it looks ok.

    other 6 mil traces that are connected to pads are actually ok.

    6mil traces where the clearance is 4 mil only were not millet at all, due to the isolation routing path made by flatcam.

    overall, I'm happy with it.

    I've also ordered a dial indicator measurement tool, I'll report the backlash and other measured precision details when it arrives.

    some pics:
    the control box is open and it has an additional external grbl controller now, I'm working on a proper electronics.
    small_20201010_091550.jpg

    small_20201010_100008.jpg small_20201010_095958.jpg

    small_20201010_100018.jpg

    small_20201010_100409.jpg



  • @andrew oh, for those who are interested, flatcam settings were the followings:

    • tool dia: 0.1176326981
    • passes: 2
    • overlap: 0.15
    • cut z: -0.05
    • feed rate: 500
    • spindle: 300 (0-1000 range, but in fact as the pwm signal is inverted now, it is equivalent with 700)

    the engraving tip was 2001 (20degree, 0.1mm end)


  • Hero Member

    👏 Nice! Thank you for the photos and for sharing your settings and early results.

    @andrew said in CNC PCB milling:

    I've also ordered a dial indicator measurement tool, I'll report the backlash and other measured precision details when it arrives.

    👍 I'm not sure how you would measure it, but I'd also be especially interested in how much "twist" potential there is on the z-axis, as it looks like a pretty long lever arm exists between the cutting bit and the x-axis linear bearings that are supporting it. On the other hand, maybe pre-tensioning from the sheer mass of the carriage and motors (spindle + z-axis stepper), together with a cutting depth of just 0.05mm and a small effective diameter for the cutting bit overwhelms any slop there, rendering it unimportant with respect to pcb milling. Seems that way, judging from your early evidence. I suppose all that weight might also eliminate z-axis backlash? Looking forward to that measurement.

    As for me, I now have possession of the three closed-loop Ustepper-S drivers. I've installed them on the higher torque stepper upgrades and tested them electrically, and they all seem to work great. Now waiting on the dry lubricants to arrive before purging the old wet lubricants from the system (well, as much as I'm able to--the z-axis linear bearings were glued in-place on a previous carriage upgrade), and then I just need to re-assemble the CNC and mount the upgraded steppers on it. Lastly, I feel I need to add limit switches and an emergency kill-switch before powering up again, because with a closed-loop system, if the CNC ever overruns the end of a range, rather than merely slipping some steps like an open-loop system would, I'm pretty sure a pure closed-loop CNC will never give up trying to reach the unreachable and so keep grinding forever. Seems like some kind of simple time-out in the closed-loop code could notice lack of progress and prevent that. Or perhaps "virtual" endstops could be set using the uStepper-S position encoder. On the other hand, maybe just monitoring for excessive current draws on each stepper would be yet another way to protect, since it might protect the z-axis from a worst-case (Murphy's Law) scenario of overshooting (from bad g-code or otherwise) and burning its way deep into the spoilboard and beyond. Every now and then I see a youtube video where that actually happens to somebody, including all-hell-breaks-loose cases where the friction even lights the spoilboard on fire. Not as rare as you might think: many people on the MPCNC forum are afraid to leave their machine running unattended for even a few seconds. I found that out, to my surprise, after they were horrified when I showed them my LoRa device for remote monitoring my CNC for end-of-job completion. Rather than a convenience, literally all they could think about was a scenario like:
    CNC Fire Video – 01:42
    — Gary G Campbell

    (Yet another reason to switch to dry, non-oil lubricants. 😉 ).
    Maybe the more advanced trinamic drivers can detect overcurrent? Surely yes, because they can implement homing without physical endstops. Meh, it might work, but without some experience with it I wouldn't trust it just yet to be bulletproof enough to rely on as a strong first defense. For now I guess limit switches will be both the easiest and most foolproof, and some kind of different/redundant protection can be added later for a more resilient failsafe.

    Anyhow, whatever it takes, I for sure want a CNC that can safely run unattended without the need for me to constantly watch over it, just as I don't feel the need to constantly watch my gas water heater or gas dryer whenever they operate. Thinking about it now, probably all that's needed would be a non-flamable spoilboard, because, if just milling a PCB, I'm pretty sure (?) nothing else on my CNC could catch fire, even in theory. Hmm.. What kind of non-flamable spoilboard material would best serve the purpose?


  • Hero Member

    Just now came across something quite interesting. At time index 6:00, this youtube makes a compelling case for flipping upside down the spindle mount, so that the anti-backlash spring-nut is mounted on the bottom instead of the top of the z-axis carriage:
    Cnc 3018 Upgrade with a 500 W Spindle Motor – 24:09
    — techydiy

    Judging from his demonstration, this simple change may greatly reduce the amount of play.

    Has anyone here tried 3D printing in metal? I've seen examples where you can do that, sinter it afterward, and then basically have a strong, useable metal part. If it works as advertised, maybe I could 3D print the carriage in metal for the next iteration.


  • Hero Member

    I was reading the cnczone primer on ballscrews, and the closest scenario to PCB milling was:

    Situation 5: "I am scratch-building a small CNC bench mill for machining casting waxes and light metal work. Accuracy is important. I am going to machine jewelry prototypes, small components for turbine engines and R/C, and other small parts with close tolerances."

    Solution: This will require a very accurate and tight system with 0 backlash. As the size of the parts go down, the need for zero backlash and a quality fixed bearing set go way up. 0.005" of backlash would ruin a fine filligree in wax for gold casting, or a turbine diffuser. I'd go with C3 or better ground ballscrews, fine pitch, servomotors, direct drive, THK/NSK linear rails and trucks. A commercial bearing block would ensure success, or you can create blocks on your own, but they'll need to be well-made. You'll also need a fast, high-quality spindle, but that is another topic entirely.

    I did a quick survey of ballscrews on ebay, aliexpress, and amazon, and all of the ones I randomly sampled were of type C7 quality, which is a much lower quality rating than the "C3 or better" type that's recommended in the quoted passage. That may throw a wrench into the idea of buying a pre-made inexpensive CNC if to get the required repeatability I need to subsequently rip out and replace a lot of key components with better quality ones. Since the better quality ballscrews are relatively expensive, and the quality type is never even mentioned in most CNC machine listings, I imagine they're probably of type C7 (or worse). To put numbers on it, the least expensive C3 ballscrew listed on aliexpress is $170:
    https://www.aliexpress.com/i/32798741066.html
    and nothing of type C0, C1, or C2 is even listed.

    That said, I do wonder whether a glass scale linear position sensor might allow a closed loop system to compensate using software. They're not hugely expensive, and they are commonly spec'd as accurate to 0.005mm, or 0.001mm for a modestly higher price. Since cutting depth is typically 0.05mm, I would think that either one should be good enough. I'm thinking that, at least for the z-axis, this might be worth exploring because for the z-axis all you typically need to do is reach the target depth-of-cut and then hold it there for relatively long time intervals while traces are cut, before picking up, moving to a new location, and repeating. I'm sure there are well studied algorithms for x and y as well, but z seems like it would be comparatively simple to implement. Well, actually, that's not entirely true, because the elevation map means the z-axis may need to continually adjust as well--maybe just not as quickly

    Maybe what saves PCB milling is that part of the inaccuracy is related to distance travelled, and there's generally not much need for the z-axis to travel very far once the milling operation has begun (especially if the spoil board was milled flat beforehand by the same CNC). Maybe milling the copper cladding on a PCB flat prior to starting would be a feasible workaround that would throw the problem back into the idealized realm, so that then no elevation compensation would be needed. It might require thicker cladding to pull it off so as to avoid thinning it too much, but it just might work.


  • Hero Member

    After doing a bit more reading, I think I'm on the right track as far as using a high precision linear gauge as the basis for the closed-feedback loop. There's a CNC manufacturer named accurateCNC which specializes in building CNC machines for milling PCB's, and as near as I can understand it, they take this approach and get good results with it: they use a linear guage that can resolve 0.1mm, and they claim 1 micron accuracy on their PCB milling: http://www.accuratecnc.com/designConsepts.php
    Among other things, they also credit using the absolute best ballscews and a 60K RPM spindle that has negligible runout. As a result,

    All new models listed currently on our web site are extremely accurate. The absolute accuracy is definitely 8 to 10 TIMES better than the competitors

    If that is so, then I presume their machines literally are the state-of-the-art.

    I think that for me, rather than develop custom software to handle the objective closed loop provided by the linear gauges, maybe I could simply translate the linear gauge data into the angular representation that the u-stepper already knows how to process as a closed-loop. I'm assuming there is no meaningful backlash or nonlinearity in a linear gauge. If (?) that is so, then I'm imagining that this approach should be a relatively easy hack to pull off, yielding pretty much flawless positional accuracy, because the closed loop based on the linear gauge measurements should smoothly correct for whatever backlash and non-linearity remains in the CNC mechanism, provided that the measurement resolution is fine grained enough that the corrections are continuous and not herky-jerky.



  • @NeverDie their tools are also $115+ voor 10 engraving bits.

    Presicion comes with a heavy price.


  • Hero Member

    @Joerideman Not just that, but their best machine costs nearly $18K.

    One salient feature keeps coming up though, and that seems to be that PCB milling gets better results at higher RPM's. I've heard it suggested on the CNCZone forum that 24,000 RPM is a good lower bound for spindle RPM on a PCB etching mill. Why is it so? My current spindle tops out at a mere 12,000 RPM. There's a 12v 20,000 RPM spindle for sale on Amazon that's priced at around $30:
    https://www.amazon.com/gp/product/B08DTHDSMV/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1
    so I ordered it to see for myself whether higher spindle speed will make a noticeable improvement. If it's true then that's obviously a great thing to know. However, I'm still left wondering as to exactly why it leads to overall improvement. Might it simply be that spindles designed to run at higher speeds are built to a tighter specification, and so maybe as a result there's less runout, and so perhaps it is simply that which is what's truly responsible for the better results? Or maybe the higher RPM's result in more gyroscopic effect, which effectively renders the spindle a bit more rigid? I can imagine quite a number of different possible explanations. Does anyone reading this know the answer?


  • Mod

    @NeverDie said in CNC PCB milling:

    However, I'm still left wondering as to exactly why it leads to overall improvement.

    Isn't it just that higher speeds lead to smaller amounts of material being removed with each rotation of the spindle? (given the milling speeds stays constant)
    If that's the case you could exchange milling velocity for spindle velocity.


  • Mod

    @NeverDie said in CNC PCB milling:

    assuming there is no meaningful backlash or nonlinearity in a linear gauge.

    Backlash no, nonlinearity yes, but that all depends on the quality of the ruler and the accuracy you are trying to achieve. At the nanometer level nothing is flat anymore 😄


  • Hero Member

    @Yveaux said in CNC PCB milling:

    @NeverDie said in CNC PCB milling:

    However, I'm still left wondering as to exactly why it leads to overall improvement.

    Isn't it just that higher speeds lead to smaller amounts of material being removed with each rotation of the spindle? (given the milling speeds stays constant)
    If that's the case you could exchange milling velocity for spindle velocity.

    Maybe you're right. Somewhat rephrasing what you said: perhaps a higher RPM is needed to get a smaller chip size, and (for reasons unknown) a smaller chip size is what's optimal for PCB's.

    I was starting to entertain an alternate theory, which is that a higher feedrate would serve to better avoid stiction, which at narrow pitches could be devastating. A higher feedrate needs to be matched by a higher RPM, and a higher RPM more or less demands a faster feedrate. Constantlly moving (and the faster the better) is maybe one way of mitigating against stiction. A corollary of this is that by having a high precision (to the nearest 0.1 micron) linear encoder, each axis is probably always moving and never completely stopping.

    Anyhow, I suppose there might be a whole host of beneficial effects created by running at a higher RPM without any one of them being dominant.

    Some of the higher end CNC PCB etching machines (such as accurateCNC's flagship model) have spindles which can spin as high as a 100,000RPM, or about 8-9x the maximum speed of my default spindle. If I recall correctly from an earlier discussion on this thread with @executivul , there tends to be much less vibration at higher RPM's, and so that too might be one of the positives driving the move to higher speeds.

    New 100Krpm spindles seem to be priced around $1,500 (and up), whereas a new 60Krpm spindle can be had for around $300. I'd speculate that either one, almost by definition, needs to be relatively well made just to avoid ripping itself apart, but I can't say that I know that for sure. Just a weak hunch. On the other hand, maybe they're built only just good enough to last through their warranty period and then promptly die, just like Salmon after spawning. But then again warrantees may be meaningless in the first place if the spindle is sourced from some no-name manufacturer. And then there are "pre-owned" spindles, which I'm unsure how to evaluate, and for that reason I so far haven't even considered them. Maybe after I learn how to properly measure and characterize a spindle I'd know which spindles won't be good enough. This might be the way to go, because if it works when I first receive it, that would imply it has already survived Part 1 of the MTBF bathtub model, and I'd probably use it so seldom (well, compared to the industrial user that it's probably designed for) that it would probably outlive me. According to the bathtub model, those are likely better odds than buying a new spindle that has only a (probably worthless) warranty to stand behind it--of course, that analysis relies upon the very large assumption that it's not being sold for the precisely the reason that the seller already knows it to be defective or otherwise impaired, much like many/most of the cars on a used car lot. The oddsmaking works only if blind chance alone governs whether a particular pre-owned spindle is defective or not. Well, good luck getting the seller to disclose that information if he figures you can't tell the difference. That is, if I don't know enough to evaluate and check acceptance criteria on a new purchase. But if I do, then it shouldn't matter (well, not as much anyway) even if the seller is lying about the true condition of the spindle or his reason for selling it, as in that scenario I hopefully know enough to run the right diagnostic tests upon receipt of the spindle, and I would then document the issue, reject it, and send it back to the seller, being sure to avoid that particular seller on all future purchases.

    Yup, I think that sorts the medium to long-term strategy. In the short-term, though, until I develop that skillset, I'd either roll the dice and accept the risk or, more likely, I'd probably buy a reputable brand with a trustworhy warrantee, even if it means paying more (as it surely would). For instance, in my case that probably means I'll be buying linear rails and ballscrews and related parts directly from Thomson or Misumi, both of whom will sell to individuals. For my next machine, that may also rule out buying a heavy, fully integrated machine from China, as the parts are who-knows-what and any return shipping would probably cost quite a lot (and be yet another thing that could go wrong). But that's me and my particular baggage. I'm not saying others shouldn't do that if so inclined.



  • Regarding feedrate vs rpm the last engravings I ran at about 40k rpm, was to lazy to balance the endmill (turn spindle on, if it hums loudly then stop, undo the clamp, rotate 20-30 deg the endmill in the clamp, retighten clamp, rinse, repeat). I just tend to find the poles of harmonics: start spindle at full speed, hums badly, lower rpm slightly less hum, lower even more starts humming again, lower again, even more quiet... so find the sweetspot with least humm (vibration). If you go down enough at about 35-45k rpm you will get the quietest.
    For best feedrate I've manually written a simple zig-zag gcode with different speeds: F1000 G1 X20Y5 G1 X0Y10 F1100 G1 X20Y15 G1 X0Y20 F1200... and inspect with the microscope for the best, burr free, engraving speed.
    I normally run at 1400mm/min.



  • @NeverDie said in CNC PCB milling:

    @niallain said in CNC PCB milling:

    non-linearity is measured only on 1mm, with calliper or glass scale it would be possible to measure whole screw. (linuxcnc can use glass scale to map screw and then compensate, but I still don't have all components for it yet)

    That's quite an interesting result! I would not have imagined it would be so bad. What exactly is happening that causes this? Is the screw being wound up almost like a spring and some kind of stiction is causing the carriage to jump about like that? Is the anti-backlash nut causing it? Or is the stepper in fact not advancing as much as it should be due to no closed-loop feedback? What's the cause? How repeatable is it? i.e. does it jump about to the same amount in the same places each time it's cycled through the test, or does it vary each time the test is repeated?
    It's a great advertisement for DRO's.

    It might be acceptable non-linearity for trapezoidal screw. But on Y axis, at one place it was far worse (don recall exactly but around 0.1-0.05mm). I wouldn't blame steppers though as load in test case is only inertia of Z-assembly and I didn't see lost steps. Yes, It's repeatable.

    From what I've read glass scale is only good enough for positioning starting point accurately (i.e. various measuring tasks), trying to add it into control loop (of linuxcnc) as encoder were considered not useful as it were too slow.

    Ball screw for Y axis has finely arrived, now it's time to drill holes for new supports
    and modifying moving table so that supports won't get in a way. After that it would be interesting to compare precision with X axis.


  • Hero Member

    @niallain said in CNC PCB milling:

    From what I've read glass scale is only good enough for positioning starting point accurately (i.e. various measuring tasks), trying to add it into control loop (of linuxcnc) as encoder were considered not useful as it were too slow.

    Maybe if it were magnetic encoding there might be some latency, but if it's optical I would think that there'd be no meaningful lag. Anyhow, I'll be finding out after mine arrives: I just now ordered a Sino KA300 optical linear encoder with 1 micron resolution to try out. I was leaning toward a magnetic encoder until I read your post, so thanks for the heads up. Priced at $64 on Aliexpress, including FedEx shipping.


  • Hero Member

    Closing the loop on the earlier topic of best inks and substrates to use for printing a UV mask, I can report what seem like solid answers based on the findings of two well known youtubers who did actual compare/contrast experiments:

    The applied science guy measured the amount of uv passed by vellum paper compared to transparency and found that, even though vellum is translucent, it actually passes more uv (see time index 11:00):
    High-resolution screen printing demystified – 23:27
    — Applied Science

    So, for that and other reasons, he recommends using vellum instead.

    Meanwhile, bigclive compared different kinds of printer inks and found he got the best results using a pigment ink (see time index 12:35):
    Test etching PCBs with inkjet transparencies. – 24:37
    — bigclivedotcom


  • Hero Member

    I finished the first-pass of new upgrades on my CNC:
    CNC_Front.JPG

    Shown above are the UStepper-S closed loop drivers on each stepper. Each stepper was also upgraded to a higher torque Nema 17 than the more basic Nema 17 which came with the original kit.

    CNC_back.JPG

    In the back, the Woodpecker CNC controller has been replaced by a plain Arduino Uno together with a generic GRBL shield. Clearly I'll need to find shorter RJ-45 cables. Each stepper will be powered by its own separate 24v DC power brick. By using power bricks instead of a shared fan-cooled power supply, the axis power supplies will be dust-proof.

    Speaking of dust, I removed the previously applied wet lubricants from the rails and screws and then applied A-9 as a dry film lubricant, which claims to both repel dirt and to not pick up dust. The only significant source of "dust" is the very fine sawdust created by leveling the wasteboard. The wet lubricants were picking up that sawdust and caking it on the rails, so hopefully A-9 won't.

    I'll be resuming with the same spindle that I was previously using so as to better gauge the amount of improvement (if any) afforded by the new closed-loop stepper drivers. After establishing a reasonable baseline, I'll swap in the much smaller 20,000RPM spindle motor I recently acquired to see whether or not it's an improvement.

    I have no idea how I should install the z-axis linear encoder when that arrives. It might push me toward a different design, whereby the z-axis is mounted on a fixed column , and the X and Y axi are merged into an XY table that moves around beneath it (more akin to a typical mill than than a typical CNC router). I happen to think that would also make the z-axis more rigid and so would be, in itself, a worthwhile upgrade. To that end, I may borrow the column from the openmill design, as it looks like it would be fast and easy to build (and rigid as well?):
    alt text
    though I would aim to use better rails than the wheeled approach used by openMill. With that as the column, I would likely use:
    https://www.aliexpress.com/i/4000527851100.html

    in order to quickly validate the proof-of-concept for the new z-axis, though I'm aware the tolerances are probably C7 or worse. Even so, I'd wager the tolerances would be tighter than the status quo.


  • Hero Member

    One problem with picking an inexpensive power brick as a power source for a stepper motor is that even though it may say it's rated for 6a at 24v, there's often no datasheet, and so that "6 amps" it's claiming may not be for continuous duty, and there's no guarantee that you can rely on even 80% of 6a. Yet, "6 amps" is the only info that's written on the brick, and so adequate qualifying information just isn't available, unless maybe you generate the data yourself using an electronic load test setup. Or, just run it and see how it performs, which is the quick and dirty rout--which is the path I chose.

    It appeared I was able to drive the y-axis at a nominal 10,000 mm/min, but going faster than that yielded wildly unpredictable results. Plugging in a 10a 24vdc power brick instead of the 6 amp power brick seemed (so far) to avoid the problem, so I'll be replacing the 6 amp power bricks with 10 amp power bricks for about 4x the cost. All this just to avoid dust incursion into a single, centralized, standard, high current, "open to the atmosphere" power supply. 🙄

    That said, I'm unsure how well even the 24vdc-10a power brick will hold up over time to the very spikey current demands of a CNC-driven stepper. That's the lingering doubt that accompanies going down the quick and dirty path with no datasheet. Given the unknowns that come with power bricks, maybe a fan-cooled , ordinary power supply isn't such a bad trade-off even if it sucks in a lot of dust... 🤣 Or maybe a Redundant Array of Inexpensive Power Bricks is yet another alternative. Meh,....

    Another, unrelated thing I'm noticing is that the Dupont and RJ45 connectors and barrel jack on the uStepper boards are a bit loosey-goosey. They may be conceptually neat and convenient but in reality they don't seem particularly good at handling vibration and/or physical strain without tending to wiggle loose from their connections. Not sure yet what, if anything, to do about that. Even if I were to solder the connections, it may still need some kind of additional physical anchoring to hold everything firmly in place and provide sufficient strain relief.

    Unlike the original nema 17 steppers that came with the CNC kit, these higher torque nema 17 steppers don't work at all on just 12v. However, the good news is that the upgraded higher torque steppers are pretty snappy when running them at 24v.


  • Hero Member

    I have the closed loop CNC nominally working now with 16 microstepping. I'm finding that at each stage as I push it to 32 microsteps, then 64 microsteps, then 128 microsteps, and finally 256 microsteps, I have to ease off the acceleration and velocity or else an alarm happens. At 128 microsteps, it's really quite slow, and at 256 microsteps it seems unuseable. My hypothesis is that at each stage the microstepper is becoming weaker and weaker, and so, to compensate, I thought I might drive the system with higher voltages and higher currents. However, I don't want to burn-out the drivers, so I'm waiting on a reply from the folks at Ustepper before proceeding. It turns out they have very little documentation.


  • Hero Member

    I received useful guidance from the guys at uStepper:

    1. They advise that I can go up in voltage, no problem--all the way to 42v if I want. Even at 42v there's still some safety headroom leftover. However, they advise against increasing the current, unless absolutely needed to avoid stalling, as that may lead to overheating, unless active cooling (a fan) were to be added.
    2. "10mm/revolution a 32 microstepping input will give you 0.0016mm resolution. " This is a good point. Actually, with the current lead screws I'm at 8mm/revolution, and if I switch to ballscrews it will be either 4 or 5mm/revolution, which would be even better. Hence, maybe even the current (default) 16 microstepping is good enough.

    So, I guess once I get limit switches installed, then before I get fancier it'll be time to do some milling and see if I notice any improvement brought by just the uStepper drivers alone. Then I may upgrade to the 20,000 RPM motor to see what, if any, difference that makes.

    I still have my eye on a 60,000 RPM spindle. They seem not much more expensive than the 36,000 RPM spindles. I've found ER8 60,000 RPM spindles for less than $200 delivered, but ER8 seems like it would be too tight a fit (?), especially for regular router bits like the ones with 1 inch diameter heads used to flatten spoilboard. For some reason, ER11 60,000 RPM spindles seem to cost around twice as much, though I have no idea as to why. Is it really that much harder to make an ER11 spindle than an ER8 spindle that's otherwise the same?



  • @NeverDie Mind posting links to the spindles you're looking at?


  • Hero Member

    @ncollins Sure. For example, an ER8:
    https://www.aliexpress.com/item/32651625780.html?spm=a2g0o.cart.0.0.7a203c00aR74s0&mp=1

    and an ER11:
    https://www.aliexpress.com/item/32948530784.html?spm=a2g0o.cart.0.0.7a203c00aR74s0&mp=1

    I tried to make it apples to apples. Prices are constantly fluctuating, so at the moment this particular ER11package seems priced lower than a lot of the other ER11 60,000 RPM packages, so that will contradict my earlier 2x statement (which is more of a running average across different vendors). At the moment, the price looks fairly attractive, if the quality is there. If the quality is poor, I'd probably be stuck with it, so there's a lot of risk in buying from sites that don't list the tolerances.

    Marcos Reps suggests that buying used industrial equipment might be a safer path, because on his theory most industrial equipment gets replaced while it still has reasonable life left on it, and the quality tends to be high to begin with. But in his case, because of his vlogging, a manufacturer actually just gave him a high quality spindle, so he never really tested his theory.

    Which 60,000 RPM spindle manufacturer is the best value? It may boil down to who makes it and what the tolerances are. That sort of info is often missing from the aliexpress listings. If the etchings on the spindle cases can be believed, then in this particular comparison the manufacturer is the same (namely, Changsheng).

    Anyhow, Wegstr, for instance, seems to get great PCB results without relying on such massive spindles, so maybe I should be looking elsewhere.... But where, exactly?

    Also, who makes the best VFD? I've read that certain brands are problematic, but I haven't kept a list (yet) of which ones to avoid.

    These spindles are quite heavy, but maybe the extra weight would just amount to more preloading, which maybe (?) could be a good thing. I do like the portability of my CNC, which a Marco Reps style machine has clearly lost, despite its other advantages.


  • Hero Member

    @ncollins Funny thing: when I look now at the photo for the 60000RPM ER11 spingle, the marking on the spindle itself shows only just 24000rpm. Similarly, the specs contradict themselves as well: the title says 60000rpm, but the speed (RPM/Minute) table shows 24000. It's this sort of inconsistency by Aliexpress sellers that gives me the heebie jeebies. For that reason, I'm guessing it's not really 60,000 rpm after all, which would explain why its price is considerably lower than the other 60,000 rpm spindles on Ali Express. If the Aliexpress seller were to send me a 24,000 rpm spindle instead of the 60,000 in the headline, I'm really not sure how that would play out for buyer protection, given the inconsistency portrayed in the description. I would try hard not to buy from a seller like this one, whose listing so badly mixes up the product data, as it seems like a heartache just waiting to happen.



  • My 60k rpm is ER8, I guess the lighter collet/nut combo is less prone to vibrate, never seen a decent priced 60k rpm ER11.
    ER 11 good is for heavy endmills, big collets, more than 3.175mm (1/8") shaft diameter, maybe 1/4" for table flattening.
    The 60k rpm spindles are usually 300W, not a lot of power at lower rpm to do tough milling, so no use for larger endmills, ER8 is a good choice for fine milling with 1/8" shafted endmills.
    My VFD is a Sunfar one, pretty decent I might say, I ran it for a few dozen hours now without issues.

    PS. The best way to check for runout is the sound test, run the spindle empty, then with collet+nut, then with the endmill inserted. If I "tune" the position of a new endmill I can reach 60k rpm without any vibration at all, so I get almost no runout.



  • @NeverDie Once covid started, my aliexpress luck really took a dive. Two missing shipments, one partial shipment, and very little recourse. If I absolutely have to, I'll buy from banggood. I don't think I would make such an expensive purchase on aliexpress, especially when shipping is a significant portion of the cost. OR, I would want to talk to somebody who has purchased from that seller and has the exact product I'm looking at.

    Contrary to my 3D printing and PCB/component experience, where I do okay with cheap/counterfeit parts, the tolerances and high cost of mistakes in my CNC experience are leading me to pay the premium for quality parts.



  • I should add that I haven't tried PCB milling yet. I mostly try to make aluminum parts with my 3040 machine.

    IMG_1249.jpg
    IMG_1250.jpg


  • Hero Member

    @executivul said in CNC PCB milling:

    If I "tune" the position of a new endmill I can reach 60k rpm without any vibration at all, so I get almost no runout.

    How do you tune the position of a new endmill? Are you referring to how far into the collet you are inserting it?

    BTW, thank you very much for your posting. It was extremely helpful. I didn't know anyone was using ER8, but from your positive experience, it sounds like ER8 may be the way to go. All else being equal, it makes sense that a narrower ER8 assembly would be prone to less runout, as an imbalance on a wider ER11 assembly would obviously be amplified more at higher RPM's than an equivalent imbalance on an ER8 assembly.

    If you don't mind my asking, which manufacturer and model ER8 60,000 RPM spindle do you have, and from where did you source it?


  • Hero Member

    So, with ER11 now abandoned, it opens the possibility to something like:
    https://www.aliexpress.com/item/32837403762.html?spm=a2g0o.productlist.0.0.309b13aeeW38rW&algo_pvid=2ec935ea-2c66-44ff-90b5-31e667176b31&algo_expid=2ec935ea-2c66-44ff-90b5-31e667176b31-3&btsid=0bb0623c16040901544143852e25d3&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_
    which would be less than $200, delivered in just a couple weeks. It claims runout is 0.01-0.02mm (which sounds encouraging, though it doesn't indicate where the runout is measured from). It's 36v, allegedly single phase, which maybe means it could even be powered using a simple 36vdc power supply coupled with a PWM motor speed controller? For example, maybe this?
    https://www.amazon.com/gp/product/B081YQW36Z/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8&psc=1

    The collet itself looks a bit mysterious.


  • Hero Member

    Or, maybe something like this:
    https://www.aliexpress.com/item/32653823271.html?spm=a2g0o.productlist.0.0.17ec6b694kraVc&algo_pvid=9be973d5-8868-4815-9e2c-75c046c6b849&algo_expid=9be973d5-8868-4815-9e2c-75c046c6b849-1&btsid=0b0a557016040910481015724e7c0e&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_

    which is 75v, still single phase, water cooled, but it has a recognizable ER8 on it. Costs around $175, delivered.

    I'd probably opt to pay more, though, to get something with less runout, like maybe this:
    https://www.aliexpress.com/item/4000812286377.html?spm=a2g0o.detail.1000060.2.97ea29d2lqjJXu&gps-id=pcDetailBottomMoreThisSeller&scm=1007.13339.169870.0&scm_id=1007.13339.169870.0&scm-url=1007.13339.169870.0&pvid=dafeb530-8e0e-478a-8fdf-1fa3b2193609&_t=gps-id:pcDetailBottomMoreThisSeller,scm-url:1007.13339.169870.0,pvid:dafeb530-8e0e-478a-8fdf-1fa3b2193609,tpp_buckets:668%230%23131923%2328_668%23808%233772%23437_668%23888%233325%2317_668%234328%2319940%23948_668%232846%238115%23852_668%232717%237563%23559_668%231000022185%231000066059%230_668%233468%2315607%2336

    which claims a runout of just 0.004mm, because whatever spindle runout there is will get amplified at the tip of any bit that gets inserted. I just have no way of knowing by how much it will get amplified, so for that reason I'd lean toward minimal spindle runout. They also claim to be the spindle manufacturer, so in theory they should know what they're talking about. Since the spindle itself is rated for only 75v, hopefully I could find a VFD somewhere that runs from 110v input voltage, which here is a lot more convenient, without having to wire for 220v or step 110v up to 220v just to meet the more typical Aliexpress VFD input requirement of 220v.



  • @NeverDie This is the one I've got: https://www.aliexpress.com/item/4000321437538.html?spm=a2g0o.productlist.0.0.3fb4457dTnpLL8&algo_pvid=d91fe6a2-335b-49cf-99fb-e01ae6fc9467&algo_expid=d91fe6a2-335b-49cf-99fb-e01ae6fc9467-3&btsid=0b0a556216043099802122070e932b&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_

    I've bought it via ebay from an European reseller, faster shipping and no taxes di*king around.

    By "tuning" the endmill I mean: take out the collet/nut, blow the dust out, insert the endmill untill the chamfered edge passes through the collet. Insert collet/nut/endmill as it is in the spindle and tighten LIGHTLY!!! Do NOT overtighten! Start spindle, turn to max rpm, if it's noisy stop! take out whole collet/nut/endmill from spindle and rotate the endmill in the collet like 30-45 degrees, reinstall and run test again. If patient enough you can get to 60k rpm without much vibration.
    Lately I'm not going over 35-40k rpm, the VFD shows the speed from 0 to 1000 and I stick around 700-750. For drills I run even lower, like 550-600 and don't bother tuning at all.
    You can find the sweet spot as I said earlier, turn up the rpm, then slowly decrease until silent. You will find there are rpm ranges where vibration is high and ranges where is low, just use the lowest vibration one while still having a good rpm (find the vibration function poles).

    Imagine the in the picture rightmost is 60k rpm, the blue line is the noise/vibration level, as you go to the left (lower rpm).
    ![alt text](da183c59-f05a-4225-8884-1361202b7ca0-image.png https://i.stack.imgur.com/IuEtI.png)



  • I had a chance (and a need) to make a quick PCB prototype again, so I've finished my first real-life exercise with my new CNC3020(T).

    I made two mistakes:

    • as I was in hurry, I did not use enough measurement points for the levelling. A small extra copper remained at two places, hopefully it won't need too much work to get rid of it. The time saved on the levelling will be spent twice on the post-processing... lesson learned... again...
    • I made an unintended short during the levelling and had to reset the controller. Working coordinates were re-defined manually, causing a small shift between the two sides. Once I'll have my new controller ready, this should not happen again.

    Beside these issues, the result still looks amazing.
    Here are some pictures for reference:

    20201106_200847.jpg

    20201106_202113.jpg

    20201106_210426.jpg

    20201106_210444.jpg

    20201106_224057.jpg

    isolation:
    CNC3020T PCB isolation routing – 00:17
    — András Kabai

    drilling:
    CNC3020T PCB drilling – 00:42
    — András Kabai

    Conclusion: CNC2030T is an affordable CNC machine which can be easily used for precise PCB prototyping.
    Btw, this was my conclusion for my previous CNC2418 as well. Both of them proved their capabilities. CNC3020T is just better, more robust and good for more stuff.

    To be honest, if one buys a CNC from the super cheap 2418 category and the main goals is PCB milling/drilling, then I do not see any reason to spend money and time on upgrades, as the base machine is good for the job.


  • Hero Member

    @andrew Have you gotten around to automatically setting your tool height? Though not absolutely essential, it does seem like a nice convenience. From what I've been reading, Candle can do it. You put a z-probe plate underneath your newly mounted tool, then Candle comes down fast, makes contact, then backs up a bit and then comes down again more slowly to measure the actual tool height relative to the z-probe plate. Not sure how that plays out on the first pass if the z-probe plate has no give to it though, as, for example, using just a bit of copper clad PCB for the z-probe plate. Maybe use a spring-bit to avoid skewering the z-probe plate on the first pass? Oops, except that would only work if all your tools are spring-bits. 🙄



  • @NeverDie after changing the tool I always make a single touch probe so Z level can be adjusted to the new tool properly.

    This is necessary even for the PCB milling. After the levelling is done, a single touch probe is needed somewhere in the working are to set the Z0 and to make it as a reference point for the bed levelling mesh.
    At least this is how it is done in bCNC.
    After the isolation routing is done, I make a single Z touch probe for each drill bits to set the correct Z0 for the given bit. This is done in the same way as in case for the PCB probing.
    Note that as the drilling on Z axis does not require high precision (basically if your drilling depth is slightly bigger than the PCB thickness, then even if your Z is just roughly adjusted to the PCB top, it will do the job).

    As I currently work with PCBs only, no other touch probe was necessary, however for woodworking (or for other non conductive materials) one can use a dedicated "touch probe".

    There are nice solutions form a simple PCB:
    DIY Z Probe For CNC Machine – 08:26
    — Nikodem Bartnik

    or
    UPGRADE CNC 3018/ PRO Z-PROBE | Z Axis tool probe | GRBL | EASEL | SUB – 10:02
    — Cosmo Channel

    or you can buy a cheap touch probe as well:
    https://www.aliexpress.com/item/4001010640247.html

    or you can go for nicer and more expensive professional touch probes 🙂


  • Hero Member

    This thingiverse item is more along the lines of what I had in mind:
    https://www.thingiverse.com/thing:3346286

    It's notionally the same as the probes you listed, but it includes a spring to compensate for any overshoot. Of course, if you're moving the z-axis extremely slowly in the first place, then I guess the spring wouldn't be needed. I presume the "double touch" that candle does is to speed things up: find approximately the right height at high speed, then back-up just a little then and find it again at a much slower speed. For the Candle approach, maybe this thingiverse spring-loaded touch plate would be better than just a rigid touch plate that has no spring to it. I suppose it depends on whether the spring loaded touch plate can repeatably reach exactly the same height again and again, or not.

    Speaking of repeatability, and measurements thereof, I just today receive this electronic dial indicator gauge:
    https://www.amazon.com/gp/product/B07888LX1R/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
    When combined with a matching data cable, it can help to automatically collect repeatability data and log it into a spreadsheet on an attached PC. I have the data cable (actually, a specialized RS232 to USB converter) on order. From what I've read, it can be triggered either by pressing a button or by an external contact closure, which is what I hope to use to automate the button pushing.



  • @NeverDie : well,

    • for PCB milling this spring loaded stuff simply does not work, as the whole area should be mapped.
    • for non-PCB Z zeroing it could be good, however in such case (imho) this is just an over complicated/engineered method for a simple probing.

    when you need a single z touch levelling then better to have a rock solid solution rather then have additional moving parts and potential other vectors for a failure. even with a slow feed rate, a single probe can be done in an acceptable time period, so why should you risk your result?
    I can imagine that this spring stuff can help you when you approaching with quite high feed rate for first, but in such case I would be afraid of the "wearing" of the probe surface over time and the inaccuracy it may cause later on.

    btw, the "double probing" with fast then a slower feed rate is used by other sw/firmware, e.g. marlin does the same (in certain configurations) for 3d printers.



  • @andrew Important to note, that I'm still talking about hobby cnc solutions. For professional CNC working and for a pro machine I'd prefer to use as many "pro" and automated solutions as possible.
    for occasional hobby purposes defined in this thread, and for these damn cheap machines I think it does not make sense.

    pro machines with auto tool change do benefit from auto probing, but that is a total different story.


  • Hero Member

    @andrew Thanks for sharing all your insights. Your posts continue to inspire me long afterward. 😎


  • Hero Member

    Worthy of note is that bCNC now supports camera alignment for two sided PCB boards. You just need a spindle mounted camera, and then you simply show bCNC a couple of points (by centering the camera cross-hairs on them) around which to do the alignment for the opposite side. This replaces the need to use physical alignment pins to align the two sides, as flatcam does. I haven't yet tried it, but it sounds like a very nice convenience. The "Ant PCB Maker" project has been leveraging this feature of bCNC for one or two years now. I don't believe the existence of bCNC's camera alignment capability is widely known, though, as I only just recently heard about it, and even then only by chance.

    Thinking about it now, two known points are required when nothing is pinned because that's how many points are needed to re-establish the origin as well as correct for any rotation that may have occurred after the board is flipped over. So, presumably, first a new origin needs to be established, and then all of the g-code for the second side needs to be amended after-the-fact to account for any rotation that may have happened when the board was flipped.


  • Hero Member

    For anyone who may be interested in building their own CNC from scratch, there are now (finally!) a couple of open source CNC projects gaining traction that build rigid frames and make use of higher caliber parts such as linear rail guides and ballscrews. Also, unlike other open source projects that make use of 3D printed parts, the 3D printed parts used by these projects are mainly jigs for alignment during the build/assembly process or else non-structural in the final build (e.g. clips for wire management), so the end result is a very stiff machine and therefore without the drawbacks of seemingly all other open source CNC projects--as well as Chinese aliexpress CNC kit--that inevitably compromise on stiffness in one way or another and/or use low precision parts. For anyone who might be interested, the two projects are PrintNC and MilkCR8:
    https://wiki.printnc.info
    https://milkcr8cnc.com

    Both have active forums on discord. Comparing the two, MillkCR8 is focused on a desktop machine about the size of a milk crate (hence the name), whereas PrintNC is scalable in size, leveraging a parametric design to generate plans that will make it any size you like (from small to jumbo extra large) to encompass any cutting volume you might want. MilkCR8 relies on a wooden box frame, which doubles as an enclosure (notionally similar to a Nomad CNC), whereas PrintNC has a standalone steel frame that you bolt together, with an enclosure being both separate and optional. Because the goal is stiffness, neither project makes use of extruded aluminum, so in that respect they are very different from Chinese CNC kits.


  • Hero Member

    Reporting back on a few things that I either didn't realize or perhaps didn't fully appreciate when I first undertook the earlier CNC above, and which may benefit others. 1. the proper way to insert the collet is to first snap it into the nut and only afterward insert the bit. Now, in retrospect, this may seem obvious (especially to those in the know), but I notice that even Ave got this wrong, so I don't feel too bad for having made this ignorant mistake. 2. Although the standard instruction is to insert the bit so that it protrudes just barely beyond the back of the collet by around 1/8" or so, the fact is that an extremely easy way to greatly reduce runout is to insert it much farther inside than that. As long as it's not bottoming out inside the spindle, you're good. 3. For milling PCBs, small machines are actually better. I'm presently assembling a 6040 machine, and I expect it will go well, but the fact is that deflections on a 3020 machine, given comparable construction, are far less, as simple physics tells us. I was aiming to have a single "do everything" CNC, but retrospect, I think an argument can be made for having a small CNC for PCB work and a separate larger machine for handling other things. My current build will have a 60,000 RPM spindle, which I've measured as having 1 micron of runout (shown in attached photo) and should therefore be great for milling PCBs, but the same spindle isn't well optimized for, say, milling aluminum or steel, which would be better done by a slower, higher power spindle. So, food for thought, if you're in the planning phase and deciding what to do.
    1micron.jpeg
    I went for the 6040 machine mainly because at the time I ordered it, the total cost was nearly the same as for the 3020 variant, and the shipping cost was strangely the same, and so I figured "Why not?" However, the whole thing weighs close to 100 pounds, whereas a 3020 of comparable construction would have been a lot easier to move around. That said, the higher mass of a 6040 should help damp vibration, so maybe it's a wash. 4. Even if it comes largely pre-assembled, plan on taking everything apart and lubing everything properly. I don't think mine were lubed at all at the factory. I installed zerk fittings on the ballscrews and then used a grease gun on both the ballscrews and the rails. I also replaced all the plain steel bolts with stainless steel ones. As always, with Chinese construction, the sellers just always seem to cut corners, no matter how much you spend. 5. If I ever build another CNC beyond this one, it will probably be a PrintNC, because the end result will be a very stiff machine based around all-steel construction without China short-cuts. 6. Not all closed loop stepper drivers are the same. You want one that has a thorough programming manual available for it. The HBS86 is the only one I know of that has this, though there may be others. Without such a manual, your ability to make sense of all the software controlled parameters and/or tune it will be severely handicapped.


  • Hero Member

    Of possible interest: Here's a guy who is building an inexpensive open source ethernet controller for stepper motors:
    What happend to Ethersweep? Project Update! – 12:36
    — Neumi

    If you listen to the end, it's revealed that there is now generous funding available which allows people to do this kind of open-source development as a full time job, which is what he is now doing. For that reason, I think there's a good chance he will complete his project within the allowed 6 months., and so by the deadline it will likely be nicely polished.


Log in to reply
 

Suggested Topics

  • 4
  • 9
  • 1
  • 1
  • 9
  • 5

0
Online

11.2k
Users

11.1k
Topics

112.5k
Posts