Mechatronics Portfolio
Logan Williamson's Mechatronics Portfolio and Documentation Repository
Ball Balancing Platform Project

*Please see the files tab for file documentation

The source code files for the Ball Balancing Platform project can be found at my Bitbucket source code repository.

Introduction

The final deliverable for this project is a program consisting of ten files which work cooperatively (by means of cooperative multitasking via time slicing) to balance a steel ball on a platform. This platform is actuated
about a central pivot by two small permanent magnet DC motors. The required files include the motor.Motor, closedLoop.ClosedLoop, BNO055.BNO055, touchpanel.touchpanel, and shares.Share classes.
Instantiation of objects from these classes, as well as collaborative program functionality, is executed by the taskUser.py user interface file, the taskMotor.py motor control file, the taskIMU.py inertial
measurement unit control file, and the taskPanel.py resistive touchpanel control file. Documentation of these files can be found in the Files tab of this page.

The cooperative multitasking between the four tasks running in this program is handled by the main.py task scheduler, which is a simple, appointment-based multitasking scheduler designed for cooperative multitasking via time slicing.

Demonstration of platform balancing a ball

Demonstration of user interface for setting platform control parameters

Term Project Diagrams

Task Sharing Diagram for Lab0xFF - Ball Balancing Platform

Term Project User Interface Finite State Machine

Term Project Resistive Touchpanel Finite State Machine

Term Project PMDC Motors Finite State Machine

Term Project Inertial Measurement Unit Finite State Machine

Term Project Figures

Path of the ball traced out on the touchpanel over 10 seconds of data collection

Calculations and Background MATLAB Analysis

Hand Calculations for the Kinetics and Kinematics of the Ball-Platform System

Author
Logan Williamson
Brianna Roberts
Date
March 18, 2022