Sunday, January 29, 2017

The problem with gettibg a 3D printer

When I first got my 3D printer, it was with the intention of making parts for my electronics projects. After I found an inexpensive 3D design package, and getting used to it, I was very pleased with what it could do.  Then I made a big mistake, I went to thingiverse.com. This is a huge repository of different 3D printed projects that have uploaded by3D Printer enthusiasts.  After browsing the projects, and a lot  "That's Neat" or "I should try printing that", I realized that I was hooked and now have another hobby.

My printer worked well for what I had wanted it for.  But since it used propriety software I was not able to change the settings to what I would require for some of the things I downloaded from Thingiverse.  While on one of a 3D printing Blogs I was following, I saw mention of a very small inexpensive printer by Monoprice.  
The Monoprice select mini, is a very small printer, but uses most open source slicers such as  "Cura" or "Slic3r".  It comes fully assembled and with a recent price reduction is less tan $200 including shipping.  That day I received an e-mail with a coupon that would bring the price down to around $185, so I ordered one.  It arrived in 3 days, and I quickly unpacked it.   The  machine is almost all metal, and appears to be very solid.  It came with a sample of filament that is too small to do much of anything, you will have to purchase a full spool to do anything useful. 
Using some filament from my other printer, I printed the sample print that came on the micro-SD card along with a couple different software packages.  The print turned out to be very high quality, much better than I had expected from such an inexpensive printer.  Also the printer is very quiet compared to some others I have seen.
Searching the Web I found a series of beginners guide to the printer and some help on initial setup of "Cura" for the machine.  Also found several useful items to print to make the printer a little nicer. 

 I printed up a filament guide and a couple other simple things to use with it.  This printer has a heated bed, so I could use a "PEI" plastic film to cover the print area.  This gives better adhesion to the print surface, and makes it easier to take finished parts off the bed than the blue printers tape that is usually used.
Printing 5  CW paddles at a time
Since I had full control of all the settings, I could use some of the different filaments that I could not use with the first printer. I could also change layer and print options to make some of the items I had designed stronger.  So far the only drawback to the printer I have found is its print volume.  It is only 120mm x 120mm x 120mm, but most thing I want to print will fit in this area.  This might mean that a print job that made 8 pieces at a time, I had to re do and could only print 5 at a time.  

I found a fairly active Facebook Group that covers this printer, and have been finding some useful information on possible modifications I will probably make in the near future.  All in all after less than  a week I am very happy with the little printer.  If someone wants to try 3D printing this would be a inexpensive option to try.
DARN now I have to find time for the electronics projects that are stacking up.

Tuesday, January 24, 2017

Back to working n the Spectrum Analyzer UPDATE 2/4/17

Now that the BITX is nearly finished, I decided to get back to the Spectrum Analyzer project.  I had did some work on the display and controller using a Arduino Mega and a  3.2" , 320 x 480 display.  It worked well, but was quite large, and the display covered most of the pins on the Mega.  I found a little smaller  2.8" .320 x 240 display that uses a SPI interface instead of a parallel interface.  I wired this up with a Teensy LC micro-controller and started writing some graphics routines.
I decided to keep the waveform display as 300 x 200 to give room for text and cursor values.  The 300 pixel width will work well to give overlapping display ranges in a 1,3,10,30 format.Since the overall range will be around 100 db, using 200 vertical pixels will make it easy to display wave-forms to a .5 dB resolution.
Because I want to have various sweep widths available, I will store the acquired data in a large integer array of 900 elements.  Using this format I can allocate data as one large sweep, or several smaller ones.  Then by designating the starting point in the array and number of points per sweep, I can store multiple sweeps in the same array.  The wave-form drawing routines will work the same way, specify starting point in the array and number of points to display.
 I will be using the same basic data format for storing the acquired data as in the SNA Jr.   The AD8307 log detector has around a 90 dB. dynamic range, and I want to have a 0.1 dB resolution.  I store the data as the dB. value times 10, so all the display routines can work on integer values.  Since I want to have several switched  10 dB attenuators in the system, this will make it very easy to correct the data values.  Just add or subtract 100 to the value to adjust up or down 10 dB. as attenuators are switched in or out.


 To test out the drawing routines, I initialized the array with a triangle wave with values equivalent to 0 to -100 dB.
Then in a loop I display several wave-forms based on that data. These wave-forms start at different points in the array, and display different sweep widths. I am very happy with the display speed I get using the 48MHz. 'Teensy LC', compared to what I had with the Nano in the SNA Jr.  Next to work on the basic controls and menu system.

UPDATE 2/4/17

Did a little work on  the waveform drawing routines to limit to waveforms to the 200 x 300 pixel drawing area.  I plan on using a cheap joystick for the input device instead of a rotary encoder.  Re-wrote a joystick routine I had been working on.  It reads the joystick pots and switch, then sets a flag if a change has occurred. 
It also sets some global variables with the values of these changes,
I use + or - 1 for horizontal and vertical movement depending on direction.  Also set values for either a short or long press of the push button.  I found this to give much faster and easier control than I had with a rotary encoder.
I had been using a 'Teensy'instead of the Arduino Mega that I had started with. I recently bought several cheap stm32 boards I purchased on eBay.  I wanted to see how this ~$3 board compared to a $13 'Teensy'. Speed at 72MHz. is more than adequate for my needs.  It has 8K of SRAM and 65K Flash memory, also enough for my needs.  I pulled out the 'Teensy' and wired in the stm32 board ( usually called the 'blue pill' on the stm32 blogs).  It is just a little bit larger than the Teensy, but brings out more I/O pins.  As they come, they do not have a Arduino compatible boot loader installed.  Programing must be done through a serial converter or a STlink programmer, about $3.  I used the STlink method, and found it very easy and fast.  I changed the Adafruit graphics driver to one modified for the STM processor.  Everything worked as well or better than with the 'Teensy'.  I wrote a little display test routine to scroll through the initialized data buffer.  Scrolling was very smooth with no flicker or hesitation.  By changing the increment I used to step through the data, I could change the rate of scrolling.

All in all I am very pleased with the results, and looks like I will be using the 'blue pill' instead of the 'Teensy' 

A picture of the bread-board using the 'blue pill' with the display running. The stm-32 'blue pill' is just a little bit bigger than the Nano  on the other side of the bread-board.    For about the same price and much more powerful, this might be my choice for any new projects.