Last update I discussed the problems I ran into when I combined the infrared remote control code learner with the brainwave appliance controller. As a refresher, previously I built a brainwaves appliance controller in a PSoC5LP chip part of a Schmartboard prototype board and an infrared remote control code learner in a Cypress CY8CKIT-001 evaluation kit. While they both worked well separately, when I combined them in the same PSoC5LP chip I ran into some problems. In my previous blog post I showed how I debugged and fixed a system lock-up problem. Since then I spent a lot of time testing various sequences of code programming and retrieving and emulation of eye movement detection and data processing for decoding and selecting the corresponding infrared remote control code to be transmitted. Once I was confident that the system works without issues I moved to the next step of porting the design from evaluation board into a product.
I first put together a plan of what needs to be done and what I know how to do and what I don’t know. I then started to look into the product development process and I realized that a dominant contributor to the overall production cost will be the PCB assembly process followed by the cost of system assembly. In order to achieve a low cost I need to go to a high level of integration and a high volume production. I have found various prototype and production assembly providers, and many PCB manufacturers. I haven’t, however, found system assemblers, but this was mainly because while working on this I realized that I am actually not ready yet to jump directly into production. This is mainly because my latest version of the prototype still uses an emulator for eye movement detection, not an active circuit. This thought made me a bit reluctant to take the risk and move directly into production, so I decided to go through another prototyping step, in which I build a system that includes the active circuits for eye movement detection. This circuit worked before without the infrared code learner part, but I wanted to see it working with all the rest of the components before moving into production.
So I started to design this new prototype and I chose to use the Schmartboard with an additional PCB that I needed to design. The whole prototype will be small enough to be placed on an elastic headband with electrodes touching the forehead.
For bare PCB manufacturing I have chosen the ExpressPCB provider. I found this company extremely convenient and easy to work with; in fact I was very impressed by how easy is to get PCBs designed and submitted for fabrication. Here is a screenshot of the ExpressPCB website.
Notice the $51 for 3 PCBs advertisement at the bottom left corner; this is what I decided to go for. So I downloaded the free tools and started the design. The problem I was afraid of was building custom pads for components that are not in the library. I always get stressed when I need to do this since there are so many chances of making mistakes. However, I found it easy to create pads for custom components directly into the layout view. The only thing I needed was to place any component (preferably one close to the custom component) and then click on “Component” and select “Ungroup PCB component”. Here is a screenshot:
Then I just need to edit the location of pads, their sizes, number, and pin assignment. When done I would re-group the pads into a custom component. This process made my work so easy.
To send the layout design for fabrication is even simpler. When I’m done with the layout I would just click on the “Layout” tab and select “Order boards through the Internet” and the designed files are then streamed to the manufacturing company.
Here is a screenshot:
So this was easy, but then I bumped into a strange problem with the Cypress PSoC Creator.
This is what happened: I just thought that I should try to compile/build the PSoC5LP project with all the pin changes to make sure there is no pin assignment problem before manufacturing this PCB. So I saved the changes and click on “Build” and to my surprise I got this unexpected error:
So this error was telling me that the Schmartboard PSoC5LP does not have four operational amplifiers that I needed in my design. The analog resources panel was also showing two opamps not four, as you can see in the screenshot below:
I was so surprised to see this error because in one of my previous prototypes (that I actually talked about in this blog post) I used four operational amplifiers and didn’t get any compiling error. Additionally, the circuit functioned very well with all four operational amplifiers.
So I was a bit shocked to see this error. Next I checked the component properties in Cypress PSoC Creator, and yes, it was showing only two operation amplifiers, as you can see in this screenshot:
I didn’t give up and next I went on the Cypress website and I downloaded the datasheet, which to my satisfaction was showing four operational amplifiers, as you can see below:
So YES, the datasheet shows four operational amplifiers, but how can I use them if the PSoC Creator does not give me access to all four? I don’t have an answer to this question, and I would appreciate if anyone from Cypress who reads this post can comment on this .
That’s it for now; I will come back with a new update as I get more work done.