-
Notifications
You must be signed in to change notification settings - Fork 0
Software
The Coding Language used for this system is C++ with the operating system as Linux on the Raspberry Pi. As it can be seen from the system diagram of the home page, the Raspberry Pi measures the generated voltage from the DC motor, adjusts the blade pitch accordingly using a PWM (Pulse-Width-Modulation) Proportional Controller and displays these information on the Linux Terminal.
As stated in Electronics, the ADS1015 is used to allow the Raspberry Pi to read analog signals. It has a programmable gain from 2/3x to 16x to amplify small signals and read them with higher precision. A written C++ library for using the ADs1015 can be found on https://github.com/hallgrimur1471/Adafruit_ADS1X15_RPi. This library uses the wiringPi library to conduct I2C communications.
Following the single-ended example provided by the library, a script is written for reading the voltage generated in milliVolts (mV). This can be demonstrated with the test code provided. A programmable gain of one is given to define the voltage range to +/-4.096 V as this is the closest to the Raspberry Pi's range of 3.3 V.
The ADS1015 provides 12 bits of data (2^12=4096 levels) in binary two's complement format. A simple algorithm is needed to convert the two's complement binary to voltage in mV. This was done by multiplying the data from the ADC by (3.3 divided by 4096) to give the voltage in volts and a further multiplication of 1000 to give the voltage in mV. The sampling frequency for this application is 100Hz.