I’ve been thinking of making a similar extruder, though based on rq3’s VDE-100 with one flange bearing sharpened into a knife roller and two regular bearings to hold the filament against it. And linear hall sensors instead of the encoder (lighter weight and lower cost).
Yes, I2C can operate via interrupts on ATmega328P. You could also use step/dir interface so the printer firmware sees it as a normal stepper, and internally have the SimpleFOC program convert the steps to a position in radians to run the closed loop control. But you may run into trouble with excessively high interrupt frequency eating up all your CPU time, especially with the AMT-103 which also generates up to 2048 interrupts per revolution (and will lose position if any of them are missed). But it might work if you set the AMT-103 to lower resolution, reduce the steps per mm in the 3D printer firmware, and don’t use high retraction speed.
Better still, use a faster CPU like Valentine’s Mosquito https://community.simplefoc.com/t/mosquito-board-new-design/1621
I’m pretty sure it can also use the STM32HWEncoder class in the SimpleFOC-drivers repository, which will track the AMT-103 position without the use of interrupts.
SimpleFOC doesn’t yet support sensorless back EMF commutation, and it wouldn’t be useful for this sort of low speed control anyway. Open loop mode is “driving blind” like stepper motors do, and it would work but doesn’t give as high torque or efficiency as closed loop control. With closed loop, SimpleFOC will turn the motor back and forth a bit at startup for calibration, but you can save the settings so it doesn’t have to be done every time (important for an extruder, which can’t move at startup when the filament hasn’t been melted yet).
Not that I’ve seen. But as said, you can use step/dir communication so the printer firmware doesn’t have to explicitly support it.
One more thing to be aware of is that SimpleFOC will run into trouble with floating point precision if you keep increasing the position long enough. This could rear its head toward the end of a long print, which would be very frustrating. Probably will need to figure some way to wrap the position back toward zero when it gets large.