Innholdsfortegnelse:
- Trinn 1: Ansvarsfraskrivelse
- Trinn 2: Lag PCB ved hjelp av toneroverføringsmetode
- Trinn 3: Lodding av elektroniske komponenter
- Trinn 4: Programmering av STM32 mikrokontroller
- Trinn 5: Bruk av AODMoST 32
- Trinn 6: Designoversikt
Video: Alternativt okkludert dikoptisk modifikator for stereoskopisk overføring 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:20
Jeg har en stund jobbet med en etterfølger til den originale AODMoST. Ny enhet bruker raskere og bedre 32-biters mikrokontroller og raskere analog videobryter. Det gjør at AODMoST 32 kan jobbe med høyere oppløsninger og implementere nye funksjoner. Enheten kan nå også drives av USBs 5V spenning.
Den største nye funksjonen er implementering av enkel mønstret bildemaske for det ene øyet og invers mønstret maske for det andre, lik den som presenteres i denne artikkelen: Dikoptisk filmvisning behandler barndomsamblyopi. Det er også flere tilpasningsmuligheter for form, posisjon og konstant randomisering av disse parameterne.
Jeg bør påpeke at jeg ikke har implementert alle ideene jeg hadde, og fastvaren kan videreutvikles. Men jeg regner med at på grunn av sosioøkonomiske problemer vil jeg ikke kunne jobbe med dette prosjektet i overskuelig fremtid, så jeg publiserer det som det er. Firmware kan nå fungere med 3D -innhold i Top - Bottom og Side by Side -formater og ble testet med Nvidia GPU -utstyrt PC og Xbox 360.
2020-11-26 OPPDATERING: Jeg klarte endelig å lage MODE 3: GRATIS FLYTENDE OBJEKTER. Det er inkludert i versjon 1.00 av fastvaren. Denne nye programvaren har også få små justeringer. For eksempel har nå alle modusene separate innstillinger for form, maske og randomisering som lagres når enheten slås av. Jeg kommer til å beholde eldre filer (fra versjon 0.50 av fastvaren, når det ikke er versjonsinformasjon i filnavnet, betyr det at dette er denne gamle fastvaren) i tilfelle 1.00 -versjonen på en eller annen måte er feil.
Du kan laste ned kildekode, skjematisk, PCB, brukermanual, etc. for dette prosjektet her:
aodmost_32_all_files_1.00.zip
aodmost_32_all_files.zip
Rekvisita:
Deler og materialer:
- STM32F103C8T6 mikrokontroller (LQFP-48)
- 74AC00 quad NAND gate (SOIC-14, 3,9 mm smal)
- STMAV340 analog videobryter (TSSOP-16)
- LM1117-3.3 spenningsregulator (TO-263)
- 3x BC817 transistor (SOT-23)
- 3x hvit 3mm LED
- 2x diffust gul 3 mm LED
- diffus rød 3 mm LED
- 2x diffus blå 3mm LED
- diffus grønn 3 mm LED
- 8 MHz krystall (HC49-4H)
- mikro USB type B hunnkontakt (merk at det er mange typer dem, og noen er kanskje ikke kompatible med hullene i PCB -designet, du kan hoppe over USB helt, ettersom USB bare brukes som 5V strømforsyning)
- 2x D-SUB 15-pinners rettvinklet kvinnelig VGA-kontakt (merk at det er mange typer, og du trenger en lengre versjon med pinner som vil bearbeide hull i kretskortet)
- 2 -pins 2,54 mm rett hannstift
- 3 -pinners 2,54 mm rett hannstift
- 11x 6x6mm taktile bryterknapper 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 motstand
- 4x 4k7 1206 motstand
- 3x 2k7 1206 motstand
- 2x 1k 1206 motstand
- 3x 470 ohm 1206 motstand
- 3x 75 ohm 1206 motstand
- 3x 10 ohm 1206 motstand
- dobbeltsidig kobberbelagt brett (minst 79.375x96.901mm)
- noen stykker kobbertråd (spesielt noe med liten diameter som 0,07 mm kan komme godt med hvis du skal reparere ødelagt spor ved siden av ledninger til LQFP mikrokontroller)
Verktøy:
- diagonal kutter
- tang
- flat skrutrekker
- pinsett
- verktøykniv
- fil
- midtstans
- hammer
- liten nål
- 1000 sand tørt/vått sandpapir
- tørkepapir
- sag eller annet verktøy som kan kutte PCB
- 4x 0,8 mm bor
- 1 mm bor
- 3 mm bor
- drill pres eller roterende verktøy
- natriumpersulfat
- plastbeholder og plastverktøy som kan brukes til å ta PCB ut av etsningsløsning
- brunt pakkingstape
- isoleringstape
- multimeter
- loddestasjon
- konisk finpunkts loddetipp
- meisel loddetips
- loddetinn
- loddefluks (jeg brukte RMA -klasse, fluxgel beregnet for montering og reparasjon av SMT, som kom i 1,4 cm^3 sprøyte)
- avlodningstråd
- laserskriver
- glanset papir
- strykejern
- kremrenser
- aceton
- gni alkohol
- fast produsent
- ST-LINK/V2 (eller klon av den) + kabler som kan koble den til AODMoST 32 + programvare som kan bruke programmereren
Trinn 1: Ansvarsfraskrivelse
Bruk av en slik enhet kan forårsake epileptiske anfall eller andre negative effekter hos en liten del av brukerne. Konstruksjon av en slik enhet krever bruk av moderat farlige verktøy og kan forårsake skade eller skade på eiendom. Du bygger og bruker beskrevet enhet på egen risiko
Trinn 2: Lag PCB ved hjelp av toneroverføringsmetode
Du må skrive ut speilbilde av F. Cu (forsiden) og normalt bilde av B. Cu (baksiden) på glanset papir ved hjelp av laserskriver (uten innstillinger for tonersparing). Eksterne dimensjoner på utskrevne bilder skal være 79.375x96.901mm (eller så nært du kan komme). Klipp PCB til størrelsen på det trykte bildet. Du kan legge til noen få mm på hver side av PCB hvis du vil. Jeg personlig liker å gjøre det ved å lage en dyp rad langs hele laminatlengden med en kniv (du må kutte hele lengden noen ganger), og deretter gjenta prosessen fra den andre siden. Når radene er dype nok, brytes hele laminatet lett i to. Du må utføre prosessen med å bryte laminatet to ganger, fordi du må ha riktig lengde og bredde på det resulterende stykket. Mindre stykker laminat kan brytes med bruk av tang (pass på at du ikke klør for mye i kobber, bruk et beskyttende lag papir, for eksempel mellom tang og PCB). Nå bør du glatte kantene på det resulterende brikkestykket med filen.
Deretter må du rense kobberlag med fuktet fint sandpapir, og deretter fjerne partikler som er igjen av sandpapir med kremrens (du kan også bruke oppvaskmiddel eller såpe). Rengjør den deretter med sprit. Etter det bør du være veldig forsiktig så du ikke berører kobber med fingrene.
Nå er det på tide å klippe ark med speilbilde av F. Cu til en mer håndterlig størrelse (la noen cm være rundt det ytre rektangelet) og legge det på klesjernet (toner opp). Du kan holde jern mellom lårene, men vær veldig forsiktig med at en strykesål konstant er oppe og ikke berører noe. Legg deretter kretskortet på glanset papir (rengjort toner på siden) og slå på strykejernet (bruk full effekt). Etter en kort stund skal papir holde seg til PCB. Du kan bruke et tøystykke eller et håndkle til å skyve brettet mot papiret og flytte papiret litt fast på PCB. Vent minst noen minutter til papiret endrer farge til gult. Dessverre må du bestemme riktig tidspunkt for å stoppe overføringsprosessen eksperimentelt, så hvis bildet på kobberet har veldig dårlig kvalitet, må du rengjøre toner med aceton, sand og vaskebrett igjen og starte hele prosessen fra begynnelsen.
Når du tror at toneroverføringen er fullført, legger du PCB med papir i vann (du kan legge til kremrens eller oppvaskmiddel) i 20 minutter. Gni deretter papir fra PCB. Hvis det er steder hvor toneren ikke klistrer seg til kobber, bruk permanent markør for å bytte ut toneren.
Nå må du merke midten av fire tomme mellomrom i hjørnene på PCB med et slag. Senere vil disse sentrene bli boret, og de resulterende hullene brukes til å justere begge sider av PCB.
Deretter må du dekke baksiden av laminatet med brunt pakningstape. Bland ferskvann med natriumpersulfat og ha PCB i etsningsløsningen. Prøv å holde løsningen ved 40 ° C. Du kan legge plastbeholder på toppen av radiatoren eller en annen varmekilde. Av og til blandes løsningen i beholderen. Vent til avdekket kobber er helt oppløst. Når det er gjort, fjern PCB fra løsningen og skyll den i vann. Skrell pakkingstape. Fjern toner med aceton (neglelakkfjerner bør inneholde ganske mye av det). På dette tidspunktet kan du begynne å fjerne eventuelle kortslutninger med en kniv.
Bor nå fire justeringshull ved å bruke 0,8 mm bor. Deretter borer du tilsvarende hull gjennom papiret med bildet av B. Cu ved hjelp av samme 0,8 mm bor. Når dette er gjort, slip og rengjør PCB -en. Legg deretter brettet på en flat overflate (renset kobber på toppen), dekk det med glanset papir som holder bildet av B. Cu (toner ned) og legg fire 0,8 mm bor i hullene (rund del ned) for å beholde papir og laminatet justert. Nå bør du forsiktig berøre papiret med spissen av varmt klærjern en kort stund, slik at papir og kretskort henger fast på hverandre. Fjern deretter borene, legg jern mellom lårene og legg papir med laminatet på toppen av strykejernet og gjenta prosedyren for overføring av toner. Senk papir i vann for å fjerne det og erstatte eventuell manglende toner med permanent markør.
Nå må du dekke forsiden av PCB med pakningstape, så vel som bak rundt allerede borede hull. Ets deretter på baksiden på samme måte som du gjorde på forsiden, ta av tapen, fjern toneren og begynn å jakte på kortslutninger.
Du må også bore resten av hullene i kretskortet. Det er fire 3 mm hull for montering av VGA -kontakter. 1 mm hull brukes til resten av VGA -hullene, trimpots, pinhoder og vias ved siden av micro USB (hvis du ikke skal bruke USB, kan du lodde andre 5V strømkontakter/kabler her). Alle andre hull kan lages med 0,8 mm bor.
Trinn 3: Lodding av elektroniske komponenter
Du kan begynne med å dekke alt kobber med loddetinn (bruk meiselspiss og utfør operasjonen på overflaten som allerede er dekket av fluss). Hvis det etter denne operasjonen er for mye lodd på noen punkter, fjern det med avlodningstråd. Hvis noen spor ble oppløst i etsningsløsning, bytt dem ut med tynne ledninger. Deretter kan du begynne å lodde andre komponenter, selv om jeg anbefaler at du vil vente med store og store ting rundt stedet for MCU til slutten. Bruk anstendig mengde fluks når du lager elektriske tilkoblinger.
MCU i LQFP-48-pakken er det vanskeligste å lodde. Start med å justere den, lodde bare en ledning nær toppunktet på pakken, og deretter en annen ledning på motsatt side, for å sikre MCU i sin posisjon. Dekk deretter rader eller ledninger i flux og lodd dem forsiktig til kobbersporene med meiselspissen. Pass på at du ikke bøyer ledninger bakover. Hvis du gjør det, kan du prøve å skyve nåleslag med ledninger og skyve pinnen ut. Eller hvis du virkelig er redd for det, legg nålen der allerede før du begynner å lodde. Kontroller at det ikke oppstår kortslutninger og elektriske tilkoblinger, et enkelt multimeter med kontinuitetstester bør være tilstrekkelig (det kan muligens ødelegge integrert krets, men min overlevde testing). Hvis du har gjort noen kortslutning, plasserer du avlodningstråd på toppen av den og begynner å varme opp. Hvis kobberspor på PCB ble skadet, bruk en veldig tynn tråd for å erstatte den. Det er mulig å lodde ledningen direkte til ledningene til LQFP med en konisk fin spiss. Jeg gjorde det noen ganger, hovedsakelig fordi jeg ødela spor når jeg loddet MCU som var utenfor håpet etter første forsøk på å lodde det (det kan gjøres ved å lirke pinner med nål). Jeg håper inderlig at du får det riktig første gangen.
Andre ICer er like og bør loddes på samme måte, men de har mindre mengder større leads, så de bør ikke utgjøre mye utfordring. LM1117 har en stor tapp som skal loddes til kobberet, men det er vanskelig å varme det tilstrekkelig med vanlig loddejern, så hvis du får det til å feste seg til PCB og dekker sidene med en viss lodde, bør det være nok.
Noen THT -komponenter må loddes fra begge sider av brettet. Ved trimpots og lysdioder er det ganske rett frem. Ved lodding av pinnehoder, skyv plasten høyere opp enn den burde være før denne operasjonen, lodd deretter alle pinnene fra begge sider, og skyv deretter plasten tilbake til opprinnelig posisjon. Ved lodding av kvartskrystall, ved første posisjonering den høyere opp enn nødvendig, lodder du ledningene fra begge sider, og deretter skyver du krystallet lavere mens du oppvarmer dem fra belgen. Legg merke til at jeg også pakket krystallkassen inn i wire og deretter loddetråd til bakken (den store kobberfyllingen til venstre og bølget krystallet). Før jeg loddet deler av VGA -kontakten som går inn i 3 mm hull, loddet jeg noen ledninger til kobberet på begge sider for å være sikker på at begge lagene av kobber er koblet til, og først da loddet jeg skjermeledninger. Vias kan lages ved å plassere større ledning inne i hullet (for eksempel ubrukt lengde på THT -komponentledningen), lodde den fra begge sider av kretskortet og deretter kutte unødvendige deler.
Ved lodding av USB-kontakten kan du bruke konisk fin spiss for de små ledningene.
Når du tror du loddet alt, bør du sjekke igjen at det ikke er kortslutninger eller dårlige forbindelser.
Trinn 4: Programmering av STM32 mikrokontroller
For å utvikle AODMoST 32 firmware brukte jeg System Workbench for STM32 (Linux versjon), som bruker OpenOCD til å programmere mikrokontroller. Du finner detaljerte instruksjoner om hvordan du importerer dette prosjektet til SW4STM32 inne i sw4stm32_configuration_1.00.pdf -filen.
Alternativt kan du bruke ST-LINK Utility (STSW-LINK004). Jeg testet Windows -versjonen, og det fungerte bra med aodmost_32_1.00.bin
Jeg brukte en billig klone av ST-LINK/V2 som min programmerer, noe som ikke er ideelt, men det fungerte. For å programmere MCU trengte jeg å koble AODMoST 32 fra USB-porten og koble 3 jumperkabler med 2,54 mm hunnkontakter til programmereren på den ene siden og SW-DP-porten på AODMoST 32 på den andre. Du må koble til GND, SWCLK og SWDIO. Når du programmerer, må du kontrollere at programvaren er satt til å utføre tilbakestilling av programvaresystemet.
aodmost_32_1.00.bin og aodmost_32_1.00.elf -filer som trengs for å programmere MCU, er inne i aodmost_32_all_files_1.00.zip -arkivet.
Flash -minne til MCU bør være tomt før du programmerer, ellers kan noen gamle data igjen i de siste 4 kB av det forstyrre lagring og lasting av innstillinger.
Trinn 5: Bruk av AODMoST 32
Nå kan du koble grafikkortet eller videospillkonsollen til VGA IN, koble 3D -skjermen til VGA OUT og 5V strømforsyning til mikro -USB. Når AODMoST 32 får strøm, venter den på videosignalet (og påvisning av polarisering av synkpulser). Det signaliseres ved at rødt NO SIGNAL LED lyser. Også blå lysdioder bør hele tiden slås på. Hvis de blinker, betyr det at noe er galt med 8MHz HMS -krystall. I løpet av denne tiden kan du trykke på knappene for å sjekke om de er riktig tilkoblet. Hvis du trykker på minst én knapp, lyser gule lysdioder. Når du trykker på to eller flere knapper, lyser også hvite lysdioder. Når videosignal oppdages, starter oppstartssekvensen. Den består av at hver andre LED på rad lyser (0b10101010) i 300 ms, deretter er fire andre LEDer slått på i 300 ms (0b01010101). Det er gjort, slik at du kan sjekke at lysdioder er koblet ordentlig til MCU.
Enheten har 4 arbeidsmåter. Som standard starter den i MODUS 0: VIDEO PASS-THROUGH. Det er også MODUS 1: TOPP - BUNN, MODUS 2: SIDE FOR SIDE og MODE 3: GRATIS FLYTENDE OBJEKTER. Det er 6 sider med innstillinger. De med tall 0 og 3 inneholder innstillinger for frekvens/periode, okklusjonsfrekvens, objekter som er på/av og slikt. Sidene 1 og 4 inneholder posisjonsinnstillinger mens sidene 2 og 5 inneholder størrelsesinnstillinger. Ved å trykke på MODE + PAGE -knappene gjenoppretter du standardinnstillingene i alle moduser. Det er også alternativer for å endre objektformer, introdusere maskemønster og randomisere noen av innstillingene. Du kan lese mer om hvordan du konfigurerer AODMoST 32 i manual_1.00.pdf
En mulig kilde til 3D -innhold i Top - Bottom eller Side By Side -format er dataspill. Hvis du bruker GeForce -skjermkort, kan mange spill fra denne listen endres til utdata i kompatibelt format. I utgangspunktet må du bruke 3DMigoto -baserte mods/reparasjoner, som lar deg sende SBS/TB 3D til en hvilken som helst skjerm etter at du ikke har kommentert “run = CustomShader3DVision2SBS” i “d3dx.ini” mod/fix konfigurasjonsfil. For å få en god bildekvalitet må du også deaktivere 3D Vision Discover -fargetone i NVIDIA -drivere. Du må endre “StereoAnaglyphType” til “0” i “HKLM / SOFTWARE / WOW6432Node / NVIDIA Corporation / Global / Stereo3D \”. Du kan lese mer om dette her.
I nye versjoner av Nvidia -drivere må du låse registernøkkelen. For å åpne Registerredigering, trykk WIN+R, skriv deretter regedit og trykk ENTER. Hvis du låser en nøkkel, må du høyreklikke på den, velge Tillatelser, Avansert, Deaktiver arv, bekrefte deaktivering av arv, gå tilbake til Tillatelsesvindu og til slutt krysse Avslag -bokser for alle brukere og grupper som kan krysses av og bekrefte det med et klikk på OK -knappen. Vær oppmerksom på at det kan være behov for å endre verdiene for "LeftAnaglyphFilter" "RightAnaglyphFilter" også. Hvis du vil gjøre noen endringer, må du låse opp registernøkkelen ved å fjerne merket for avvisningsboksene eller aktivere arv. Hvis du har problemer med å aktivere 3D Vision i utgangspunktet, fordi oppsettveiviseren i NVIDIA Kontrollpanel krasjer, må du endre "StereoVisionConfirmed" til "1" i "HKLM / SOFTWARE / WOW6432Node / NVIDIA Corporation / Global / Stereo3D \”. Dette vil aktivere 3D Vision i Discover -modus. Dessverre sluttet Nvidia å støtte 3D Vision, så den nyeste driverversjonen som kan brukes er 425.31, men hvis du virkelig vil bruke en nyere versjon, kan du prøve dette.
Det er andre måter å få 3D -spill på. Du kan prøve SuperDepth3D, en ReShade-prosessor-skygge. GZ3Doom (ViveDoom) støtter 3D og kan spilles uten spesiell programvare. Windows -versjoner av Rise of the Tomb Raider og Shadow of the Tomb Raider har innebygd støtte for Side by Side 3D.
Alternativt kan du også bruke Xbox 360, som støtter VGA -utgang og har noen få spill som støtter 3D in Top - Botom eller Side by Side. Her kan du finne en liste over Xbox 360-spill som støtter 3D (selv om det er noen feil i denne listen, for eksempel en kopi av Halo: Combat Evolved Anniversary som jeg testet ikke støtter Top-Bottom, verken SBS).
Selvfølgelig kan du også finne filmer i Top - Bottom eller Side By Side -format og spille dem på et stort utvalg av maskinvare.
I galleriet finner du følgende spill:
- 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 er satt til MODE 3: FREE FLOATING OBJECTS), PC
Trinn 6: Designoversikt
VGA -signalet har tre komponentfarger: rød, grønn og blå. Hver av dem sendes gjennom separat ledning, med intensiteten til komponentfarge kodet til spenningsnivå som kan variere mellom 0V og 0,7V. AODMoST 32 tegner objekter (overlegg) ved å erstatte fargesignal generert av skjermkort med spenningsnivå levert av transistorer Q1-Q3 i emitterfølge-konfigurasjon, som konverterer spenningsimpedans på en 2k7 motstand-1k trimpot spenningsdeler. Bytte av signaler utføres av STMAV340 analog multiplexer/demultiplexer.
Tidspunktet for denne vekslingen holdes av avansert kontrolltimer (TIM1) til MCU, som bruker alle fire sammenligningsregistrene til å drive utgangene. Tilstanden til disse utgangene blir deretter behandlet av 3 raske NAND -porter. Det fungerer slik: HSync puls reset timers Counter. Sammenlign 1 Registrer kontroller når du skal begynne å tegne det første objektet på en linje, Sammenlign 2 Registrer når du skal stoppe det. Sammenlign 3 Registrer kontroller når du skal begynne å tegne andre objekt på en linje, Sammenlign 4 Registrer når du skal stoppe det. Når det tredje objektet er nødvendig, brukes sammenligningsregister 1 og 2 igjen. NAND -porter er koblet til på en slik måte at de sender signal til multiplexeren som erstatter originalvideoen, når par av sammenligningskanaler forteller at objekttegning har startet, men ikke er ferdig ennå.
Horisontale og vertikale synkroniseringspulser varierer i spenningsnivå mellom 0V og 5V, og ledninger som bærer dem er direkte koblet til STM32F103C8T6 5V tolerante avbryterpinner konfigurert som innganger med høy impedans.
Enheten bruker omtrent 75 mA.