s?mb?t?, 1 decembrie 2018

Building the Mini-Test Test Boards

  Armed with the plan, the needed materials and tools as seen in the last post, middle of this November saw the start of the building of the 2 mini-test test boards. I'm referring to them as "mini" since they're small - just 33x10x5 cm (length/width/height).
  A second workbench arrived also in mid-November - the Bosch PWB 600. The main thing I needed it for was having something to secure longer pieces when they had to be drilled into vertically. Yet the clamping jaws, multitude of dog holes, and the fact that it's foldable in seconds make it a really valuable workbench.
  Now the 4 tools bought so far are all "green" Bosch, that is they're intended for the non-professional market. Going "blue" for me is simply not practical - for the table saw, the Bosch GTS 10XC currently goes for twice the price of the PTS 10 - and working with the latter was superb; for other tools, such as the PBD 40, there's no "blue" equivalent, and Bosch doesn't really plan on making such a version in the foreseeable future. Aren't there other manufacturers on the market ? Definitely, but from my reviews sticking with Bosch for my limited set of tools seemed like the best choice given my needs and budget at this time.
  For the connectors themselves, instructions are provided with both types. For the RBS ones, they're here. Albeit the page is in German, Google Translate can point those like me who don't speak it in the right direction. It's pretty straightforward:

  •  First a 12 mm hole needs to be drilled through both plywood walls clamped together
  • Unclamp the 2 pieces
  •  The opening towards the other connector needs to be enlarged - I did this with a pear-like shaped drill bit covered with wood file indents
  • The final step is for both connectors to be screwed in, so they end up flush with the board. I didn't have exactly the tools referenced on the instructions page, but used the ones above to get the job done.
For the pattern makers dowels, the instructions are right with the product itself here. There's a nice video for how it's done here. I'm listing belows the complete steps I did:
  • Clamp together the 2 pieces
  • Mark the 2 points for the pilot drills
  • Mark the 2 points for the 9mm bolt holes
  • Pilot drill with 3 mm bits (through-all)
  • Drill the 2x 9mm bolt holes (through-all)
  • Unclamp the 2 pieces
  • Mark the area to be drilled on each of the 4 targets
  • Drill with the Forstner bit for 3mm in depth against the pilot drilled holes for the 4 targets (I ordered this together with the connectors at the time, also from railroomelectronics.co.uk)
  • Drill where the female dowels will be placed with a 8mm drill bit (through-all)
  • Mark the position of the screws on all the opened bored holes
  • Drill the 3mm holes for all the 12 holes for the screws
  • Screw the dowels in place (note the screws are installed so that they don't risk interfering with one another, although if drilling is done correctly, this will not really happen)
  Securing the plywood pieces together is done using 4 cm long, 8 mm dowels from Wolfcraft. What's left of the bag can be seen in the picture to the right. A nifty tool for getting the holes for the dowels just right is the center punch, also from Wolfcraft - the pink metal thing with the shaped center, seen in the next photo below, mounted inside one of the holes drilled into one of the small plywood walls. The latter is secured to the Bosch PWB 600, and the long plywood wall is pushed against it to mark the point where drilling is to be done. What I learnt eventually was that it's better to first drill the hole in the longer wall, then use the center punches against the shorter walls; mounting these in the quick-release clamp of PBD 40 allows better control against the drilling.

  The drill press - as seen in the photo - was mounted at the time to the outside of its regular base, in order to be able to drill the required vertical holes in the longer plywood walls. This is easily done by gentling pushing a bit in the column itself, which then slides through the opening for the column in the aluminium base table. The holding bars of the PTA 2400 were adjusted so that the center of gravity of the whole assembly would't risk it toppling over. The whole assembly can be seen better in the first photo to the left; space had to be left for the Wolfcraft clamp to slide through. The next 2 photos shows how 3 clamps can be used to secure the vertical piece to some scrap wood blocks. 2 clamps are used horizontally in order to ensure that the vertical position is perfect - using just one always resulted in the piece slightly tilted.

While drilling the 3.1cm holes in the vertical pieces, there was some pronounced wobble, which translated to the PWB 600; even though it weighs about 10 kg, it's not the sturdy workbench of my dreams (wouldn't have helped here anyway, the wobble would have just translated back to the drill press). I'm currently into contact with Bosch for some 8mm screws that don't seem centered - we'll see eventually if this was the cause.

  The digital reading of the PBD 40 is really nice, and once toggled, it will read the distance instead of the RPMs. There's also a "zero" button, which makes drilling holes of a specified depth really easy. When using the Forstner bit however, I've noticed that the caliper should be used to check the actual depth, since the PBD 40 can show slightly more if you push harder.
 The end result can be seen in the last 4 photos. Out of that set, the second one shows the "mini"-table tops as well. The others show each set of connectors being used in turn, and the last shows the 2 boxes separate of each other. Did it came out perfect, given the tools used ? Not up to the standard I wanted - eg there's about half a millimeter difference in height between the "mini"-table tops. I'm suspecting the drill bits at this point. There's also the protruding screws for the pattern makers dowels connectors, but I've just used the ones delivered and didn't bother with searching smaller ones (but being really careful when picking the "minis" by hand).
  Which connectors will be used going further ? After all, this was the main reason for building these "minis", aside the opportunity to gauge my current skill in basic woodworking. Well despite being almost twice the price of the other, I'll most likely go with the RBS ones - they're really simple to install, meaning less things that can go wrong; not to mention the time saved with the installation itself. Not to say that one is better than the other - quite the opposite, both connectors will connect tight and secure.
  Well this is where I'm at currently - the next stage is to figure out the structure and plan the test boards themselves, have the final version of the test track layout complete, then build the whole thing.

vineri, 30 noiembrie 2018

Mini-Test Test Boards

  As previously discussed, the test boards themselves will have to be assembled together in order to form a closed loop of track to be used, then disassembled when done to clear up space.
  When I really started thinking on how I would go about actually building the boards - around May this year - I didn't have a clear idea on how to go about it - neither connectors, structure, not even the material to be used. In fact even the material that was used as base for the existing layout is something that was bought by my dad since I was a kid. And 1980s in the country I grew up in - Romania - meant that communism won't really allow a large set of choices when it came down to wooden boards (the same limited set of choices were around the scarce quantity of food, too). So we ended up with some sort of MDF purchased one evening and carried across town by public bus. But fast forward to today, and being part of the civilized world means pretty much being able to get whatever you want, since there will be a retailer out there that sells it. What was left to do was go documenting on the Internet, which was bound to yield what the model railroading world deemed the best solution for what I was looking for.
  It turns out there are 2 clubs - FREMO in Europe and FREE-MO in US - that built their own comprehensive standard about modules for model railroading. A full PDF for the former can be found on this page, and for the latter here. Studying both gives plenty of data regarding which materials to use, how the end plates for the modules should look like (complete with drawings and dimensions), height of modules, ways of securing the modules together, event paint to be used.
  Let's start - for the material it's important to avoid dimensional lumber. This will warp in time. Instead plywood should be used, given the successive layers of wood fibers placed perpendicular to each. FREE-MO even goes as far as explicitly name birch plywood as the material of choice. Problem solved here.
  For the module's underlying framework itself, neither standard goes into great detail. I couldn't find much aside from how the end plates should look like. Nothing like L-girder or other type of detail. Turning to other sources - Miniatur Wunderland did document their initial process  of building the wooden framework, yet their exhibition is permanent, so not very much that could be used from there. Others, such as Mianne Benchwork, go into details (given they're selling the end product), but their method of connecting everything together is by cam lock and nut - which my initial tests didn't really indicate that the best thing for my needs. At this time I don't have a final picture of how the test boards will look like, but I'm getting closer.
  Another aspect is connecting the boards together. The FREMO standard mentions only using 8mm bolts to secure the boards together (inserted through 12mm holes), yet there's no precise instruction for what to use to align the boards. Half a millimeter misalignment at this scale means a big problem. More searching led to Vikas Chander's blog, that has a post handling building FREMO modules. In this post, he's showing the connectors used, and a link to the supplier that sourced it for him. Unfortunately the link is currently dead, but I managed to find a source for those exact things here, at rbs-modellbau. Went ahead and got 3 pairs of them in September, at about 8 EURs per pair. I continued my search for other types of connectors, and came across pattern makers dowels. An online shop that has them is railroomelectronics - the direct link is here. A pack of 2 pairs of these costs about 9 EUR, coming in at 4.5 EUR per pair. I've also ordered 2 packs in September. I also came across table-top alignment pins (a link here) but from what I understood they're less precise than the former 2 types above. I stopped here, and decided that the end goal is to analyze both types of connectors and choose the best.
  That's pretty much all the info I needed to go ahead and do a proof-of-concept consisting of 2 tiny modules, that could be connected and disconnected. I already had a board of 1x1 metres of 1.5mm thick birch plywood bought in July. For connecting the the various plywood pieces, I settled on using 8mm dowels. All that was left was doing a plan and actually build the thing. I quickly ditched the idea of drawing on paper - there would be a lot of erasing and redrawing involved -, and went ahead and looked for a software tool. On the RBS page that goes into detail about what they use, I saw "Inventor" as the 3D software. I found out it's something Autodesk has been building close to 20 years for now, and from the various Youtube videos, it looked like something I needed. So I learned the basics for Autodesk Inventor, and then eventually designed the mini-test boards/mini-modules.
  Seen in the picture is the exploded view of the end result. The 2 long pieces in the centre - the ones closest together and the 2 small lateral ones form one mini-board, while the other 2 form another one. These outer 2 in fact form a similar mini-board as the first one, but are depicted here separated, as to highlight the connectors and how they fit together. The 2 mini-boards can thus be connected at will - either using one set of connectors, or the others. Note that the top of the 2 mini-boards is not shown in the diagram, as to not overload the plan. Click on the picture to zoom in.
  The connectors seen in the lower right (not the wingnuts on the far right, but those between the 2 long pieces) are the connectors supplied by RBS, while the ones in the top left are the pattern makers dowels ones.

duminic?, 25 noiembrie 2018

Bosch PTA 2400

  As described in the last post, the Bosch PBD 40 has to rest on a solid base in order to use it properly. Though tests were initially performed by holding in place with only dumbbell weights (!) so it didn't tip over, a proper solution had to be found. And sure enough - Bosch provides yet another product just for this purpose - the Bosch PTA 2400. Though its main target - as in fixing to it - are the mitre saws, the PBD 40 is listed amongst the devices compatible as well. So at the beginning of this month I purchased one. It's really sturdy, and at a bit over 20 kg, there's no risk of the drill press - itself weighing 11 kg - to topple over. I've been using the drill press for the last 2 weeks almost daily, and the table is definitely worth the investment. Bonus - for the rather little apartment I currently reside in - the box it comes packaged in is rather compact.
  I'm posting the pictures taken during unboxing - they proved their worth when putting it back today for storing until the time for the next woodworking session comes.

Dedicated Test Track

  After working on the speedometer inner workings for the end of 2017 and spring of 2018, it become evident that once the readings of the speedometer were post-processed, any formulas found for the distance would have to be tested on real track. There are a number of reasons this is so:

  • Difference between rolling stands and real track - running on real track could provide slightly different results than the ones obtained from a roller stand
  • Effect on load - on a rolling stand the effect of pulling a load (eg multiple cars) cannot be studied. But on real track this can be easily seen
  • Value-collection differences for speedometer - the process of obtaining the data from the speedometers might be affected by several factors (eg wheel slippage against the speedometer) that could affect the outcome itself - the formulas. The real track would have to validate the formulas obtained as such

Using a section of the model layout, as done previously, is not the best way of moving forward. Repeatability of tests is not easily achievable on a section of the layout itself, nor can specific detectors be mounted at particular intervals. A dedicated test track becomes mandatory. Which entails building a series of boards in order to support that length of track.
  Initial thought went into how this test layout should look like, in order to support measuring the stopping distance automatically between runs. The end result involved a length of about 3m, and a width of a bit over 1m. Since this length cannot be accommodated by a single board - since it will become impossible to move this ever, nor would the current space permit it - the whole structure would have to be built in sections, that can be assembled together and disassembled for storing.
  Realizing I had practically no tools for doing any precision woodworking in the current place I live in, in the beginning of June this year I went ahead and purchased a column drill press - the Bosch PBD 40. This was followed at the end of the month by a table saw - Bosch PTS 10 (the link is in German, couldn't find one in English). I quickly discovered that the PBD 40 - although can be rotated so that it drills into longer pieces of wood - needs a sturdy base. What was purchased next ? The next post will detail it.


Since initial attempts at getting the real-time speed for a locomotive as this decelerates and comes to a stop proved cumbersome (to say at least), I've looked around to see if anyone manufactures devices for reading the instant speed of a locomotive - and more importantly - sends this info to the PC. Sure enough, I found Bachrus, which were doing this for quite a while.
I've went ahead and ordered 2 such speedometers - which are really just regular elements of a classic roller stand with a mechanism to relay the wheel speed to a PC, along with some other "saddles" for placing the rest of the wheels. The first photo shows 2 regular saddles under the left bogie of the Brawa V100 and 2 speedometers on the right bogie - easily identified by a red wheel each - positioned in opposite directions so they can successfully fit on the same bogie. The purchase of all the kits was done in August 2017. 
   Unfortunately, while writing this post, and not understanding why their website isn't reachable any longer, it appears that the company owner - which was kind enough to provide technical details over email at the time - has since retired, and as such the website and Youtube channel no longer work as of today (Nov 2018). Nonetheless, the link above contains a pointer to an archive of the website as it was back when it was up.

  Back to the speedometer itself - the way it works is similar to the old ball mouse. The red wheel of the speedometer is connected by a shaft to the black wheel with "slits" - as seen in the 2nd photo. These "slits"either let - or prevent - light from a LED hit an optical detector located across. This can be seen very well in the 3rd photo, showing the same black wheel as before mounted in its place, where the enclosing "chair" - soldered to the green PCB - has a pair of LED emitter and detector that end up resting on each side of the wheel. The wire seen leading from the edge of the enclosing is connected to an interface (photo 4) by means of an audio jack. The other end of the interface is connected to a standard USB cable, which is then hooked to a computer.

  I've spent quite some time understanding how the device works internally. The technical data received from Bachrus - as mentioned above - pointed me in the right direction. I needed this in order to understand when are the speed values sent across the wire, and also to know the expected accuracy of the device. Keeping the nitty gritty details out for now, the speedometer counts the time it takes for a "slit" to pass in front of the optical detector. The "counting" is done using a timer clocked at 1.5 MHz, powered by a PIC18F13K50 microcontroller inside the interface (the black box saying "MTS-DCC"). Once the "slit" has passed, the timer is stopped and the value noted. The interface averages 4 such consecutive counter values, and sends the value across the USB cable to the PC.

  As for the accuracy of the device - there's nothing mechanical I had at hand that would come close to rotating with a constant speed. A locomotive - although on track seems to be cruising at the same exact speed - is shown by the speedometer to vary its instantaneous speed quite significantly. The next best thing was "simulating" a perfectly constant rotating black "slit" wheel. How ? By tricking the interface into believing it's receiving signals from the speedometer, when in fact an emulator circuit is generating specifically crafted electrical signals, timed very accurately. This was done using the AWG (Arbitrary Waveform Generator) module of a PC-based oscilloscope (Picoscope 2206B) - purchased specifically for this - and a couple of electronic components on a breadboard. The results were quite impressive - just take a look at the chart below. In this particular instance the hardware setup was configured to simulate a constant speed by generating pulses every 0.5 milliseconds. The horizontal axis shows the actual time values measured, while the vertical axis shows the number of instances encountered for each time value. Summing the number of values within +/-1 microsecond of the target 0.5 milliseconds, this represents 99.947% of all the values. Therefore at least the electrical part of the speedometer is pretty exact. Provided there's no wheel slippage from the locomotive while running across the red wheel of the speedometer, the values measured should be pretty exact.

  As for the formula for the instant speed, and the speed variance measured for the locomotives tested, this will be treated in a future post. Otherwise this introductory post would become quite extensive.

Update 1/5/2020: Bachrus has since closed down. The specification that was provided to me back when I wrote this post is here.

duminic?, 18 noiembrie 2018

It's (not) About Time !

It's been quite a while since the last post. Quite a few things happened - despite no activity here - including moving to a new place 2 years ago, purchasing various wood-working equipment, buying a PC oscilloscope and attending my first Nuremberg toy fair, just to mention a few.
The layout I was working on is still accessible, and the plan is to eventually finish it, however for now the focus is continuing the work concerning deceleration. Continuing where I left off the last time, right after obtaining a formula for the approximate deceleration time for the ESU v3.5 decoder, used in their Brawa V100 locomotive, the problem is that just knowing this piece of information isn't enough to determine the length of track the locomotive will travel while decelerating until standstill.
This can be easily seen through a quick example. Click on the picture to enlarge the sample. There are 2 charts representing instant speed (s) versus time (t), taken for 2 different decelerating objects. Both objects are travelling at a constant speed 3 for the first 3 time units, before starting deceleration at t=3. They all reach standstill at t=7. The first one has a more "smooth" speed curve, going through intermediate steps before hitting 0, while the second one cycles abruptly from speed 3 to 1 at t=4. Computing the distance travelled yields 17 (3x3 + 3x1 + 2x2 +1) for the first object, and 15 (3x3 + 3x1 + 3x1) for the second one. Therefore despite taking the same time to decelerate (4 time units), the distance travelled is not the same.
Knowing that obtaining the distance travelled will be needed as well, I got to work in September 2016 trying to get the required data. A tripod (Manfrotto MK055XPRO3-BHQ2) was bought along with a slider (Dynaphos GT-M80) for taking overhead shots of the V100 and the exact position where it would stop following a deceleration. Since the instant speed is needed as well, the DSLR camera was turned to video mode - and a tradeoff between frame rate (the higher the better) and resolution (if too low, the precise position of the locomotive can't be determined; if too high, the frame rate drops). Since the camera couldn't physically "track" the locomotive in real-time, optical corrections had to be computed and the results adjusted. Why ? Looking from right above the locomotive's end and measuring its position on a track-side ruler - just as seen in the photo nearby - will result in a very different reading than if the camera moves 5 cm to the side (go on, give it a try). Next, the captured videos had to be analyzed - frame by frame - to get the position of the locomotive at each step, apply the corresponding optical correction, and compute an approximation of the instant speed. Not a lot of fun, considering that processing a movie would take about 2h.
How to get the instant speed in a more human way ? The next post will show the way.

duminic?, 3 aprilie 2016

Deceleration Formula For ESU v3.5

Ever since work started on this layout, it became evident that stopping trains in front of signals in a realistic manner is a must. In the early days an oval track loop was used with detectors mounted at various points to perform some measurements. I would say copious amounts of time have been spent over this operation during the years, with scores of written pages.
The first thing was getting a consistent terminology. It was during my discussions with Lenz in the beginning of 2010 - when I couldn't figure out how the decoder in the their BR66 was working - when this was established. The value displayed on the DCC handheld controller is the external speed step. As a side node, I've never had a need to switch to anything else than the default 28-step mode. Internally, the DCC decoders use the internal speed step, which translated into the voltage applied to the motor. Separating between the 2 allows creation of custom speed curves, allowing for example accelerating in small increments at lower speeds. The decoders themselves can use 2 modes of operations: 1. CV2, CV5 and CV6 are used to specify relative values for the start, max and medium speed respectively. 2 a user defined speed table is programmed in a specific set of CVs (for ESU LokSound v3.5, this is the range CV67-96).
However trains also have acceleration and deceleration, which DCC models by using correspondent registers for each: CV3 and CV4. The NMRA standard makes things very simple, by saying that the time taken to cycle between 2 subsequent external speed steps is equal to CV3 * 0.869 / .  Unfortunately in practice things aren't that simple. Lenz uses a different formula, based on internal speed steps, and ESU doesn't seem to implement it also.
In august last year I spent almost one day in getting measurements for the Brawa V100, equipped with an ESU LokSound v3.5. To be more exact, the goal was to answer the question "what is the formula for the time taken to bring the locomotive to a stop ?". A section on the layout itself was used for measuring, with several lines of C# code written to send instructions to the Lenz LZV100 via the Lenz LI-USB-Ethernet interface. However since I had no way at the time to detect when a locomotive came to a stop, I had to sit next to the track and press a key when the locomotive would stop - *every* time. There wasn't enough data to see a pattern, so solving this problem was postponed.
Original sheet containing measurements
results for the Brawa V100 tests
done in August 2015
The issue to be solved was detecting when the locomotive was actually stopped. With this out of the way, measuring tests could be fully automated. Since there are already quite a few Phidgets boards I've bought during the time, a current sensor sensitive enough would do. From past observations I figured their most sensitive one would do the job, so I went ahead and purchased 2 of them (an additional one for 1. backup in case the first one fails and 2. error reduction in measurements by averaging, would this were to become an issue). Hooking one of them to the old Phidgets 1018 board that was no longer used revealed it did the job, the only glitch being measuring rapidly dropping currents (eg suddenly breaking the circuit) wouldn't result in a 0 value being read out, however for locomotive under normal deceleration rates this was no issue.
The Hardware setup
Completing the hardware setup involved getting the right number of coils around the current detector. Being an AC current detector, only one of the wires needs to be inserted through its area. Its possible to reinsert the same wire multiple times through this area, thus resulting in increased sensitivity (albeit increasing error). 2 passings of the wire proved low enough to provide enough sensitivity for when the locomotive becomes stopped versus moving with the minimum possible speed step.
Speed measurement for CV2/5/6 set. Note that
the top 2 straight lines are actually artifacts due
to automatic connection of points in the series
First thing to check was that real speed versus internal speed was linear for the ESU v3.5, or in other words measure the real speed (cm/s) for each external speed step. The default decoder user speed curve - which is linear - was activated using bit 4 in CV29. The code for speed profiling was actually implementing a state machine, along the following path: locomotive gets configured with CV3=1 and CV4=3, in order to allow quick acceleration but a slower stop; it gets sent on its way using the maximum external speed step; when hitting the 1st detector the time is marked; when hitting the 2nd one the speed can be computed, given each distance between the detectors is known in each direction (this IS important, since the distance between detectors can differ depending on the way and based on the detector orientation) - also a stop command is sent; once the idle current level is detected, the external speed step is decreased by 1 and the locomotive sent the other way and the process continues. The data was automatically saved in a .csv for post-analysis. 160 runs were captured. The first thing to notice was that indeed the real speed is indeed linear with the internal speed step, so no surprise here (the correlation coefficient was averaged to 0.26 (real speed / internal speed step). Secondly, when switching to the CV2/5/6 mode for the speed curve, the profile was indeed verified to be as in the ESU v3.5 LokSound manual (pg 19, an online copy here) - namely the speed curve didn't end up as an exponential function (hint: Lenz does this), but as 2 simple lines "broken" at the middle point. Thirdly, if the CV6 value (mid) is greater than CV5, then the detector will simply consider a straight line for the speed curve, based on CV2 and CV5 only.
Brawa V100 after the runs were done
Next, deceleration was considered. The state machine was slightly altered, to consider 4 detectors and operated as follows: CV3 is always set to 1, while CV4 is chosen each time; locomotive gets send with the maximum speed; once the first detector gets triggered, a stop command is sent; once the threshold value for current is hit (signalling the locomotive just stopped), the time it took to stop is marked. Then, depending if the detector behind the 2nd one on the direction of the run (called the fallback detector) is triggered, the locomotive is moved safely until this fallback one is hit. Then the locomotive is again issued a stop command, the idle current value is waited for, after which the speed gets decreased by one and the locomotive sent the other way. This slightly complicated way was chosen in order to leverage a flat section of track between the 2 "principal" detectors, however at this point I think it was just overkill. 252 runs were done. Running in both the user defined speed curve, as well as the CV2/5/6 one, confirmed that the ESU LokSound v3.5 doesn't take into account the internal speed steps, but only the external ones (Lenz does the opposite).
Time to stop versus external speed step, for 4 different
CV4 values, given CV2=3,CV5=35, CV6=13. Note the
linear aspect, suggesting dependency on external
speed step only
The graphs indicated that a linear function could be used to generalize for any CV4 value, provided the reference of this one was slightly moved "up" - to give a few more details, on the graph to the right, the place where all the lines meet is at 1.13 on the vertical axis; the fraction of the differences between the time value for 2 curves corresponding to the same external speed step  minus the "base" point (1.13) will roughly be the same and equal to the fraction of CV4s involved (eg time value for external step 20 on the top line, corresponding to CV4=20, minus 1.13, all divided by the time value for external speed step 20 on the 2nd line from the bottom, corresponding to CV4=10, minus 1.13, will equal approximately 2, the same ratio of 20:10).
A final formula based on the linear functions for 2 sets of results belonging to CV4=5 and CV4=10 was deducted:

t(E, CV4) = (a*E + b - B) * CV4 / 10 + B

where a=0,337; b=0,479; B=1,13.

The difference between the real measured value and the one computed based on the formula usually stays inside 0.2 seconds, but there are exceptions.