Main Restorations Software Audio/Jukebox/MP3 Everything Else Buy/Sell/Trade
Project Announcements Monitor/Video GroovyMAME Merit/JVL Touchscreen Meet Up Retail Vendors
Driving & Racing Woodworking Software Support Forums Consoles Project Arcade Reviews
Automated Projects Artwork Frontend Support Forums Pinball Forum Discussion Old Boards
Raspberry Pi & Dev Board controls.dat Linux Miscellaneous Arcade Wiki Discussion Old Archives
Lightguns Arcade1Up Try the site in https mode Site News

Unread posts | New Replies | Recent posts | Rules | Chatroom | Wiki | File Repository | RSS | Submit news

  

Author Topic: GreenAntz RGB to component transcoder  (Read 30404 times)

0 Members and 1 Guest are viewing this topic.

Zebidee

  • Trade Count: (+9)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 3277
  • Last login:Yesterday at 08:05:59 pm
Re: GreenAntz RGB to component transcoder
« Reply #80 on: June 05, 2024, 04:04:57 pm »
That's very impressive work Naponic! Can you share the file when complete?

How do you go with getting the VGA/USB/3xRCA ports into those holes? I imagine it's a tight fit. Does the plastic have a bit of flexibility to make that easier?

FYI, the GreenAntz PCBs are the same size across different versions, and the ports and mounting holes are all in the same places.

The PCB design/layout accommodates at least 1.5mm clearance along the short sides, meaning a box design could be a shaped hollow tube with C-shaped slide guides on left/right sides. The PCB just slides in, like a drawer. I imagine this would be easy to design and print. Then just add flat faceplates (with holes for ports & screws) front and back. The new sync LED intrudes upon that clearance slightly, but still leaves > 1mm free.

Ond & Daniel seem to be working on something too. I don't know how far that's gone? I imagine Ond is pretty busy with his virtual pinball project & other stuff.

I have no 3D printing skills! Sure I'd love it though, as obviously I enjoy creative modelling/design stuff.
Check out my completed projects!


Ond

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 2294
  • Last login:June 13, 2024, 01:13:02 am
Re: GreenAntz RGB to component transcoder
« Reply #81 on: June 05, 2024, 06:01:58 pm »

Ond & Daniel seem to be working on something too. I don't know how far that's gone? I imagine Ond is pretty busy with his virtual pinball project & other stuff.


I considered drawing up an enclosure but as Naponic is now working on it I'll let it be for now. Personally I have no real need for one myself as I'm just mounting them inside the cabinet on standoffs.

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Online Online
  • Posts: 9423
  • Last login:Today at 01:00:33 am
  • Designated spam hunter
Re: GreenAntz RGB to component transcoder
« Reply #82 on: June 05, 2024, 06:16:47 pm »

How do you go with getting the VGA/USB/3xRCA ports into those holes? I imagine it's a tight fit. Does the plastic have a bit of flexibility to make that easier?
You don't.

For a top and bottom cover design, the seam between the top and bottom should probably pass through the center of the RCA jacks.

The VGA port hole has flat sides so no problem there.

The USB connector should be shallow enough to slide inside the case or have the seam between the covers dip down at that connector with a little additional reinforcement on the top cover for the part that sticks down.

Another feature to consider adding is wire holes for the alternate power supply terminals mentioned here.



The PCB design/layout accommodates at least 1.5mm clearance along the short sides, meaning a box design could be a shaped hollow tube with C-shaped slide guides on left/right sides. The PCB just slides in, like a drawer. I imagine this would be easy to design and print. Then just add flat faceplates (with holes for ports & screws) front and back. The new sync LED intrudes upon that clearance slightly, but still leaves > 1mm free.
That's one possible approach, but the hard part about it is the hardware for attaching the covers.

Here's a preliminary design I did a while back for the KADE MiniConsole+ that could be easily adapted for GreenAntz.
- The hole in the "diving board" tab lines up with the mounting hole on the other cover.

OpenSCAD code if anyone wants to play around with it.
Code: [Select]
// KADE miniConsole+ case (WIP)

// Variables are estimates -- awaiting accurate measurements.  Port openings have extra wiggle room.

/////////////////////////////
// Define variables
/////////////////////////////
screwdiameter = 4;    // Screw hole diameter
PCBwidth = 60;        // PCB width
PCBlength = 80;       // PCB length
PCBthick = 1.8;       // PCB thickness
componentheight = 22; // Component height
USBoffset = 10;       // Distance from PCB edge to USB
RJ45offset = 8;       // Distance from PCB edge to RJ45
DSUBoffset = 9;       // Distance from PCB edge to left side of D-Sub15
SecHalfMove = 60;     // Y-axis distance to move the second half of the case

// Number of fragments (polygon sides) used to render a full circle.
    $fn = 180; // Default = 180  Typical range = 6 - 360
    // 6 will render a circular hole as a hexagon, 8 will render a circular hole as an octagon.
    // Lower the number for faster rendering, raise the number for smoother rendering.

/////////////////////////////
//  Make the part
/////////////////////////////

/////////////////////////////
// RJ-45 and USB side of case
/////////////////////////////
difference(){ // Case body minus hollow, PCB slot, RJ-45 and USB holes
    // Case body
    hull() {
    translate([PCBwidth+14, 8+PCBthick+componentheight, 1+PCBlength/4])
    cylinder(h=2+PCBlength/2, d=4, center=true);
    // Upper right cylinder

    translate([14, 8+PCBthick+componentheight, 1+PCBlength/4])
    cylinder(h=2+PCBlength/2, d=4, center=true);
    // Upper left cylinder

    translate([PCBwidth+14, 2, 1+PCBlength/4])
    cube([4,4,2+PCBlength/2], center=true);
    // Lower right cube

    translate([14, 2, 1+PCBlength/4])
    cube([4,4,2+PCBlength/2], center=true);
    // Lower left cube

    } // End case body
//
// Holes to remove from case
    // Upper hollow
    color("green") translate([14+PCBwidth/2, 6+(PCBthick+componentheight)/2, 5+PCBlength/4])
    cube([PCBwidth-6,PCBthick+componentheight,5+PCBlength/2], center=true);

    // Lower hollow
    color("green") translate([14+PCBwidth/2, 4, 5+PCBlength/4])
    cube([PCBwidth-6,3,5+PCBlength/2], center=true);

    // PCB slot
    color("white") translate([14+PCBwidth/2, 4+PCBthick, 5+PCBlength/4])
    cube([PCBwidth+0.2,PCBthick,5+PCBlength/2], center=true);

    // USB hole
    color("blue") translate([7+PCBwidth-USBoffset, 9.7+(PCBthick*1.5), 5])
    cube([14,12,12], center=true);

    // RJ45 hole
    color("brown") translate([22+RJ45offset, 11.7+(PCBthick*1.5), 5])
    cube([16,16,12], center=true);

     } // End case body minus hollow, PCB slot, RJ-45 and USB holes
//
difference(){ // Left mount tab minus screw hole
    // Left mount tab
    translate([6, 1.5, 1+PCBlength/4])
    cube([12, 3, 2+PCBlength/2], center=true);

    // Screw hole
    translate([6, 2.5, (2+PCBlength/2)-(PCBlength/2-8)])
    rotate([90, 0, 0])
    cylinder(h=10, d=screwdiameter, center=true);

} // End left mount tab minus screw hole
//
difference(){ // Right lower mount tab minus screw hole
    // Right lower mount tab
    translate([22+PCBwidth, 1.5, 1+PCBlength/4])
    cube([12, 3, 2+PCBlength/2], center=true);

    // Screw hole
    translate([22+PCBwidth, 2.5, (2+PCBlength/2)-(PCBlength/2-8)])
    rotate([90, 0, 0])
    cylinder(h=10, d=screwdiameter, center=true);

} // End right lower mount tab minus screw hole
//
difference(){ // Right upper mount tab minus screw holes
    // Right upper mount tab
    translate([22+PCBwidth, 4.5, 2+PCBlength/2])
    cube([12, 3, 4+PCBlength], center=true);

    // Screw hole 1
    translate([22+PCBwidth, 2.5, (2+PCBlength/2)-(PCBlength/2-8)])
    rotate([90, 0, 0])
    cylinder(h=10, d=screwdiameter, center=true);

    // Screw hole 2
    translate([22+PCBwidth, 2.5, (2+PCBlength/2)+(PCBlength/2-8)])
    rotate([90, 0, 0])
    cylinder(h=10, d=screwdiameter, center=true);

} // End right lower mount tab minus screw holes
//
/////////////////////////////
// DSub15 side of case
/////////////////////////////
difference(){ // Case body minus hollow, PCB slot, and DSub15 hole
    // Case body
    hull() {
    translate([PCBwidth+14, 8+PCBthick+componentheight+SecHalfMove, 1+PCBlength/4])
    cylinder(h=2+PCBlength/2, d=4, center=true);
    // Upper right cylinder

    translate([14, 8+PCBthick+componentheight+SecHalfMove, 1+PCBlength/4])
    cylinder(h=2+PCBlength/2, d=4, center=true);
    // Upper left cylinder

    translate([PCBwidth+14, 2+SecHalfMove, 1+PCBlength/4])
    cube([4,4,2+PCBlength/2], center=true);
    // Lower right cube

    translate([14, 2+SecHalfMove, 1+PCBlength/4])
    cube([4,4,2+PCBlength/2], center=true);
    // Lower left cube

    } // End case body
//
// Holes to remove from case
    // Upper hollow
    color("green") translate([14+PCBwidth/2, 6+(PCBthick+componentheight)/2+SecHalfMove, 5+PCBlength/4])
    cube([PCBwidth-6,PCBthick+componentheight,5+PCBlength/2], center=true);

    // Lower hollow
    color("green") translate([14+PCBwidth/2, 4+SecHalfMove, 5+PCBlength/4])
    cube([PCBwidth-6,3,5+PCBlength/2], center=true);

    // PCB slot
    color("white") translate([14+PCBwidth/2, 4+PCBthick+SecHalfMove, 5+PCBlength/4])
    cube([PCBwidth+0.2,PCBthick,5+PCBlength/2], center=true);

    // DSub15 hole
    color("blue") translate([-6+PCBwidth-DSUBoffset, 10.7+(PCBthick*1.5)+SecHalfMove, 5])
    cube([40,14,12], center=true);

     } // End case body minus hollow, PCB slot, and DSub15 hole
//
difference(){ // Left mount tab minus screw hole
    // Left mount tab
    translate([6, 1.5+SecHalfMove, 1+PCBlength/4])
    cube([12, 3, 2+PCBlength/2], center=true);

    // Screw hole
    translate([6, 2.5+SecHalfMove, (2+PCBlength/2)-(PCBlength/2-8)])
    rotate([90, 0, 0])
    cylinder(h=10, d=screwdiameter, center=true);

} // End left mount tab minus screw hole
//
difference(){ // Right lower mount tab minus screw hole
    // Right lower mount tab
    translate([22+PCBwidth, 1.5+SecHalfMove, 1+PCBlength/4])
    cube([12, 3, 2+PCBlength/2], center=true);

    // Screw hole
    translate([22+PCBwidth, 2.5+SecHalfMove, (2+PCBlength/2)-(PCBlength/2-8)])
    rotate([90, 0, 0])
    cylinder(h=10, d=screwdiameter, center=true);

} // End right lower mount tab minus screw hole
//
difference(){ // Right upper mount tab minus screw holes
    // Right upper mount tab
    translate([22+PCBwidth, 4.5+SecHalfMove, 2+PCBlength/2])
    cube([12, 3, 4+PCBlength], center=true);

    // Screw hole 1
    translate([22+PCBwidth, 2.5+SecHalfMove, (2+PCBlength/2)-(PCBlength/2-8)])
    rotate([90, 0, 0])
    cylinder(h=10, d=screwdiameter, center=true);

    // Screw hole 2
    translate([22+PCBwidth, 2.5+SecHalfMove, (2+PCBlength/2)+(PCBlength/2-8)])
    rotate([90, 0, 0])
    cylinder(h=10, d=screwdiameter, center=true);

} // End right upper mount tab minus screw holes
//


Scott

Naponic

  • Trade Count: (0)
  • Jr. Member
  • **
  • Offline Offline
  • Posts: 7
  • Last login:June 13, 2024, 11:07:06 am
  • I want to build my own arcade controls!
Re: GreenAntz RGB to component transcoder
« Reply #83 on: June 05, 2024, 07:07:00 pm »
Made the case see-through so I can see what I'm doing... doesn't look bad lol.

Made the holes in the middle so there's no wedging of anything. Drop, screw, and go. Still mostly visual guesswork and tape measuring clearances, I need digital calipers. Downloading random circuit parts from GrabCAB and double checking IRL has saved a lot of time.


PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Online Online
  • Posts: 9423
  • Last login:Today at 01:00:33 am
  • Designated spam hunter
Re: GreenAntz RGB to component transcoder
« Reply #84 on: June 05, 2024, 08:14:58 pm »
Looks great, Naponic.   :cheers:

Two other features you might want to add are a hole for the optional alternate power wires mentioned here and two holes so you can see the LEDs.



I need digital calipers.
Yep.  Digital or dial.  Both are great choices.
Vernier calipers suck.  :puke


Scott
EDIT: Forgot to mention that another case variant to consider is for the SCART version with audio jacks mentioned here.
« Last Edit: June 05, 2024, 08:42:53 pm by PL1 »

Zebidee

  • Trade Count: (+9)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 3277
  • Last login:Yesterday at 08:05:59 pm
Re: GreenAntz RGB to component transcoder
« Reply #85 on: June 05, 2024, 11:10:43 pm »
EDIT: Forgot to mention that another case variant to consider is for the SCART version with audio jacks mentioned here.



Thanks so much for the suggestions Scott. Yes, SCART... and console users are more likely to want SCART, therefore more likely to want a box (as it will likely be going near a TV in a games room, not inside a cab).

BYOACers almost all want VGA versions, I haven't even built any V1.94 units in SCART form yet. I haven't promoted the latest versions past BYOAC. But once I include the everyone else (y'know, non-members), overall maybe 20-25% of people want SCART, so important to include them.

FYI, the installed SCART jack measures 16mm high x 47mm wide (top); 44.5mm wide (bottom). Those width measurements are taken from the outsides of the curved corners. The white lines marked on PCB show the correct footprint and precisely line up with where the SCART jack goes.

The extra audio passthrough RCA jacks (red & white) are the same height and same diameter as the YPbPr jacks (you can hold a ruler up and it goes through the middle of all five jacks). They are all spaced apart by approximately the same amount too (~14mm). The only difference is the audio jacks don't stick out quite as far, are about 2mm shorter than the YPbPr jacks. Again, the white lines marked on the PCB footprint show the correct placement.

Those measurements are taken with a metal ruler & eyeballs, not calipers of any kind, but I took them many times.

Holes for LEDs might not work, as much of the light would be dispersed before even reaching the holes. Extending the LED legs is not a very practical option. One way to do it would be with optic fibre tubing, which would capture the light and direct it (mostly) toward the hole. Sounds fussy and expensive, but maybe not, I really don't know.

EDIT: a little online searching reveals fibre optic tubes are actually not very expensive. Even so, I'm not sure how well they'd work, some testing would be required. The GreenAntz 3mm "bright" LEDs run much dimmer than their actual ratings, drawing less than 1mA each - they only need to be bright enough to see, not to see by, and not bright enough to make you squint or distract from gaming. Generally speaking, green power LED uses a 50K current limiting resistor, and the blue sync LED uses a 10K resistor (these values are only indicative - actual colours and resistor values may vary).

Transparent case may just be easier.

Thanks again naponic, looking very good.
Check out my completed projects!


variaprime

  • Trade Count: (0)
  • Jr. Member
  • **
  • Offline Offline
  • Posts: 2
  • Last login:Yesterday at 10:08:21 am
  • See you next mission.
Re: GreenAntz RGB to component transcoder
« Reply #86 on: June 06, 2024, 01:43:01 am »
Thank you for all the hard work and updates you've put into this project! Also loving the enclosures I'm seeing above. Sent a PM on purchasing a unit if there are still any spots available. Cheers  :cheers:

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Online Online
  • Posts: 9423
  • Last login:Today at 01:00:33 am
  • Designated spam hunter
Re: GreenAntz RGB to component transcoder
« Reply #87 on: June 06, 2024, 02:57:20 am »
FYI, the installed SCART jack measures 16mm high x 47mm wide (top); 44.5mm wide (bottom). Those width measurements are taken from the outsides of the curved corners. The white lines marked on PCB show the correct footprint and precisely line up with where the SCART jack goes.
If the datasheet for the connector doesn't show the radius of the curved corner, the tool you need to measure the curve is called a fillet gauge.
- There are lots of 3d printable models of them on Thingiverse or you can make custom ones like I did here.



Holes for LEDs might not work, as much of the light would be dispersed before even reaching the holes. Extending the LED legs is not a very practical option. One way to do it would be with optic fibre tubing, which would capture the light and direct it (mostly) toward the hole. Sounds fussy and expensive, but maybe not, I really don't know.
"Transparent" 3d print filament is usually just somewhat translucent so dim LEDs might be hard to see unless the case is so thin that it it will be too weak.
- My 3d printer came with a sample of translucent PLA.  Printed some parts for PBJ with it.  They turned out OK for his setup, but it was far from transparent.

If I was modding a case like Naponic's for LED holes, I'd put in 45 degree funnel-like holes (6mm i.d. hole at the bottom) that stopped just a bit above the 3mm LEDs.
- This gives you fairly good viewing angles, almost all printers should be handle a 45 degree overhang, and you don't have to worry about special filaments or light pipes.
- Bonus points for the holes looking like the entrance to an ant hill.   :lol

Transparent case may just be easier.
Many people won't want to buy a 1000g roll of specialized filament just to print a single 100g(?) case.

Probably better to design a case that works with any type of filament.   ;D


Scott

Zebidee

  • Trade Count: (+9)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 3277
  • Last login:Yesterday at 08:05:59 pm
Re: GreenAntz RGB to component transcoder
« Reply #88 on: June 06, 2024, 06:27:52 am »
All good point Scott. I really don't know 3D printing, and I'm sure what you say about transparent stuff is true. Not sure I'd like funnel-holes for the LEDs though. Am worried that they would have to be pretty long funnels, around 1cm or longer, to get down to the LEDs. On the other hand, maybe that would look fine.

I'm thinking some 3mm optic fibre tube, or maybe a bit wider, and a bit of removable white heat-shrink over the LED end, and the other end glued into a custom hole in the case. When installing into the case, you'd need to slip the heat-shrink caps over the LEDs. I've seen similar in PC case designs for power/HDD LEDs, even some pretty old ones.

Anyway, the point of 3D custom printing is that people can modify to their own tastes. A good basic shell is a great place to start. No need to get caught up in the fiddly details too much (yet).

Naturally, I'm also thinking ahead to the next stage where I'm getting making cases made in quantities and sold as an optional extra.
Check out my completed projects!