Hello everyone.
I welcome you to my last summary blog part when I want to conclude this contest, summarize what I have done and summarize what I have learnt.
Blog Posts
As part of contest, I published 14 blog posts (+ this one). This is 7× more than was required . I published them regularly. In every blog post I try to publish some of my findings and status of my experiment. Following list contains links to all blog post which I have published as part of contest.
- Blog #1: Introductory blog to my ADI/Maxim Integrated MAX40080 experiments
- Blog #2: Introduction to MAX40080
- Blog #3: Converting measured value to Amperes
- Blog #4: Using MAX40080 CSA with MAX32625 MCU – First thoughts
- Blog #5: My Python and C Libraries are available now
- Blog #6: MAX40080 C Library
- Blog #7: MAX40080 Python Library
- Blog #8: Using MAX40080 without writing any code
- Blog #9: Measuring USB Flash Disk Power Consumption
- Blog #10: Raspberry Pi Self Power Consumption Measurement
- Blog #11: USB Type-C Power Delivery monitoring
- Blog #12: Long Term Power Consumption Monitoring
- Blog #13: MAX40080 Samples corruption when FIFO Roll-over mode enabled
- Blog #14: Experimenting with Overvoltage Detection
As you can see, it is lot of content! In PDF all these blog posts occupy 106 pages of size A4. Blogs consists of 131667 characters including spaces. They contain 134 images and 2 videos.
I categorize my blog posts to four categories:
- Introduction: In first blog post I described my experiment plans. In this blog I described my experiments. Their final implementation I later described in blog posts 10, 11 and 12.
- Tutorials: Second and third blogs I designed as tutorials. In these articles I described fundamentals of communication with sensor, basics of its configuration and some caveats which I have faced at beginning, and I considered them helpful for other members.
- Description of software: As part of contest, I original want to make C library for using sensor with microcontrollers (I like microcontrollers). But soon after contest began, I and some other challengers realized that there is almost no software for using sensor with Raspberry Pi (which was platform provided in Kit which we have received). Due to this I developed Python library usable on Raspberry Pi and I also got idea to make command line utility for ultra-easy way of experimenting with MAX40080 CSA without any programming needed. All these libraries and utilities I presented in blog posts 4, 5, 6, 7 and 8. In every blog post I tried to present some brief quick start guide on using this software.
- Experiments: As part of contest, I successfully realized all four experiments which I promised in contest application and first blog post. Except this experiment I also published experiment with measuring power consumption of USB Flash Drives. I described it in blog post 9.
- : At last, I presented blog post about issue which I have faced when experimenting with sensor and which is still under investigation by Maxim support at the end of contest period. Similarly at last minute I posted mini experiment regarding overvoltage detection.
I received many feedback on my blog posts. Especially at my tutorials which I published very soon after competition start. My second blog (Blog #2: Introduction to MAX40080) is my most popular contribution to this contest. It received 11 likes, have been seen more than 1000 times and many challengers referenced them in their own blogs. For example colporteur referred it in his third blog, guillengap also referenced this blog and used code snippets in his second blog and taifur also used code snippets shown in this blog in his blog post.
Experiments and Projects
As part of contest, I did many experiments. Most of experiments I have done when developing my Libraries. At this time, I tested many features and modes of operation supported by the chip. As part of contest, I did three projects which I shown in my blog posts (forth promised experiment was simple usage with resistor which I shown in tutorials):
Raspberry Pi Self Power Consumption Measurement
In this project I connected sensor to the Raspberry Pi in a way that it was sensing current consumption of itself. In this experiment I utilized my command line utility. Originally, I want to make Python program, but later when I developed CLI utility it looked more interesting to use it here. And definitely it was significantly easier with CLI utility. Before experimenting, I was slightly confused by power sequencing because voltage on sensing pins is provided before Rapsberry Pi start power for GPIOs, but this is not an issue with MAX40080. Its digital IO is powered from separate power supply which can be provided later. So, in this experiment everything went well, and I am satisfied with it. If you are interested in more details, you can read blog post 10 in which I described this project in more details.
USB Type-C Power Delivery Monitoring
My second experiment used MAX32625 microcontroller instead of Raspberry Pi and used my C library. In this experiment I used my debug probe PCB (which I designed) for allowing connection current sense amplifier to the circuit of USB Type-C cable. This experiment was a slightly complicated because I did it on breadboard. Doing this experiment/project taught me a lot of things (I will describe them later in this blog post). When I was developing this project, I faced many issues and I had to debug lot of things. After all this troubles, I successfully completed it and I was able to see that negotiation on USB Configuration Channel really can happen and my USB Type-C Charger was able to power iPhone by higher voltage (9V) than is standard voltage on USB bus (5V). Due to non-ideal design of this experiment on breadboard, experiment was partially affected by high error rate and some noise. If you are interested in more details about this project, you can read my 11th blog post.
Long Term Power Consumption Monitoring
My third experiment/project used different microcontroller (I like microcontrollers ). I based it on Renesas EK-RA6M4 board. In this project I also utilized MAX31343 Shield which I RoadTested about one year ago. Purpose of this project was to log power consumption of barel-jack powered device (Wi-Fi router, but works with any other up to 36V). Microcontroller communicated with CSA and RTC sensors on USB bus, used Flash memory for storing power consumption samples and provided web interface using HTTP protocol over Ethernet. This experiment was also successful, but I did not run it for a long time because my sensor was busy with other experiments .
In all experiments I used sensor configured differently. I tried multiple sample rates, multiple configurations of digital filter, I tried several modes of operation, I tried advanced features of FIFO like overflow warning. Experimentally I tried under and over voltage detections I also used interrupt provided by sensor in my MCU based applications.
When experimenting I also found that sensor behave incorrectly in one specific configuration (sensing both current and voltage while FIFO roll-over is enabled). At the time of writing this blog post Maxim support is still investigating this issue. If you are more interested in it, you can read more details about my findings on this issue in my 13th blog post.
Contacting Maxim Support
As I have mentioned in previous paragraph, I was in touch with Maxim Integrated Technical Support. In fact, I opened 7 tickets here. 5 tickets I opened for reporting mistakes and missing information in datasheet which I found when experimenting with MAX40080 sensor. Maxim accepted all of them and in this time, they work on new revision of MAX40080 datasheet, but they did not publish it within contest period. Another issue I raised because I was not sure if behaviour of FIFO flush bit is correct. This issue is closed now and bit behaviour as described in my 4th blog is correct even it is not intuitive. Last issue is regarding wrong values marked as valid by sensor in one specific mode of operation as described in previous paragraph and blog post 13.
Key Learnings
When experimenting I learn many things.
- I realized some fundamentals aspects of electronics. Originally, I thought that 30 mA is low current which cannot do any significant impact. But when I touched resistor handling 30 mA of current, I realized that even only 30 mA is makes it hot. In this moment I better realized that current is not the only property and voltage is also important. 30 mA at 1V is behave differently than 30 mA at 100V.
- I first time faced an issue with wires – really, issue with simple conductive wire. I learn that wires in real world have non-zero resistance and especially cheap wires can cause problems to measured circuits due to this. More details are in blogs 10 and 11.
- I learnt how to calculate things related to amplification in this sensor and how to convert measured value to real unit accurately. Many this information apply to CSAs in general, so I welcome this kind of experience. I shown these findings in blog 3.
- I learnt that CRC is very important. Before contest I thought that CRC errors are rare and CRC checks are there only for sure, but when implementing second project I faced lot of these errors and CRC definitely saved me from issues raising from processing corrupted data (which would be even more complicated to debug!).
- When implementing Python library, I learnt that python package manager pip can install libraries directly from GitHub, so it is not needed to publish it to the repository. This was my first Python library which I created in my life. So, I consider this as another very valuable experience.
- This is first time when I have opportunity to play with MikroE Click Board. I have not used any of these boards before.
- I improved my skills with using Maxim SDK for controlling MAX32625 MCU Peripherals. Now I can develop applications using this microcontroller faster and after doing many experiments with this MCU I can better utilize its more advanced features.
- I learnt using Octal SPI Flash Memory, setup Ethernet connectivity and manage sockets with FreeRTOS on Renesas RA6M4 platform. All of them I used first time.
- I first time used /dev/i2c-X devices provided by Linux kernel for accessing I2C devices from userspace applications. I known about existence of this special file, but I have never used it before.
- After designing some PCBs I am more skilled in Kicad.
Costs
My experiments cost me some money. As part of experiments, I designed 4 PCBs. I used only 2 of them, remaining two were breakouts for case when I do some error on my boards. For this PCBs I also had to bought components which were generally cheap but because I had to order minimum order quantities, price of shopping cart was not in the range of cents. Following table contains list of PCBs and components which I have bought for some of my experiments:
Component |
Quantity (MOC) |
Total price |
PCB: USB 2.0 Debug Probe |
3 |
$ 3.10 |
PCB: USB Type-C Debug Probe |
3 |
$ 4.25 |
PCB: USB micro breakout |
3 |
$ 1.05 |
PCB: USB Type-C breakout |
3 |
$ 5.50 |
Barrel Jack connector |
5 |
29.90 CZK (approx. $ 1.29) |
USB Type-C to Type-C cable |
1 |
144.38 CZK (approx. $ 6.24) |
Terminal block |
10 |
54.86 CZK (approx. $ 2.37) |
USB Type-C plug connector |
1 |
46.19 CZK (approx. $ 2.00) |
Screwdriver |
1 |
50.81 CZK (approx. $ 2.20) |
Barrel Jack cable |
1 |
25.40 CZK (approx. $ 1.10) |
Power resistor 1 ohm 10W |
5 |
31.33 CZK (approx. $ 1.35) |
Power resistor 3 ohm 10W |
5 |
31.33 CZK (approx. $ 1.35) |
Power resistor 12 ohm 10W |
5 |
31.33 CZK (approx. $ 1.35) |
Power resistor 0.1 ohm 10W |
5 |
31.33 CZK (approx. $ 1.35) |
Power resistor 0.2 ohm 10W |
5 |
31.33 CZK (approx. $ 1.35) |
Total: |
|
$ 35.85 |
I also thank again companies which sent me free samples of their products. I thank:
- Maxim Integrated for sponsoring this contest and sending me free sample of MAX5715 DAC.
- Renesas for sending me sample of EK-RA6M4 Kit.
- Adam Tech for sending me USB Type-C receptacle connectors.
- Samtec for sending me Elevated Socket Strips.
Summary
I am very happy that I was selected as one of sponsored challengers in this contest. I enjoyed all parts of this contest. After this contest I can proudly say that I know almost everything about this sensor. At last, I would also like to thank all who read my blog posts. Some people liked all my blog posts, so thank you very much.
Next blog: Blog #16: Today I received Grand Prize