Tuesday, April 4, 2017

Peavey PV20 USB 20 Channel Mixing Console repair

Recently I needed to fix a Peavey PV20 USB 20 Channel Mixing Console.  The main volume sliders had worn out.  It took a while of searching but I found the needed parts.  They are Panasonic 10K ohm 60 mm slide potentiometers.

To get inside you have to remove the security screws and the screws that hold the power supply to the bottom cover.  Then you have to remove the knobs, nuts and screws to remove the main board.  There is one screw hidden under the reverb board.

The new sliders were a little shorter than the old ones so I had to mount them above the board as can be seen in the following picture:

Then there was another problem.  The new controls did not work at all!  They are stereo controls and the old ones were mono controls.  So there needs to be two jumpers installed on the bottom of the mixer to make it work.  Those jumpers are shown in the following drawing:

Here is a picture of the jumpers on the back side of the main board.

Tuesday, March 28, 2017

Arduino Powered WS2812 LED Strips turned into 8x75 Array

I found out that there is a 512 LED limit on running continuous LED arrays from one output of the Arduino.  Then I discovered an alternate setup that can run 1200 addressable LED's from an Arduino.  The alternate method uses the parallel output mode to run 8 strings at the same time.  So far I am just testing the setup to see if it works.

This picture shows the  wiring, it is much easier than any other method of running the addressable LED strings.  Since I only have four strings of 150 LED's they are split in half to make 8 strings of 75 LED's each.

Here is my first test program running.  I changed the default array of patterns into some text.

I have improved the code to support longer strings:

It now has the ability to do 8 colors and use a character generator!

Here is the video on YouTube:

The sign now breaks down into sections that are each 40 inches long.  That is done with eight 3 pin plugs that are identical to what comes on the LED strips.

Here is the code so far:
// BOB Davis Enhanced Version for sending data to 8 Parallel WS2812 strings

// PORTD is Digital Pins 0-7 on the Uno change for other boards.
#define PIXEL_PORT  PORTD  // Port of the pin the pixels are connected to
#define PIXEL_DDR   DDRD   // Port of the pin the pixels are connected to

// These are the timing constraints taken mostly from the WS2812 datasheets
#define T0H  400    // Width of a 0 bit in ns
#define RES 6000    // Width of the low gap between bits to cause a frame to latch

// Here are some convience defines to generate actual CPU delays
#define NS_PER_SEC (1000000000L)  // Note that this has to be SIGNED
#define NS_TO_CYCLES(n) ( (n) / NS_PER_CYCLE )

// Actually send the next set of 8 WS2812B encoded bits to the 8 pins.
// We must to drop to assembler to ensure proper timing
static inline __attribute__ ((always_inline)) void sendBitX8( uint8_t bits ) {
    const uint8_t onBits = 0xff;    // to send all bits on
    const uint8_t offBits = 0x00;   // to send all bits off
    asm volatile (
      "out %[port], %[onBits] \n\t"   // 1st step - send T0H high
      ".rept %[T0HCycles]     \n\t"   // Execute NOPs to delay
        "nop                  \n\t"
      ".endr                  \n\t"
      "out %[port], %[bits]   \n\t"   // Set the output bits to their values
      ".rept %[T0HCycles]     \n\t"   // Execute NOPs to delay
        "nop                  \n\t"
      ".endr                  \n\t"
      "out %[port], %[offBits]\n\t"   // last step set all bits low
      [port]    "I" (_SFR_IO_ADDR(PIXEL_PORT)),
      [bits]    "d" (bits),
      [onBits]   "d" (onBits),
      [offBits]   "d" (offBits),
      [T0HCycles] "I" (NS_TO_CYCLES(T0H) - 2)   // 1-bit width less overhead

// Set default color for letters 1=red, 2=blue, 0=green
int color=0;

static inline void __attribute__ ((always_inline)) sendPixelRow( uint8_t row ) {
  // Send the bit 8 times down every row, each pixel is 8 bits each for R,G,B
  for (int c=0; c<3; c++) {
    for (int bit=0; bit<8; bit++){    
      if (color==c)sendBitX8( row );
      else sendBitX8( 0x00 );
byte cha[]={  // Can be hex or binary-easier to read
  0x80, 0x80, 0xff, 0x80, 0x80, 0x00, //T
  B11111111,  B10010001,  B10010001,  B10010001,  B10010001,  B00000000, //E
  B01100001,  B10010001,  B10010001,  B10010001,  B10001110,  B00000000, //S
  B10000000,  B10000000,  B11111111,  B10000000,  B10000000,  B00000000, //T
  B00000000,  B10000001,  B11111111,  B10000001,  B00000000,  B00000000, //I
  B11111111,  B01100000,  B00011000,  B00000110,  B11111111,  B00000000, //N
  B01111110,  B10000001,  B10000001,  B10000101,  B01100110,  B00000000, //G
  B00000000,  B01000001,  B11111111,  B00000001,  B00000000,  B00000000, //1
  B01000001,  B10000001,  B10000111,  B10011001,  B01100001,  B00000000, //2
  B10000001,  B10010001,  B10010001,  B10010001,  B01101110,  B00000000, //3
  B00011000,  B00101000,  B01001000,  B10001000,  B11111111,  B00000000, //4
  B11110001,  B10010001,  B10010001,  B10010001,  B10001110,  B00000000, //5

void setup() {
  PIXEL_DDR = 0xff;    // Set all row pins to output

void loop() {
  cli();           // No time for interruptions!
  for (int l=0; l<72; l++){  // 66 is number of bytes to send
  delay(10);      // Wait more than RESET timeout to latch into the LEDs

Monday, March 27, 2017

Changed my Car to a Chevrolet HHR

My Cobalt was hit by a deer and sustained over $1000 in damages.  For a 2007 with 165,000 miles that is essentially totaling the car.  SO I traded it in on a 2010 HHR that needs some minor repairs.
The hood was black (it had been in an accident) so I wire brushed it and put some white primer on it until I can afford to have it professionally painted.

One of the issues was strange noises coming from someplace in the back when going around corners.  I had already dug all the way down and removed the spare looking for the issue.  Maybe there was something in the gas tank?  The second time I took out the spare I looked behind the battery area and found a golf ball.  Before long I had pulled 6 golf balls out of that area.
 I decided to replace the air filter and discovered that changing the air filter on the HHR is a nightmare. You have to unplug the MAF sensor, and disconnect three hoses.  Then you can remove the air filter assembly and turn it over to remove 7 Torx screws.  Forget that.  I found this ad for a replacement for $75 on eBay.
The kit arrived in less than a week in a relatively small box.  It was only about one foot square in size.  But everything was there.

The changeover takes about 1 hour to complete.  Here is a before picture:
Here is an after picture:
I could not figure out how to "bend" the included metal strap to hold the air filter in place so I used some wire ties instead.  The oil fill spout extension can be removed.  The cap will fit directly on the engine.  The spark plugs are next to be replaced now that I can actually find them....

The HHR did not come with a back seat.  It had the metal frame that was designed for use with storage bins.  The storage bins list for $700 from Chevy!  So I made my own storage area using some plywood.

I will need to make some wood trim to go around the outside edge.  Here is the view from the back side.

Thursday, March 2, 2017

Arduino Powered F450 Quadcopter/Drone

My next project and book will be on Arduino powered Quadcopters.  So far all I have assembled is the frame.  This is a DJI F450 Quadcopter with A2212 motors.

Soldering the connectors on the motors is not easy!  You have to use an alligator clip to hold the connector in place.  Find the hole in the side of the connector and use it to get the soldering iron into the center.  This requires a fine soldering iron tip.  Fill the center with solder. Stick the wire into the hot solder.  I also bent the wire over so it fits tightly first of all.  I should have stripped some more insulation off first.
I have mounted the Arduino on the drone and added a sensor shield to connect to the Receiver and the ESC's.  Next to add the 6 axis accelerometer and gyroscope MPU-6050 module.  So far I can control it and even tested out the motors.  

This is the video of its first very short flight....

A successful flight - well almost.

Wednesday, February 8, 2017

Arduino Powered WS2812 LED Strips turned into 15x16 Array

I purchased two 5 meter (almost 200 inches) WS2812 addressable LED array strips.  Then I seperated them into ten strips of 15 LED each about 20 inches long.  Why 15 LED's? Because that is where they are soldered together at the factory.  Then thew were stuck on "yard sign" material for a backing.  The result is a 20 inch by 20 inch 15 by 16 LED array.

This picture shows where they are soldered together at the factory.

This picture shows the 5 volt 12 amp power supply.  The array takes bout 3 amps to power it.

Here is the video demonstrating the array running the Adafruit demo.

This video has 4 LED strips reorganized as 600 LED's working.

Friday, February 3, 2017

CJMCU 8x8 WS2812 Addressable LED Array with an Arduino

Someone asked me why I did not include addressable LED arrays in mt book "Arduino LED Projects".  Well basically back them I did not know about addressable LED's.  SO recently a friend wanted some LED effects at his wedding reception so I started looking into addressable LED's.  The first thing I bought was a 8x8 LED array.  I connected it up and loaded Adafruit's NeoPixel software into the Arduino and got NOTHING!

Then someplace I read that the Data in and Data out labels are swapped.  So, to get it to work connect the D out pin to the Arduino D6 pin.  It came to LIFE!  Then after about a minute smoke rose out of the Arduino.  The voltage regulator had gone up in smoke.  Find an 5 volt 1-2 amp AC adapter and use that to power the LED array.

Here is a picture of it running the Adafruit demo.

This is the back view showing how to connect it to the Arduino and to power.

This is the video of the demo.

Monday, January 16, 2017

DIY 3D Printer Updated to a PRUSA I3 Compatible Version

I am working upgrading  my 3D printer to a PRUSA I3 Compatible Version.  I will also be updating my book "Inexpensive 3D Printer Projects" once the upgrade is completed and working.  Hopefully there will also be a all metal version of the PRUSA i3 3D printer in that book as well.

One of the issues so far is that the PRUSA i3 uses a 5 mm threaded rods for its lead-screws.  I wish that there was a 8 mm compatible version available.  I have found a alternate X axis end design that I can print out that does support 8 mm lead-screws.  Here is a link to the upgrade: http://www.thingiverse.com/thing:1140733. The other option is to purchase the all metal X axis for the Geeetech i3 printer.  I am also making a normal PRUSA i3 printer to verify that all of the parts are interchangeable with my design.

This is what the rebuilt 3D printer looks like so far:

Here is a progress report picture on rebuilding the 3D printer.

It now has the Y platform installed and the Arduino is in place as well.

This picture shows the wiring (mess).

Here is the results of the first test run.  The X axis belt skipped and caused it to print in the air after a few passes.

There were some more failures before I changed the extruder and fixed a wiring problem.

After a couple of calibrations it is now working.

This is what the finished elephant looks like.  My Z axis was off (3333 vs 4000) so it is shorter that it should have been.

To verify compatibility I am also building a PRUSA i3.  Here is the frame with the printed parts.

Then I switched to my home made metal parts.  I need to cut the Z axis shafts off so they are shorter.

I spray painted the frame with about 4 coats of gloss black paint.  It looks a lot better now.

I have added a Geeetech i3 all metal X axis to the Prusa i3 frame!  The secret is the home made motor mounts.
This is what the completed GeeeTech i3 all metal 3D printer on a PRUSA frame looks like.
This is the electronics for that 3D printer.

Tuesday, January 3, 2017

DIY Arduino GRBL CNC with a Laser!

I have added a laser to my CNC machine, here are some pictures.
This picture shows the addition of a relay board on the left to turn the laser on and off.

This is the laser at work.

Here is the results.

This is the video on YouTube.

This next video is of engraving an image with the laser.

Here is the latest results.

Here is a picture of my software setup.  The image is processed with 3dpBurner Image2Gcode.  Then Universal G code Sender sends it to the CNC.

Tuesday, December 13, 2016

Using the DIY CNC to try to cut a logo into plastic part2

I thought I would make another sign, this time it will be used in selling my books at various events that I attend.  I wrote my own CNC program to cut out the letters and the space allotted for the "I" was too wide.  Also while the CNC was cutting the plastic, the holder for the bottom of the Dremel fell out of the machine.  This allowed for play in the Y axis as can be seen in the top of the letter "I".

The wood base was cut with the CNC in "manual" mode.  Basically there are 8 holes spaced one inch apart.  The LED's are wired up in groups of two going one direction then two going in the other direction. This reduces the wiring to a minimum.  A 220 ohm resistor goes to a 9 volt battery for power.

Here is the video of the CNC machine running.

I have used F-engrave with a few changes to the settings to engrave "Arduino Books" into another piece of Plexiglas.

This is what the sign looked like when done with the room lights turned off.

Here it is with the lights on.

My books are available on eBay and amazon: https://www.amazon.com/Robert-J.-Davis

Monday, November 14, 2016

How to hide wires going to a wall mounted TV

My wife has wanted me to hide the wires going to the TV for some time now. This is what I started with, a TV with lots of wires going to it.

This is my secret weapon, electrical pass through boxes.  These and a hand held hole saw did the trick.

I ran into problems right from the start, electrical wires that were in the way.  They had to be moved to the right slightly.  They also made cutting the hole a bit tricky.

Then there was a second problem, there is a 2x4 going cross wise in the wall.  I cut it off on the right side and then cut off the nails.

Last was to hide the cable and internet cables behind the baseboard.  I cut a grove in the sheet rock and a grove in the baseboard.

Time to patch up the hole where I had cut through the cross wise 2x4.  A piece of thin plywood like luan works for the backing.

This is the almost finished product.  Now to repaint the wall....