After some comments of Mahjqa I’ve changed the default cabling and added a reverse power protection circuit. First impression is good. Also, I saved myself a lot of headaches to change the programming connector pinout to the standard Atmel ISP pinout.
For the end users the greatest change is that LEGO power functions cables can easily be soldered into the board, AND these have the power connection as well! In the original design I hadn’t thought people would like to use the Power Functions cables because they’re bulky, but I was wrong. Now you can also hook up PowerFunction servos!
Hooray! I finished my troubles with the motor driver. I switched to other types (first something from TI, then back to ONsemi again with a different type) to solve my issues with resetting the driver, if anyone is interested I can provide you with details… For now I’m happy I can finish the receiver I was planning to build for Mahjqa, as I would have liked to finish it weeks ago…
The last few weeks I’ve been trying to control the LVM8548 to NOT shutdown the outputs; I tried several schemes, from resetting the driver once in a while to adding series resistors to the output to nog driving the outputs continuously high when going full throttle to … leaving the LVM8548 at rest; The problem is that the automatic restore is not functioning, you have to restore the driver by pulling all inputs low. In normal behavior this happens once every pwm cycle when you’re pwm-ing both inputs. When one input is constantly high (full throttle forward / backward) the driver does not reset. There is no way to check whether something is going on. Now I’ve switched to the DRV8835 from TI. The part is ridiculously small, and I bought a hot air soldering station to be able to solder it, and made a new layout. The preliminary results are promising, although a direct connection of the motor to the outputs still shuts down the driver. A small inductor in series (‘chokes’ the inrush current) helps, I’ve ordered some ferrites to test, and hopefully that will be the end of redesigning.
I’ve been messing around with some software issues lately, had a tough time trying to find a bug in my code where the output pwm duty cycle of one channel depended on the state (on/pwm/off) of the other channel. The reason was that the 8548 driver is ‘reset’ when all 4 inputs are low, and needs an extra 7us to start up when inputs are asserted. Now, when I’m pwm-ing both channels, at the end of one period both channels have been set to ‘float’ e.g. all inputs low. When re-asserting the inputs, the motor driver needs an extra 7us to start. This is roughly 10% of the complete pwm period, so it was clearly noticeable. Fixed this in software. Will be testing more elaborately soon….
Gutted a lego brick at tkkrlab, and cut the bottom off to fit a regular LEGO plate at the bottom. The space left inside is minimal. Very curious how this will work out mechanically.
PCB’s have arrived from ITeadStudio! I didn’t take into account the ribs inside the LEGO brick, so it fits nearly when removing all ribs. I might try to do a redesign to make it fit easier. Now I’m waiting for the components to arrive…