With having basic support for Granites Simplemotion V2 protocol users have more options of motor drivers again.
While the project is best uses with our custom designed TMC4671 based driver the Granite Ioni drivers were in the past used for Simucube V1 / OSW kits and also provide good quality force feedback with high compatibility.
The drivers use RS485 instead of CAN or SPI so it has to use the less reliable uart peripheral of the STM32 with new pins but it still works perfectly fine at 1kHz single with a single axis by using the fast cycle update. The regular protocol has a high overhead and does interfere slightly so it should be avoided at the moment and is only used for the setup and getting specific data from the driver.
In simracing pedals load cells are often used for the brake pedal. They provide a realistic feeling and like a real hydraulic brake the signal increases with the force applied. A challenge in DIY setups with load cells is to amplify and shift the tiny signal from the load cell. Depending on the type of load cell it is either a full wheatstone bridge creating a differential signal or in the case of 3 wire load cells just half of the wheatstone bridge which is basically just a resistor divider changing the ratio with the force applied to the strain element.
Using 3 wire load cells alone on a differential amplifier requires generating the other side as a reference voltage with a static divider. In some applications a 1k/1k divider can be enough but then an offset either positive or negative is to be expected.
Another solution is to use a variable divider as the reference. This is what i chose for the following module. It features an INA333 and a trimpot for the gain and also one for the offset to fine tune the loadcell depending on preloading and manufacturing variations.
The module can be purchased on Tindie and schematics are available on GitHub
I was approached to provide a floppymusic setup for an upcoming show but the issue with my own setup is that it got so many changes over the last years and was never made to be stable that it would never survive shipping.
So i decided to make a new one an fix all the problems the old setup has. Most importantly the drives are now mounted with screws instead of velco and the power supply cables are much more reliable now.
Another important change is the addition of shift registers to enable each drive when playing a note and disable it when unused. This blinks the leds and reduces power consumption a lot when used with external stepper drivers
After the old powerstep based motor controller i improved the idea of an open source force feedback interface for direct drive wheels and other simulation interfaces with high torque demand in a modular way
OpenFFBoard consists of a simple STM32F407VG based usb interface with defined pins for SPI, buttons, leds, encoder input, CAN bus and more.
Take a look at the full development story on hackaday.io
Firmware and hardware design ressources are available on Github
A TMC4671 based motor driver which is also developed in this project as a reference can drive 2 phase steppers, 3 phase servos and DC motors at up to 60V DC and over 20A. It has an active anti backfeed diode circuit for use with power supplies and a brake resistor mosfet included. It also features highly accurate current sense amplifiers and voltage sense dividers. An onboard 5V DC converter can supply the hardware directly from the motor power supply.
The TMC4617 can also use external BISS-C and Magntek encoders by forwarding positions via SPI from the FFBoard since firmware 1.8. This causes a lot of additional load on the microcontroller so it is not ideal but it seems to work pretty well and reliably.
Additionally the ODrive and VESC via CAN and a PWM output with PPM, 0-50%-100% centered, pwm+dir and dual pwm (different pins per quadrant) are supported.
Recently i found some of these rare 5 digit 7-segment modules from the 70s.
Once found in calculators and watches these tiny GaAsP LED modules amaze with their tiny, crisp, deep red segments with a whole digit not even 3mm tall.
I have created a simple breadboard friendly interface board featuring current limiting resistors and 2 shift registers (one for anodes and one for cathodes) for simple interfacing with modern microcontrollers.
OHSC will be a hybrid stepper motor controller using foc techniques based on the modern powerstep01 driver and a powerful stm32f4 microcontroller.
The goal is to develop a stepper motor controller that can operate at stall conditions smoothly the same way expensive industrial servo motors can. A high resolution rotary encoder with sub microstep resolution is used to provide feedback.
The initial idea came from researching direct drive steering wheels for racing simulators. Servo motors are often used by simracing enthusiasts as they provide accurate and strong force feedback but also come with a hefty price tag. When sacrificing some smoothness a stepper motor can be bought for a fraction of the price but i had to realize that there are no cheap modern hybrid stepper drivers available at all that would be fit for the task.
Another use case of hybrid steppers can be in robotics and automation applications where projects like odrive already allow hobby 3-phase motors to be used. Sometimes a more powerful stepper might be the better or cheaper choice
The first goal is to design a driver able to create some smooth torque and a force feedback application based on usb hid/pid. This will certainly please the simracing community and hobbyists looking to get into force feedback for cheap.
The basic principle of the current prototype is a foc loop that permanently adjusts the current electrical position by sending bursts of step impulses in stepclock mode. This allows to prevent the motor from skipping full steps and always provide the maximum amount of torque.
Based on the popular DPS5005 Module i have created a 3D printed power supply (Thingiverse STL).
These modules can also be controlled via usb with modbus. A python example is available on my github.
This allows for automatic measurements and live readouts.
A 32V old kodak power supply is fitted in the bottom of the case. For the fan a standard DC-DC buck converter was used.
The temperature stays reasonably cool when used with a fan while running at over 100W . The limiting factor here is the power supply and the 5A limit of the module. These modules should not be used without a bit of thought about airflow as the switchig mosfets can get very hot in enclosed spaces.
I wondered why i have never seen anyone making music with a siren so i had to try it myself.
It was started when i browsed thingiverse and found a nice little siren model and i had all the parts i needed around.
The interface is based on an arduino micro as a midi interface to generate a ppm signal to use with hobby escs based on incoming notes.
If the esc and motor respond quickly enough and hold the speed well it can be used as a (probably terrible) instrument.
I was pretty surprised how well it actually workded and expected it to be much worse.
The speed is not really regulated other than by the calibrated esc and a fixed voltage source and the spin up and down time depends on the inertia of the rotor and how good the esc can brake.
Fast quadcopter escs and a strong motor are preferred for this.
Some escs offer closed loop speed controlling which would be even better.
I have used a cheap racerstar lite 20A esc running blheli and a spare 2204 multistar elite 2300kv motor.
Some years ago i loved smartpropoplus, a software that lets you use any rc remote with trainer port on you soundcard to emulate a windows gamecontroller.
While playing around with rtl-sdr i found out that my receiver can receive the 35mhz band and tried to capture some ppm data from a 35.11mhz Hitec Optic 6 remote and the results were great:
I decided to direct the fm decoded signal from sdrsharp via VB-Cable into smartpropoplus to check if it can be decoded and it worked.
The next time i used a raspberry pi to receive the signal and direct it via rtl_fm and aplay into a soundcard input the same way the remote would be connected with a trainer cable.
The latency is pretty high because of rtl-sdr but this method works great with any remote control and it is not longer limited by a trainer port and you get some pretty good range.
It makes no difference in the delay if rtl_fm or sdrsharp is used but rtl_fm is of course better for any „real“ use.