<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Sidequest on Arturo Negrette</title>
        <link>https://gofortli.net/categories/sidequest/</link>
        <description>Recent content in Sidequest on Arturo Negrette</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Sat, 25 Apr 2026 14:50:00 +0000</lastBuildDate><atom:link href="https://gofortli.net/categories/sidequest/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>FPGA Projects</title>
            <link>https://gofortli.net/p/fpga/</link>
            <pubDate>Wed, 01 Apr 2026 14:50:00 +0000</pubDate>
            <guid>https://gofortli.net/p/fpga/</guid>
            <description>&lt;img src=&#34;https://gofortli.net/&#34; alt=&#34;Featured image of post FPGA Projects&#34; /&gt;&lt;h2 id=&#34;premise&#34;&gt;Premise&#xA;&lt;/h2&gt;&lt;p&gt;I was introduced to FPGAs during my undergrad as part of a new DAQ system created for testing our hybrid motors. They excel at moving and processing a lot of data quickly so they shine at anything ranging from that high-speed DAQ application to guidance, video processing, etc. It piqued my interest back then but now I have the free time to teach it to myself as an extra skill to aid in future projects.&lt;/p&gt;&#xA;&lt;p&gt;To get started, I&amp;rsquo;ve been studying the Russell Merrick &amp;lsquo;Getting Started With FPGAs&amp;rsquo; book, otherwise referred to as the &amp;lsquo;NANDLAND&amp;rsquo; book. It covers the basics for someone with zero background in Computer Engineering, and has helped me come up to speed with the basic concepts that allow FPGAs and computers in general to work. Logic gates, Flip-Flops, Registers, RAM, FIFOs and PLLs, as well as their implementation in Hardware Description Languages. I will be learning VHDL particularly because of its syntax, as it is more human readable and strongly-typed, keeping me from developing bad habits translating from serial programming languages over to HDLs. Due to the nature of HDLs and FPGAs in general, it&amp;rsquo;s detrimental to think in individual instructions when the code is being synthesized into circuitry within the FPGA. Additionally, VHDL is widely used in critical applications in Aerospace and Defense, so it applies more to my background than Verilog.&lt;/p&gt;&#xA;&lt;p&gt;These projects will all be developed for the Digilent BASYS3 FPGA, based on the AMD/Xilinx Artix 7 family of FPGAs, the chip in specific being the XC7A35T-1CPG236C. I chose AMD because I had already had the chance to play around with the Vivado toolchain and UCF uses these FPGAs to teach Computer Engineering courses, so I already had colleagues with experience to ask. There&amp;rsquo;s also plenty of on-board peripherals along with the Digilent Pmod ports to allow me to expand once I got comfortable developing on it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;first-project-vga-output&#34;&gt;First Project: VGA Output&#xA;&lt;/h2&gt;&lt;p&gt;An overarching goal for learning is eventually move onto graphics and video processing. I&amp;rsquo;d like to be able to apply overlays to high-resolution camera feeds and show it on a screen with minimal delay, something that microcontrollers somewhat struggle at similar price points. I&amp;rsquo;m getting started by implementing a basic VGA 640 x 480 signal output from scratch and moving onto other standards/larger resolutions later on.&lt;/p&gt;&#xA;&lt;h3 id=&#34;vga-standard&#34;&gt;VGA Standard&#xA;&lt;/h3&gt;&lt;p&gt;VGA is the most basic display standard to implement digitally. It&amp;rsquo;s heavily tied to the analog realm as its roots come from feeding the deflection coils of CRT monitors of yesteryear. It&amp;rsquo;s composed of 3 color signals and 2 synchronization signals. With careful timing via a pixel clock, the monitor can reconstruct a coherent image from the combination of these signals. The pixel clock determines the resolution and our horizontal and vertical sync pulses tell the monitor when to draw a new line and when to draw a new frame, respectively. Let&amp;rsquo;s focus on the sync side of things for now.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Horizontal Sync (Source:Digilent)&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;243px&#34; data-flex-grow=&#34;101&#34; height=&#34;421&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/fpga/hsync.png&#34; width=&#34;428&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;As pictured above, the horizontal sync pulse tells the monitor when a new frame begins/ends, and combined with the overall pixel clock, determines where on the screen any given pixel is being drawn. As mentioned before, the electron beam used to scan across the phosphors of the screen, so the sync pulse determined when the beam was supposed to be shot back to the left side of the screen in order to begin a new line.&lt;/p&gt;&#xA;&lt;p&gt;With older monitors, this electron beam needed a non-zero amount of time to slow down after finishing a scan line and moving onto the next one, as well as speeding up to a steady state before drawing the new line. Because of this limitation, built into the timing signals are a &amp;ldquo;front porch&amp;rdquo; and a &amp;ldquo;back porch&amp;rdquo;. They are blank portions of the scanning process that allowed some leeway for the beam to return to the start, and although not as critical for modern screens, it was grandfathered into the standard. For a 640 by 480 signal refreshing at around 60Hz, the front porch and back porch of the horizontal sync signal are 16 and 48 &amp;lsquo;pixels&amp;rsquo; each, respectively.&lt;/p&gt;&#xA;&lt;p&gt;With this in mind, 640 active pixels and a sync pulse width of 96 &amp;lsquo;pixels&amp;rsquo;, our total pixel length for a horizontal line comes up to 800 pixels total. This means that for every 800 pulses of our pixel clock, a new line is started. Notice, however, that for a large portion of the line we cannot output anything and those pixels are simply in there for timing. These are all guidelines to keep track of when designing the counters to drive our sync pulses and the rest of the screen. They&amp;rsquo;re extremely useful because at any given moment we know exactly where on the screen we&amp;rsquo;re supposed to be, which can be used to control output enable signals and even drive our memory addresses in order to put data on the screen where it&amp;rsquo;s supposed to be.&lt;/p&gt;&#xA;&lt;p&gt;To summarize:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Horizontal Timing Region&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Duration (in pixels)&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Active Pixels&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;640&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Front Porch&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;16&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Sync Width&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;96&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Back Porch&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;48&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Total Blanking Interval&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;160&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Total Horiz. Pixels&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;800&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Much like the horizontal lines, our circuit must also keep track of where on the frame we are vertically. For every vertical refresh, there are 480 horizontal sync pulses + the vertical front and back porch + the vertical sync pulse width, giving us a total of 525 lines. As an example, if the horizontal counter is at 350 and the vertical counter is at 350, it would put the &amp;lsquo;beam&amp;rsquo; at 350,350 within the active portion of the screen. If we&amp;rsquo;re at 750, 350, however, it can be implied that no output should be sent to the monitor.&lt;/p&gt;&#xA;&lt;p&gt;Similarly:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Vertical Timing Region&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Duration (in pixels)&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Active Pixels&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;480&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Front Porch&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;10&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Sync Width&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;2&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Back Porch&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;33&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Total Blanking Interval&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;45&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Total Horiz. Pixels&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;525&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;In terms of the pixel clock, for this resolution the specification calls for a clock running at 25.175MHz, which our FPGA PLLs cannot provide at our master clock frequency of 100MHz. Luckily, displays are designed with a +/- tolerance of 5% which puts a 25MHz clock in the valid zone. I am not responsible for damage to older CRT monitors where the timings are infinitely more relevant in order to keep the tube happy, but for modern LCD displays it SHOULDN&amp;rsquo;T damage anything. Later on, I plan to move onto 800 by 600 which runs at a perfectly round 40MHz, and all my code here will be designed with the ability to scale up and down.&lt;/p&gt;&#xA;&lt;h3 id=&#34;horizontal-and-vertical-sync&#34;&gt;Horizontal and Vertical Sync&#xA;&lt;/h3&gt;&lt;p&gt;Both pulses are active low, meaning the signal will go low for the duration of the pulse, and return to a high state when idle.&lt;/p&gt;&#xA;&lt;h3 id=&#34;video-addresses&#34;&gt;Video Addresses&#xA;&lt;/h3&gt;</description>
        </item><item>
            <title>Chronicles from a Film Lab Tech</title>
            <link>https://gofortli.net/p/noritsu-v50/</link>
            <pubDate>Thu, 11 Dec 2025 14:50:00 +0000</pubDate>
            <guid>https://gofortli.net/p/noritsu-v50/</guid>
            <description>&lt;img src=&#34;https://gofortli.net/&#34; alt=&#34;Featured image of post Chronicles from a Film Lab Tech&#34; /&gt;&lt;h1 id=&#34;background&#34;&gt;Background&#xA;&lt;/h1&gt;&lt;p&gt;I&amp;rsquo;ve been working at a film lab for the last couple of months, and the engineering degree immediately made itself useful by giving me the tools to keep some of these machines alive. Problems ranging from just corrosion within a sensor&amp;rsquo;s connector to open heart surgery on a board no longer made. For a glorified sous-vide tank, the Noritsu engineers put a lot of safeguards and smart engineering in place to keep these working as well as they have for as long as they have. I&amp;rsquo;m writing this article with the intention of logging whatever I find for whoever takes over for me, or whoever finds this website in similar despair as I have googled whenever something broke.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;V50 (larger), V30 (smaller)&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;229px&#34; data-flex-grow=&#34;95&#34; height=&#34;1655&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/Machines.jpeg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/Machines_hu_17952a38a5c9e334.jpeg 800w, https://gofortli.net/p/noritsu-v50/Machines.jpeg 1581w&#34; width=&#34;1581&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is the V50, relatively sophisticated MiniLab unit for C-41 Color Development. Short Leader style, which means you tape the film to a sheet of plastic with sprocket holes on it, and that&amp;rsquo;s what drags the film itself out of the can and into each step of the development process. The 50 in V50 stands for 50 rolls an hour, so not too shabby accounting for the fact a 36 exposure roll of film tends to be somewhere around 5 feet.&lt;/p&gt;&#xA;&lt;p&gt;In order to put the rest of the machine in context, let&amp;rsquo;s cover the development steps of Black and White and C-41 film:&lt;/p&gt;&#xA;&lt;p&gt;For both, the film is coated with silver halide crystals. Exactly how they are spread on the film and what they do during and after the development process varies between B/W, C-41, and every other development process available, but the working principle remains the same. After being exposed to light, these crystals are raised to a higher energy level, leaving a latent image stored chemically on the film emulsion.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Essential Steps of Development (Source:Wikipedia)&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;783px&#34; data-flex-grow=&#34;326&#34; height=&#34;784&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/Photographic_processing.jpg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/Photographic_processing_hu_66a9f9f3b14a747e.jpg 800w, https://gofortli.net/p/noritsu-v50/Photographic_processing_hu_ce909244847e1d58.jpg 1600w, https://gofortli.net/p/noritsu-v50/Photographic_processing_hu_95838d659b734671.jpg 2400w, https://gofortli.net/p/noritsu-v50/Photographic_processing.jpg 2560w&#34; width=&#34;2560&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;B/W&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Developer&lt;/strong&gt;: This step converts the latent image contained in the activated silver halide into metallic silver. This metallic silver only appears in the locations where light struck the emulsion. The stronger the light, the more concentrated the silver, the darker or &#34;denser&#34; the image is at this location, and the reverse applies as well. All of this to say that we now have a negative image of what was captured in the camera at that moment. &lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fixer&lt;/strong&gt;: After the developer, the image that matters to us is created. However, it&#39;s still surrounded by the inactive silver halides still in the emulsion. No light, no developer action, no metallic silver. The fixer can dissolve the halides but not metallic silver, which allows us to selectively remove the unused stuff and keep our image negative.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Easy stuff, we&amp;rsquo;ve been doing monochrome stuff essentially as long as we have been able to understand organic chemistry. B/W film made a year ago and 80 years ago work the exact same, and excluding the effects of age, can be developed the exact same way. Color, however, is where modernity truly shines through. Kudos to all the chemists and engineers that allowed us to record the world around us in more than shadows and highlights.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Superia Emulsion Cross-Section (Source:Wikipedia)&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;443px&#34; data-flex-grow=&#34;184&#34; height=&#34;520&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/SuperiaStructure.png&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/SuperiaStructure_hu_8319fca3a8637a07.png 800w, https://gofortli.net/p/noritsu-v50/SuperiaStructure.png 960w&#34; width=&#34;960&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;C-41&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Developer&lt;/strong&gt;: Still does the same as B/W, with the caveat that now the dye couplers (part that creates the colors) are activated and create the dyes of each layer. Fun fact, you can cross-process any C-41 roll as B/W, you just ignore the color couplers for a monochrome image. I&#39;ve managed to salvage pictures from obsolete C-22 rolls from 60+ years ago. Hard drives fail, files go corrupt, but in a decently wide range of conditions, chemistry prevails. Cool stuff.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bleach&lt;/strong&gt;: Due to the layout of a typical C-41 film emulsion, after development, you now have both a dye-based image, and the metallic silver image. Keeping both of these leads to super dense images with low saturation, and often it was used intentionally as a color grading effect in movies and TV in a method called &#34;bleach bypass&#34;. The bleach attacks this metallic image and converts it back to silver halides, which can now be removed by the fixer. It also helps reducing the density of the dyes in the film base.&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Fixer&lt;/strong&gt;: Same as B/W. Fixer actually holds quite a decent amount of silver, so it&#39;s very important to dispose of properly and feed it to silver reclaiming facilities. Not that any other chemical is great for carelessly dumping into the environment, but the fixer carries metals with it that are specially bad to introduce into an ecosystem. &#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Stabilizer&lt;/strong&gt;: The dyes contained on each layer are technically not fixed in space, and age, environmental factors, and improper handling of the film can lead to them migrating between layers. The end effect is a reduction in the color reproduction quality, so stabilizers are used to &#34;lock&#34; the dyes out of escaping their layer. You can very well skip this step if you are just looking for a glorified Instagram filter, but in order to produce negatives that can withstand the test of time, stabilization is crucial.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;I&amp;rsquo;d love to get into detail about the careful design of color emulsions, but so have another 500 trillion people on the internet, so I will unfortunately not elaborate here. Google it, watch Tech Connections about it, don&amp;rsquo;t use this case of brevity as an excuse to avoid learning about film.&lt;/p&gt;&#xA;&lt;p&gt;Our machine feeds the leader card and the film it&amp;rsquo;s attached to into a very deep 18 Liter Color Developer (CD) tank at a speed that allows for each length of film to be in contact with the CD solution, while automatically adding a replenishment amount of fresh chemical to account for exhaustion per roll. All the chemicals involved in these reactions are disposable and need to be replenished accounting for the surface area that passes through. The film is continued to be carried in and out of the solutions automagically by careful mechanical design of roller transports like conveyors through a factory. The machine doesn&amp;rsquo;t actually know where this film is, but it vaguely knows when it started being fed and when the canister was cut off at the end, and it knows how fast everything is spinning and moving the film along. So it starts counting and can make an educated guess as to where it&amp;rsquo;d be and what chemicals would be exhausted at which times.&lt;/p&gt;&#xA;&lt;p&gt;At the end, it passes through essentially a gentler air fryer before being released fully dry for it to be scanned and/or sleeved for preservation. Almost magical coming from my background of hanging up film from my shower curtain loops.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Noritsu QSF-V30&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;261px&#34; data-flex-grow=&#34;109&#34; height=&#34;1466&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/v50.jpg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/v50_hu_8d340734c41ad5a7.jpg 800w, https://gofortli.net/p/noritsu-v50/v50.jpg 1600w&#34; width=&#34;1600&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve neglected to mention much about the modified V30 that develops B/W, but it&amp;rsquo;s the same principles and same tech, just behaving differently to accomodate for the different chemistry. Both operate the same. Now, let&amp;rsquo;s get into it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;repair-log&#34;&gt;Repair Log&#xA;&lt;/h2&gt;&lt;h3 id=&#34;most-recent-bw-intermittent-bootlooping&#34;&gt;Most Recent: B/W Intermittent &amp;ldquo;Bootlooping&amp;rdquo;&#xA;&lt;/h3&gt;&lt;h4 id=&#34;symptoms&#34;&gt;Symptoms&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Machine goes into a cycle of booting and self-testing, encountering some error and powering down, then repeating the cycle.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Initially only happened at the end of a roll, right after cutting the canister off. One reboot cycle and it would continue as normal.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Progressed to continously turning off and on again.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;troubleshooting--false-solution&#34;&gt;Troubleshooting + False Solution&#xA;&lt;/h4&gt;&lt;p&gt;My initial assumption was an intermittent short in a system related to the springloaded blades that cut the end of the film from the canister. It&amp;rsquo;s a guillotine that&amp;rsquo;s tensioned until it hits a detente to hold the spring securely. When the can is pulled closer as the roll runs out, it hits a paddle that trips the spring catch and the blade flies into the film, cutting it off. The spring is loaded via a motor on a cam, so I started checking that the motor actuated freely, which it did.&lt;/p&gt;&#xA;&lt;p&gt;At the beginning of each day, a start check is completed where a leader card is fed through the machine with no film attached to it in order to confirm that there&amp;rsquo;s nothing wrong with the extensive tree of gears and rollers that transports everything from beginning to end. I noticed that during this test the problem still occured, even though the motor was not involved and the cutter was not triggered. It ruled out anything wrong with that subsystem, giving me a dead end.&lt;/p&gt;&#xA;&lt;p&gt;Visiting the service manual pointed me to a logic issue with the front panel control board, where I started poking around until I found out through a tech at one of the other labs that something similar happened when the front panel button connection was corroded. Upon cleaning and reseating the cable the problem was fixed. Straight forward enough.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;The Ribbon Cable in Question&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;229px&#34; data-flex-grow=&#34;95&#34; height=&#34;3158&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/ribbonlocation.jpeg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/ribbonlocation_hu_d4916e968a6fb026.jpeg 800w, https://gofortli.net/p/noritsu-v50/ribbonlocation_hu_fc393d7bb4b71bd.jpeg 1600w, https://gofortli.net/p/noritsu-v50/ribbonlocation_hu_d2122892bd1eeda.jpeg 2400w, https://gofortli.net/p/noritsu-v50/ribbonlocation.jpeg 3024w&#34; width=&#34;3024&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;A couple of months passed and the problem returned, where we&amp;rsquo;d clean the cable and reseat it, helping for a couple weeks until the issue appeared again. Every cleaning would return everything to normal but the time until the problem reappeared was slowly getting shorter until now.&lt;/p&gt;&#xA;&lt;h4 id=&#34;solution&#34;&gt;Solution&#xA;&lt;/h4&gt;&lt;p&gt;At this point, it had been several months of increasingly more regular cycling on the ribbon cable. The usual cleaning and reseating got to a point where it did not solve the issue at all, the machine could not be used at all. When I took it apart and inspected the ribbon cable under a loupe I found that the contact material had fully worn through, and I presume it wasn&amp;rsquo;t making contact at all. I unfortunately did not take a picture of the damage before the first fix, but looking at the picture below, the untouched side shows the gist of it. The contacts on the board wore a hole through the pads.&lt;/p&gt;&#xA;&lt;li&gt;&lt;strong&gt;Version 1&lt;/strong&gt; &lt;/li&gt;&#xA;&lt;p&gt;We were pretty backed up in terms of black and white orders, so I needed to get the machine to stop cycling and begin processing film. I had the idea of using aluminum tape from one of the film stocks we sell. They make their DX codes by sticking some aluminum tape and putting a label over it in order to make the pattern of conductive/non-conductive squares. Pretty neat. Turned out pretty sloppy but it got the job done to catch up with orders. Let&amp;rsquo;s call this one Version 1.0&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Version 1.0 of the fix&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;231px&#34; data-flex-grow=&#34;96&#34; height=&#34;1433&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/version1-0.jpeg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/version1-0_hu_d66480d7aa9cbb73.jpeg 800w, https://gofortli.net/p/noritsu-v50/version1-0.jpeg 1385w&#34; width=&#34;1385&#34;&gt;&lt;img alt=&#34;Version 1.1 of the fix&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;260px&#34; data-flex-grow=&#34;108&#34; height=&#34;2530&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/version1-1.jpeg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/version1-1_hu_4d6c745567b1ef0a.jpeg 800w, https://gofortli.net/p/noritsu-v50/version1-1_hu_892a20cc20d7b107.jpeg 1600w, https://gofortli.net/p/noritsu-v50/version1-1_hu_9e1e183a7dce7105.jpeg 2400w, https://gofortli.net/p/noritsu-v50/version1-1.jpeg 2749w&#34; width=&#34;2749&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Unfortunately, some of the buttons were intermitently working, so I knew we couldn&amp;rsquo;t keep this for the long term. We had ordered some X-Acto knives so I figured I&amp;rsquo;d redo the patchwork with sharper blades whenever those came in. Version 1.1 turned out more aesthetically pleasing but actually gave its own set of issues. For example, the set of buttons that were acting up with 1.0 returned to life, but a different set did not work at all and in fact ended up sticking and led the machine to behave erratically. This told me that I was now shorting adjacent pads to one another or to ground around the connector body. At this point I realized the tape we use for taping the film to the leader cards was pretty perfect as a low-temp Kapton tape alternative and the idea for V2 was born.&lt;/p&gt;&#xA;&lt;li&gt;&lt;strong&gt;Version 2&lt;/strong&gt; &lt;/li&gt;&#xA;&lt;p&gt;For V2 I had two major conclusions driving how I went about this next repair. First, I needed to shield everything besides the actual contact point in order to prevent any more shorting. I was very lucky I didn&amp;rsquo;t fry anything that last time. I also needed to have better contact between the original flex PCB traces and the aluminum tape, so I needed to flip the aluminum tape in order to keep the glue from acting as an insulator.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Version 2.0 of the fix&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;237px&#34; data-flex-grow=&#34;98&#34; height=&#34;2219&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/version2-0.jpeg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/version2-0_hu_5e4b7b6f7b270e2f.jpeg 800w, https://gofortli.net/p/noritsu-v50/version2-0_hu_123a58c49f8dec50.jpeg 1600w, https://gofortli.net/p/noritsu-v50/version2-0.jpeg 2195w&#34; width=&#34;2195&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;By stenciling the actual location of the worn contacts onto some tape, I was able to shield everything else and it made the size, shape and location of my aluminum tape squares less critical. I was also able to stick them onto the bottom of the tape and rinse off the adhesive from it with some alcohol. It took me the longest out of all the solutions I came up with but at this point it&amp;rsquo;s the closest I&amp;rsquo;ve gotten to a permanent fix short of replacing the board altogether.&lt;/p&gt;&#xA;&lt;h3 id=&#34;color-developer-working-tank-overheating&#34;&gt;Color Developer Working Tank Overheating&#xA;&lt;/h3&gt;&lt;h4 id=&#34;symptoms-1&#34;&gt;Symptoms&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Intermitent S-Sol Thermo Activated Error&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Solution reaches 43C before other safeguards kick in&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Initially only happened during overnight sleep cycle&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;initial-troubleshooting&#34;&gt;Initial Troubleshooting&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Compared thermocouple readings to thermometer in working tank and in side tank (will elaborate on tank layout in a second)&#xA;&amp;ndash; Temp Matches&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Drained tank, cleaned agitation and recirculation pumps&#xA;&amp;ndash; Minor to Negligible Improvement&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;For context, we had just recovered from the below problem of the cutter jamming, so at this point we had been chasing problems around for around a month.&lt;/p&gt;&#xA;&lt;p&gt;Preventative maintenance is crucial for keeping old hardware like this up and running. Much like one of my old bosses used to say: &amp;ldquo;Schedule the maintenance or the machine will schedule it for you&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;Going back to the problem, at first the heater would behave but over time it started getting stuck powered on during normal operation and not just during the overnight sleep mode. When we confirmed that the machine was reading the correct temperature for the tank, it indicated to me that a relay was getting stuck closed intermittently. Still, it&amp;rsquo;s a team project and the rest of the team wanted to confirm nothing else was out of the ordinary before ruling in favor of swapping the relay. I didn&amp;rsquo;t work for a couple days so the rest of the team limped the machine through and only took 3 day turnaround orders.&lt;/p&gt;&#xA;&lt;p&gt;I took a quick brush through the service manual and found that the stabilizer control system and the one for the tank giving us problems was the exact same, so I swapped its thermocouple and heater, making the machine believe that the stabilizer was the color dev tank and viceversa. The heater loops all were controlled via components labeled SSR1 through 7, all on the power board at the bottom of the machine. Unsurprisingly, the stabilizer was now overheating instead. Luckily, we could run the stabilizer at room temperature so disabling the color developer heater could let us run the machine and catch up with orders before a repair needs to be done. I reset the thermostat for the stabilizer to what it needed to be for color developer (remember that color dev is now stabilizer from the point of view of the machine and viceversa), and then set the color developer temperature to zero so it would not attempt to power anything on that circuit. The machine slowly got up to temperature and remained there as it was now able to turn off the color developer heater.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Power Board&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;426px&#34; data-flex-grow=&#34;177&#34; height=&#34;2160&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/PowerBoard1.jpeg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/PowerBoard1_hu_c09be01687dbc1ef.jpeg 800w, https://gofortli.net/p/noritsu-v50/PowerBoard1_hu_a33e203bbef972f8.jpeg 1600w, https://gofortli.net/p/noritsu-v50/PowerBoard1_hu_313bdf6da1f7ed3e.jpeg 2400w, https://gofortli.net/p/noritsu-v50/PowerBoard1.jpeg 3840w&#34; width=&#34;3840&#34;&gt; &lt;img alt=&#34;Mounted on the V50&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;180px&#34; data-flex-grow=&#34;75&#34; height=&#34;2874&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/PowerBoard2.jpeg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/PowerBoard2_hu_70648410d7f16681.jpeg 800w, https://gofortli.net/p/noritsu-v50/PowerBoard2_hu_1ed2730da37b9c2a.jpeg 1600w, https://gofortli.net/p/noritsu-v50/PowerBoard2.jpeg 2160w&#34; width=&#34;2160&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;At this point we caught up with orders for the most part, so I carried on with trying to fix the root cause. When I came back to the machine, I noticed that although the troubleshooting LEDs on the power board showed the control unit was not powering the heater relay, temperature continued to climb. From my car background I had the intuition to begin tapping around every black relay-looking box with the rubber back of a screwdriver. It didn&amp;rsquo;t help.&lt;/p&gt;&#xA;&lt;p&gt;Turns out SSR stands for Solid State Relay, something I realized pretty late, embarassingly late. SSRs tend to fail closed as they&amp;rsquo;re semiconductor devices, and it confirmed and explained my initial assumption of a stuck relay. The awesome engineers at Noritsu had the foresight of including redundant relays on the board, or rather, populating relay footprints for heater circuits not used in this machine model. I&amp;rsquo;m sure the V100 or the V5Billion use these relays, but I&amp;rsquo;m lucky mine doesn&amp;rsquo;t because these exact P/Ns are looooooong discontinued. In my panic before realizing there were spares I did find a suitable drop-in replacement. I crossreferenced the info on the part itself, the pin pitch from the board and the specs from the service manual. Part number is D2W203F-11 and below are some links to find a replacement in case you&amp;rsquo;re not so lucky to have extras:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.digikey.com/en/products/detail/sensata-crydom/D2W203F-11/139583&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Digikey&lt;/a&gt;&#xA;&lt;a class=&#34;link&#34; href=&#34;https://www.mouser.com/ProductDetail/Crydom/D2W203F-11?qs=mNyg5qXQ%2FscFP3eDV%2F5phw%3D%3D&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Mouser&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Closely inspecting the board would&amp;rsquo;ve saved a bit of time, but it wasn&amp;rsquo;t easy to get out of the machine and I didn&amp;rsquo;t want to take it out unless absolutely necessary. These things are a couple grand each.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;The Culprit&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;205px&#34; data-flex-grow=&#34;85&#34; height=&#34;2518&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/TheCulprit.jpeg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/TheCulprit_hu_e82f675eb920c609.jpeg 800w, https://gofortli.net/p/noritsu-v50/TheCulprit_hu_cfce4fda83add4b4.jpeg 1600w, https://gofortli.net/p/noritsu-v50/TheCulprit.jpeg 2160w&#34; width=&#34;2160&#34;&gt; &lt;img alt=&#34;Where I found It&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;426px&#34; data-flex-grow=&#34;177&#34; height=&#34;2160&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/RelayMounted.jpeg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/RelayMounted_hu_93f15114d42b3fa5.jpeg 800w, https://gofortli.net/p/noritsu-v50/RelayMounted_hu_c93cce47fa39708d.jpeg 1600w, https://gofortli.net/p/noritsu-v50/RelayMounted_hu_c244e59365bb354f.jpeg 2400w, https://gofortli.net/p/noritsu-v50/RelayMounted.jpeg 3840w&#34; width=&#34;3840&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;A candidate for the world&amp;rsquo;s oldest solder was holding the relay in place, so a ton of flux, time and patience were needed to get it out and replaced with the extra. The pad was fried to begin with, and I presume that solder started cracking and creating a high resistance connection. The thermal cycling probably also weakened the joint and created a feedback loop culminating where we are now.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Bottom of PCB&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;3024&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/BurntPad1.jpeg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/BurntPad1_hu_50252565819522f2.jpeg 800w, https://gofortli.net/p/noritsu-v50/BurntPad1_hu_8230bc1f4cfe64bb.jpeg 1600w, https://gofortli.net/p/noritsu-v50/BurntPad1_hu_cf3198c908220503.jpeg 2400w, https://gofortli.net/p/noritsu-v50/BurntPad1.jpeg 4032w&#34; width=&#34;4032&#34;&gt; &lt;img alt=&#34;Space left by relay&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;320px&#34; data-flex-grow=&#34;133&#34; height=&#34;3024&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://gofortli.net/p/noritsu-v50/BurntPad2.jpeg&#34; srcset=&#34;https://gofortli.net/p/noritsu-v50/BurntPad2_hu_e06ed16efcc7f3d.jpeg 800w, https://gofortli.net/p/noritsu-v50/BurntPad2_hu_c5b934e7776ef7ab.jpeg 1600w, https://gofortli.net/p/noritsu-v50/BurntPad2_hu_19296a49e1d2a376.jpeg 2400w, https://gofortli.net/p/noritsu-v50/BurntPad2.jpeg 4032w&#34; width=&#34;4032&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;After it was all said and done, I gave the board a good dusting and a rinse with isopropyl alcohol to wash of the flux all over the board and give it some TLC. Once installed, the heater problem was solved and it&amp;rsquo;s still powering through orders to this day.&lt;/p&gt;&#xA;&lt;h3 id=&#34;cutter-jams&#34;&gt;Cutter Jams&#xA;&lt;/h3&gt;&lt;h4 id=&#34;symptoms-2&#34;&gt;Symptoms&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;Right Lane Struggled to Cut Canister at the End of the roll&lt;/li&gt;&#xA;&lt;li&gt;Canisters stuck after cutting&lt;/li&gt;&#xA;&lt;li&gt;Cutter Return Error&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;initial-troubleshooting-1&#34;&gt;Initial Troubleshooting&#xA;&lt;/h4&gt;&lt;p&gt;Initially,&lt;/p&gt;&#xA;&lt;h2 id=&#34;film-chemistry-experiments&#34;&gt;Film Chemistry Experiments&#xA;&lt;/h2&gt;&lt;h3 id=&#34;c-41-reversal&#34;&gt;C-41 Reversal&#xA;&lt;/h3&gt;&lt;h3 id=&#34;black-and-white-reversal&#34;&gt;Black and White Reversal&#xA;&lt;/h3&gt;</description>
        </item></channel>
</rss>
