HoMa

Fx Bricks (Michael Gale) announces Fx Track system

Recommended Posts

@cptkent Can you show your full quarter circle? The part you're showing doesn't match my drawing of R72 on a baseplate.

My first attempt at calculating was wrong anyway - shouldn't try stuff like that late at night with a glass of wine.

The only connections I see (with 1% tolerance) are on the second tie and at the 45 degree point.

Share this post


Link to post
Share on other sites
5 hours ago, Black Knight said:

On the other hand, maybe @michaelgale should rather work on his switches and motors. ;)

Yes, probably best to leave Michael to worrying about doing his magic with the hardware while the rest of us scratch our heads about ballast.

The ballasting problem has turned into a neat little linear algebra exercise and conversion to/from polar coordinates. I'd take each each sleeper and expand it to a 4x10 plate to maximize the potential connection points. Split that into a grid 32x80 mm with steps every 4 mm for the full and half steps. Take the number of sleepers per 45° and simply rotate the 32x80 grid about the origin (at the center of the loop of track) in polar coordinates to each of the sleeper positions. Then for each intersection on the set of 32x80 grids convert back to Cartesian coordinates. Divide both dimensions by 4 mm and check if the remainders are within tolerance. That might take a couple of hours to code up. Yeah, if that makes sense to you then it probably isn't anything you didn't think of already.

Obviously the simplest solution is to simply let the track float on tiles, with some blocking to keep the curve from sliding outward. But that might not be conducive to portable setups. I wonder what could be done with locking mechanisms rather than stud connections, e.g., the 2x2 plate (or tile?) with two studs or one of the many wedge plates with studless areas tied to the track, held down by an overhanging plate or tile that is tied to the baseplate below.

Another thought is clip snot, with a little finesse, it could actually add to the "random" pattern of the ballast.

Share this post


Link to post
Share on other sites
2 hours ago, zephyr1934 said:

[ Algebra bit ]

I did something similar. Take the stud and tube coordinates of a sleeper, calculate the angle and distance from the center/ start of the turn. Add (45/14) degree increments to the angle and calculate coordinates again.

Google sheets (or Excel) is handy for repeating those calculations. Then use conditional formatting to highlight all the coordinates within tolerance of the grid.

On just 2x8 sleepers there isn't much. I'll expand to 4x10 'ballast sleepers' and try again.

Share this post


Link to post
Share on other sites
16 hours ago, Duq said:

@cptkent Can you show your full quarter circle?

Well I could.... but it's probably best I left the conversation....

My R72 was drawn years ago (probably before Michael announced his, when I was expecting ME models rails) and it appears I've drawn it with one less sleeper. My diagram has 5 full sleepers, Michaels (and, FWIW, the ME models track) has 6. The sleepers were never used for practical purposes, so I never noticed the mistake.

I thought what I had may have been helpful, but it appears not. I can fix it easy enough (and probably will) but it still only shows sleepers, not ballast, so it may not be that useful anyway. Let me know if you want me to do a revised version.

Sorry for any confusion.

David

PS. I'll take down the incorrect images, and see if I can edit the previous post.

Edit. I did a revised version. Some studs appear close, but nothing is a direct match of any kind. Again, ballast may be different.

Edited by cptkent
Formatting.... grrr

Share this post


Link to post
Share on other sites

Wow!  A geometry discussion!  

The way I would do this calculation is to compute the sleeper/stud locations for a "normalized" track element, i.e. centred at the origin (0, 0) rotated at 1/2 sector angle (e.g. 11.25 deg for an R72).  Then you can take this list of stud/centre points and perform 4x rotation/translation operations into a complete 90 curve using matrices/linear algebra.  This should generate a concatenated list of all stud centre points.  You can then loop through each point and perform a modulo 4 mm operation and if the residue is less than a given tolerance in both x, y coordinates, then you have a candidate stud for attachment.  I would use a tolerance of around +/-0.2 mm or maybe even +/-0.4 mm since the slack tolerance for a curve is somewhat generous.

I'm sure an hour of coding in python would yield a result--extra marks if you can generalize to any curve radius/sector angle!  

 

Share this post


Link to post
Share on other sites
3 hours ago, michaelgale said:

Wow!  A geometry discussion!  

The way I would do this calculation is to compute the sleeper/stud locations for a "normalized" track element, i.e. centred at the origin (0, 0) rotated at 1/2 sector angle (e.g. 11.25 deg for an R72).  Then you can take this list of stud/centre points and perform 4x rotation/translation operations into a complete 90 curve using matrices/linear algebra.  This should generate a concatenated list of all stud centre points.  You can then loop through each point and perform a modulo 4 mm operation and if the residue is less than a given tolerance in both x, y coordinates, then you have a candidate stud for attachment.  I would use a tolerance of around +/-0.2 mm or maybe even +/-0.4 mm since the slack tolerance for a curve is somewhat generous.

I'm sure an hour of coding in python would yield a result--extra marks if you can generalize to any curve radius/sector angle!  

 

You lost me at ‘Wow!’

Share this post


Link to post
Share on other sites
On 9/29/2021 at 8:40 PM, michaelgale said:

I'm sure an hour of coding in python would yield a result--extra marks if you can generalize to any curve radius/sector angle! 

from math import sin, cos, radians, sqrt, pow, fmod

# our base (0, 0) is not a stud! (0.5, 0.5) is the first stud on our central baseplate
# therefore integer coordinates are only reachable by jumper plate, e.g. (1, 1) with a 87580 placed in the left, upper corner of our baseplate

# all studs of the sleeper plate 2x8 (or underlying ballase plate 2x10)
plate8 = list((x, y) for x in [-0.5, 0.5] for y in [-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5])
plate10 = list((x, y) for x in [-0.5, 0.5] for y in [-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5])

# rotate a single vector @v by angle @a
def rotate(a, v):
  x = cos(a) * v[0] - sin(a) * v[1]
  y = sin(a) * v[0] + cos(a) * v[1]
  return (x, y)

# rotate a list of vectors @s by angle @a
def rotate_set(a, s):
  a = radians(a)
  return list(map(lambda e: rotate(a, e), s))

# rebase a list of vectors @s by polar coordinates (angle @a, radius @r) 
def rebase(a, r, s):
  a = radians(a)
  x0 = r * sin(a)
  y0 = r * cos(a)
  return list(map(lambda v: (x0 + v[0], y0 + v[1]), s))

# transform a list of vectors by rotating, then rebasing them
def transform(a, r, s):
  s1 = rotate_set(a, s)
  return rebase(a, r, s1)

# fitness is the euclidian distance to the closest stud (direct or jumper plate) -- less is a better! (0 is a perfect fit)
def fitness(v):
  x0 = fmod(fabs(v[0]), 0.5)
  y0 = fmod(fabs(v[1]), 0.5)
  x0 = x0 if x0 < 0.25 else (x0 - 0.5)
  y0 = y0 if y0 < 0.25 else (y0 - 0.5)
  return sqrt(pow(x0, 2) + pow(y0, 2))

# R72
px = []
# iterate over number of 2x8 sleepers in between 0..45 degree, determine angle
for a in [x * (45.0/28.0) for x in range(0, 29)]:
  px += transform(a, 72, plate8)

# sort by fitness
ps = sorted(px, key=lambda v: fitness(v))

# display result -- descending fitness, so first ones are best
for v in ps:
  print("%2f * %2f -> %5f" % (v[0], v[1], fitness(v)))

This snippet assumes that all 2x8 sleepers are perfectly rotated around the center of the circle, there are no anomalies in the tracks. You need some magic for the tracks as the number of sleepers and their angles are product specific. The code first generates a long list of all studs from all sleepers from 0 to 45 degrees (inclusive), then sorts them by their distance to the closest stud (or halfway-in-between-studs space reachable by jumper plates).

Unfortunately I had to put away my tracks so I cannot verify if any of those are good matches or if there are some errors in my code (there most probably are). Here are the top 12 matches (w/o the obvious matches at 0 degree) with their respective "fitness":

7.508604 * 71.988153 -> 0.014642
2.505111 * 72.485504 -> 0.015371
2.477064 * 73.485110 -> 0.027345
40.974248 * 57.509353 -> 0.027398
44.970437 * 56.994527 -> 0.030066
14.977741 * 72.520869 -> 0.030512
49.483610 * 53.026372 -> 0.031050
53.033009 * 49.497475 -> 0.033105
49.497475 * 53.033009 -> 0.033105
43.518792 * 56.970816 -> 0.034711

Feel free to steal my code. I'd be happy for feedback though. And yes: My python is a bit rusty and I tried to avoid libraries not in the standard library to make it easier for people to reuse it (e.g. numpy).

Edited by Black Knight
fix modulo error

Share this post


Link to post
Share on other sites

 

On 9/29/2021 at 8:40 PM, michaelgale said:

Wow!  A geometry discussion!  

The way I would do this calculation is to compute the sleeper/stud locations for a "normalized" track element, i.e. centred at the origin (0, 0) rotated at 1/2 sector angle (e.g. 11.25 deg for an R72).  Then you can take this list of stud/centre points and perform 4x rotation/translation operations into a complete 90 curve using matrices/linear algebra.  This should generate a concatenated list of all stud centre points.  You can then loop through each point and perform a modulo 4 mm operation and if the residue is less than a given tolerance in both x, y coordinates, then you have a candidate stud for attachment.  I would use a tolerance of around +/-0.2 mm or maybe even +/-0.4 mm since the slack tolerance for a curve is somewhat generous.

I'm sure an hour of coding in python would yield a result--extra marks if you can generalize to any curve radius/sector angle!  

 

been reading this thread for a while now and i have to say thank you for making 9v stay alive! i really do hope you do make it as far as to produce motors as this would probably get new people interested in 9v! and commumunity is what this lego train era needs!

Share this post


Link to post
Share on other sites
On 10/2/2021 at 3:05 AM, XG BC said:

 

been reading this thread for a while now and i have to say thank you for making 9v stay alive! i really do hope you do make it as far as to produce motors as this would probably get new people interested in 9v! and commumunity is what this lego train era needs!

I second this.  I have quite a few PF and PU trains just dying to be 9V trains.

Share this post


Link to post
Share on other sites

I'm pleased to say my order from JBS arrived last week! Not before I had to pay Parcelforce the Income Tax, of course.

Haven't had a chance to give the track a proper play yet, but hopefully will do so this weekend. The pic below was taken after I'd unwrapped everything, but it was nicely packaged.

51584844661_7a5bb26782_c.jpg

Share this post


Link to post
Share on other sites
6 hours ago, derlumpi said:

This Just popped up on my youtube feed. :) 

Cool! Meanwhile, I didn't see anything on the FX pages about that controller but the store page lists the switches "coming in 2021"

 

Share this post


Link to post
Share on other sites
13 hours ago, derlumpi said:

This Just popped up on my youtube feed. :) 

It looks awesome! 

Very interesting indeed. The most interesting stuff is more about what those buttons actually do or more broadly: Whats inside this box. E.g. I suspect that you can switch between some LEGO-9V-compatibility mode and Michaels 12V-mode for his upcoming motors. This might be an interesting button for your kids to spontaneously obsolete your old LEGO 9V motors by pressing that 12V-mode button... ;)

Share this post


Link to post
Share on other sites
14 hours ago, derlumpi said:

This Just popped up on my youtube feed. :) 

Wait. When you put three of those next to each other and then operate the sliders simultaneously - you can beam your train to whatever location, right?

46bd1bc4765e91789f8b08353d3a0d0f.jpg

Very nice! Hopefully, we get the display and "illuminated" push buttons as well (this is my dream for decades).

Have fun,
Thorsten

 

Edited by Toastie

Share this post


Link to post
Share on other sites
On 10/24/2021 at 4:06 PM, derlumpi said:

This Just popped up on my youtube feed. :) 

It looks awesome! 

Now this looks super interesting! 

Appreciate the effort by Fx Bricks in supporting the LEGO train community. 

Share this post


Link to post
Share on other sites
12 hours ago, Black Knight said:

This might be an interesting button for your kids to spontaneously obsolete your old LEGO 9V motors by pressing that 12V-mode button... ;)

You can run 9V motors with 12V current no problem. They just overheat faster if they’re under heavy load. But the motors have overheat protection anyway.

 

So what’s up with this power regulator? Manual mode and DCC compatible? Any stats on how much current it supplies? Will these release simultaneously with motors? @michaelgale

you can’t just drop this video without explanation and not expect us to ask about more details :head_back:

Share this post


Link to post
Share on other sites

It totally looks like mix of the old train controller and the technic controller from the 90s. I like it a lot!!! :)

Share this post


Link to post
Share on other sites
20 hours ago, Black Knight said:

Very interesting indeed. The most interesting stuff is more about what those buttons actually do or more broadly: Whats inside this box. E.g. I suspect that you can switch between some LEGO-9V-compatibility mode and Michaels 12V-mode for his upcoming motors. This might be an interesting button for your kids to spontaneously obsolete your old LEGO 9V motors by pressing that 12V-mode button... ;)

There appears to be six buttons:

- arrows up and down: direction of train?

- 9V and 12V switches

- “Auto” and “Low”, whatever that is

Edited by Henry 991

Share this post


Link to post
Share on other sites
On 10/24/2021 at 11:41 PM, Black Knight said:

Very interesting indeed. The most interesting stuff is more about what those buttons actually do or more broadly: Whats inside this box. E.g. I suspect that you can switch between some LEGO-9V-compatibility mode and Michaels 12V-mode for his upcoming motors. This might be an interesting button for your kids to spontaneously obsolete your old LEGO 9V motors by pressing that 12V-mode button... ;)

it isnt like 9v motors cant handle 12v for shorter periods of time hell they can even handle 20+v if you take a look at this video from a convention. the way to prevent this is to use a 9v wall adaptor instead of a 12v one so the 12v mode is useless.

Share this post


Link to post
Share on other sites
10 hours ago, XG BC said:

it isnt like 9v motors cant handle 12v for shorter periods of time hell they can even handle 20+v if you take a look at this video from a convention. the way to prevent this is to use a 9v wall adaptor instead of a 12v one so the 12v mode is useless.

O.k. the 12V might not kill the TLG train motor. But you can bring other 9V components to field via Michael's power-wheel or motor and we will find something that will not tolerate the 12V. It's a good idea to have the ability to switch between 9V and 12V, but it is imho a suboptimal design decision to put this "administrative" and potentially dangerous feature -- that you will only use occasionally if at all -- next to the "play" interface. I'd rather see buttons like "light on/off" or "make sound" on top, but this if course depends on what the regulator actually can do (aside from 9V compatibility mode).

The 9V wall adaptor might just not work if the electronics rely on the 12V rail -- or maybe the wall adapter doesn't even have 12V; the norm for digital model railroad power supplies seems to be ~20V these days.

Share this post


Link to post
Share on other sites

you are probably right the switch should be moved to the side/bottom where it is less succeptible to "accidents" 9v vs 12v shouldnt be an issue for the electronics inside atleast if the voltage regulators can handle it. output drivers dont really care about the voltage input and further electronics will probably run of of regulated 5v anyways

Share this post


Link to post
Share on other sites

Glad to see all the responses!  :)

The design of this controller is not fully finalized--we are currently testing both electrical prototypes and 3D printed enclosures for usability etc.  Also, we are listening to the feedback from you folks.  Rather than explain everything--we released this "teaser" without description to see what your responses would be without our influence.

In any case, in response to some of your points:

1. Style - yes the style is guided by the legacy 9V speed regulator.  This includes studs on the panel and a raked front panel.  It also has a rear connector shelf.  We did extend the styling in a few key ways:  

- 33 deg slope angle to match a LEGO system standard slope angle

- 16x16 stud footprint

- every horizontal surface aligns to an exact LEGO plate interval 

2. Voltage Selection - it is important for this control to look forwards as well as backwards--that it why it has 12V available--to support new high performance motor products.  Accidental selection of 12V mode for legacy 9V motor products is highly unlikely to do any damage--almost all motors are capable of operating beyond their "rated" voltage.  As was mentioned, it simply increases heat dissipation and there is protection for thermal overload.  Besides, its unlikely that anyone is running their 9V motors at full power continuously and any train running at 12V full power will likely not stay on the track for very long!

3. Current Output - This controller is rated up to 3A but will limit operation to 2.5 A continuous.  It has short circuit/overload protection on all its outputs and has automatic quick-disconnect/retry.  The controller uses switch-mode power regulation with >85% efficiency and can operate with input voltages from 12-19V.  It will automatically lockout the selection of 12V if the input voltage < 13.5V.  

4. Safety - As well as the usual short-circuit/thermal overload protection on all outputs, it has a few other safety features.  It will prevent direction changes and voltage selection if the speed > 0.  This will prevent instantaneous reversal/changes of voltage when in operation which can shorten the lifespan of a motor.  

5. Auto/Low mode - These are not finalized.  These labels refer to PWM motor control modes.  Auto is a the default quiet high frequency PWM mode.  Low mode is very low frequency PWM for older and/or sticky/crusty/bulky motors!  Sometimes these older motors do not operate very well with high frequency PWM and require a bit of "boost" with longer durations of motor current in the PWM duty cycle.  We're not sure if we're going to retain these labels and modes but we're still testing.

6. Blue connectors are fixed voltage outputs to power up accessories or "slave" speed controllers (half width).  The orange output is the variable voltage/speed control output.

Lastly, we will be releasing new track feeder cables with 9V-style connector termination and brick form factor track side connections.  We'll release more details soon.  And of course, we are actively developing the motor bogie.  The motor bogie is trickier to manufacture since we require several different manufacturing suppliers, e.g. injection molding, CNC, metal turning, electronics assembly, etc.  In addition to coordinating these suppliers, we are setting up our own final assembly, test, QC, and packaging facility in Hong Kong.  The goal is to have our HK facility be responsible for the critical final assembly and test functions of not just the motor bogie, but all of our new electrical accessory products.

 

 

Edited by michaelgale

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.