My name is Fisher, I’m doing a Masters in control system research and need to choose a controller board for my project.
It will control a 6 wheel car (wild thumper) to keep a rod (inverted pendulum) upright.
I am looking to understand the BBB in more detail to know if I should consider it or not.
I will be using the controller board with Simulink from Mathworks in the same way it can be used with RPi or Arduino. I hope to control the 6 motors with PWM, read a few voltages with ADC, may be use some I2C and SPI etc.
The BBB may be a strong choice for me if I can use the 2 x IO processors to do realtime stuff while the CPU does other things.
I have a few questions, mainly how its used/programmed compared to the Raspberry Pi as they can both run Debian Linux.
- Are there BBB python libraries for general things like PWM, ADC, I2C and other general IO like in RPi?
- How different is the BBB to use and program to RPi?
- The BBB seems to have 2 x IO processors in its PRU-ICSS, I think they are 200MHz each, how easy is it to use them for inputs, outputs and calculations separate from the CPU? Is there a kernel module?
- The PRU-ICSS does not really seem to be documented except for in a GIT project, the documents there seem to have info from Texas instruments (who make the CPU) but not official. Is this subsystem used by others? How?
- PWM seems to be 2 types: hi and low resolution, 3 of each to make 6 in total. The hi seems to have 2 outputs per unit, can they have separate duty cycles? I would like to control 6 separate motors.
- The BBB seems to have an 8 channel, 12 bit ADC
- Are any issues with the board such as can’t use certain IO’s at the same time, such as using 6 PWM outputs with 2 ADC, I2C or SPI?
Here is the GIT project for the PRU that I have found, Ti seems to refer to it as well, I think in a forum of theirs.
To my knowledge, the BBB has:
1GHz ARM v8 32 bit CPU from Ti
3D GPU with max 720p through HDMI
2 x IO processors in the PRU-ICSS
3 hi resolution PWM (eHRPWM)
3 low resolution PWM (eCAP)
Some quadrature encoder inputs
I appreciate any input from anyone.