Gas station without pumps

2017 June 25

Fidget spinners revisited

Filed under: Uncategorized — gasstationwithoutpumps @ 17:55
Tags: , , ,

In Fidget spinners, I wrote about measuring and modeling the acceleration of two fidget spinners, 5-spoke spinner that cost $6.90 made from plastic and brass and a 3-bladed spinner that cost $8.90 milled out of brass:

The 5-spoked wheel spinner weighs 32.88±0.03g, and the 3-spoke brass spinner weighs 61.14±0.02g.

The previous post looked only at the fidget spinners spinning vertically (that is, with a horizontal axis), but I had noticed in playing with the spinners that they seemed to have different drag in different orientations, so I redid the measurements with the spinners horizontal (that is, with a vertical axis). I had a somewhat harder time spinning the spinners fast with them horizontally mounted, as my makeshift support for the photointerrupter was a bit precarious.

The 5-spoke wheel seemed to run smoothly , but the fit suggests more dry friction and less fluid friction.

The 3-spoke spinner really does not like to spin horizontally.

To visualize the physics better, I tried making acceleration vs. velocity plots for the fitted models:

When holding the wheel horizontally, there seems to be mainly dry friction, almost independent of the speed of the spin.

The 3-spoke spinner has much worse drag at all speeds when held horizontally rather than vertically. The fluid drag seems to be about the same as before, but there is much larger dry friction component (possibly from brass-on-brass contact between the spinner and the axle caps).

As expected from fidgeting with the spinners, the 3-blade spinner has much more drag than the wheel, both horizontally and vertically. The change from mainly wet friction to mainly dry friction for the wheel was unexpected, though.

Update 2017 Jun 25 21:15:  My wife just pointed me to a Wired article: which does a poorer job of the same thing I did. They sampled at a fixed rate, rather than recording time stamps on each rising edge, so they had much poorer time resolution, and they assumed constant acceleration (dry friction), which is only appropriate for low-quality bearings.

2017 June 20

Fidget spinners

Filed under: Uncategorized — gasstationwithoutpumps @ 17:34
Tags: , , ,

I recently bought two fidget spinners from Elecrow:

The 5-spoked wheel spinner weighs 32.88±0.03g, and the 3-spoke brass spinner weighs 61.14±0.02g.

The heavier 3-bladed spinner cost $8.90 and is milled out of brass (though the site claims “pure copper”, the material looks like brass and is slightly magnetic, so I’m sure it is brass).The lighter 5-spoke spinner cost $6.90.

The lighter spinner is easier to get to high speed, spins longer, has more gyroscopic effect, and has a dimple for balancing it on a pencil point, so makes the better fidget spinner in many ways.

I was curious whether I could characterize the fidget spinners electronically. I have a photointerrupter (an aligned LED and photodetector) from Sparkfun with a 1cm gap that the spinners just fit in.

Here is the 3-spoke spinner mounted in the Panavise Jr, with the photointerrupter counting 6 ticks per revolution.

Here is the 5-spoke spinner with the photointerrupter counting 5 ticks per revolution.

I set up PteroDAQ to record a timestamp on every rising edge of the photodetector, which counts 5 uniformly spaced ticks per revolution for the 5-spoke wheel, but 6 ticks (in 3 pair of closely spaced ones) for the 3-bladed spinner. I can then plot the angular position of the spinner as a function of time in gnuplot:

plot '3-spoke-spin-down-ticks.txt' u 1:($0/6.)

I tried fitting the spin-down using constant deceleration (a quadratic), using deceleration proportional to velocity (exponential decay), and using a model that has both terms: v_{0}\tau(1-e^{-t/\tau})+a t^2 /2.  I expressed position as number of turns (that being simpler to interpret than radians), and so the initial velocity v_{0}  is in turns/sec, acceleration a is in turns per second per second, and the decay time \tau is in seconds.  I got terrible fits with the constant deceleration, decent fits until the spinning got slow with the exponential decay, and quite a good fit with the combined model:

The longer spin time for the wheel is partly due to higher initial velocity, but the time constant for the decay is also much longer for the wheel, indicating better bearings.

I’m not quite sure how to interpret the slightly higher contact friction term for the 5-spoke wheel.

2016 February 21

Optical pulse monitor software

Filed under: Circuits course,freshman design seminar — gasstationwithoutpumps @ 18:43
Tags: , , ,

I have previously written several posts about doing an optical pulse monitor as a lab exercise in the applied electronics course or as a project in the freshman design seminar. Most of what I’ve written up as has been the electronics design, with recording using PteroDAQ and post-processing using filters written in Python for display using matplotlib or gnuplot.

I decided today to try writing the software to do the pulse monitor on the Teensy and report the pulse rate out the serial port.  This meant sampling at a fixed rate, doing digital bandpass filtering to remove drift and noise that is not eliminated by the electronics, detecting rising edges in the filtered output (with hysteresis to increase noise immunity), and converting the measured period to beats per minute.  I used the LED on the board to report the pulses detected (flashing the light synchronized with the pulse).

I also added some tests to see if the pulse has been lost, and only report the pulse rate if there have been enough pulses properly detected since the last loss so that a smoothed pulse rate can be reported.

I output the time, the unsmoothed pulse rate, and the smoothed pulse rate to the serial monitor, and I can save that output to a file for plotting:

The movement artifacts around 20s and 40s are greatly reduced by either averaging or median filtering, but median filtering provides a more stable output. At 70s, I removed my finger from the sensor for about 2s, so that the pulse was lost and had to be reacquired.

The movement artifacts around 20s and 40s are greatly reduced by either averaging or median filtering, but median filtering provides a more stable output.
At 70s, I removed my finger from the sensor for about 2s, so that the pulse was lost and had to be reacquired.




Before anyone asks, the pulse rate of 44 bpm is normal for me when resting—this is not likely to be a timing bug.

I’ll also want to try the 240×320 RGB ILI9341 TFT display that I bought, so that I can display the pulse (and maybe the pulse waveform) without needing a USB connection for anything but power.

2015 April 29

More model fitting in lecture

Filed under: Circuits course — gasstationwithoutpumps @ 22:05
Tags: , , , , ,

Today’s lecture was all about fitting models for the electrode data. I started by showing them how one could hand-sketch Bode plots, at least for RC and RL circuits.  We did a hand plot and a gnuplot plot for the R_{s} + (R_{p} || Z_{c}(C)) model with arbitrary values, showing the initial horizontal R_{s} + R_{p}, the final horizontal R_{s}, and the diagonal at \frac{1}{2\pi f C}.

In class I went through trying to do fits to data collected for stainless-steel electrodes, and showing how to debug various problems (it was all live-action plotting—I did not script my actions).  The biggest problems were getting very bad fits (in one case from taking the log of the function but not the log of the data, in another case from having bad initial values) and singular matrices (mainly from having variables in the function that didn’t affect the fit, though in some cases from trying to fit complex models to real data without taking absolute value of the complex model).

It turns out that the standard R+(R||Z_C) model is very hard to fit to the data we collected for the stainless steel electrodes.  The oxide coatings don’t leak much current, so we had no low-frequency plateau for estimating the parallel resistance from.  I suggested making the parallel resistance infinite and using a simple R+Z_C serial connection.  That can model the data well at high frequencies, where the change in |Z| is fairly small, but at low frequencies the model is poor.

I came up with a different model on the spur of the moment (not one I had ever tried before on electrode data): R + \frac{1}{j \omega^\alpha D} with a capacitor-like element having a smaller slope that the normal 1/f slope of a capacitor (about 0.6).  This turned out to fit the data quite well.  I don’t have a convincing physical explanation for the exponent α, but I suspect it has to do with diffusion times for ions near the surface of the electrode and depletion regions in the electrolyte.

In the new model, the R term probably corresponds to the bulk properties of the electrolyte solution and the \frac{1}{j \omega^\alpha D} term to the surface chemistry at the electrode, so 1/R should be proportional to the concentration of the NaCl, I think.  I wonder whether students will get that result in their fits.  I’m thinking that I should rewrite some of the book to incorporate this model.

I ended by trying to model some of the data collected by students that did not work well—they had a huge inductance uptick at high frequency (fitting nicely to something like a 3mH inductance).  I’ve no idea how they got that data, as I saw their setup and they couldn’t have had more than a few µH of stray inductance.  Other students had small upticks at the high frequencies that were almost certainly stray inductance, since moving the voltmeter leads to connect directly to the electrodes eliminated the uptick, which did not happen with the students whose data I tried modeling.  I showed students how to model the uptick with an additional inductor, but I really don’t know what went wrong with the student data—I didn’t see any problems with their setup or recording, so I can only assume we all missed something.

Some of the students at least are getting the idea that modeling is not forcing your data to fit the theory in the book, but looking for regularities in the data.


2015 April 26

Comments for class after grading

Friday’s lecture went fairly well.

There were a few questions at the beginning of class, one of which lent itself well to my talking about choosing different models for the same phenomenon and using the simplest model that worked for the design being done.  In this case it was about the relaxation oscillator using a 74HC14N Schmitt trigger and where the constraints on the feedback resistor came from.  I told them about some more detailed models we could do of the Schmitt trigger, including input capacitance (max value on the data sheet), input leakage current (not specified, but probably fairly small, under 1µA), and output resistance (which would get added to the feedback resistance).  I’ll have to incorporate some of those ideas into the book, when I rewrite those chapters this summer—the hysteresis lab needs the most rework of anything so far this quarter.

After the questions I mainly talked about polarizable and non-polarizable electrodes developing the R +  (R||C) + half-cell model of an electrode that they will be fitting (without the half cell) in labs this week.

This weekend’s grading was a bit painful, and I’m probably going to have to spend all of Monday’s lecture filling in gaps in their prior education that I had not anticipated.  Some holes also became apparent from e-mail questions I got from students over the weekend.

I’ll try to gather the common problems here, so that I can use the list as lecture notes tomorrow.

  • There were a lot of REDO grades for errors on schematics.  I hate giving REDO (since it doubles my grading load), but I told students at the beginning of the quarter that any error on the schematics was an automatic REDO.  I plan to stick to that, despite the pain for both me and the students, because they have to develop the habit of double and triple checking their non-redundant documents (schematics, PCR primers, …).  Sloppy documentation is a serious problem in engineering and too many faculty and graders have been perpetuating the myth that the almost right idea is good enough.  I’m particularly harsh on students who change kHz into Hz or pF into nF.  Off-by-a-factor-of-1000 is not good enough!  The most extreme case so far is someone who specified a capacitor as being in the gigafarads (they’d typed 109 instead of 10-9). A factor of 1,000,000,000,000,000,000 off is not the sort of thing one can ignore.  I also get annoyed by students who randomly pick a unit (H when they need Ω, or Ω when they need Hz), as if all units were just decorations to please a teacher, with no real meaning to them
  • Frequency is 1/period.  For the relaxation oscillator, they do two charge/discharge calculations to get the period as a multiple of RC (though many blindly copied one of the formulas for just the charge time without understanding it, and assumed it was the period). But even after computing the charging time students blindly used  2πf = 1/(RC) as a magic incantation.  That formula was relevant for the corner frequency of RC filters, but has nothing to do with the oscillation frequency of the relaxation oscillator.
  • The capacitance calculation being done in the prelab was for the capacitance of a finger touch to the touch plate, but a lot of students claimed that it was the calculation to determine the size of the ceramic capacitor.  Only a couple of groups bothered to explain the connection between the two capacitances. I think I need to rewrite the prompts in the book to force the values to be more different, so that students have to think which capacitance they are talking about.
  • I find that students often talk about “the voltage” or “the capacitance” as if there was only one in their circuit, and when asked which one they are talking about are completely mystified—to them invoking the magic word is all that can be expected of them—actually knowing what it refers to is unreasonable.
  • Students in general were doing too much ritual magic. They would put down a formula they thought was relevant (often copying it incorrectly), then claim that from that formula they got some number for their design.  Often the formula was not relevant, or additional assumptions needed to be made (like choosing arbitrary values for some variables).  At the very least, there was some substantial algebra to be done to convert the formula into a usable form.  Some students claimed that Wolfram alpha gave them the solution (when there was not enough information to solve for the variable they wanted a value for).  Basically, I’m a bit angry at the students for trying to bullshit their way through the assignment. One pair of students said quite honestly that they did not know how to do a computation and got the value they used from the students at the next bench.  I gave them bonus points, and I’ll help them figure out how to do the computation they were having trouble with—I have no problems with students not knowing how to do something new and somewhat tricky, but I do have trouble with students deliberately looking dishonest and stupid by writing bullshit.
  • The computation that the honest students had trouble with is one that many students had trouble with, so I’ll go over it in class.  I gave the students a derivation of a formula for the charging time of the capacitor in the relaxation oscillator, but I didn’t have time to step them through the derivation.  It seems like most of the class can’t read math, since many just copied the final formula without reading the text that said it was the time to charge the capacitor.  There was an exercise immediately afterwards asking students to compute the time to discharge the capacitor, but this exercise was added to the book after the students had done their prelab exercises, so they didn’t bother to look at the exercise. What they needed to do for the lab was to add the charge and discharge times (which are not quite the same) to get the period.
  • I need to remind the students that they are turning in design reports, not lab reports.  I’m not looking for fill-in-the-blank worksheets, but descriptions of how they designed and tested their circuits.  Omitting the design steps is omitting the most important part of the report!
  • I gave the students three models to fit to the data, and showed them how to do the fits for two of the models in Wednesday’s lecture.  There wasn’t time to get to the third model, so I just told them to use the same technique as the second model, but with the different formula.  Most of the class never bothered to fit the third model (the only one that really fits the data well)—if I didn’t do all the work for them in lecture, then they weren’t going to generalize even a tiny bit to do it themselves.
  • A lot of students did not do a good job of fitting the models, because they fit the data with linear scaling, rather than with log scaling as I had shown them.  This is a fairly subtle point (errors on a linear y axis are differences, but on a log y axis are ratios), so I’ll review it in class.
  • I  think that some students don’t have any idea when one would use a log-log plot, a log-linear plot, a linear-log plot, or a linear-linear plot.  I thought that was covered in precalculus, but I guess not. So tomorrow I’ll present the idea that the only curve most people understand visually is a straight line, so one wants to choose axis scaling so that the expected relationship is a straight line.  Linear plots are for linear (or affine) models, log-log plots are for power laws, log-linear are for exponentials, and linear-log are for logarithmic relationships.  I’ll put a general straight line on each and derive the form of the function that matches that straight line.
  • The purpose of the Tuesday lab was to collect data and model the loudspeaker with a few parameters.  But many students neglected to report those parameters in their design reports!  They produced a plot and fitted models to it, but nowhere on the plot, in the figure caption, or in the main body (in decreasing order of usefulness) did they report what the parameter values were that the fit produced.  For students who are so focussed on answer getting that they neglect to explain how they came up with their answers, this seems like a strange omission.
  • For the Thursday lab, no one did back calculations from their observed frequencies to estimate the capacitance of the 74HC14N input, of the untouched touch plate, or even of the touch itself, to see whether their observations were consistent with their design predictions. One group of students claimed to have done sanity checks, but I don’t believe them, as they also reported oscillations around 20Hz, instead of 20kHz.
  • For the prelab, it seems that a lot of students computed R + \omega L instead of | R + j \omega L|, though most got it right in the gnuplot scripts for the lab itself.  I have to remind students that |A+B| \neq |A|+|B|.
  • On the typesetting front, I’m making some progress on getting students to put their plots in as figures with captions, though way too many are still referring to “the plot below” rather than to “Figure 3”.  I’m also having some difficulty getting them to be sure to refer to all the figures in the main body text.  A lot of times they’ll toss in a handful of plots with no reference to them at all.
  • On the opposite side of the coin, I have to teach them that equations are properly part of a sentence, generally as a noun phrase, and are not standalone sentences.  When there is an explanation of variables after a formula (“where A is this, and B is that”), the where-clauses are still part of the same sentence.
  • Some other little things to tell them:
    • The word “significant” should be reserved for its technical meaning of “statistical significance”—very unlikely to have occurred by chance according to the specified null model. It should not be used in the normal English way to mean “big”, “important”, or “something I like”.
    • To get gnuplot to produce smooth curves when there are sharp changes in function, it is necessary to do set samples 3000 to compute the function at more points than the small default number.
    • Students have been misusing the word “shunt” for any resistor. Properly, it is a low resistance used to divert current from some other part of the circuit—in our designs, it is the resistor being used to sense current and change it into voltage. I wonder if I should switch terms and talk about a “sense” resistor, though “shunt” is the standard term for ammeters.
    • A minor pet peeve of mine: I hate the word “utilize”. I have yet to see a context in which “use” does not do the same job better.
Next Page »

Blog at

%d bloggers like this: