Categories
Product Review Psion Repair

Updates for the week of 26 February 2023

There are many topics this week to cover, thus the reason for the non-descript title. Some of the things that have come up this week are Psion and Ericsson repairs, ChatGPT and DeepSource, and Agile2023.

Psion and Ericsson repairs

I was able to carryout another screen cable repair this week on the Ericsson MC 218. The MC 218 had the hooks in the back for the lid hinge so this repair resulted in a good as new repair. It did pose a challenge as the hinge is really not designed to be put in place while connected to the screen. I feared that I was going to break the plastic hooks so I worked to remove the pins holding the wire hinge from the screen. It was not easy and after I removed them, I saw that doing so caused a different challenge. The pins holding the wire hinges in place are actually spring metal wound up into a pin shape. This made them difficult to put back into place. The removal of the pins did make it much easier to get the wire hinges over the plastic hooks without breaking them, but I do not recommend doing that. If I carry out this repair again in the future, I plan to figure a better way to choregraph putting it all back together without breaking the hooks.

I feel that the terminology that I’m using to describe the hinge mechanism on the Psion 5 Series devices is not correct. If Martin Riddiford or anyone else in the know happens across this post, please add a comment below to let us know what the proper names for these are. Also a drawing with text pointing to them would be awesome as well.

I captured a video of the repair and hope to find some time shortly to edit it and post it to YouTube. I will post an update with a link to the video once it is available. In the meantime, here are some screen grabs from some of the video to show the hinge assembly and the spring metal pins referenced above.

Screen with annotation for hinge wires and sprint metal pins
Screen with showing wire hinges and spring metal pins.
Unit with annotation pointing to one of two hinge hooks
Unit with showing one of the two hinge hooks.
A view of the other hinge hook
A view of the other hinge hook.
Disassembled unit with annotation pointing to other hinge hook.
Another view of the hinge hook.

Hinge Repair

The hinge repair that I carried out last week, did not last long, which was not too much of a surprise. The metal pins bent and allowed the hinges to pop out from under the cover. I straightened the pins and used my 3Doodler, to add some PLA around the pins to give them a bit more strength so they hopefully will last a bit longer. The repair looked ugly but no one will see how bad I am at using the 3Doodler.

The opening and closing of the unit is very tight after the repair, which makes me a bit uncomfortable so I will take it easy when opening and closing the unit.

Hinge repair before and after
Hinge repair before and after
Hinge repair before and after
Hinge repair before and after for the other side

ChatGPT and DeepSource

It looks like things may be starting to really take off in the Artificial Intelligence (AI) field. We are starting to see more and more application of AI in some of the products that we use. I had been following the latest news regarding ChatGPT and found it interesting that it was able to pass a law exam at two different universities. While it would not be at the head of the class, it is good enough to get a passing grade. This presents a lot of challenges for professors at universities.

I had not given it much thought until I saw a video, 10X Your Code with ChatGPT: How to Use it Effectively, by Dave Plummer showing how ChatGPT could be used by software developers and others. He showed how he was able to interact with ChatGPT to develop a small software application and how we all need to start to understanding how to use the tool in our workflows.

I have seen that Visual Studio is now prompting me with code completion, based on my previous actions and where I’m at in the code. It is kind of freaky seeing the IDE basically writing code for you. There were times that it seemed to get in the way but most of the time, it was a real time saver. I’m sure it will get even better in the near future.

We may be at at point in time when AI will really start to have an impact in how we work and in our daily lives. Let’s just say that it has my attention now.

DeepSource

As I was trying ChatGPT, one very good use case popped out, and that is to do code reviews. Typically I am a lone developer and one of the biggest disadvantages of being a lone developer is your code is rarely code reviewed by anyone. ChatGPT did a fairly good job but the length of code it can code review is very limited.

Looking into ChatGPT led me to look into tools for Code Review. I found an article at GeekFlare, 6 Best Automated Code Review Tools for Developers. The article listed DeepSource as number 3. I looked into the other options and settled on DeepSource. It has great integration with GitHub so it scans code each time it is checked in. I was able to clean up my code fairly quickly.

I’ve made a recommendation to the DeepSource Team to incorporate AI for code reviews, particularly for us lone developers. We may be a few years away from being able to have a really good AI performing code reviews, but I think that is something we will see in the very near future.

Agile2023

I received some news this week that my submission for the Agile2023 conference was accepted. Now, I need to focus on polishing and practicing the workshop. This will be my first time presenting at a conference, so I’m nervous and excited for the opportunity. I hope it goes well and starts me down a path for the future.

Categories
Arduino Product Review

eBay Review – 1602 Serial Blue Backlight LCD Display Keypad 4 Arduino Uno R3 Mega 2560 Shield

I purchased an LCD Shield for Arduino from eBay a few weeks ago. I wanted to do a review to help others to get the shield to run on their Arduino or other microprocessor.

Overall Impression

Works as stated and is a good value. I would recommend this shield if you are in the market for a low cost shield with buttons for user input. It is a great shield to get a project going.

Overview

I am not certain who designed the original shield but I assume that it is open-source as there are many similar shields on the market. It appears that most are built from the same schematic that I found on SainSmart’s website at https://www.sainsmart.com/collections/all-for-arduino/products/lcd-keypad-shield-for-arduino-duemilanove-uno-mega2560-mega1280.

The shield uses one analog pin to determine which of the five switches the user has pressed. A series of resistors creates a voltage divider which in turn creates specific voltages for each switched pressed. The pins in use on the board are as follows.

PinFunction PinFunction
ResetReset Button 10LCD – Backlight
5VPower 9LCD – Enable
GroundGround 8LCD – RS
A0Buttons 7LCD – D7
 – SELECT 6LCD – D6
 -LEFT 5LCD – D5
 – UP
– RIGHT
– DOWN
 4LCD – D4
 
 WARNING: The shield works on 5VDC. Not all Arduinos are 5V tolerant so you may damage your Arduino if you use this shield on an Arduino with a microcontroller running on 3.3V such as the Due. If you do not know what voltage the microprocessor on your Arduino is running at, check the Wikipedia article at https://en.wikipedia.org/wiki/List_of_Arduino_boards_and_compatible_systems.

Code for Testing

The following code was found on SainSmart’s website. It was modified slightly to monitor the value of the A0 pin over the serial connection with the PC.

/*
  The circuit:
 * LCD RS pin to digital pin 8
 * LCD Enable pin to digital pin 9
 * LCD D4 pin to digital pin 4
 * LCD D5 pin to digital pin 5
 * LCD D6 pin to digital pin 6
 * LCD D7 pin to digital pin 7
 * LCD BL pin to digital pin 10
 * KEY pin to analogl pin 0
 */

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);

char msgs[5][16] = {"Right Key OK ",
                    "Up Key OK    ",               
                    "Down Key OK  ",
                    "Left Key OK  ",
                    "Select Key OK" };

int adc_key_val[5] ={50, 200, 400, 600, 800 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;

void setup()
{
  // open the serial port at 9600 bps:
  Serial.begin(9600);
  
  lcd.clear(); 
  lcd.begin(16, 2);
  lcd.setCursor(0,0); 
  lcd.print("ADC key testing"); 

  //analogReadResolution(12);
}

void loop()
{
  adc_key_in = analogRead(0);    // read the value from the sensor 
  Serial.println(adc_key_in);
  key = get_key(adc_key_in);  // convert into key press
 
  if (key != oldkey)   // if keypress is detected
   {
    delay(50);  // wait for debounce time
    adc_key_in = analogRead(0);    // read the value from the sensor 
    key = get_key(adc_key_in);    // convert into key press
    if (key != oldkey)    
    {   
      lcd.setCursor(0, 1);
      oldkey = key;
      if (key >=0){
           lcd.print(msgs[key]);              
      }
    }
  }
 delay(100);
}

// Convert ADC value to key number
int get_key(unsigned int input)
{
    int k;
   
    for (k = 0; k < NUM_KEYS; k++)
    {
      if (input < adc_key_val[k]) { return k; } } if (k >= NUM_KEYS)k = -1;  // No valid key pressed
    return k;
}

The code does not perform any debouncing of the button presses so you may need to modify the code if it becomes a problem in your project. Another limitation is the shield and/or the code will not be able to determine if more than one switch has been pressed. I have not tested this, but my hypothesis is that the switch with the lowest resistance will be detected.

Issue with 3.3V Adruino Boards

First off, read the warning above as you may damage your Arduino if the microcontroller is running at 3.3V.

After receiving the shield from the seller, frentaly , on eBay, I pulled out my Arduino Due as it happened to be the first Arduino board that I grabbed. I ran the above code and had some strange results. Pressing the “SELECT” button did nothing. Pressing the “LEFT” button registered “SELECT” was pushed. Likewise, pressing “DOWN” registered that the “LEFT” button was pressed. The “UP” and “RIGHT” buttons worked as expected. I sent a message to frentaly as I believed there was a problem with the shield. I then observed that the resistors for the voltage divider were the correct values so I pulled out a Mega board and ran the same test sketch. I found that the LCD button shield worked as expected on the Mega board. I did some investigating and found that the microprocessor on the Due board is running at 3.3V therefore the highest voltage that may be read on any analog pin is 3.3V. I went a bit further to get a bit more information.

The table below provides some information regarding the ADC values reported on A0 with 5V and 3.3V microprocessor Arduino boards. In the table below there is not difference between no button pressed and the “SELECT” button being pressed.

Button

R ID

R (Ohms)

Total R

I

VDC

ADC 5V

ADV 3.3V

NONE R2 Open Infinite  

5

1023

1023

SELECT R6 3,300 5,250

0.000690

3.621

740

1023

LEFT R5 1,000 1,950

0.001266

2.468

505

765

DOWN R4 620 950

0.001695

1.610

329

499

UP R3 330 330

0.002146

0.708

144

219

RIGHT    

0.002500

0.000

0

0

Here are some slides which provide some details on how the buttons work on the shield.

  • No buttons pressed
  • RIGHT button pressed
  • UP button pressed
  • DOWN button pressed
  • LEFT button pressed
  • SELECT button pressed

The schematic is from the SainSmart web page referenced above.

Below is the data presented above shown in a different format.

Categories
Android Product Review

Learning Android Development using Big Nerd Ranch’s book

I have been contemplating learning Android development for a while now. I have dabbled in it in the past but never took a deep dive to create an application from scratch. I decided to go through a book from start to finish to see if that will give me what I need to finally take the dive.

Android Programming Book by Big Nerd Ranch

Link to the book on Amazon

The book is laid out really well and explains things much clearer than other books I have looked at over the years. I will say that Java development is still not much better than it was 20 years ago, at least on a Windows OS. I know some people will like to bash me for that comment but let me tell you about day one of working through the book and why Java still has a long way to go. (In retrospect after writing this, the blame is not really Java but the IDE. About 20 years ago, both were an issue but at least my issue is more to do with the IDE rather than Java.)

Installation of Android Studio seemed to go well. I got through the GeoQuiz example with no problems other than needing to use a physical device rather than the emulator due to Hyper-V being enabled on my system. I then worked on the challenge by copying the completed example and opening the copy. I made my changes and attempted to launch the application. I received an error that the apk could not be loaded or copied and a prompt was given to uninstall the apk with a warning that user data may be deleted. Since the application did not have associated user data, I clicked the button to uninstall the apk. Another error showed up in the log stating that the apk could not be copied or installation failed. (Sorry, I do not call the exact text.)

At this point, I assumed that the issue was with my device having the application installed from the sample so I decided to try the emulator. I was being a bit lazy so I clicked the link in the emulator selection to turn off Hyper-V. This change required a reboot so I let the PC reboot. On reboot, Windows 10 attempted to fix an error and stated that automatic repair failed to fix the issue. I attempted to turn Hyper-V back on from the command prompt but I was unable to do so from the Windows PE command prompt. I then decided to try turning off early anti-virus and the PC rebooted. Of course I was not happy about that especially since my AV software kept complaining that it could not reach the live-update site and other issues. Basically I had a mess to clean up. Once I finally got the OS squared away, I decided to go back to the challenge. Now Android Studio was having all kinds of issues. (All of these issues may be related to other attempts to boot back into Windows including restoring a previous restore point.)

I uninstalled Android Studio, deleted the files in the Program Files folder, rebooted, and reinstalled Android Studio. I was still having issues launching Android Studio. I finally found that I needed to delete the contents of the C:\Users\AppData\Local\Android\Sdk folder. I then needed to reinstall the SDK, emulator, and build tools. Once these were reinstalled, Android Studio behaved well as it did before. I attempted to run the application and the emulator launched so that was great news but I received the original error regarding the apk file.

I was at a loss but looked a bit more into the log file and it pointed me to a file in the C:\Users\Documents\AndroidStudioProjects\GeoQuiz – Challenge\app\build\intermediates\split-apk\debug\slices folder. I deleted all of the files in the folder but I still received the same message. This was getting quite frustrating so I decided to try deleting all of the files and folders in the C:\Users\Documents\AndroidStudioProjects\GeoQuiz – Challenge\app\build folder. I attempted to build and run the application again. Low and behold, this time the application launched in the emulator. Finally success.

With all of this said, I’m going to keep marching on. It is very frustrating to have the Android Studio behave this way but hopefully my rant here will help someone. If nothing else, it will serve as a reminder to myself what to do when this error occurs.

Here are some locations of note regarding where Android Studio places files. If you want to uninstall and reinstall Android Studio, you should uninstall, delete the following folders, and reinstall. (These may not be all of the locations but these are the ones I found.)

  • C:\Program Files\Android
  • C:\Program Files (x86)\Android
  • C:\Users\.android
  • C:\Users\.AndroidStudio3.1
  • C:\Users\.gradle
  • C:\Users\AppData\Local\Android
Categories
Product Review Uncategorized

Glowforge

My Glowforge finally arrived this week. I pre-ordered it in October 2015 so it took a little over two years of waiting to finally get it.

I designed and printed the obligatory escutcheon for the print button. I chose to name my Glowforge Scotty in honor of James Doohan. His character was my inspiration for becoming an engineer in the first place so I felt it was fitting.


The escutcheon after being printed.


The escutcheon after removing the tape covering.

A few thoughts on the Glowforge interface.
The interface and workflow will take a bit of getting use to but I think it will be fine once I’m more familiar with it. At first I was getting frustrated as I created a PNG image to scale. When I imported it, I thought it was too small until I realized the scale is in inches not mm. Once I realized my error, I looked for an option to change it but could not find one. I attempted to find a way to scale it to the correct size but there is no option to type in the size or view the exact measurement. It is necessary to guess what size it is by looking at the ruler on the screen which is not very accurate. What I ended up doing was using the 1:1 scale printout and placing it in the Glowforge so I could attempt to scale it correctly. Once I did that, I could not figure out how to do cuts where I wanted them. I did some reading and found that an SVG is needed for cuts. I then used Inkscape to create an SVG from a modified image with only the cuts. This worked and I was able to scale it exactly. I then created another PNG file with just the engraving and uploaded both files. I still needed to scale the engraving but that was easy and not critical. Once everything looked good, I pressed the print button. The Glowforge performed the cuts but not the engraving. I then removed the cut image and clicked print again. This time the engraving was done. On my next print, I will need to see what I did wrong here so I do not make that mistake again.

Overall it was easy to use the Glowforge but I do have a few concerns. Firstly, a desktop application to prepare the print would afford a better setup experience. Secondly, it is not possible to print if your network connection is down for any reason or if Glowforge goes out of business. While it is nice to use a device this way, it does leave users vulnerable to the existence of the company and the health of the web servers.


The original PNG file I created.


A modified PNG for the cuts. This file could not be used for the cuts as PNG files may only be used for engraving. I needed to convert this file to SVG using Inkscape.


The modified PNG for the engraving.

Overall, I’m pleased with the Glowforge. I just hope that the company and the web-service run well for many years to come so I may continue to use the Glowforge.

BTW: The size of the escutcheon is 119.903 x 119.903 mm. I was not able to upload the SVG for the cuts so if you decide to use the PNG, you will need to convert it to SVG and resize it.

Categories
Product Review Uncategorized

CNC Machine

I have had a MyDIYCNC Machine sitting around for a few years now. I was having some problems with the controller boards so I set it aside and am just getting back to take another look at it. I found that one of the boards that was sent to me was indeed bad but MyDIYCNC no longer sells machines or parts. I then decided to go to Amazon and pick out a controller board to try. I picked the SainSmart CNC TB6560 3 Axis Stepper Motor Driver Controller Board & Cable. This board seems to work quite well. I have been having a bit of a time getting it to work properly in LinuxCNC but I have got it to home and move but it seems to be at 1/2 scale. I am still tweaking with the settings to see if I can get it to work 100%.

A few notes about wiring and hardware. The MyDIYCNC instructions refer to the motor which moves the Z axis carrier as the Y axis. It appears that it should really be the X axis and the table should be the Y axis. If it were the Y axis, the home position would be in the wrong corner of the machine. I played with the configuration a bit to see if I could get it to work as expected but I had no luck. Finally when I decided to try to swap the X and Y axes did home line up in the correct corner. I could have swapped A & B around on the Y motor and that may have reversed the direction of the motor but I did not want to go there. Swapping the axes made the most sense.

Here is a short video of a test of the CNC. The spindle has a ink cartage in it and is simply running the default LinuxCNC project. The drawing should be 5.3 inches wide but is only half that size.

Here are the settings for LinuxCNC.

001
Base Information

  • Machine Name: MyDIYCNC_inches
  • Axis configuration: XYZ
  • Reset Default machine units: Inch
  • Driver type: Other
  • Driver Timing Settings (The Stepper Drive Timing page on linux.org states that 150,000 ns should be used for all values however the current version of LinuxCNC has a max value of 100,000.)
    • Step Time: 100000
    • Step Space: 100000
    • Direction Hold: 100000
    • Direction Setup: 100000
  • Base Period Maximum Jitter: 9000

002
Parallel Port 1

  • Outputs (PC to Mill):
    • Pin 1: Amplifier Enable (Invert)
    • Pin 2: X Step
    • Pin 3: X Direction
    • Pin 4: Y Step
    • Pin 5: Y Direction
    • Pin 6: Z Step
    • Pin 7: Z Direction
    • Pin 8: Unused
    • Pin 9: Unused
    • Pin 14: Spindle ON (Invert)
    • Pin 16: Unused
    • Pin 17: Unused
  • Inputs (Mill to PC):
    • Pin 10: Both Limit + Home X (Invert)
    • Pin 11: Both Limit + Home Y (Invert)
    • Pin 12: Both Limit + Home Z (Invert)
    • Pin 13: ESTOP In
    • Pin 15: Unused
  • Parport Base Address: 0
  • Output pinout presets: Sherline (The value here is not important. It is actually used with the “Preset” button to load values.)

003
Options

Selections here really do not matter. I have not figured out how to use these yet. I may look into it more in the future.

004
Axis X

  • Motor steps per revolution: 800 (Steppers included with MyDIYCNC are 50 steps per revolution. The TB6560 board has the switches set for 1/16 microstepping. 50 x 16 = 800)
  • Driver Microstepping: 2.0 (Someone posted that 2 meant that microsteping was being used. I had this set to 32 earlier.)
  • Pulley teeth (Motor:Leadscrew): 1.0:1.0 (All axes are direct drive so they are all 1:1.)
  • Leadscrew Pitch: 20.0
  • Maximum Velocity: 0.4
  • Maximum Acceleration: 30.0
  • Home location: 0.125 This took awhile to get. If using the limit switches as home switches as well, we need to back the machine off so that the limit switches are not active when at home position. I choose to back them off 1/8 inch on all axes.)
  • Table travel: 0.0 to 5.5
  • Home Switch Location: 0.0
  • Home Search velocity: -0.05
  • Home Latch direction: Same

005
Axis Y

  • Motor steps per revolution: 800
  • Driver Microstepping: 2.0
  • Pulley teeth (Motor:Leadscrew): 1.0:1.0
  • Leadscrew Pitch: 20.0
  • Maximum Velocity: 0.4
  • Maximum Acceleration: 30.0
  • Home location: 0.125
  • Table travel: 0.0 to 8.0
  • Home Switch Location: 0.0
  • Home Search velocity: -0.05
  • Home Latch direction: Same

006
Axis Z

  • Motor steps per revolution: 800
  • Driver Microstepping: 2.0
  • Pulley teeth (Motor:Leadscrew): 1.0:1.0
  • Leadscrew Pitch: 20.0
  • Maximum Velocity: 0.4
  • Maximum Acceleration: 30.0
  • Home location: -0.125
  • Table travel: -4.0 to 0.0
  • Home Switch Location: 0.0
  • Home Search velocity: 0.05
  • Home Latch direction: Same

007
Almost Done

008
Do you want to quit?

Screenshot added for completeness

I plan to continue to look into what is going on with the scaling and settle on the correct settings or at least settings which will work.

Categories
Product Review

Test Video

I would like to add more videos to the blog. One of the problems that I have had is the time it takes to perform post processing on videos to add different sources and information. I found the Open Broadcaster Software application and started messing around with it and found that it is quite good, once you get use to how it works. Here is my first attempt at creating a video with the software.

BTW: Yes, I totally ripped off some ideas from Adafruit. I’m not too creative so I copied what I like. I will attempt to change it but it is tough as Limor and Phil have created a very nice format for the shows that Adafruit produces. I also like Ben Heck and Dave Jones (EEVBlog) videos as well but I seem to watch more of the videos Adafruit puts out.

Here is my first recording.

Categories
Product Review

A look at Adafruit’s Electret Microphone Amplifier – MAX4466 with Adjustable Gain (1063)

I purchased Adafruit’s Electret Microphone Amplifier – MAX4466 with Adjustable Gain (1063) and wanted to incorporate the circuit into a board that I am making to make a sound responsive decorative light. I saw a post from Adafruit that stated that the schematic was taken directly from the datasheet however looking at the component values on the board, it was obvious that some values had been changed. After a bit of reverse engineering of the board, it was confirmed that the schematic is indeed Figure 2 from the datasheet.

Figure2

Board Layout

Component Listing (Note Capacitor Values taken from Datasheet Schematic and not verified)

      • IC1 – MAX4466
      • R1 – 1KΩ
      • R2 – 1KΩ
      • R3 – 1MΩ
      • R4 – 1MΩ
      • R5 – 1KΩ
      • R6a – 100KΩ
      • R6b – 22KΩ
      • C1 – 0.1µF
      • C2 – 0.01µF
      • C3 – 1µF
      • C4 – 100pF
      • L1 – Ferrite Bead
      • L2 – Ferrite Bead

I wrote a simple program on the Arduino to capture 100 points of data per second for one minute and write the results to the serial output.

// Based on the Adafruit Trinket Sound-Reactive LED Color Organ
// http://learn.adafruit.com/trinket-sound-reactive-led-color-organ/code

#define MIC0_PIN 0 // Microphone is attached to Trinket GPIO #2/Gemma D2 (A1)
#define MIC1_PIN 1 // Microphone is attached to Trinket GPIO #2/Gemma D2 (A1)
#define DC_OFFSET 0 // DC offset in mic signal - if unusure, leave 0
#define NOISE 30 // Noise/hum/interference in mic signal
#define SAMPLES 60 // Length of buffer for dynamic level adjustment

int pointsPerSecond=100;
int captureMinutes = 1;
int delayMS = 1000/pointsPerSecond;
int datapoints=pointsPerSecond * captureMinutes * 60;
int curIdx=0;

void setup() {
 // put your setup code here, to run once:
 Serial.begin(57600);
 while (!Serial) {
 ; // wait for serial port to connect. Needed for Leonardo only
 }
 Serial.println(F("Idx\tAdaFruit\tMAX4466"));
}

void loop() {
 
 if(curIdx < datapoints)
 {
 // put your main code here, to run repeatedly:
 int adaFruitMic = analogRead(MIC0_PIN); // Raw reading from mic
 int max4466Mic = analogRead(MIC1_PIN); // Raw reading from mic
 
 Serial.print(curIdx);
 Serial.print(F("\t"));
 Serial.print(adaFruitMic);
 Serial.print(F("\t"));
 Serial.println(max4466Mic);
 
 curIdx++;
 delay(delayMS);
 if(curIdx >= datapoints)
 Serial.println("End of Sample");
 }
}

Here is the circuit diagram for the first test with values from the datasheet.

TestSchematic01
Test Schematic 1 – Values from datasheet

At first, I tried to use the values from the datasheet and noticed that the gain was not as high as the Adafruit module.

Test01_Chart01
Adafruit (ID: 1063) and MAX4466 Typical Schematic

Test01_Chart02
Adafruit (ID: 1063) Capture

Test01_Chart03
MAX4466 Schematic from Datasheet

Modified values to be close to the values used by the Adafruit 1063 module. The results showed that the gain was much better so these values will be good enough for my application, If you need to use this for a different application where you need better performance, you may want to look into the RC values. By modifying the capacitor values, it may be possible to achieve a cleaner output.

TestSchematic02
Modified resistor values to match Adafruit 1063 module

Test02_Chart01
Adafruit (ID: 1063) and MAX4466 Typical Schematic modified values

Test02_Chart02
Adafruit (ID: 1063)

Test02_Chart03
MAX4466 Typical Schematic modified values

This is not a thorough analysis of the performance of these two circuits but as stated above, it was good enough to give me the performance that I needed. (Test with Datasheet Figure 2)

BTW: The values read by the Arduino ADC are between 0 and 1023. The signal is centered around 511 and  has a noise level of ±50.

FYI: The gain for the circuit may be calculated as:

Gain = Rf/Rin = R6/R5 = 100KΩ/10KΩ = 10 (Dtasheet Circuit)

Gain = Rf/Rin = R6/R5 = 120KΩ/1KΩ = 120 (Modified Circuit)

You can also see from the graphs that the amplifier is driven to saturation. For my application that is acceptable but it may not be acceptable for your application particularly if you are creating a purely audio application.

Categories
Product Review

USB Video Capture Devices Review

I wanted to grab some video of the Raspberry Pi booting up with the Raspbian “wheezy” distribution. To do this, I planned to capture the video on my PC by using a USB video capture device. I bought two devices from Microcenter in hopes that one would work reasonably well but I was disappointed with the results from both devices. I later purchased another device from Newegg which worked much better and is used for all of the initial screen captures of the Raspberry Pi.

First a review of the low cost devices

Other than the quality of the video, I was rather disappointed with the way they did not play well with other video capture software. Each comes with some video capture software but I wanted to use Corel’s VideoStudio Pro X4 or Windows Live Movie Maker. At first it did not appear that the hardware devices would work with either software but I was able to figure out how to use them with Corel VideoStudio Pro X4. The default input on the device is S-Video not composite. In Corel VideoStudio Pro X4, you need to select composite input in the Options > Video Properties.

Neither device would work in Windows Live Movie Maker. When the capture device was selected and an attempt was made to capture video, the following message would be displayed. “Sorry, Movie Maker can’t record audio or video from the selected device.”

Devices tested

  • Sabrent USB 2.0 Video and Audio Capture Device (USB-AVCPT)
  • Sima GO DIGITAL Transfer Cable (SFG-1)

Sample video of the Sabrent

Sample video of the Sima

Now, the device I am currently using

  • DIAMOND USB 2.0 HD 1080 Game Console Video Capture Device (GC1000) USB 2.0 Interface

The Diamond GC1000 has much better quality however there are still some issues. The biggest issue is that it will not work with any software other than the included capture software. The good news is that the software works well. I did have a few issues at first but I was able to work through them and get it to work well. The other issue with the device is that the video displayed on the PC lags considerably from the live video. This is not too much of an issue and can be worked around by connecting a monitor to the output and working with that monitor rather than the video on the PC.

Sample video of the Diamond GC1000 – Composite Video with S-Video adapter (Now I connect to the Y jack of the Component Video)

Sample video of the Diamond GC1000 – HDMI

Conclusion

The bottom line is you get what you pay for, The cheaper devices I purchased from Microcenter work but the quality is not very good. I found them unacceptable for capturing video from the Raspberry Pi as the text was difficult to read in the captured video.

The Diamond GC1000 has much better video quality however there are still a few quirks that you need to deal with but they are not difficult to overcome and the resulting video is acceptable.