Friday, May 31, 2019

7 Inch LCD Screen kits sold on eBay with Raspberry Pi

I recently purchased one of the 7 inch LCD screen kits being sold on eBay.  The resolution is 1024 x 600 so the screen image is a little compressed top to bottom.  The brightness is not that great either.  But it does work fine with a Raspberry Pi.  It also supports composite video and VGA video inputs.  It is rated for 12 volts at 1 amp but it also runs on 5 volts from an included USB connector.

This is the eBay advertisement.

This is the screen running of a USB power cable that was included.  All you have to do is plug the screen into the interface board (there is a clip that you push down to lock it in) and add power.

I flipped the screen orientation so the interface board can be eventually mounted on the back of the screen and switched to a 12 volt AC adapter.  It was not noticeably brighter on the AC adapter. 
Next I bought a case to fit the 7 inch screen.  Theis is the ebay ad for a case to match this screen.
 This is what it looks like when it is put together.  It took several tries as there are no instructions.  There are four layers.  The back layer is first.  Then a layer to space the screen away for the screws (You can countersink the screws instead) it has a notch for the ribbon cable.  Then the layer that fits around the screen.  The top layer holds the screen in place.  I put the top layer on wrong the first time as there was some silver metal visible on the right side of the screen.
 This is the side view.  The power and input jacks end up facing up.
 This is a back view.  I rearranged the control board so the button assignments are right side up.
 This is another side view so you can see how thin the case is when assembled.
I hope to add a camera mount to the screen and mount it on a video camera.  The next question is how to connect R/G/B cables to the screen??

Wednesday, May 1, 2019

Panasonic Pro AG-DVC7 Rebuild with higher resolution

I am rebuilding a Panasonic AG-DVC7 to give a better image resolution.  I am looking at USB Camera boards with sound on eBay to attach to the existing optics.  An Arduino will handle the Zoom, Focus, and Iris.  A Raspberry Pi will do the recording and provide a viewfinder.

One of the first steps is to reverse engineer the optics.

This is the main side of the optical assembly with the Zoom and Focus stepper motors.

This is the back side - The Iris solenoid connections are shown.  You need to remove the cover on the left to get to the connections.

This is a close up of the Iris assembly.  You do not need to take the optics apart this far.

Here is the first video of the arrangement working.


Yet to do:
Increase the range of the zoom - Add a spacer between board and the image sensor.
Set up a viewfinder - Need a small 5-7 inch HDMI Monitor.
Make the steps finer/smoother. - Done with 8 phases for servos instead of 4.
Auto focus - Need to run the focus to its stop then keep track of its position.
  Perhaps add an ultrasonic distance sensor?
Focus Issue - Somehow I damaged the optical assembly, it does not focus properly when installed back in the DVC7 camera....

Here is the schematic of the Arduino servo controller that was used for the camera.

This is a close up of the Arduino and servo driver interface.

This is a close up of the Raspberry Pi. You could use a USB camera board as well.

Here is the code for the servos.

/*****************************
Dual Four wire stepper motor Control
For Panasonic AG-DVC7 with two servos
by Bob Davis
May 1, 2019
*****************************/
// To L293 one
int motor1A =4;
int motor1B =5;
int motor1C =6;
int motor1D =7;
// To L293 Two
int motor2A =8;
int motor2B =9;
int motor2C =10;
int motor2D =11;
// 2P Momentary Switch One Center is off
int m1sw1 = 14;
int m1sw2 = 15;
// 2P Momentary Switch Two Center is off
int m2sw1 = 16;
int m2sw2 = 17;
// Variables
int m1step = 0;
int m2step = 0;
int mspeed = 100; // Step speed

void setup() {
  pinMode(motor1A, OUTPUT);
  pinMode(motor1B, OUTPUT);
  pinMode(motor1C, OUTPUT);
  pinMode(motor1D, OUTPUT);
  pinMode(motor2A, OUTPUT);
  pinMode(motor2B, OUTPUT);
  pinMode(motor2C, OUTPUT);
  pinMode(motor2D, OUTPUT);
  pinMode(m1sw1, INPUT_PULLUP);
  pinMode(m1sw2, INPUT_PULLUP);
  pinMode(m2sw1, INPUT_PULLUP);
  pinMode(m2sw2, INPUT_PULLUP);
}

void loop() {
// read switches
  if (digitalRead (m1sw1)==HIGH) m1step=m1step+1;
  if (digitalRead (m1sw2)==HIGH) m1step=m1step-1;
  if (m1step > 7) m1step=0;
  if (m1step < 0) m1step=7;
  if (digitalRead (m2sw1)==HIGH) m2step=m2step+1;
  if (digitalRead (m2sw2)==HIGH) m2step=m2step-1;
  if (m2step > 7) m2step=0;
  if (m2step < 0) m2step=7;
// respond M1 with 8 smooth steps
  if (m1step==0){
    digitalWrite (motor1A, LOW); //+A
    digitalWrite (motor1B, HIGH);
    digitalWrite (motor1C, HIGH);
    digitalWrite (motor1D, HIGH);}
  if (m1step==1){
    digitalWrite (motor1A, LOW); //+A,+B
    digitalWrite (motor1B, HIGH);
    digitalWrite (motor1C, LOW);
    digitalWrite (motor1D, HIGH);}
  if (m1step==2){
    digitalWrite (motor1A, HIGH); //+B
    digitalWrite (motor1B, HIGH);
    digitalWrite (motor1C, LOW);
    digitalWrite (motor1D, HIGH);}
  if (m1step==3){
    digitalWrite (motor1A, HIGH); //+B,-A
    digitalWrite (motor1B, LOW);
    digitalWrite (motor1C, LOW);
    digitalWrite (motor1D, HIGH);}
  if (m1step==4){
    digitalWrite (motor1A, HIGH); // -A
    digitalWrite (motor1B, LOW);
    digitalWrite (motor1C, HIGH);
    digitalWrite (motor1D, HIGH);}
  if (m1step==5){
    digitalWrite (motor1A, HIGH); // -A,-B
    digitalWrite (motor1B, LOW);
    digitalWrite (motor1C, HIGH);
    digitalWrite (motor1D, LOW);}
  if (m1step==6){
    digitalWrite (motor1A, HIGH); // -B
    digitalWrite (motor1B, HIGH);
    digitalWrite (motor1C, HIGH);
    digitalWrite (motor1D, LOW);}
  if (m1step==7){
    digitalWrite (motor1A, LOW); // -B,+A
    digitalWrite (motor1B, HIGH);
    digitalWrite (motor1C, HIGH);
    digitalWrite (motor1D, LOW);}
 
// respond M2
  if (m2step==0){
    digitalWrite (motor2A, LOW); //+A
    digitalWrite (motor2B, HIGH);
    digitalWrite (motor2C, HIGH);
    digitalWrite (motor2D, HIGH);}
  if (m2step==1){
    digitalWrite (motor2A, LOW); //+A,+B
    digitalWrite (motor2B, HIGH);
    digitalWrite (motor2C, LOW);
    digitalWrite (motor2D, HIGH);}
  if (m2step==2){
    digitalWrite (motor2A, HIGH); //+B
    digitalWrite (motor2B, HIGH);
    digitalWrite (motor2C, LOW);
    digitalWrite (motor2D, HIGH);}
  if (m2step==3){
    digitalWrite (motor2A, HIGH); //+B,-A
    digitalWrite (motor2B, LOW);
    digitalWrite (motor2C, LOW);
    digitalWrite (motor2D, HIGH);}
  if (m2step==4){
    digitalWrite (motor2A, HIGH); // -A
    digitalWrite (motor2B, LOW);
    digitalWrite (motor2C, HIGH);
    digitalWrite (motor2D, HIGH);}
  if (m2step==5){
    digitalWrite (motor2A, HIGH); // -A,-B
    digitalWrite (motor2B, LOW);
    digitalWrite (motor2C, HIGH);
    digitalWrite (motor2D, LOW);}
  if (m2step==6){
    digitalWrite (motor2A, HIGH); // -B
    digitalWrite (motor2B, HIGH);
    digitalWrite (motor2C, HIGH);
    digitalWrite (motor2D, LOW);}
  if (m2step==7){
    digitalWrite (motor2A, LOW); // -B,+A
    digitalWrite (motor2B, HIGH);
    digitalWrite (motor2C, HIGH);
    digitalWrite (motor2D, LOW);}

  delay (mspeed);
}