Thursday, August 13, 2015

Sun Computer

Click HERE for pics
1. Teensy 3.1
2. Solar Sensing device, SolarMEMS, ISSD60
3. GPS, Adafruit Ultimate GPS Breakout, MTK333
4. LCD, 20x4
5. SD Card
6. Potentiometer

1. Teensys are great. They don’t have the USB data pins “broken out” so i had to make a little extension out of the main port so i could have a durable USB-B port on the outside of the box.

2. The Solar Sensor itself was trouble. It says it uses the Modbus standard. NOPE. First the differential A and B lines were swapped AND labeled + and -. The sensor data registers began at 1 instead of 40001 (at least i got an error response). The first bits of the response were always corrupted, but I knew is was static data about the model number so i modified the modbus arduino library to return the correct bytes. phew!

3. I used the TinyGPS library for easily decoding NEMA messages.
ARDUINO GPS WARING. NEMA messages are often more than 64 characters long. Most Arduinos and in my case, Teensys, have a Serial buffer only 64 chars long and need to be configured to be longer. On a Teensy, the Serial core files need to be modified.

Originally the box Is supposed to mounted on the hood of a car, possibly with a suction cup. The box is water resistant in case it rains.

Originally The box was to have internet connectivity and serve its data to a MySQL server. I worked with both WIFI and Ethernet modules but ran into issues with both.

I tried to use a stock ESP8266. After a week of work, I determined the AT commands were too buggy to be reliable. For example doing a AT? type read would change some seemingly unrelated setting. Other people confirmed to have these types of problems, good for a quick project but the ESP8266 needs better firmware, updates may be out by now and more custom firmware exist everyday.

I tried to use my Ethernet and had luck! it was reliable to any type of data stream interruption. however my particular Arduino Ethernet shield knockoff must of had its reset pin zapped! because neither high or low pulses reset the device, only touching the reset pin with my finger made it reset. :)

The protocol called Telnet is the standard for shuttling ascii over internet, since 1973.

The box is powered externally through the USB port. I find this is the most compatible method for any situation. A wall charger, PC USB port, Car charger or USB backup battery can all be used to power the device.

There is a TERRIBLE bug i cannot track down, it only happens when other people are looking at it! The LCD will become completely corrupted. it seems to happen more often in a car where there is a lot of vibration. The only way to fix it is to reset the box. In professional product design for anything that will be in a vibration environment, vibration tests are done using a machine like this.

4. The Fact about LCDs: When displaying things on standard character LCD, the screen needs to be cleared between every update to erase extra chars if a displayed number shrinks in number of chars. However clearing and redrawing a 20x4 screen can take long enough that it flashes annoyingly. The easiest remedy is to increase the data rate. A direct hook up instead of a I2C backpack can increase transfer rate and reduce the flicker. Somebody needs to write a library to manage the screen to avoid having to clear and redraw the whole thing, I can't be bothered to do so though, i'll just will use an OLED screen next time. ¯\_(ツ)_/¯

5. For a microSD adapter slot, you can solder directly to a generic microSD->SD adapter.

ARDUINO SD LIBRARY WARNING. A frustrating “bug” i ran into with the default Arduino library is that it only accepts TEN character filenames. An example is “data.txt” which is 8 characters! I recommend using a different library. I don’t think you need a file name extension as long as you open it with a text editor, example “datasheet” will make a file with no extension which is ok.

6. The Potentiometer changes screens. The code includes historesis to prevent jittering between screens.

This device has proven useful in getting quick measurements of The Phenoix's performance before we began tearing it down and refurbishing it. Most prominently doing coast-down tests with the GPS and testing the Array output power. Measuring 964 W/m^2 one day gives us 760 W from the array, we can extrapolate the max output power if the day was 1050 W/m^2, 828W max from the array

Monday, August 10, 2015

Phoenix Solar Racing

Phoenix Solar Racing Website - Note: I may or may-not endorse anything our site says :)

---->>>  CLICK  HERE  FOR  PICTURES  <<<----

This post is just a few words about my current job and life. Without this post, the future projects I post won’t make much sense. :)  My first semester At Oregon State University, I joined to the OSU Solar Vehicle Team. The team's solar car was “out of town” at the Abu Dhabi Solar Challenge . The next semester I tried to become more involved. When the car returned, I came to realize what a monumentally challenging and exciting team project solar car racing was! I took on any responsibility they would give me and began learning everything I could about solar racing.

I built a little Solar Sensor for the team. It was for detecting solar power(W/m^2) and XY sun angle, ahead of the solar car while it was on the road.  The box had an GPS to couple the solar measurements with position data. The solar sensor module itself was donated to the team as apart of Solar Mems sponsorship of the team. It was a huge pain to get working as it used RS-485, and did not follow the RS-485 standards very well. I really don’t recommend it unless you get it for free like we did. :(

Midway through the project, the Electrical Lead I was making it for stepped down. I offered to lead the electrical team and I was elected!

At the time, the returning car, “The Phoenix” was going to be put on a shelf, and an all new Vehicle built. Designs were for the body were finished and tested but ultimately the ending school year and lack of engineers on the team led the New Vehicle project to fall too far behind schedule.

Our deadline is the American Solar Challenge 2016 in July of that year and instead we decided to refurbish the ageing “Phoenix” vehicle. I am designing an all new electrical system for this Phoenix 2.0. It is my hope that this electrical system will also be used in any future vehicle the team makes. I am making sure there is plenty of documentation, flexibility and foresight to do so.

Some things Solar Racing dwells in:
  1. High Power Density Batteries
  2. Super High efficiency motors and controllers
  3. High efficiency Solar Cells and Maximum power point trackers
  4. Sensors for energy statistics and Computer number crunching
  5. Lightweight designs with carbon fiber, Aluminium and Titanium.
  6. Aerodynamics
I’ll make a post about our Phoenix 2.0 “Spec Sheet”

Some other things that have happened:
The Oregon State University Solar Vehicle Team was mysteriously let go by the Oregon State University: College Of Engineering. Our team is now called “Phoenix Solar Racing”. We lost our workshop space, ~10 grand annual sponsorship, legal support, Insurance support, and the nonprofit status that allows sponsors of our team to receive Tax Deductibility on their donations.

The new workshop is now the two car garage at the house I am living at. :)

The Mechanical Lead of our team dragged his feet for months and nobody objected when i took over as Mechanical lead. Now I share Mechanical Lead responsibilities with another teammate.

That's my full time Job, I get payed in the chance to do crazy mad hax with a team of crazy mad people!

Sunday, March 15, 2015

Yusynth VCO - The Companion Text

I made a guide of important tips to accompany The Yusnth VCO guide. If you are building this analog synthesizer module, and need help trouble shooting or just want to know more... You can download the PDF from Google drive.

Good Luck!

    Monday, March 2, 2015

    Yusynth VCO

    Click image for more photos   
    The most important modules in an Analog Modular Synthesizer are its oscillators. Without an oscillator, there would be no sound to transform and subtract from, (hence subtractive synthesis). Of coarse you could use another source of sound like a guitar or music or a human voice, but these sources have the disadvantage of not being able to be precisely controlled into constant tones and notes.

    Naturally an oscillator is the first module you would want to build. Many DIYAMS websites offer their versions of a VCO. Vee-cee-oh stands for Voltage Controlled Oscillator, meaning the pitch and other functions of the oscillator can be controlled by a changing voltage from an external source. CGS synthMusic From Outer SpaceThomas Henry - Birth of a synth, and Yusynth are the best producers of DIYMAS instructions and all offer one or more VCO. I have chosen Yusynths VCO for many reasons, but it might not be the one for you. The Yusynth VCO has many features, an all Op-amp construction, a single sided PCB layout, and Mr Yusynth has a disposition to monetary gain.

    Panel Design:
    Originally I bough a pack of 40 mono input jacks and plugs for the front panels before I remembered a better option. The Tinsizer, in the interest of compactness, uses 0.1 inch, double row headers in concert with solid core wires to provide patching. This is the plugging type I chose for my synth but I incorporated ground connections and shielded cables. The bottom row of the double row header are all grounds and the cables are two pronged, but for shorter patches I can just use bits of wire. I put a lot of thought into how these jacks function because of course it has to be the same on all the modules.

    The three lowest knobs are attenuators which turn down the volume of incoming signals and only do anything if an input signal is fed through them, otherwise they sit dormant. I only have attenuators on my VCO's because the were the first modules I built. All subsequent models will have direct inputs, and attenuation will be patched in using external attenuators.

    Personal electronic Mods:
        LFO mod:
    One of the reasons I chose this VCO was based on my theory that it would be able to achieve very low frequency's without much modification. I was able in the end to implement a switch that changed the VCO from a 4Hz - 12.6kHz audio range to a 0.047Hz(21s) - 13.3Hz LFO range (with external voltage input). These ranges are close to what I want and sound grate, it takes a lot of fiddling around with component values. I will go into copious detail in my next post about the circuit.

       Possible future mods:
    There are a number of small problems that I may make a fuss about in the future. frequency ranges, waveform purity ect, I have a compulsion to make things perfect but that is becoming less important and rewarding then building new moduals. However would like to implement some new wave form outputs. first would be a Ramp wave, the inverse of the saw-tooth wave would just take one opamp to make and would be very useful in LFO mode.

    A serious mod I want to make is a Triangle/Saw Skew output and control. One of the wave forms of the Minimoog is a combination of its triangle and saw and helps to give its signature sound.  I may also attempt to make the mix between saw and triangle, voltage controlled, a unique feature I have not seen exactly on other VCO's out there.
    Minimoog Tri/Saw, the missing waveform from my VCO

    Waveform info graphic of the Yusynth VCO

    Next time I will go into detail about building, troubleshooting and moding this module as sort of a companion text to the main instructions. see ya!

    Tuesday, February 10, 2015

    Mini Synth

    I have begun my most ambitions project yet, to build a Modular Analog Synthesizer, It has been a dream of mine to build, design and own a Analog synthesizer ever since I watched a group of Youtubes from a user I unfortunately cannot remember the name of. He began his videos by walking down the stairs into his basement saying "Hello boys and girls!" with a cigar between his lips. It was sometime in 2009 when I watched these videos and I think his username had "dolphin" in it. Dang I have searched high and low.

    Anyway the time has come in my life to begin building this fantastically complex electronic machine. I began back in October 2014 and will be playing a lot of catch up with these posts and videos. It is at a time when my knowledge is at an sufficient level to actually be able and build it, while also learning a whole lot while doing so.

    The Synth DIY community is small but totally hardcore. A french scientist username:YuSynth has an extensive library of do it yourself instructions for all the basic electronic synthesizer modules. Each module page has schematics, single-side PCB images, tuning notes, wiring guides, panel graphics, almost everything you need to build your own modules. However, having lots of electronics trouble shooting experience is actually very necessary due to the complexity of these analog modules.

    Although Yusynth has designed the modules, but its up to the DIYer to choose the modules they build, it makes a big difference in how the overall synth operates and sounds. The physical designs of the control surfaces I design myself, along with any circuit mods.

    The inspiration for my synth.
    1. Minimoog
      1.  first modules will be built will mimic the futures of the Minimoog model D, a famous Moog synthesizer. The features Minimoog  are:
        1. 3 VCO's with Tri,Tr-Saw,Saw,Ramp,and Pulse, can be tuned to a very low pitch
        2. A Noise Generator with Pink and White noise
        3. A Mixer
        4. A Minimoog Filter (The soul of a Minimoog)
        5. 2 ADSR's, one for the Filter and another for the VCA
        6. A VCA
        7. Glide
        8. Another feature similar to the Minimoog will be the sloped control surface, which is very natural to operate.
        9. Wood
    2.  non-Minimoog
      1. This is no faithful recreation of a Minimoog, but rather my synth just is coppying its tonal concept. There are many types of synthesizers, from 555 timers to software synths, but the Minimoog concept stands on its own. That being said there are additional things I would like:
        1. PATCHability, The Minimoog has an almost all built in, switch based patching and is very limited. This makes patching as easy as a flick of a switch which is great when your jamming out. However I would rather have an endless possibility of stupid noises.
        2. NO KEYBOARD. no pitch bend and and mod wheel. I might build a Jammer Keyboard but the jurys still out on how notes will be played.
        3. NO LIGHTS, no screens, the only indications are the positions of knobs and switches. it helps bring the daemons out.
        4. And finally BE AS ANALOG AS IS REASONABLY POSSIBLE. Analog lets stranger things happen. A digital synth can make the same wave forms of an analog synth but is immune to the sea of imperfections. It is also my desire to learn analog electronics and I can't do that if there isn't any. The module I am designing is very digital but only because it is much more practical to be and I'm working hard to make it sound as analog as possible.

    An artiststic rendition of my future synth in Google Sketchup

    This is the final drawing of my synth in Sketchup, Without all the wizbangs of course, I will talk about it more when the time comes. Next Episode is on my first DIY Yusynth Analog Modular Synthasizer Modual... see ya

    Saturday, September 27, 2014


    Click image or more image^
    Code HERE
    User Manual HERE

    I have just moved to my into my new garage home here in Corvallis, Oregon, where I plan to attend Oregon State University for the next few years as an electrical engineering student. Before I left California, I spent two months of my summer hard at work on three projects. Two of them turned out wonderfully, another did not, however this is one that did.

    After much deliberation, I have finished my clock. It has taken about 6 months, of what ever free-time of my free-time I have had, to design and build the CLACK into a permanent and complete version. The final features are as follows. Year to Centisecond time displayed on Sixteen, 1970's led numeric indicators, copper and wood case, four alarms, time settable, Real Time Clock with ±4ppm accuracy, and an alarm speaker that also makes a faint ticking noise every second.

    I built this clock very much from scratch. Somethings I admit could and should have been done better if I had acquired the proper tools. Its two circuit boards were made using strip board, solder jumpers and tiny wires. Only a few weeks after I began building the clock on strip board did I figure out how to cut out PCB's on my CNC machine at work. Using strip board for something this small and space sensitive was ultimately not the way to go but at the time it was the only way I had. I have had probably twenty different shorts, incorrect wiring and complete section do-overs to make things fit.

    The "Operating System" as I came to call it, the program that the clock was loaded with, ended up being about 500 lines long, and the most obese program I have ever written. Not many library's could be used to save time. The program is fairly well commented (from my perspective, probably not so much a first time reader) and could be helpful to you in many areas of Arduino clock programming. Firstly, how to control and poll the Real Time Clock, DS3231, using a DS1307RTC library. Using this DS1307 libary for the DS3231 has no compatability issues and is my favorite libary out of the three I found. I like its method of storing time in its own updated "public" variables like "tm.year" every second so that I can retrieve it with my code simply by saying myYear = tm.year. Also my button reading approach is a helpful trick. My Shift Registrar display usage, specifically how to use two in series. Try to ignore the "modes" and "cursor place" programming implementations, they are convoluted and not worth wrapping your head around, but they work for this application.

    I came up with (probably rediscovered) a nifty way to "Debounce" the input buttons on the back by implementing a timer to check how long a button was held down. Piggybacking off the centisecond timer that is already running, each button was checked for a depressed state one hundred times a second . If after 5 centiseconds the input has not gone LOW even once, the buttons action would be triggered. If the button dose go LOW in that time, the buttons personal counter will be reset to zero. This feature can be piggybacked as well because it not only can be used for debounce but also as a detector for if the button is being held. For example the enter button needs to be head for 500 centiseconds to go into TimeSet mode.

    The physical design of the clock is a copper layer cake wrapped in an icing of wood. The layers from front to back are as fallows.  First a shinny a copper plate with windows cut out helps define the separation of the groups of numeric indicators. Then the numeric indicators sit on-top another copper plate with two slots for the pins to feed through. Then, first single sided strip-board PCB. That PCB plugs into another PCB with 16 connections for "indicator select", 5 connections for the {1,2,4,8,DP} and 2 connections for display power supply. After which there is a plastic insulator for the second PCB so that it dose not short on the copper back plate that has five square holes for the buttons to poke out. All of these layers are head together with four bolts (not pictured) and alot of thin nuts to space everything out to a total witch of 0.7 inches.

    I was going to just leave the clock like that, but considering all the finicky wires that could pop off from flexing or something, I had to cover the sides. I planed to give this clock to my father as a going away present, so it had to be somewhat durable, I wouldn't be able to fix a solder joint from five hundred miles away so it had to be robust enough NOT to be garenteed to break, like most of my DIY projects. So I relentlessly built a wooden case for it. I made a slotted sleve it slid into with a cap on the end with a hidden bolt. I don't have the tools for tiny wood workmanship, but I made do with my CNC used like a milling machine and a file.

    Well that's that, as always I hope something from this project will be of some use to you. Tune in next week for an artical about my experience with some reeeal electronics. ;)

    Wednesday, May 21, 2014

    Desktop CNC

    I currently work at a place called Arrgh!! manufacturing. A local electronics shop that makes specialty devices for businesses, mostly a hydrogen gas detector and a few devices for maintaining lead acid battery's. These days, I help with the engineering side of things, making and fixing machines to facilitate the mass production of the products we sell.

    My recent task has been the setup and operate a desktop CNC machine for making small quantity's of prototype parts. These small CNCs have become quite popular with the DIYers. They are very high precision and have a small but very effective bed size. They go for about 600 bucks, but they are not plug and play, easy to use machines. The CNC came into the shop, a ragtag lot of components, each part made by a different no-name Chinese company with only a photo copy of a picture describing what plugged into what.

    The package came with:
    1.  A 3 axis machine with drill motor attached 
      1. Drill Motor, 800W, 400Hz/12000RPM
      2. A few engraving bits, end-mill, tools
      3. clamps (extremely under-engineered)
    2. Stepper motor controller.
      1. The PC parallel port communicates direction/step to the controller which then powers the stepper motors
    3. 3 phase motor driver. 400Hz. manually controlled.
    4. Pump & tubes, NO radiator
      1. The motor is designed to be water cooled, but it is necessary
      2. My manager wanted me to build a water cooling system from a PC cooler before turning it on to test how hot it got under load. As it turns out, the water cooling is not needed, The large aluminum clamps holding the motor to the large aluminum CNC table seams to be sufficient to cool the motor, even under a heavy work load.
    A lot of software is needed to operate the CNC. Cad software, Gcode generation software and then Gcode executing software. Gcode is the world standard CNC script. It contains a list of simple instructions in text format and can contain thousands of lines. I use Aspire to generate my Gcode, and I also use it to draw 2D vectors. Real CAD software would be required for any precision 3D work. The CNC itself is controlled by a PC program called MACH3. mach3 interprets Gcode instructions in real time and pulses out direction/step signals through the parallel port. It is up to the settings in MACH3 to apply the amount of stepper motor steps per inch. Without further adieu, here's my list of my biggest headaches, in order of occurrence:

    1. The Parallel port must be in a certain mode to work. In the BIOS, the parallel port must be ECP or EEP depending on your controller. proper addresses must be set in MACH3 too.
    2. Although the "manual" had the correct parallel port addresses in the screenshots, all the other information was incorrect. Most notably the Steps Per Inch numbers were way off. In order for mach3 to move the CNC to the correct location (say 6 inches), it must be configured to know that say, 4184 steps is equal to one inch. Even though most CNCs use 1.8 degree per step steppers, the design of the worm gear will determine the distance per revolution. On top of the all the reverse engineering involved to get the thing running right, I needed to set up the machine for inches, instead of millimeters.
    3. MACH 3 also has configurable speed and acceleration curves. The CNC can jam for no particular reason if the speed and acceleration are in correct amounts for what I call a "jamming resonation". Jamming resonation can occur when the stepper motor stepping happens at a frequency that the whole machine resonates to. The vibrating machine has the effect of kicking the stepper motor back wards enough that on the next step, the motor turns backwards, then forward again on the next step, back and forth and back and forth. The machine usually oscillates like this for 20 steps until it breaks out of its loop and continues on its way. Of course the problem is Mach3 thinks nothing has happened and the CNC loses track of its true position.
    4. For cutting metal like aluminum and copper, the rate in which you design your Gcode to "plunge" and "feed" greatly effects cutting performance. It usually has to be done off the cuff and it takes many attempts to achieve a good quality cut. Too fast and the cutting motor will screech to a halt while the CNC continues ramming into the piece. To slow and... well you get bored waiting. The speeds in between will give you different amounts of unwanted burrs left over that have to be cut off, ground off, and sanded off. There are standards for choosing feed rates based upon number of "flutes" (cutting edges per rev) on a bit and what type of metal is being cut. However the motor on this CNC can not provide enough power to cut at normal speeds and needs to go much slower then the recommended feed rate.
    While the Desktop CNC does "SEE EN SEE", getting good results takes a lot of practice. I can say it takes less skill then it would to operate a milling machine by hand. I can't recommend this CNC package unless you are willing to make IT your project rather than use it FOR your project. The next post about the CNC machine will surely be adventures into engraving copper clad PCB boards for prototype circuit boards. I have heard it's finicky business, but I hope it will prove invaluable to my work and my own projects. If you have any questions about this CNC, I am eager to answer them.
    Wuba-luba-dub-dub and a good day to you!