2.3 KiB
stmbl
stmbl is an open source servo drive designed for Retrofitting CNC machines and Robots. It supports Indutrial AC and DC servos with up to 320V and 1kW.
Hardware version 31
Driving a Bosch Turboscara
https://www.youtube.com/watch?v=Ue98HE76paI
Drivetest
https://www.youtube.com/watch?v=sMeV4SCu4TA
Drivetest with asymmetrical load
https://www.youtube.com/watch?v=seEV_i7o1NI
####Supported Motors
- Synchronous AC Servos
- DC Servos
- IRAMXv2 Hardware testet up to 320V
####Supported Feedback systems
- Resolvers
- Incremental encoders
- sin/cos encoder interpolation
####TODO
- AC Async
- saving parameters to flash
####Directories
- hw/eagle/ Eagle board files and schematics
- hw/spice/ Spice simulation for resolver interface
- src/ STM32F4 code, command, feedback and control loop
- stm32f103/ STM32F1 code, running on the HV side, generating PWM
- term/ Terminal with scope and local history. Supports UHU servo and stmbl.
####Building the firmware
Requirements
- gcc-arm-none-eabi-gcc https://launchpad.net/gcc-arm-embedded/+download
- stlink https://github.com/texane/stlink
Flashing
Add gcc and stlink to your $PATH
make
make burn
####Building Servoterm
Requirements
- cmake >= 2.8
- gcc >= 4.8 or clang
- wxwidgets >= 3.0
- libserialport http://sigrok.org/wiki/Libserialport
Compiling
cd term/
mkdir build/
cmake ../
make
####Using Servoterm
Testing HAL
HAL can be tested without any hardware connected to the STM32F4discovery.
- Flash STM32F4discovery(STlink and USB OTG must be connected)
- Launch Servoterm, Click refresh, and connecto to STM32 Virtual ComPort
entering ? prints a list of hal pins. The current default config is for a 4 pole AC permanent magnet motor with resolver feedback, using an encoder for command.
net0.fb <= res0.pos = 0.000000
net0.fb is driven by res0.pos, and its current value is 0. Pins can be connected to other pins, or fixed values.
This example connects the sine wave generatror to wave view 0. Offset and gain can be controlled with the sliders below Channel 1(black).
term0.wave0 = sim0.sin
sim0.amp = 10
sim0.freq = 5
To disconnect a pin, connect it to itself
term0.wave0 = term0.wave0