Tuesday, April 17, 2018

Audio Centron RMA-1600 Audio Amplifier rebuild

I have been rebuilding aa Audio Centron power amplifier.  The TO-3 transistors were bad and it was cheaper to replace all of the "guts".  The power supply is positive and negative 80 volts.  So I searched eBay for a amplifier board that can handle that voltage.  This is what I found:

1PC NJW0281/NJW0302 450W+450W HIFI Stereo Amplifier Board Assembled AMP Board

Description :

This is completed board.You don't need solder it.
4 Pair MJW0281/MJW0203 for one channel.
so one board has 1 6pcs transistors.
Power supply: DC 45V to 85V
Power: 2X450W (-85V @ 4 Ohms)
PCB size: 259 * 73MM

However if I was to do it over I would use a PR-800 amplifier board.

Here are some picture of the amplifier rebuild.  We used an old heatsink and tapped the necessary holes in it.  The heatsink is upside down while we connect the wires to it.  The power and speaker posts fit the connector pins from an ATX power supply.






Here are some more pictures showing the progress.  We are now testing it at low levels.  The input jacks go through the front volume controls to the amplifier inputs.  The front panel is now powered via a 1K 10 Watt resistor.  The signal inputs to the front panel go through 33K resistors to the speaker outputs.


Friday, April 13, 2018

Air Hogs battle Tracker Hacked

I bought an Air Hogs "Battle Tracker" Nerf Missile launcher hoping to put on my Devastator tank.  It is obviously way too big for that!  However I still hope to interface it to an Arduino or Raspberry Pi and add the ability to track targets perhaps by Infrared.


The wired interface appears to be a voltage divider so each button returns a voltage.

Power and ground to the control panel is 3 volts (could be a low battery).  The normal return voltage on the two data lines is 1 volts.  
Pressing the "Fire" button changed PB1 to 2 volts.
Pressing "UP" and "Down" changes PB1 to 1.2 and 1.3 volts
Pressing "Right" and "Left" changes PB2 to 1.2 and 1.3 Volts.

Here is the control circuit board.  I am working on the schematic.

Here is the schematic diagram.  The resistors were measured in circuit so they are off a little bit.  The 32K resistors might be labeled "513" as in 51K.


Friday, March 30, 2018

Dream Cheeky USB Nerf Missile Launcher to Arduino with Bluetooth and Android

I recently purchased two defective Dream Cheeky USB Foam Missile Launchers.  I wanted to add one to my Devastator tank (See other blog posts).  So far I have rebuilt one of them.  The turret did not rotate and it did not fire correctly.  The other one only fires from one position and the turret does not move up and down.

Here is a picture of the finished project:


There are two USB missile launcher designs.  One has a rotating missile holder for four missiles.  The other design holds three missiles and fires them without rotating.

On the first USB launcher the rotation issue worked when I connected a battery to the motor so the issue was in the electronics.  The firing issue was related to some teeth missing form a gear.  I fixed that by re-positioning the gear.  Note that to dissemble the top assembly there are two screws on the left side, one is hidden behind some green tape and the other is only half hidden behind the tape.

Here is a picture of all of the guts opened up except for the top.

Here is the wiring color code.  Note that there are several wires having the same color as other wires.

4 Position USB Missile Launcher wiring color codes:

Top Part:
Fire motor; Red, Orange (Red is +)
Fire switch; Green, Green

Bottom Assembly:
Rotate motor; Yellow, Green
Rotate Switch; 2x Yellow, 2x Orange
Height Motor; White, Blue
Height switch; Black, Red, Brown

3 Position USB Missile Launcher wiring color codes:

Fire Motor; Red, Light Brown (Red is +)
Rotate Motor; Red, Yellow
Rotate Switch; White Green, White Purple
Height Motor; Red, Dark Brown

Here is the control circuit of the 3 position launcher.  The up/down motor is connected in the bottom left area without any glue on it.

BTW the problem with the height motor not working is that the driver transistors only deliver about 3.5 volts.  Use a 9 volt battery to run it up and down a few times and then reconnect it to the USB interface and it will work normally.

Next I will connect a motor controller and an Arduino to obtain working serial control of the launcher.  I used a L298 motor control for the turret and a TIP120 for the fire function.  The USB power was not sufficient for the fire motor so I used a 9V battery.  That was because of a problem with a broken gear and has been fixed.

Here is the first test video.  I need to get the right kind of missiles!

It is now attached to the Devastator tank, here is that video.

Here is a video of the tank with the three missile launcher attached.


Friday, March 9, 2018

Devastator Tank Mobile Robot Platform for Arduino or Raspberry Pi

I am building a "Devastator Tank Mobile Robot Platform" kit from dfrobot.  I bought it through robotshop_inc on eBay.  The hardware took only one hour to assemble.  The manual has lots of pictures to make assembling it easy.  Each type of screw has a bag with its part number on it.  The only tool I wish I had is the tiny wrench for the lock nuts.  You can use needle nose pliers but a wrench would be much easier to use.




Now for the electronics.  I don't have a schematic yet but here is what the wiring looks like so far.  I am using dual color LEDs for the headlights.  Three color LED's would be better as they can do white as well as colors like red for stop.

I am using a L298 motor controller.  To the left of the Arduino there is the power strip off a small breadboard to connect all of the power and grounds together.  Not visible in the back there is a two line LCD and in the front there is an ultrasonic distance detector.


Here is the first video of it running.

Here is a second video with headlights and servo.  Next to get a Nerf launcher on there.


Friday, March 2, 2018

Arduino UNO Running 12 WS2812 LED Strips with a BIGGER Font

I have modified my LED sign setup once again.  I now have an Arduino UNO Running 12 WS2812 LED Strips with a BIGGER Font.  The 12x8 font had to be typed in manually as I could not find one that suited me.  To get 12 lines running from a UNO I used both the "B" and "D" ports or D0 to D11 data pins.  The uppercase fonts only use 10X8 as the lower two rows are for lower case letters that extend below the line.

This is what the sign looks like in multi-color mode.

Here is the Video:


I can also do graphics on the LED sign.  This is a picture of the logo that I uploaded as a BMP to the sign for display.  I was looking for something with lots of color and with a black background.  White backgrounds do not work very well as the white light blinds you!  To display graphics I had to write a routine to rotate the bytes from horizontal to vertical orientation.  Then I added an offset to make it scroll up.  I should mention that this is running in 8 data line mode, the right side loops back to the next 8 rows on the left side to get up to 16 lines to display.


This is the video on YouTube.



Here are a couple of still shots of the sign displaying graphics.



Thursday, February 15, 2018

Interactive Arduino Uno Ethernet Shield Program

I have developed a Interactive Arduino UNO Ethernet Shield demo program.  It requires lots of memory.  It was a offshoot while I was developing a Ethernet based method of updating my LED signs. However the UNO suffers from a memory shortage just running this demo program!  This is what the screen looks like.  You cannot change D10-D13 because they are used by the Ethernet card.


Here is the video:

I have finally found an easy way to post code on blogger!  Thanks to "http://codeformatter.blogspot.com/" the code can be easily formatted.

 // Arduino Ethernet Interactive with table  
 // By bob Davis  
 // Based on code from Rui Santos  
  
 #include <Ethernet.h>  
 int led1 = 2;  
 int led2 = 3;  
 int led3 = 4;  
 int led4 = 5;  
 int led5 = 6;  
 int led6 = 7;  
 int din1 = 8;  
 int din2 = 9;  
 int din3 = 10;  
 int din4 = 11;  
 int din5 = 12;  
 int din6 = 13;  
 int data1 = 0;  
 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };  //physical mac address  
 byte ip[] = { 192, 168, 1, 21 };           // ip in network  
 EthernetServer server(80);               //server port     
 String readString;  
 void setup() {  
  // Open serial communications and wait for port to open:  
  pinMode(led1, OUTPUT);  
  pinMode(led2, OUTPUT);  
  pinMode(led3, OUTPUT);  
  pinMode(led4, OUTPUT);   
  pinMode(led5, OUTPUT);  
  pinMode(led6, OUTPUT);  
  pinMode(din1, INPUT);  
  pinMode(din2, INPUT);  
  // start the Ethernet connection and the server:  
  Ethernet.begin(mac, ip);  
  server.begin();  
 }  
 void loop() {  
  // Create a client connection  
  EthernetClient client = server.available();  
  if (client) {  
   while (client.connected()) {    
    if (client.available()) {  
     char c = client.read();  
     //read char by char HTTP request  
     if (readString.length() < 100) {  
      //store characters to string  
      readString += c;  
      } //if HTTP request has ended  
      if (c == '\n') {       
       client.println("HTTP/1.1 200 OK"); //send new page  
       client.println("Content-Type: text/html");  
       client.println("Refresh: 2"); // refresh every second   
       client.println();     
       client.println("<HTML><BODY>");  
       client.println("<style>table, th, td {padding: 3px; border: 1px solid black;</style>");  
       client.println("<table width=350><tr>");  
       client.println("<th colspan=6>Digital Outputs</th>");  
       client.println("</tr><tr>");  
       client.println("<th>D2</th><th>D3</th>");  
       client.println("<th>D4</th><th>D5</th>");  
       client.println("<th>D6</th><th>D7</th>");  
       client.println("</tr><tr>");  
       client.println("<td><a href=\"/?button1on\"\">Turn On</a></td>");  
       client.println("<td><a href=\"/?button2on\"\">Turn On</a></td>");  
       client.println("<td><a href=\"/?button3on\"\">Turn On</a></td>");  
       client.println("<td><a href=\"/?button4on\"\">Turn On</a></td>");  
       client.println("<td><a href=\"/?button5on\"\">Turn On</a></td>");  
       client.println("<td><a href=\"/?button6on\"\">Turn On</a></td>");  
       client.println("</tr><tr>");  
       client.println("<td><a href=\"/?button1off\"\">Turn Off</a></td>");    
       client.println("<td><a href=\"/?button2off\"\">Turn Off</a></td>");   
       client.println("<td><a href=\"/?button3off\"\">Turn Off</a></td>");    
       client.println("<td><a href=\"/?button4off\"\">Turn Off</a></td>");   
       client.println("<td><a href=\"/?button5off\"\">Turn Off</a></td>");   
       client.println("<td><a href=\"/?button6off\"\">Turn Off</a></td>");   
       client.println("</tr><tr>");  
       client.println("<th colspan=6>Digital Inputs</th>");  
       client.println("</tr><tr>");  
       client.println("<th>D8</th><th>D9</th>");  
       client.println("<th>D10</th><th>D11</th>");  
       client.println("<th>D12</th><th>D13</th>");  
       client.println("</tr><tr>");   
       client.println("<td align='center'>");  
       data1=digitalRead(din1);  
       client.println(data1);  
       client.println("</td>");    
       client.println("<td align='center'>");  
       data1=digitalRead(din2);  
       client.println(data1);  
       client.println("</td>");    
       client.println("</tr><tr>");  
       client.println("<th colspan=6>Analog Inputs</th>");  
       client.println("</tr><tr>");  
       client.println("<th>A0</th><th>A1</th>");  
       client.println("<th>A2</th><th>A3</th>");  
       client.println("<th>A4</th><th>A5</th>");  
       client.println("</tr><tr>");  
       for (int aChannel = 0; aChannel < 6; aChannel++) {  
        int sensorReading = analogRead(aChannel);  
        client.println(" <td align='center'> ");  
        client.println(sensorReading);  
        client.println("</td>");  
      }  
      client.println("</table></BODY></HTML>");  
       delay(1);  
       //stopping client  
       client.stop();  
       //controls the Arduino if you press the buttons  
       if (readString.indexOf("?button1on") >0){ digitalWrite(led1, HIGH); }  
       if (readString.indexOf("?button1off") >0){ digitalWrite(led1, LOW); }  
       if (readString.indexOf("?button2on") >0){ digitalWrite(led2, HIGH); }  
       if (readString.indexOf("?button2off") >0){ digitalWrite(led2, LOW); }  
       if (readString.indexOf("?button3on") >0){ digitalWrite(led3, HIGH); }  
       if (readString.indexOf("?button3off") >0){ digitalWrite(led3, LOW); }  
       if (readString.indexOf("?button4on") >0){ digitalWrite(led4, HIGH); }  
       if (readString.indexOf("?button4off") >0){ digitalWrite(led4, LOW); }  
       if (readString.indexOf("?button5on") >0){ digitalWrite(led5, HIGH); }  
       if (readString.indexOf("?button5off") >0){ digitalWrite(led5, LOW); }  
       if (readString.indexOf("?button6on") >0){ digitalWrite(led6, HIGH); }  
       if (readString.indexOf("?button6off") >0){ digitalWrite(led6, LOW); }  
       //clearing string for next read  
       readString="";   
      }  
     }  
   }  
 }  
 }  

Sunday, February 11, 2018

Chevy HHR Failure to Start or Start then Stall Problem

This fall my HHR started having issues with starting.  By Christmas time it no longer started.  At one point I spent over 30 minutes trying to start it.  When it started there was a multicolored puddle of gas under the tailpipe.  It always smelled of too much gas.  I changed the spark plugs and the old plugs were covered in black from too much gas.

The HHR would sometimes start, and if I pumped the gas it would eventually sustain.  Eventually I discovered that if I floored the gas pedal before starting it it would usually start.  Through research I discovered that flooring the gas pedal should shut off all gas to the motor!  Eventually the check engine light came on.  Here are the codes and what they meant.

The codes are:
P0300 Engine Misfire Detected
P0107 Manifold Absolute Pressure (MAP) Sensor
P0122/P0123/P0223 Throttle Position (TP) Sensor.
P0171 System too Lean

The auto store wanted over $250 in parts.  I bought the MAP sensor on eBay for $10 and the Throttle body form the 1490 motors (an auto salvage place) for $40.  The exact same codes came back on again.  I was getting really frustrated.  Then I got thinking, how could so many sensors be so wrong?  So I decided to replace the motor ground wire.  When I looked at the old wire one end seemed loose.  I puled on it and the wire came right out!  After close examination I determined that the wire was never crimped into the connector.


Here is the new crimped and soldered triple ground wire.  It runs from the right side of the motor to the right strut tower.


This is a close up of the bolt on the cam cover that the ground wire is connected to.


Now I just touch the key for a fraction of a second and the car starts right up!



Monday, January 29, 2018

Arduino WS2812 144 LED per Meter sign

I am building a third sign that has 144LED per meter or 1/4 inch LED spacing.  The first tests indicate lots of bad connections.  The issue is likely in the LED strips being shipped wrapped on a spool that is too small.

In this first picture the middle row quits about 3/4 the way across the sign.  One of the pixels in the "U" is red but that is hard to tell in the picture.

In this next picture the bottom right corner LED is out.  The third row down is a different shade of blue but you cannot see that in the picture.

here is the video of the first test.  Some of the issues went away during the video indicating they are caused by bad connections.


When I tried to run all 16 rows by wrapping the top 8 rows back to the bottom 8 rows this is what I got.  Only 3 of the bottom 8 rows came to life.

I finally was able to fix all of the bad connections.  I even replaced some of the strips to get it to work.  There is a yellow LED that is red in the picture.

This picture shows that there are still some bad connections!!  After fixing many many of them!


Wednesday, January 17, 2018

Audio Spectrum Analyzer with Arduino UNO+MSGEQ7+WS2812 LED Strips Part 2

I have improved the Audio Spectrum Analyzer.  By increasing the number of MSGEQ7's and offsetting them I now have 21 frequencies per channel.  In order to display all of them the sign had to be turned sideways.

This first version supports 8 LED strips:


This second version supports two sets of 8 LED strips for a total of 16 strips.


I can even do an oscilloscope on the WS2812 LED sign.


Friday, January 5, 2018

Even More Arduino Uno With WS2812 LED Strips and Arrays

I have also made a larger higher density LED sign.  It features 90 LED's per row and 16 columns.  That is 1440 LED's.  It is running from an Arduino UNO.  Last night with some adjustments to the timing I was able to get it to work.

The software now supports a different color for each letter as in this picture.

Here is the shades of color test, it supports 256 shades of each color.

Here is a video of it displaying text and running the color test and fireworks effect.



Later on I was able to get the sign to scroll.


Now it can be programmed from a cellphone via bluetooth!


Now you can change the color from the phone.


Monday, January 1, 2018

More Arduino Uno With WS2812 LED Strips and Arrays

I have been continuing to do things with an Arduino UNO and addressable LED's.  I think my next book will be called "Arduino Addressable LED Projects".  I would prefer to keep the title to three words and "Addressable" is a long word.  Another option is "Arduino LED Strip Projects".  What do you think is the best title?

Currently I am experimenting with an 8x32 array.  Internally it is wired as 8 LED segments with a zigzag wiring so each column is reversed.

Here is my worm video that shows how it is wired internally:

Here is some text being displayed on it.

I have improved the software even more!  It now supports 256 shades of each color and a color for each letter.

Wednesday, December 13, 2017

Assembling the Chinese RTL-SDR Kit (Software Defined Radio)

I am building a Chinese RTL-SDR Kit.  To start with I was trained in soldering by MERP (Miniature Electronics Repair) school in the US Navy.  I was taught NASA standards for soldering.  They will surely disown me after seeing these pictures of my soldering. This kit is NOT easy!  I also work for a communications company.  I have built all kinds of communications equipment including surface mounted parts and hand wound coils.

Here is what the kit parts look like.  There are many really tiny parts in the parts bag!

The circuit board comes with none of the surface mount parts installed.

To solder the surface mounted parts you will need a magnifying headband visor.  You will also need tweezers and a really fine soldering tip. Apply a small amount of solder to one pad and place one end of the part in the molten solder.  Then solder the other end.  Then clean up the first side.  The surface mount parts are marked except for the 222 resistors, the LED and the 4.7uH choke.  The LED is in a black part holder and has a green stripe.  There are extras of some parts in case you loose some.


Here is a picture of the circuit board with the surface mounted parts jacks, and capacitors added.  The green stripe of the LED goes towards the USB jack.  The USB Jack is really hard to solder.  I ended up with a solder bridge.  After trying every trick to get rid of the bridge I resorted to using solder wick to soak up the extra solder.  The capacitors should have their ground stripes facing the outer edges of the board.

I skipped adding the coils and went right to the disassembling USB dongle.  Use solder wick to remove the solder on the ground connections.  Then clip off the four USB jack pins using flush cutters.  Then clear the metal out of the holes with a solder sucker. (Or heat and tap).

To add the USB assembly make two jumper hooks out of the former capacitor wires.  Use them to hold the USB assembly up as in the following picture.  Then solder them in place on both the top and bottom sides.

Next make a |_____| to connect the bottom grounds together as in the next picture.
Then add the four USB jumpers (from the old USB jack holes to the new jacks holes), two ground jumpers, and the RF input jumper on the top side of the board.

There is a jumper to add to the bottom of the board.  It runs from one of the pins of a five pin device (likely a voltage regulator) to the edge.

It is easiest to attach the jumper just to the lower side of one of the pins as seen in this next illustration.

Then there is also an extra jumper to run on the top side.  It also runs from one of the pins of a five pin device to the edge.  It runs underneath the IR receiver, unless you have removed the IR (Remote Control) receiver.

There are two small coils to wind.  The specs say 11 turns on a 3mm (.118") drill bit.  From other peoples pictures it looks like some people are using a .125 (1/8 inch) drill bit instead.

 Here it what it looks like with those coils installed.

Next is the beginning of the hardest part.  Making and installing the 25 MHz coil.  First the wire was all one color.  That will require a voltmeter to figure out.  Second it was one wire.  You will need three lengths of wire about one foot each.  You can mark the ends with colors with a permanent marker if you do not have a meter.  Twist the three wires together to form one three conductor wire.  You might need a needle to thread it through the ferrite bead 9 times.


Next label and meter the wires.  You will have to tin them first to get through the enamel.

Twist the Y* and R wires together and solder it to the circuit board. You should have Y then Y*R then R*. Then cut off the B leads and the two that are twisted together.