Innehållsförteckning:
- Steg 1: Ansvarsfriskrivning
- Steg 2: Gör PCB med hjälp av toneröverföringsmetod
- Steg 3: Lödning av elektroniska komponenter
- Steg 4: Programmering av STM32 -mikrokontroller
- Steg 5: Användning av AODMoST 32
- Steg 6: Designöversikt
Video: Alternativt slutande dikoptisk modifierare av stereoskopisk överföring 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:36
Under en tid har jag arbetat med en efterträdare till den ursprungliga AODMoST. Ny enhet använder snabbare och bättre 32-bitars mikrokontroller och snabbare analog videobrytare. Det gör att AODMoST 32 kan arbeta med högre upplösningar och implementera nya funktioner. Enheten kan nu också drivas av USB: s 5V spänning.
Den största nya funktionen är implementering av enkel mönstrad bildmask för ett öga och invers mönstrad mask för det andra, liknande den som presenteras i denna artikel: Dikoptisk filmvisning behandlar barndoms amblyopi. Det finns också fler anpassningsalternativ för form, position och konstant randomisering av dessa parametrar.
Jag bör påpeka att jag inte har implementerat alla idéer jag hade, och firmware kan vidareutvecklas. Men jag räknar med att på grund av socioekonomiska frågor kommer jag inte att kunna arbeta med detta projekt inom överskådlig framtid, så jag publicerar det som det är. Firmware kan nu fungera med 3D -innehåll i Top - Bottom och Side by Side -format och testades med Nvidia GPU -utrustad PC och Xbox 360.
2020-11-26 UPPDATERING: Jag lyckades äntligen skapa MODE 3: FREE FLOATING OBJECTS. Det ingår i version 1.00 av firmware. Denna nya programvara har också få små justeringar, till exempel har nu alla lägen separata form-, mask- och slumpmässiga inställningar som sparas när enheten stängs av. Jag kommer att behålla äldre filer (från version 0.50 av firmware, när det inte finns någon versioninformation i filnamnet, betyder det att detta är den här gamla firmware) om version 1.00 på något sätt är felaktig.
Du kan ladda ner källkod, schematisk, PCB, användarmanual, etc. för detta projekt här:
aodmost_32_all_files_1.00.zip
aodmost_32_all_files.zip
Tillbehör:
Delar och material:
- STM32F103C8T6 mikrokontroller (LQFP-48)
- 74AC00 quad NAND-grind (SOIC-14, 3,9 mm smal)
- STMAV340 analog videobrytare (TSSOP-16)
- LM1117-3.3 spänningsregulator (TO-263)
- 3x BC817-transistor (SOT-23)
- 3x vit 3mm LED
- 2x diffus gul 3 mm LED
- diffus röd 3 mm LED
- 2x diffus blå 3mm LED
- diffus grön 3 mm LED
- 8 MHz kristall (HC49-4H)
- micro USB typ B hona -kontakt (observera att det finns många typer av dem, och vissa kanske inte är kompatibla med hålen i PCB -designen, du kan helt hoppa över USB, eftersom USB endast används som 5V strömförsörjning)
- 2x D-SUB 15-stifts rätvinklig kvinnlig VGA-kontakt (observera att det finns många typer, och du behöver en längre version med stift som kommer att göra hål i kretskortet)
- 2 -stifts 2,54 mm rak stifthuvud
- 3 -stifts 2,54 mm rak stifthuvud
- 11x 6x6mm taktila knappar SMD/SMT
- 2x 10 uF 16V Case A 1206 tantal kondensator
- 10x 100 nF 0805 kondensator
- 2x 15 pF 1206 kondensator
- 3x 1k ohm trimpot 6mm
- 3x 10k 1206 motstånd
- 4x 4k7 1206 motstånd
- 3x 2k7 1206 motstånd
- 2x 1k 1206 motstånd
- 3x 470 ohm 1206 motstånd
- 3x 75 ohm 1206 motstånd
- 3x 10 ohm 1206 motstånd
- dubbelsidig kopparklädd bräda (minst 79.375x96.901mm)
- några bitar koppartråd (speciellt något med liten diameter som 0,07 mm kan komma till nytta om man ska reparera trasigt spår bredvid ledningar till LQFP -mikrokontroller)
Verktyg:
- diagonal skärare
- tång
- platt skruvmejsel
- pincett
- verktygskniv
- fil
- mittstans
- hammare
- liten nål
- 1000 korn torrt/vått sandpapper
- pappershandukar
- såg eller annat verktyg som kan skära PCB
- 4x 0,8 mm borr
- 1 mm borr
- 3 mm borr
- borrpress eller roterande verktyg
- natriumpersulfat
- plastbehållare och plastverktyg som kan användas för att ta ut PCB ur etsningslösningen
- brunt förpackningstejp
- isoleringstejp
- multimeter
- lödstation
- konisk finpunktslödspets
- mejsel lödspets
- löda
- lödningsflöde (jag använde RMA -klass, fluxgel avsedd för SMT -montering och reparationer, som kom i 1,4 cm^3 spruta)
- avlödningstråd
- laserskrivare
- glansigt papper
- strykjärn
- grädde
- aceton
- rengöringssprit
- permanent tillverkare
- ST-LINK/V2 (eller klon av det) + kablar som kan ansluta den till AODMoST 32 + programvara som kan använda programmeraren
Steg 1: Ansvarsfriskrivning
Användning av en sådan enhet kan orsaka epileptiska anfall eller andra negativa effekter hos en liten del av enhetens användare. Konstruktion av en sådan enhet kräver användning av måttligt farliga verktyg och kan orsaka skada eller skada på egendom. Du bygger och använder den beskrivna enheten på egen risk
Steg 2: Gör PCB med hjälp av toneröverföringsmetod
Du måste skriva ut en spegelbild av F. Cu (framsidan) och en normal bild av B. Cu (baksidan) på glansigt papper med en laserskrivare (utan några tonersparande inställningar på). Externa mått på tryckta bilder ska vara 79.375x96.901mm (eller så nära du kan komma). Klipp ut kretskortet till storleken på den tryckta bilden, du kan lägga till några mm på varje sida av kretskortet om du vill. Jag personligen gillar att göra det genom att göra en djup rad längs hela laminatlängden med en verktygskniv (du måste skära hela längden några gånger) och sedan upprepa processen från andra sidan. När raderna är tillräckligt djupa bryts hela laminatet lätt till hälften. Du måste utföra processen för att bryta laminatet två gånger, eftersom du måste ha rätt längd och bredd på det resulterande stycket. Mindre laminatbitar kan brytas bort med hjälp av en tång (se till att inte skrapa koppar för mycket, använd ett skyddande lager papper till exempel mellan tång och kretskort). Nu ska du jämna ut kanterna på den resulterande brädbiten med filen.
Därefter måste du rengöra kopparlager med fuktat fint sandpapper och sedan ta bort partiklar som lämnas av sandpapper med grädde (du kan också använda diskmedel eller tvål). Rengör sedan med alkohol. Efter det bör du vara mycket försiktig så att du inte vidrör koppar med fingrarna.
Nu är det dags att klippa ark med spegelbild av F. Cu till en mer hanterbar storlek (lämna några cm runt den yttre rektangeln) och lägg det ovanpå klädjärnet (toner upp). Du kan hålla järn mellan dina lår, men var mycket försiktig så att en stryksula ständigt är uppe och inte rör vid någonting. Lägg sedan kretskortet ovanpå glansigt papper (rengjorda toner på sidan) och slå på strykjärnet (använd full effekt). Efter en kort stund bör papper fastna på kretskortet. Du kan använda ett tygstycke eller en handduk för att trycka brädan mot papperet och flytta papper som fastnar på PCB lite. Vänta minst några minuter tills papperet ändrar färg till gult. Tyvärr måste du bestämma rätt tid för att avbryta överföringsprocessen experimentellt, så om bilden på kopparen har mycket dålig kvalitet måste du rengöra toner med aceton, sand och tvättbräda igen och starta hela processen från början.
När du tror att toneröverföringen är klar lägger du kretskortet med papper i vatten (du kan lägga till krämrengöringsmedel eller diskmedel) i 20 minuter. Gnid sedan papper från PCB. Om det finns platser där tonern inte fastnat i koppar, använd permanent markör för att byta ut tonern.
Nu måste du markera mitten av fyra tomma utrymmen i hörnen på kretskortet med en stans. Senare kommer dessa centra att borras och de resulterande hålen används för att rikta in båda sidor av kretskortet.
Därefter måste du täcka baksidan av laminatet med brun förpackningstejp. Blanda färskt vatten med natriumpersulfat och sätt PCB i etsningslösningen. Försök att hålla lösningen vid 40 ° C. Du kan lägga plastbehållare ovanpå kylaren eller annan värmekälla. Blanda då och då lösningen i behållaren. Vänta tills otäckt koppar löses upp helt. När det är klart, ta bort PCB från lösningen och skölj den i vatten. Skala förpackningstejpen. Ta bort toner med aceton (nagellackborttagare bör innehålla rätt mycket av det). Vid denna tidpunkt kan du börja ta bort eventuella kortslutningar med verktygskniv.
Borra nu fyra riktningshål med 0,8 mm borr. Borra sedan motsvarande hål genom papperet med bilden av B. Cu med samma 0,8 mm borr. När detta är gjort, slipa och rengör tillbaka PCB. Lägg sedan brädet ovanpå den plana ytan (rengjort koppar ovanpå), täck över det med glansigt papper som håller bilden av B. Cu (toner ned) och lägg fyra 0,8 mm borrar i hålen (rund del nedåt) för att hålla papper och laminatet inriktat. Nu ska du försiktigt vidröra papperet med spetsen av hett klädjärn en kort stund, så att papper och kretskortet fastnar på varandra. Ta sedan bort borrarna, lägg järn mellan låren och lägg papper med laminatet ovanpå strykjärnet och upprepa proceduren för överföring av toner. Blötlägg sedan papper i vatten för att ta bort det och byt ut eventuell toner som saknas med permanent markör.
Nu måste du täcka framsidan av kretskortet med förpackningstejp, såväl som tillbaka runt redan borrade hål. Etsa sedan baksidan på samma sätt som du gjorde på framsidan, skala bort tejpen, ta bort tonern och börja leta efter kortslutningar.
Du måste också borra resten av hålen i kretskortet. Det finns fyra 3 mm hål för montering av VGA -kontakter. 1 mm -hål används för resten av VGA -hålen, trimpots, stifthuvuden och vias bredvid mikro -USB (om du inte ska använda USB kan du löda andra 5V -strömkontakter/kablar här). Alla andra hål kan göras med 0,8 mm borr.
Steg 3: Lödning av elektroniska komponenter
Du kan börja med att täcka allt koppar med lödning (använd mejselspets och utför operationen på en yta som redan är täckt med flöde). Om det efter denna operation är för mycket löd vid vissa punkter, ta bort det med avlödningstråd. Om några spår löstes i etsningslösning, ersätt dem med tunna trådar. Sedan kan du börja lödda andra komponenter, även om jag rekommenderar att du kommer att vänta med höga och skrymmande saker runt platsen för MCU till slutet. Använd anständigt flöde när du gör elektriska anslutningar.
MCU i LQFP-48-paketet är det svåraste att löda. Börja med att rikta in den, löd bara en ledning nära förpackningens hörn och sedan en annan ledning på motsatt sida för att säkra MCU i sin position. Täck därefter rader eller ledningar i flöde och löd dem försiktigt till kopparspåren med mejselspetsen. Se till att du inte böjer ledningarna bakåt, om du gör det kan du försöka skjuta nålblåsrader med ledningar och trycka ut tappen. Eller om du verkligen är rädd för det, placera nålen där redan innan du börjar lödning. Kontrollera att inga kortslutningar görs och elektriska anslutningar leder, enkel multimeter med kontinuitetstester bör vara tillräcklig (det kan möjligen förstöra integrerad krets, men min överlevde testning). Om du har gjort någon kortslutning, placera avlödningstråd ovanpå den och börja värma. Om kopparspår på PCB skadades, använd en mycket tunn tråd för att ersätta den. Det är möjligt att löda tråd direkt till ledningarna på LQFP med konisk fin spets. Jag gjorde det några gånger, mestadels för att jag skadade spåren vid avlödning av MCU som var bortom något hopp efter första försöket att lödda det (det kan göras genom att bända stift med nål). Jag hoppas uppriktigt att du får det rätt första gången.
Andra IC: er liknar och bör lödas på samma sätt, men de har mindre mängd större leads, så de bör inte ställa till någon större utmaning. LM1117 har en stor flik som ska lödas i koppar, men det är svårt att värma upp det ordentligt med vanligt lödkolv, så om du får det att hålla fast vid kretskortet och täcker sidorna med en viss mängd löd bör det vara tillräckligt.
Vissa THT -komponenter måste lödas från båda sidor av brädet. Vid trimpots och lysdioder är det ganska rakt fram. Vid lödning av stifthuvuden, skjut plasten högre upp än den borde vara före denna operation, löd sedan alla stiften från båda sidor och skjut sedan tillbaka plasten till ursprungsläget. Vid lödning av kvartskristall, vid första positionen högre upp än nödvändigt, löd ledningarna från båda sidor, och tryck sedan ner kristallen medan du värmer dem från bälgen. Observera att jag också lindade in kristallhöljet i tråd och sedan lödde tråd till marken (den stora kopparfyllningen till vänster och drog kristallen). Innan jag lödde delar av VGA -kontakten som gick in i 3 mm hål, lödde jag några trådar till kopparen på båda sidor för att se till att båda kopparlagren är anslutna, och först då lödde jag av skärmningsledningar. Vias kan göras genom att placera större tråd inuti hålet (till exempel oanvänd längd på THT -komponentledningen), löda den från båda sidor av kretskortet och sedan skära onödiga delar.
Vid lödning av USB-kontakt kan du använda konisk fin spets för de små ledningarna.
När du tror att du har lödt allt bör du återigen kontrollera att det inte finns några kortslutningar eller dåliga anslutningar.
Steg 4: Programmering av STM32 -mikrokontroller
För att utveckla AODMoST 32 firmware använde jag System Workbench för STM32 (Linux Version), som använder OpenOCD för att programmera mikrokontroller. Du hittar detaljerade instruktioner om hur du importerar detta projekt till SW4STM32 inuti sw4stm32_configuration_1.00.pdf -filen.
Alternativt kan du använda ST-LINK Utility (STSW-LINK004). Jag testade Windows -versionen och det fungerade bra med aodmost_32_1.00.bin
Jag använde en billig klon av ST-LINK/V2 som min programmerare, vilket inte är idealiskt, men det fungerade. För att programmera MCU behövde jag driva AODMoST 32 från USB-porten och ansluta 3 bygelkablar med 2,54 mm honkontakter till programmeraren på ena sidan och SW-DP-porten på AODMoST 32 på den andra. Du måste ansluta GND, SWCLK och SWDIO. Vid programmering, se till att programvaran är inställd för att utföra programvarusystemåterställning.
aodmost_32_1.00.bin och aodmost_32_1.00.elf -filer som behövs för att programmera MCU finns i aodmost_32_all_files_1.00.zip -arkivet.
Flashminnet i MCU bör vara tomt innan du programmerar, annars kan gamla data kvar i de sista 4 kB av det störa lagring och laddning av inställningar.
Steg 5: Användning av AODMoST 32
Nu kan du ansluta grafikkortet eller spelkonsolen till VGA IN, ansluta din 3D -skärm till VGA OUT och 5V strömförsörjning till mikro -USB. När AODMoST 32 drivs väntar den på videosignalen (och detektering av polarisering av synkpulser). Det signaleras genom att den röda LEDEN INGEN SIGNAL lyser. Också blå lysdioder bör ständigt tändas. Om de blinkar betyder det att något är fel med 8MHz HSE -kristall. Under denna tid kan du trycka på knapparna för att kontrollera om de är korrekt anslutna. Om minst en knapp trycks in lyser gula lysdioder. När två eller flera knappar trycks in tänds också vita lysdioder. När videosignal detekteras startar uppstartssekvensen. Den består av att varannan lysdiod i rad tänds (0b10101010) i 300 ms, sedan slås fyra andra lysdioder på i 300 ms (0b01010101). Det är klart, så att du kan kontrollera att lysdioder är korrekt anslutna till MCU.
Enheten har 4 arbetssätt. Som standard startar den i MODE 0: VIDEO PASS-THROUGH. Det finns också MODE 1: TOP - BOTTOM, MODE 2: SIDE BY SIDE och MODE 3: FREE FLOATING OBJECT. Det finns 6 sidor med inställningar. De med siffrorna 0 och 3 innehåller inställningar av frekvens/period, ocklusionshastighet, objekt som är på/av och så. Sidorna 1 och 4 innehåller positionsinställningar medan sidorna 2 och 5 innehåller storleksinställningar. Genom att trycka på MODE + PAGE -knapparna återställer du standardinställningarna i alla lägen. Det finns också alternativ för att ändra objektformer, införa maskmönster och randomisera några av inställningarna. Du kan läsa mer om hur du konfigurerar AODMoST 32 i manual_1.00.pdf
En möjlig källa till 3D -innehåll i Top - Bottom eller Side By Side -format är datorspel. Om du använder GeForce -grafikkort kan många spel från den här listan ändras till utdata i kompatibelt format. I grund och botten måste du använda 3DMigoto -baserade mods/fixar, som gör att du kan mata ut SBS/TB 3D till valfri skärm efter att inte ha kommenterat "run = CustomShader3DVision2SBS" i "d3dx.ini" mod/fix konfigurationsfil. För att få en bra bildkvalitet måste du också inaktivera 3D Vision Discover -nyans i NVIDIA -drivrutiner. Du måste ändra "StereoAnaglyphType" till "0" i "HKLM / SOFTWARE / WOW6432Node / NVIDIA Corporation / Global / Stereo3D \". Du kan läsa mer om detta här.
I nya versioner av Nvidia -drivrutiner måste du låsa registernyckeln. För att öppna Registerredigeraren, tryck på WIN+R, skriv sedan regedit och tryck på RETUR. Att låsa en nyckel kräver att du högerklickar på den, väljer Behörigheter, Avancerad, Inaktivera arv, bekräftar inaktivering av arv, går tillbaka till Tillståndsfönster och slutligen kryssar i Neka rutor för alla användare och grupper som kan kryssas av och bekräftas med ett klicka på OK -knappen. Observera att det kan finnas ett behov av att ändra värden för "LeftAnaglyphFilter" "RightAnaglyphFilter" också. Om du vill göra några ändringar måste du låsa upp registernyckeln genom att avmarkera avvisningsrutorna eller aktivera arv. Om du har problem med att aktivera 3D Vision i första hand, eftersom installationsguiden i NVIDIA -kontrollpanelen kraschar, måste du ändra "StereoVisionConfirmed" till "1" i "HKLM / SOFTWARE / WOW6432Node / NVIDIA Corporation / Global / Stereo3D \”. Detta möjliggör 3D Vision i Discover -läge. Tyvärr slutade Nvidia att stödja 3D Vision, så den senaste drivrutinsversionen som kan användas är 425.31, men om du verkligen vill använda en nyare version kan du prova detta.
Det finns andra sätt att skaffa 3D -spel. Du kan prova SuperDepth3D, en ReShade-skuggare efter processen. GZ3Doom (ViveDoom) stöder inbyggt 3D och kan spelas utan någon speciell programvara. Windows -versioner av Rise of the Tomb Raider och Shadow of the Tomb Raider har inbyggt stöd för Side by Side 3D.
Alternativt kan du också använda Xbox 360, som stöder VGA -utgång och har några spel som stöder 3D i Top - Botom eller Side by Side. Här kan du hitta en lista över Xbox 360-spel som stöder 3D (även om det finns några misstag i den här listan, till exempel en kopia av Halo: Combat Evolved Anniversary som jag testade stöder inte Top-Bottom, varken SBS).
Naturligtvis kan du också hitta filmer i Top - Bottom eller Side By Side -format och spela dem på en mängd olika hårdvaror.
I galleriet hittar du följande spel:
- James Camerons Avatar: The Game, SBS, Xbox 360
- Gears of War 3, SBS, Xbox 360
- The Witcher 3: Wild Hunt, TB, PC
- Rise of the Tomb Raider, SBS (enheten är inställd på MODE 3: FREE FLOATING OBJECTS), PC
Steg 6: Designöversikt
VGA -signalen har tre komponentfärger: röd, grön och blå. Var och en av dem skickas genom separat tråd, med intensiteten av komponentfärg kodad till spänningsnivå som kan variera mellan 0V och 0,7V. AODMoST 32 ritar objekt (överlagring) genom att ersätta färgsignal som genereras av grafikkort med spänningsnivå som tillhandahålls av transistorer Q1-Q3 i emitterföljarkonfiguration, som konverterar spänningsimpedans på ett 2k7-motstånd-1k trimpotspänningsdelare. Växling av signaler sker med STMAV340 analog multiplexer/demultiplexer.
Tidpunkten för denna omkoppling hålls av avancerad kontrolltimer (TIM1) för MCU, som använder alla fyra av sina jämförelsesregister för att driva utgångarna. Status för dessa utdata bearbetas sedan av 3 snabba NAND -grindar. Det fungerar så här: HSync pulsåterställningstimrar Counter. Jämför 1 Registrera kontroller när du ska börja rita första objektet på en rad, Jämför 2 Registrera när du ska stoppa det. Jämför 3 Registrera kontroller när du ska börja rita andra objektet i en rad, Jämför 4 Registrera när du ska stoppa det. När ett tredje objekt behövs används jämförelseregister 1 och 2 igen. NAND -grindar är anslutna på ett sådant sätt att de skickar signal till multiplexern som ersätter originalvideon, när paret Jämför kanaler berättar att objektritningen har börjat, men inte är klar än.
Horisontella och vertikala synkroniseringspulser varierar i spänningsnivå mellan 0V och 5V och ledningar som bär dem är direkt anslutna till STM32F103C8T6 5V toleranta avbrottsstift som är konfigurerade som ingångar med hög impedans.
Enheten förbrukar cirka 75 mA.