On AliExpress you can get the adapterboard without magnet for under 10€.
Is the TaoBao offer inclusive shipping?
TaoBao is a China-only marketplace. But they accept international payments. And there are post forwarding services that let you buy to an address in China and then get it forwarded to your country. It’s a bit offtopic, message me if you’re curious.
Hope necroposting doesn’t offend anyone
I took a bit of a break from this project and now I’m back on it as time allows. I built the boards, assembled the mechanics and wrote some basic controller code using SimpleFOC library. Thought the community at least deserves an update and acknowledgements. I really appreciate the help I received.
Now that my drive can actually pull tape, I’m facing more nuanced problems. Just a quick recap: the plan is to make a tape drive for data. The encoding would be tolerant of tape speed variations, so there will be no capstan – just the hubs with direct control. I have now reached the stage when I can make experiments with recording and playing back a tone.
Probably a surprise to nobody, when I record a tone and play it back, it sounds like a choir of deranged chipmunks. The sound of it almost regular.. kinda sounds like fax. It’s as if the takeup spindle BLDC is still having some jitter that transpires as FM modulation at the head.
It’s not something I can confirm visually, or by touch. When I touch the spindle it feels buttery smooth, but I guess it gets greatly amplified by the hub radius, other irregularities probably add up as well.
My set up is roughly this:
RP2040 clocked at 200MHz. Simple FOC^2.3.5 with earlephilhower core. Two instances of BLDCMotor + BLDCDriver3PWM + MagneticSensorSPI. STSPIN233 drivers. No current feedback.
Motor init params:
motor.motion_downsample = 4;
motor.PID_velocity.P = 0.2;
motor.PID_velocity.I = 0.025;
motor.PID_velocity.D = 0.0;
motor.PID_velocity.output_ramp = 50.0;
motor.PID_velocity.limit = 1.0;
motor.LPF_velocity.Tf = 0.3f;
motor.foc_modulation = FOCModulationType::SpaceVectorPWM;
motor.modulation_centered = 1.0f;
motor.voltage_limit = 6.0f; // I’m using 9V for the motors from an external PD brick
I tried torque, velocity and velocity_openloop control on the takeup spindle. Tried PID with small P and high I and viceversa. Filtering fast and quick, voltage limits high and low.
Can’t quantify the difference but it seems that all 3 control methods sound roughly the same. It’s not yet there at the stage when you can tune up the parameters and see what works better because so far nothing really works well enough.
Is there something I can do to work up towards smoother movement? Just collecting ideas, I know it’s a very loosely defined question. Do you think current sensing could help? I hoped that upgrading to fat and juicy power source would make it better, and it definitely feels much more sure in itself, but by ear it’s almost as if nothing has changed. What about upgrading to rp2350 or even esp32s3 to increase control loop speed? I know PID and filtering offer an endless range of possibilities, but at least in the open-loop mode those should not matter?
If all of the control methods are sounding the same, are you sure it’s down to the speed variations transported on the tape, and not due to electrical interference?
Also are you sure it’s during playback and not during recording (or both)?
Can you measure the frequency of the noise, to be able to correlate it to some possible sources like PWM, cogging, control loop frequency, etc?
Also, since you’re planning to store data with a Speed variation tolerant scheme, does it even matter?
how about if you double the playback speed, does the noise frequency also double?
I think it is, when there’s a quiet piece of tape I don’t hear the same music.
I recorded a flat 1khz tone on a known good deck. It’s much better to try and characterise the chaos with fewer unknowns.
Yes, great idea. I need to implement a way to sample the signal so I could quantify the problems somehow. It is possible, basically a question of finding the right cables but it’s messy right here currently..
When speed variation is so quick and erratic it’s basically frequency modulation and I don’t know if there are schemes resilient to that. Even if I record clock signal on the second track, it needs to be more stable.
I think it scales proportionally, yes. But I will be more sure when I can sample the signal and run some basic measurements.
Yesterday I tried to add some physical decoupling: added felt pads and heavy washers to the motors, so the spindles now have some real inertia and there’s a bit of vibration dampening. I don’t think I was able to tell the difference by ear, but I’m also not going back too soon because it’s a lot of glue to undo.
Maybe with added physical mass it makes sense to try some old fashioned way of controlling the motors with basic on/off commutation?
Ah, of course, that makes perfect sense and sounds like a good approach!
Cogging would scale with the speed for example, while control loop and PWM are generally speed invariant.
I think torque mode is better to test first, because it doesn’t have the velocity PID which can introduce extra oscillation if not well tuned…
There have been a few threads in this forum by people using SimpleFOC for turntables, and their efforts to get speed stability to HiFi audio quality levels.
Some points from that:
A precise external oscillator is needed for good speed stability, the much less precise internal oscillators negatively impact performance.
A turntable tends to have a huge mass turning under the record, and the resulting inertia helps a lot to keep speed stable.
All BLDCs exhibit some level of cogging, but some are much more coggy than others (it depends on the motors construction). I would not be surprised if you found cogging to be the cause… reducing the effect of cogging is possible by using a different motor, by adding inertial mass, perhaps by adding a belt drive, or (difficult) by compensating with a calibrated lookup table. You could also try getting the velocity control loop running with such high bandwidth that you compensate the cogging with the control loop, not sure how realistic that really is though.
I’ve been giving it a lot of thought and I realise that my mechanical design is the worst from the point of view of cogging reduction. In a classic turntable there is a small axle driving a massive flywheel, with a large reduction ratio. In a classic tape mechanism, the capstan has a massive flywheel and is driven with a large reduction ratio. This offsets any imaginable irregularities in the motor movement far out of audible range. Now I have the exact opposite: the tiniest jitter at the axle gets greatly amplified. It’s rather naiive and silly to expect this to move smoothly.
Perhaps I should consider moving the takeup motor aside and putting a heavy belt-driven flywheel in its place. So much for making it simple without any belts.