<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Anders Conbere - Posts</title>
    <link rel="self" type="application/atom+xml" href="https://anders.conbere.org/blog/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/"/>
    <updated>2025-12-28T00:00:00+00:00</updated>
    <id>https://anders.conbere.org/blog/atom.xml</id>
    <entry xml:lang="en">
        <title>Year In Review - 2025</title>
        <published>2025-12-28T00:00:00+00:00</published>
        <updated>2025-12-28T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/year-in-review-2025/"/>
        <id>https://anders.conbere.org/blog/year-in-review-2025/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/year-in-review-2025/">
            &lt;p&gt;So much of my adult life, every year could be neatly summarized by &quot;did my job, cooked dinner, raised babies&quot;. I don&#x27;t think there was much value in summarizing that life. But this year, in all of the freedom of not working a 9-5 job I feel detached from time. When reading Rek&#x27;s &lt;a href=&quot;https:&#x2F;&#x2F;kokorobot.ca&#x2F;site&#x2F;2025dec31.html&quot;&gt;year in review&lt;&#x2F;a&gt; I found myself wondering &quot;Gosh, what did happen this year?&quot;. I was surprised! It&#x27;s been a busy year, and much of it if you asked me I would have said happened over a year ago!&lt;&#x2F;p&gt;
&lt;h2 id=&quot;things-i-made&quot;&gt;Things I Made&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Lens board pattern cutting jig

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;lens_board_pattern_jig_1.81027bc56f597c93.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;lens_board_pattern_jig_2.4c3d38307d26f7dc.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;lens_board_pattern_jig_3.bd6a6edd3c4ff0ee.jpg&quot; &#x2F;&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Black and White film Developer (&lt;a href=&quot;https:&#x2F;&#x2F;imager.ie&#x2F;a-simple-phenidone-ascorbic-acid-concentrate-developer&#x2F;&quot;&gt;PC-512 Borax&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Walnut Picture Frames

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;walnut_frames.7c048a471219aafc.jpg&quot; &#x2F;&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;17x21 Contact Printing Frame

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;contact_printing_frame_1.722d5fca1d609965.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;contact_printing_frame_2.770f0e8b97d0b02d.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;contact_printing_frame_3.e4e9220a412e01bc.jpg&quot; &#x2F;&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;UV Exposure Unit

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;uv_exposure_unit.85470e42e6c0fe84.jpg&quot; &#x2F;&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;3d Printed Medium Format Camera Body

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;3d_printed_camera_body_1.781c2976419e3caf.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;3d_printed_camera_body_2.ff87685f36bd8b71.jpg&quot; &#x2F;&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Modded Polaroid 900 to shoot 4x5 with a custom front standard

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;polaroid900_1.a3c2a08d4440de3c.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;polaroid900_2.a76c747e20dc3d75.jpg&quot; &#x2F;&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Modded Kodak No 3a Autographic to shoot 120 film

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;kodak_no_3a_1.370191beb7cfcddb.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;kodak_no_3a_2.ffc25d1a433f8bbe.jpg&quot; &#x2F;&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Color inkjet prints

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;color_inkjet_print.eac50a9176cf3994.jpg&quot; &#x2F;&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Cyanotypes, Cuprotypes and Argyrotypes

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;cyanotypes.52ea141b9aa8ac9b.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;cuprotype.aade69114b803109.jpg&quot; &#x2F;&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I&#x27;m sure I&#x27;ve left off some stuff, but overall I&#x27;m really quite thrilled with all the progress here. I&#x27;m super excited about the progress made on my ability to make prints in my home dim room. I hope to make much more use of it next year.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;things-i-learned&quot;&gt;Things I Learned&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Took a charcoal drawing class

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;drawing_class.ccde3c3daf60845a.jpg&quot; &#x2F;&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;How to use QuadToneRip to make contrast adjustment curves&lt;&#x2F;li&gt;
&lt;li&gt;How to make argyrotypes&lt;&#x2F;li&gt;
&lt;li&gt;How to make cuprotypes&lt;&#x2F;li&gt;
&lt;li&gt;How to use joints in fusion360&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;places-i-went&quot;&gt;Places I Went&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Iceland&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;iceland_1.44925b81e8b48a46.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;iceland_2.abea8e3a13b96172.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;iceland_3.24e31d9229547a3a.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;iceland_4.7018609c9a29305f.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Lind WA&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;lind_wa_1.9c30cd36ae859542.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;lind_wa_2.f8214d2eb1250f0e.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Blakely Island&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Austin Texas&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;austin_1.d7038d02d22d36da.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;austin_2.75d1a746ec6b143b.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;h2 id=&quot;things-i-read&quot;&gt;Things I Read&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Black Leopard Red Wolf - Marlon James&lt;&#x2F;li&gt;
&lt;li&gt;Moon Witch Spider King - Marlon James&lt;&#x2F;li&gt;
&lt;li&gt;Our Game - John Le Carre&lt;&#x2F;li&gt;
&lt;li&gt;Chief Seattle and the Town That Took His Name - David M Buege&lt;&#x2F;li&gt;
&lt;li&gt;A Long Way To A Small Angry Planet - Becky Chambers&lt;&#x2F;li&gt;
&lt;li&gt;Blindness - Jose Saramango&lt;&#x2F;li&gt;
&lt;li&gt;Dr. Jeckyll and Mr Hyde - Robert Louis Stevenson&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Black Leopard Red Wolf knocked my socks off! I couldn&#x27;t stop telling people about it. It is very hard to recommend to people without some caveats. It is violent, sexy, gay, terrible, and glorious. It is a strange fever dream of a book, filled with a mythos that I&#x27;ve never known about.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;things-i-watched&quot;&gt;Things I watched&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Portrait of a Lady on Fire&lt;&#x2F;li&gt;
&lt;li&gt;Past Lives&lt;&#x2F;li&gt;
&lt;li&gt;Sorcerer&lt;&#x2F;li&gt;
&lt;li&gt;Weapons&lt;&#x2F;li&gt;
&lt;li&gt;Ikiru&lt;&#x2F;li&gt;
&lt;li&gt;The Substance&lt;&#x2F;li&gt;
&lt;li&gt;Sinners&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I absolutely loved Portrait of a Lady on Fire, probably my personal favorite of the year. Not at all a movie in my normal genre. I would never reach for a period drama. But I found this to be just a lovely piece and absolutely smouldering romance. Beautiful work. Sorcerer was another surprise, having been underwhelmed by The Wages of Fear I didn&#x27;t have high hopes, but I thought Sorcerer was a better movie in every way, and what impressive practical effects! It was a lot of fun to watch Ikiru at Cinerama with my friend&#x27;s Matt and Beth. I&#x27;m out of the norm and didn&#x27;t care for Sinners or The Substance.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;things-i-played&quot;&gt;Things I Played&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Caves of Qud&lt;&#x2F;li&gt;
&lt;li&gt;Monster Hunter Rise (again!)&lt;&#x2F;li&gt;
&lt;li&gt;Dark Souls&lt;&#x2F;li&gt;
&lt;li&gt;Dark Souls II&lt;&#x2F;li&gt;
&lt;li&gt;Bloodborne&lt;&#x2F;li&gt;
&lt;li&gt;Sekiro&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I kicked off the year by playing Caves of Qud. It was a real adventure! Balancing narative, deep simulation game play, and intricate hidden systems. I loved it. I came back to Monster Hunter playing through the main game again with my sister Thea. It was a lovely way to spend time together and stay in touch. And I broke through my FromSoft blockage. I really enjoyed all of them, but probably BloodBorne the most. Sekiro I haven&#x27;t finished, I think it&#x27;s a beautiful game, and I like being in the world, but the boss battles are punishing.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;other-fun-stuff&quot;&gt;Other fun stuff&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Hosted a Merveilles art exchange&lt;&#x2F;li&gt;
&lt;li&gt;Threw a neighborhood block party&lt;&#x2F;li&gt;
&lt;li&gt;Repaired so many things:
&lt;ul&gt;
&lt;li&gt;Jet 8&quot; Jointer&lt;&#x2F;li&gt;
&lt;li&gt;Ilex No 5 shutter&lt;&#x2F;li&gt;
&lt;li&gt;Ilex Optimo Shutter&lt;&#x2F;li&gt;
&lt;li&gt;Mamiya Press 65mm&lt;&#x2F;li&gt;
&lt;li&gt;Mamiya Press Universal Body&lt;&#x2F;li&gt;
&lt;li&gt;Wollensak Alphax No 4 Shutter&lt;&#x2F;li&gt;
&lt;li&gt;Minolta Autocord&lt;&#x2F;li&gt;
&lt;li&gt;Voigtlander Vito B&lt;&#x2F;li&gt;
&lt;li&gt;Voigtlander Perkeo&lt;&#x2F;li&gt;
&lt;li&gt;Random Russian Shutter&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;next-year&quot;&gt;Next Year&lt;&#x2F;h2&gt;
&lt;p&gt;Looking forward I would like to find ways to spend more time working with other people. I tapered off most of my classes at PCNW this year, focusing instead on my own work at home. But as a consequence I spent a lot of this year alone. Collaboration is a perenial challenge, maybe this year I&#x27;ll make some progress on it! By the end of 2026 I&#x27;d like to have produced a collection of prints to hang for a show. I&#x27;ve been working on a larger collection of images for a photobook and I&#x27;d like to have that in a good place. Finally I&#x27;d like to bring more drawing into my regular practice, I really enjoyed the class I took but I haven&#x27;t found the way to bring it into my regular life yet. Overall I&#x27;m excited for another year!&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Make it hard and slow</title>
        <published>2025-04-24T00:00:00+00:00</published>
        <updated>2025-04-24T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/make-it-hard-and-slow/"/>
        <id>https://anders.conbere.org/blog/make-it-hard-and-slow/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/make-it-hard-and-slow/">
            &lt;p&gt;A member of the photography club I’m a part of said the other day that they were looking for a digital camera in order to iterate faster so they could become a better photographer. Which, seems like reasonable thinking, but what if it’s backward?&lt;&#x2F;p&gt;
&lt;p&gt;What if in order to gain mastery we need to go slower? To consider each frame on its own merits, to make careful decisions and then observe the outcomes with skin in the game.&lt;&#x2F;p&gt;
&lt;p&gt;Nothing has been more benefial to my growth as an artist than working on a print until I hate it. Every single flaw shouting at me! Hours of time, spent composing, processing, editing, dodging, burning, washing; every new attempt is money down the drain, and only to end up with a print that consists of nothing but mistakes!&lt;&#x2F;p&gt;
&lt;p&gt;When I set out the next day I tell myself, “I’ll never make those mistakes again. I’ll never waste my time like that. I’ll never face the embarrassment of repeating the same mistake twice”. Of course I do, but every repetition of the cycle is a chance to improve.&lt;&#x2F;p&gt;
&lt;p&gt;When I take out my digital camera, I shoot hundreds of pictures, every one of them nearly the same. My job now is to pour over a sea of images all minutely different trying to ascertain which of them is barely better than the others. Am I an artist or an editor? And in the end, what is the product of this effort? A small jpeg posted out to thousands and thousands of machines, briefly seen and then forgotten.&lt;&#x2F;p&gt;
&lt;p&gt;What if it’s the pain of mistakes, the cost of trying again, and the stakes that matter? What if the iterations need to be slower, and more expensive? I don’t need to tell anyone else how to do what they do, if moving fast helps you, knock yourself out. But I had to move slow.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Repair: Mamiya Press Light Leak</title>
        <published>2025-01-27T00:00:00+00:00</published>
        <updated>2025-01-27T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/repair-mamiya-press-light-leak/"/>
        <id>https://anders.conbere.org/blog/repair-mamiya-press-light-leak/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/repair-mamiya-press-light-leak/">
            &lt;p&gt;Do you own a Mamiya Press that looks like this?&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;mamiya-press-body.0d00f6e895de1055.jpg&quot; &#x2F;&gt;
&lt;p&gt;Then there&#x27;s a good chance that if you&#x27;ve used it, you&#x27;ve noticed a light leak that looks like this:&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;light-leak-example.27d891636e1d3e48.jpg&quot; &#x2F;&gt;
&lt;p&gt;The cause is a bit of foam in the lens release lever degrading causing the light trap to fail. It seems to be common amoung all the Press bodies I&#x27;ve seen and luckily it is easy to fix and I&#x27;ll walk through how here.&lt;&#x2F;p&gt;
&lt;p&gt;The first step is to remove the four pieces of leatherette that surround the lens mount. Beneath each you will find two brass flat head screws under a half moon of brash sheet metal.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;lift-the-leatherette.87a855821b3fb9a7.jpg&quot; &#x2F;&gt;
&lt;p&gt;Remove all the screws and the front of the camera can be removed. Note that in the ones I&#x27;ve worked with the front is stuck pretty tight and needs some muscle to come free.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;front-removed.a2f49fc0992e2fc4.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;front.7aa8035b8f49cf8e.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Once removed you can inspect the foam, if it&#x27;s all dry and dusty it will need to be replaced.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;failed-foam.ba90a41ccbdf313c.jpg&quot; &#x2F;&gt;
&lt;p&gt;To replace it, start by removing the matte black light trap (it&#x27;s a black ring around the opening). Below that will be a lever and spring assembly and a steel ring, remove both.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;lever-and-spring.005fe079e7bee25b.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;steel-ring.157257bd1da44e0c.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Once all these pieces are removed remove the old foam and clean everything. A replacement can be made out of a couple of pieces of 2mm craft foam cut to fit and glued in place with pliobod.&lt;&#x2F;p&gt;
&lt;p&gt;Reverse the steps to re-assemble.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Making Your Own Ground Glass</title>
        <published>2024-12-11T00:00:00+00:00</published>
        <updated>2024-12-11T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/making-your-own-ground-glass/"/>
        <id>https://anders.conbere.org/blog/making-your-own-ground-glass/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/making-your-own-ground-glass/">
            
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;finished-glass.3ffb345abece46d3.jpg&quot; &#x2F;&gt;
&lt;p&gt;I recently modded a Polaroid 120 camera to shoot 4x5 sheet film. The mod included a 4x5 ground glass holder for adjusting focus. The instruction suggest using a frosted piece of acrylic but I wanted to try grinding my own glass. What I found was that making your own ground glass was cheap, effective, and easy. I figured I would share my process and results.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;materials&quot;&gt;Materials&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Glass cut to size (I&#x27;m grinding 4x5)&lt;&#x2F;li&gt;
&lt;li&gt;Larger glass to grind on (I used and 8x10 sheet of 1&#x2F;2&quot; glass)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.gotgrit.com&#x2F;product&#x2F;aluminum-oxide-25&#x2F;&quot;&gt;25 micron aluminum oxide&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;process&quot;&gt;Process&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Set the large piece of glass down on the counter, this acts as our &quot;anvil&quot;, it&#x27;s meant to be heavy and flat for us to grind against.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;glass-ready.8c76c1f0eae2762c.jpg&quot; &#x2F;&gt;
&lt;ul&gt;
&lt;li&gt;Put a small scoop (~1&#x2F;4tsp) the 25 micron aluminum oxide near the center.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;powder-applied.42afbe8dc4f76d92.jpg&quot; &#x2F;&gt;
&lt;ul&gt;
&lt;li&gt;Sprinkle with a small amount (~1tsp) of water to make a slurry.&lt;&#x2F;li&gt;
&lt;li&gt;Place the piece of glass you&#x27;re grinding down ontop of the slurry.&lt;&#x2F;li&gt;
&lt;li&gt;Moving in a circle manner, apply a small amount of pressure on the smaller glass while moving it around the whole surface of the larger glass.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;grinding.bbb26491a80708a9.jpg&quot; &#x2F;&gt;
&lt;ul&gt;
&lt;li&gt;You may notice that the grit dries out and gets &quot;sticky&quot; and &quot;grindy&quot;, if this happens add a few more drops of water.&lt;&#x2F;li&gt;
&lt;li&gt;At any point you can take the small piece of glass and rinse it off to check progress.&lt;&#x2F;li&gt;
&lt;li&gt;I would estimate that it took me 10-15 minutes of rubbing to have a completely uniform matte surface&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Bonus points: I found that after grinding at 25 micron that the glass was sufficient for my uses. But it seems like another found at 9 micron might produce a smaller grain for even better clarity.&lt;&#x2F;p&gt;
&lt;p&gt;Here are some examples of the results in use:&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;through-the-camera-lens.3dbc037772f2318c.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;magnified.43ada7653b4d5bc3.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>A Quick Guide To Black And White Film Development</title>
        <published>2024-12-08T00:00:00+00:00</published>
        <updated>2024-12-08T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/a-quick-guide-to-black-and-white-film-development/"/>
        <id>https://anders.conbere.org/blog/a-quick-guide-to-black-and-white-film-development/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/a-quick-guide-to-black-and-white-film-development/">
            &lt;p&gt;Black and white film development can be daunting to beginners, and while it does require a bunch of tools and new items, the actual process is not any more difficult than baking bread. Further black and white film is enormously flexible and while you can really dial in the process to get precisely the results you want, even with a lot of variation you&#x27;re likely to get useable results. As an example I once accidently cut my dilution of HC-110 in half and, while my film was very thin, I was still able to scan usable images.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;supplies&quot;&gt;Supplies&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.bhphotovideo.com&#x2F;c&#x2F;product&#x2F;1644766-REG&quot;&gt;Dark bag&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;needed to move your film from the canister, roll, or film holder into the development tank.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.bhphotovideo.com&#x2F;c&#x2F;product&#x2F;886586-REG&quot;&gt;Paterson tank&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;The 2x135 roll tank will dev one roll of 120 and is affordable&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Sous Vide
&lt;ul&gt;
&lt;li&gt;cheap is fine, just using it to get all chemicals to ~68 degrees - you can ditch this entirely if you have means to heat your chemicals.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.amazon.com&#x2F;gp&#x2F;product&#x2F;B000JCKCQQ&#x2F;ref=ppx_yo_dt_b_search_asin_title&quot;&gt;Tub&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.bhphotovideo.com&#x2F;c&#x2F;product&#x2F;315918-REG&quot;&gt;4x 1L bottles&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;many of my bottles I’ve scavenged growlers from friends or free, having a couple more won’t hurt.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.bhphotovideo.com&#x2F;c&#x2F;product&#x2F;1493206-REG&quot;&gt;HC-110&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;there are lots and lots of developers out there. HC-110 is a great choice for beginners. It’s a liquid concentrate easy to mix up for each development, lasts for ages, and produces good consistent results. Rodinal is another classic choice, is cheaper, but produces a pronounced grain which is less universally liked.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.bhphotovideo.com&#x2F;c&#x2F;product&#x2F;169348-REG&quot;&gt;Ilford Ilfostop Stop Bath&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Stop raises the PH of emulsion stopping film development quickly while also helping preserve fix lifetime.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.bhphotovideo.com&#x2F;c&#x2F;product&#x2F;253198-REG&quot;&gt;Ilford Rapid Fix&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Fix is a chemical that removes silver salts while leaving the metallic silver in the emulsion.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.bhphotovideo.com&#x2F;c&#x2F;product&#x2F;28195-REG&quot;&gt;Kodak Photo-Flo&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Photo-flo is a surfactant that helps water run off the film prevents water marks from drying.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.bhphotovideo.com&#x2F;c&#x2F;product&#x2F;448443-REG&#x2F;Photographers_Formulary_09_0045_Glass_Graduate_25ml.html&quot;&gt;Graduated cylinders&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;A small assortment is nice. 10ml-100ml not a big deal. I think I got a a couple sets of glass ones one amazon.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Some clips to hang film with&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;process&quot;&gt;Process&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;before-hand&quot;&gt;Before hand&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Mix stop and fix.
&lt;ul&gt;
&lt;li&gt;The appropriate dilution will be listed on the bottle. These chemicals will be reused across a number of development cycles. They should be labled and stored as airtight as possible, in a cool, dark location. I use 1L amber bottles listed above.&lt;&#x2F;li&gt;
&lt;li&gt;Both stop and fix will eventually expire. The Ilford stop bath listed above will start yellow and turn purpleish when it&#x27;s expired. When the stop is expired you can simply pour it down the drain and make more. The fix is a little trickier. It will last quite a while, I usually just watch for an increase in film base fog. When I see my film come out a little grey, I mix some new fix and just refix my film. Fix should NOT be poured down the drain, I take mine to a locally community film lab that processes the fix to remove the silver.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Mix your developer
&lt;ul&gt;
&lt;li&gt;Specific directions will depend on what developer you&#x27;re using. If you&#x27;re using HC-110 like suggested above then you need to pick a dilution. I like 1+63. For a two roll paterson tank you need 500ml of developer meaning you should mix 8ml of developer with 492ml of distilled water.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Set a timer
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.digitaltruth.com&#x2F;devchart.php&quot;&gt;Massive dev chart&lt;&#x2F;a&gt; is the standard starting point. They make an app with a timer that is cheap and I like. For HP5+ rated at 400 and HC-110 at 1+63 the suggested dev time is 11 minutes.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Get all chemicals and rinse to temp
&lt;ul&gt;
&lt;li&gt;I like to use a sous vide. It&#x27;s not the fastest method but it is absolutely mindless. I just put all the bottles in the tub with water covering them and set the sous vide to 68 degrees.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Transfer the film onto the paterson spools
&lt;ul&gt;
&lt;li&gt;Can be trickier than it sounds. Lots of good youtube videos on it. Can be nice to practice with a trash roll in the light. This is the only step that needs the dark bag. Put your roll in the dark bag with the tank and the tank bits (spool, tube, funnel, etc).
Prep all your bottles and timer and make sure you’re ready. Double check time and dilutions.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;development&quot;&gt;Development&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Dev (check massive dev chart)
&lt;ul&gt;
&lt;li&gt;Add dev to tank&lt;&#x2F;li&gt;
&lt;li&gt;Start your timer&lt;&#x2F;li&gt;
&lt;li&gt;Agitate: Gentle inversions for the first minute, then two inversions every 30 seconds&lt;&#x2F;li&gt;
&lt;li&gt;Pour down drain&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Stop (1min)
&lt;ul&gt;
&lt;li&gt;Add stop to tank&lt;&#x2F;li&gt;
&lt;li&gt;Agitate: Gentle inversions for 1 minute&lt;&#x2F;li&gt;
&lt;li&gt;Return to stop bottle&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;fix (5min)
&lt;ul&gt;
&lt;li&gt;Add fix to tank&lt;&#x2F;li&gt;
&lt;li&gt;Agitate: Gentle inversions for the first minute, then two inversions every 30 seconds&lt;&#x2F;li&gt;
&lt;li&gt;Return to fix bottle&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Rinse (2min)
&lt;ul&gt;
&lt;li&gt;Add water to tank&lt;&#x2F;li&gt;
&lt;li&gt;Agitate: Gentle inversions for 1 minute&lt;&#x2F;li&gt;
&lt;li&gt;pour out and replace water&lt;&#x2F;li&gt;
&lt;li&gt;Agitate: Gentle inversions for 1 minute&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Wash (5min)
&lt;ul&gt;
&lt;li&gt;Open tank, remove funnel, let sink run gentely into the tank for the full time&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Photo-flo (1min)
&lt;ul&gt;
&lt;li&gt;Fill tank to top of spool with distilled water&lt;&#x2F;li&gt;
&lt;li&gt;Add 1ml of photo-flo&lt;&#x2F;li&gt;
&lt;li&gt;Agitate: Gentle inversions for 1 minute&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Hang to dry&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;final-thoughts&quot;&gt;Final thoughts&lt;&#x2F;h2&gt;
&lt;p&gt;This is only a starting point, as you&#x27;ll discover there are endless variations on this process and this is just one that works for me. Some places to explore if you want to do some adventuring would be to play with different film and developer combinations (Other good developers to try would be Rodinal, Xtol, and D76). Another avenue would be to research the zone development process for contrast expansion and contraction as well as film testing. But mostly this is presented as a way to get your feet wet and start to get some results.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>New York City - November 2024</title>
        <published>2024-11-15T00:00:00+00:00</published>
        <updated>2024-11-15T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/new-york-city-november-2024/"/>
        <id>https://anders.conbere.org/blog/new-york-city-november-2024/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/new-york-city-november-2024/">
            
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;brooklyn-bridge-at-night.07fdcb4fd234f108.jpg&quot; &#x2F;&gt;
&lt;p&gt;The family and I spent a week in New York City this month. Our last big vacation as a family we went to Guadalajara and completely failed to make it any fun for the kids. So with that in mind we set out to try to ensure that every day there was something that was going to be fun for the kids.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;gift-shop-at-night.b8a3911da2128814.jpg&quot; &#x2F;&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;everyone-walking-home-at-night.a37699b1634f2fa0.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;guggenheim.22ec147cb942611a.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;We spent a bit of time in New York back when Matia was a baby (she took her first steps in the Etsy offices!) but haven&#x27;t been back much since then. It was great to visit friends and family and to do a bunch of touristy stuff that we would never both to do if the kids weren&#x27;t with us.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;williamsburg-fruit-stand-at-night.61ee7aab1b819277.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;food-cart-at-night.781e58f455c28bf2.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;I brought my OM-2S for something that would be versitile and easy to shoot while on the move. I brought HP5+ and Acros II but only ended up shooting the HP5, and it&#x27;s a good thing, because I seem to have really gravitated to shooting at night.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;la-esquina.6ee0cff3b4be332b.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;st-peters-cathedral.4b1907d6eb3b283b.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;ny-appartment-building.4f5ab378342ee6ae.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Unfortunately the camera seems to have developed some issues. A light leak on the top right of the frame is from some pinholes in the first shutter curtain. And some dramatic shutter capping. I went and checked I did see the pinholes in shots from this summer, but the capping is new behavior.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-capping-light-leak.8063df5dfcb370d5.jpg&quot; &#x2F;&gt;
&lt;p&gt;The pinholes I&#x27;ve patched with a dab of acrylic, the capping will need some surgery. Often capping can be solved by cleaning and lubricating the curtain bearings. However the OM-2S is so crammed with electronics up top that it will be a royal pain to get into.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;waiting-for-the-train.f76e8cc15bebaa76.jpg&quot; &#x2F;&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Repair: Mamiya-Sekor C 90mm f&#x2F;3.8</title>
        <published>2023-11-18T00:00:00+00:00</published>
        <updated>2023-11-18T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/repair-mamiya-sekor-c-90mm-f3-8/"/>
        <id>https://anders.conbere.org/blog/repair-mamiya-sekor-c-90mm-f3-8/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/repair-mamiya-sekor-c-90mm-f3-8/">
            
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;lens-overview.91b1e1140e1aac55.jpg&quot; &#x2F;&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Repair: Patent Etui</title>
        <published>2023-11-05T00:00:00+00:00</published>
        <updated>2023-11-05T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/repair-patent-etui/"/>
        <id>https://anders.conbere.org/blog/repair-patent-etui/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/repair-patent-etui/">
            &lt;p&gt;The Patent Etui was a series of folding plate cameras manufactured by Kamera Werkstätten and sold between 1920 and 1938. The name Etui, the word for a woman&#x27;s cigarette case was meant to highlight the light and slim design. They were available in two sizes: 6x9 and 6x12, and while designed for glass plates, are compatible with a number of 6x9 roll film holders.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;patent-etui.399b028f056b08d8.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;patent-etui-face-close-up.193c40dc79449491.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;I found this camera at a very strange estate sale in a pile of vintage folders. The Zeiss lens, Compur shutter (mostly working), and (mostly) intact bellows stood out to me so I grabbed it.&lt;&#x2F;p&gt;
&lt;p&gt;The lens serial number (1030024) and rim set Compur shutter date the camera to around 1930. It&#x27;s in pretty good shape for a camera nearing it&#x27;s 100th birthday. The biggest glaring flaw was that the front leatherette was completely missing. Beyond that, the Rollex-Patent film holder it came with was pretty rusty and not moving smoothly, there were a few small pinholes in the bellows near the top right, the slow shutter speeds on the shutter were slow, the lens was dirty, and the whole camera needed a good cleaning.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;fixing-the-front-leatherette&quot;&gt;Fixing: The Front Leatherette&lt;&#x2F;h2&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;missing-leatherette.126f7d982088a58b.jpg&quot; &#x2F;&gt;
&lt;p&gt;Other than the missing front leatherette the rest of the camera is wrapped in a nice burgundy leather. I don&#x27;t think I&#x27;ll plan to source a replacement that matches. For now I&#x27;ve sanded down the old glue and cleaned up the aluminum case. Maybe in the future I&#x27;ll glue a new piece of leather down.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;polished-case-front.d6964aa8c89b6592.jpg&quot; &#x2F;&gt;
&lt;h2 id=&quot;fixing-the-rollex-patent-film-holder&quot;&gt;Fixing: The Rollex-Patent Film Holder&lt;&#x2F;h2&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;rollex-patent-film-back.7dd38dbfb2ccf8c0.jpg&quot; &#x2F;&gt;
&lt;p&gt;The holder had a bunch of rust. Mostly I came through with some 1000 grit wet&#x2F;dry sand paper and removed all the rust and peeling paint. There is a missing brass stud to hold the film spool but it seems to operate okay with out it.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;fixing-the-bellows&quot;&gt;Fixing: The Bellows&lt;&#x2F;h2&gt;
&lt;p&gt;I mixed about a 50&#x2F;50 mixture of Elmer&#x27;s Glue and matte black acrylic paint and applied coats of it onto the holes until they no longer showed light through them in the dark.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;fixing-the-shutter&quot;&gt;Fixing: The Shutter&lt;&#x2F;h2&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter.65b74ecbc743c470.jpg&quot; &#x2F;&gt;
&lt;p&gt;The shutter on this camera is a pretty standard rim set Compur shutter with shutter speeds B, T, 1 to 1&#x2F;250. It has a nice 10 element aperture that was moving stiffly and while the top shutter speeds seemed to be working okay, the slow shutter speeds, in particular the 1s were substantially out of spec. Slow shutter speeds are almost always the result of aging grease and oils, some of which have hardened, some probably migrated onto the shutter and aperture blades. To fix the issue the standard protocol is to fully disassembly and clean EVERYTHING.&lt;&#x2F;p&gt;
&lt;p&gt;Removing the shutter on this camera is blessedly easy. With the camera folded you can directly access the rear cell and the shutter lock ring. Removing the rear lens cell before the shutter helps the shutter clear the hole when removing it (and protects the cell from damage). Then unscrew the shutter lock ring, being careful of the fragile bellows.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;remove-shutter.202b9054c7f3e4c7.jpg&quot; &#x2F;&gt;
&lt;p&gt;Once removed the shutter can be opened by removing one screw from the aperture marking plate and sliding it out of the way. A locking post is hidden beneath it; when unscrewed the whole top plate can be rotated clockwise and lifted off the shutter.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-opening-top-plate.6058d7333f272e54.jpg&quot; &#x2F;&gt;
&lt;p&gt;Below the top plate is the control ring. Take some notice of the position of the plate and the shutter speed post.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-control-ring.71334fce84733d14.jpg&quot; &#x2F;&gt;
&lt;p&gt;The control ring lifts out easily once it clears the aperture control lever. Below the control lever is the rest of the shutter and where this starts to get a bit trickier. At this point it is worth slowing down and taking note of how ever piece sits in the shutter, how the springs lay, and what the position and the adjoining parts were. I take more pictures than you could imagine, and every part that comes off, goes into a tray with the screw that held it down.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-open.e670e0f15adf384e.jpg&quot; &#x2F;&gt;
&lt;p&gt;Below the control ring sits the main spring. The main spring and ring drive the shutters operation. Detach the spring at the post on the shutter and lift the main spring out of the shutter.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;a-note-on-how-slow-shutter-speeds-work&quot;&gt;A note on how slow shutter speeds work&lt;&#x2F;h3&gt;
&lt;p&gt;It&#x27;s worth understanding how the slow shutter speeds work before trying to fix them. The key players are the main spring and the retard gear train. The main spring touches two important control points on the retard gear train.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-retard-gear-train.027303d7dfb5a30e.jpg&quot; &#x2F;&gt;
&lt;p&gt;There is a peg (pointed to by arrow above) on the retard gear train (marked in red above) near the bottom. When the shutter is charged (and the main spring is advanced clockwise fully), in order for the main spring to return it has to lift the peg sufficiently. The peg is connected to a spring and a bunch of gears that very precisely controls the speed that the peg can be lifted. The shutter speed control ring adjusts this peg up or down slightly adjusting the amount of lift that the main spring must apply, and thus the time it takes to return.&lt;&#x2F;p&gt;
&lt;p&gt;In order to clean the aperture blades and shutter blades the back of the shutter needs to be removed, which in turn involves removing the plate that all the parts are attached to. This can be done without removing all the parts, but all the parts with springs touching the case should be removed to avoid damaging the springs. Note that you do not need to remove the retard gear trains. Their position defines the shutter speed adjustments and moving them will require readjustment.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-disassembly-step-1.7416ae02143aebc7.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-disassembly-step-2.ca0cf8b9273593ee.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-disassembly-step-3.98cf06ba109532a3.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-disassembly-step-4.d1920148bc974169.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-disassembly-step-5.9a88463c1f5280e1.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-disassembly-step-6.b3387ac230c97535.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-disassembly-step-7.e4af891ed0c9d078.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-disassembly-step-8.d28e088763df8ea1.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-disassembly-step-9.5f478e7b364b3ad9.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;When everything is removed the case can be flipped over and the three screws holding the plate to the case can be removed. Below the plate you&#x27;ll find the shutter blades attached to the bottom of the plate, while the aperture blades are attached to the case.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-disassembly-rear-case.c5b776400366e4cd.jpg&quot; &#x2F;&gt;
&lt;p&gt;To clean the aperture blades remove the small plate with slits in it holding them to the case and lift out the blades. Make note of how it sits in the case, you&#x27;ll need to replace it upside down, and knowing exactly how to put it back will help. They will likely all come out together, stuck with old oil. With care each blade can be cleaned and set aside. Take this time to clean whole bottom part of the case, the inside, as well as the outside around the aperture lever.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-aperture-blade-assembly.e33651a847366b11.jpg&quot; &#x2F;&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-aperture-blades.ea05fb3053cb44aa.jpg&quot; &#x2F;&gt;
&lt;p&gt;When all the blades and case are clean it&#x27;s time to reassemble the aperture. This is in my opinion the most challenging part of the process. I found it easiest to take the small plate with slits and place it upside down on an old film canister. Then placing the blades onto their position on the plate one at a time working clockwise. The final three or so will have to be slipped under the first few. I do this by pushing the earlier blades out of the way to make room and then as gently as possible sliding the newer blade under it. When you have each of the blades back in position the case can be placed back on top.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;compur-shutter-shutter-blade-assembly.d7985e03fbd50393.jpg&quot; &#x2F;&gt;
&lt;p&gt;With the aperture blades replaced, the shutter blades can be cleaned. The shutter blades are attached to the plate with a screw each (they each have a little peg that fits into a rotating plate in the center of the main plate that actuates the shutter). Like the aperture blades they should each be removed and cleaned. This is also when the plate should be cleaned thoroughly.&lt;&#x2F;p&gt;
&lt;p&gt;When the plate and blades are clean it&#x27;s time to reassemble the shutter. Reversing the process above one piece at a time. Note: It can be a little tricky to get the main spring back in place correctly. Take care to make sure that the ring is correctly positioned inside of the peg on the retard gear train, the lever that releases the peg, and a little lever on the other side that works with the B and T settings. With care (check your photos!) and patience at the end of this process you should have a clean and working shutter.&lt;&#x2F;p&gt;
&lt;video controls&gt;
    &lt;source src=&quot;&#x2F;blog&#x2F;repair-patent-etui&#x2F;compur-shutter-working.mp4&quot; type=&quot;video&#x2F;mp4&quot; &#x2F;&gt;
&lt;&#x2F;video&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Repair: Minolta Autocord</title>
        <published>2023-11-02T00:00:00+00:00</published>
        <updated>2023-11-02T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/repair-minolta-autocord/"/>
        <id>https://anders.conbere.org/blog/repair-minolta-autocord/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/repair-minolta-autocord/">
            &lt;p&gt;The Minolta Autocord was a Twin Lens Reflex (TLR) camera manufactured between 1955 and 1966. It was a popular camera designed to compete with the Rolleiflex from Germany but at a much more affordable price point. Like the Rolleiflex it was equipped with a four element tessar type 75mm f3.5 lens. Today they remain an affordable alternative to more expensive TLRs on the market; A reliable, light, and easy to carry medium format camera, with a tack sharp lens. Of all my cameras, the Autocord might be my favorite camera when I just want to walk around and enjoy taking pictures.&lt;&#x2F;p&gt;
&lt;p&gt;I love digging into new cameras and learning how they work, but there&#x27;s an old rule of repair, you don&#x27;t practice on something you love! So I&#x27;ve been patiently watching for a good deal on an autocord to come up. Imagine my excitement when a woman in the local camera club mentioned that she&#x27;d be willing to part with a broken one for cheap. Which brings us to today&#x27;s post. Repairing a Minolta Autocord.&lt;&#x2F;p&gt;
&lt;p&gt;This Autocord arrived with a number of a couple of obvious issues. Focus was a disaster, it sounded like the focus mirror was loose and bouncing around up top, and viewing through the focus screen was all wrong. The shutter speed controls worked, but were incredibly stiff, to the point where I worried about breaking the lever.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;fixing-focus&quot;&gt;Fixing Focus&lt;&#x2F;h2&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;autocord-front.d035adec52d07ca5.jpg&quot; &#x2F;&gt;
&lt;p&gt;Getting to the mirror on the autocord is a simple affair. The four slotted screws must be removed. After that the focus hood can be simply lifted off the body. Looking into the body, the problem made itself apparent.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;autocord-mirror-loose.98d02bc199d2a9dd.jpg&quot; &#x2F;&gt;
&lt;p&gt;Replacing the mirror is easy, but a little fiddly. The mirror rests on top of the brass springing armature, under the two half moons on either side of the body, set into the holder at the bottom. The fiddly part is just getting it all set and the moons tightened without them falling out. But nothing patience can&#x27;t solve.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;autocord-focusing-screen.c748f1f72d356f11.jpg&quot; &#x2F;&gt;
&lt;h2 id=&quot;fixing-the-shutter-speed-control&quot;&gt;Fixing the shutter speed control&lt;&#x2F;h2&gt;
&lt;p&gt;The shutter speed controls on the autocord fit into a complex assembly attached to the front of the camera surrounding the lenses.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;autocord-controls.88e832cd181aefe3.jpg&quot; &#x2F;&gt;
&lt;p&gt;The control assembly can be removed by lifting the leatherette on the front and removing the 4 screws holding it to the body as well as removing the head of the flash sync lever. [Warning: There are two little screws at the bottom of the front plate that look like maybe they could be involved. They are NOT. They hold a lever arm that actuates the shutter lever from the shutter release button on the body. If you remove them you will have to remove shutter to get access to them].&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;autocord-controls-assembly-back.61e040d68f3605df.jpg&quot; &#x2F;&gt;
&lt;p&gt;There were three issues causing the shutter speed controls to be extra stiff. First you might be able to make it out but there is a vanity ring that surrounds the controls and filter bayonettes on the control assembly. This one had been bent horribly at some point and a large hill in the middle caused the Light Value ring on the shutter speed controls to rub. Second, the control assembly was full of old sticky grease. Third the actual shutter control on the shutter is a bit stiff. I figured I would disassembly the assembly to remove the vanity plate. Straighten it out and reinstall it, and in the process give everything a good clean and grease and that would kill two of my birds with one stone.&lt;&#x2F;p&gt;
&lt;p&gt;Disassembly turns out to be not too bad. Both control rings sit around the taking lens, and communicate the changes to the window above the viewing lens through a geared ring. Both sets of rings are fixed to the assembly with a locking ring and then a spacer. All can be removed with a lens spanner [Warning: Mine werequite tight and required a good bit of muscle to get them to turn]. In order to keep track of where each ring started and where they lined up with their meshing gear I recommend making a mark on each gear that shows alignment.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;autocord-controls-assembly-gear-marks.a83c5e016fd8815a.jpg&quot; &#x2F;&gt;
&lt;p&gt;With the vanity plate straightened and the gearing all cleaned and greased the shutter speed control remains a little bit stuff, but completely usable.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;autocord-controls-assembly-front.29c28349a2800f35.jpg&quot; &#x2F;&gt;
&lt;p&gt;Once focus and the shutter speed controls were working I ran a test roll through the camera. While the shutter worked well it did expose another issue, something was wrong with the film winding mechanism.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;fixing-the-winding-mechanism&quot;&gt;Fixing the winding mechanism&lt;&#x2F;h2&gt;
&lt;p&gt;Normally with an autocord the crank on the right both winds the film and charges the shutter. You do a 3&#x2F;4 wind the crank stops, you wind it back to the top, you take a shot, repeat. But on this camera, I would take a shot and then not be able to advance the crank arm more than 10 or 15 degrees. There is an interlock in the crank assembly that prevents winding without having taken a shot, and this interlock was missbehaving. (There were other oddities, like winding too long, but this was the big one). To fix this issue we have to remove the right hand plate under the crank arm.&lt;&#x2F;p&gt;
&lt;p&gt;To start remove the crack arm, and strap lugs, and double exposure lever. Then remove the leatherette to reveal five screws. Remove the screws and lift the plate. [Warning: There is a little &quot;mushroom&quot; and spring that fit into the winding gear at the bottom, they will usually stick to the plate when you remove it and are easy to lose if you&#x27;re not careful].&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;autocord-under-right-plate.30c505786768173d.jpg&quot; &#x2F;&gt;
&lt;p&gt;The shutter crank interlock lives on the right hand side of this mechanism. The way this works is somewhat complicated but I&#x27;ll do my best to explain, with the help of the below diagram.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;autocord-shutter-crank-interlock.dbeb8c9ee13fbe18.jpg&quot; &#x2F;&gt;
&lt;p&gt;First to describe how the camera advances frames. When you turn the crank, and film is in the camera, there is a gear in the film spool that rotates the film counter. Under the film counter there is a toothed plate that the large y shaped lever slips into every frame. When that Y lever slips into the hole, its rotation moves the green lever clockwise, which unlatches the red lever. The red lever acts as a brake on the crank arm, halting further winding.&lt;&#x2F;p&gt;
&lt;p&gt;This process is reversed in two steps. First when the crank arm is reversed to put it back into the starting position, it shifts the y lever out of the gap and frees the green lever to return. Then when you fire the shutter there is a ring under the shutter that is released, connected to the blue lever, allowing the blue lever to rotate counter clockwise, sticking the back of the red lever. This lifts the red lever and it&#x27;s caught by the hook on the end of the green lever.&lt;&#x2F;p&gt;
&lt;p&gt;In my camera, the blue lever wasn&#x27;t moving with enough force to lift the red lever and so the brake wasn&#x27;t being released consistently. Ultimately this ended up being due to two things. First that there were improperly installed washers on some of the pivots, and there was gunky grease on the rings under the shutter.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;cleaning-the-charging-and-reset-lever-rings&quot;&gt;Cleaning the charging and reset lever rings&lt;&#x2F;h2&gt;
&lt;p&gt;First in order to clean under the shutter we have to remove the shutter. This can be done by opening the back of the camera and removing a press fit light baffle, the rear element of the lens, and the shutter locking nut with a lens spanner.&lt;&#x2F;p&gt;
&lt;p&gt;Under the shutter of the autcoord are two important rings that communicate movements to and from the right hand plate. The shutter charging ring is rotated by a cam below the crank and actuates the shutter charging lever on the shutter. The reset lever ring (as described above) is tensioned and held until the shutter is released and begins the reset process on the right hand mechanisms. Both are held in place by the shutter itself. The order is focus spacing rings, reset lever ring, spacer, charging ring.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;autocord-under-the-shutter.238fb4858acb3840.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;autocord-shutter-rings.27fb288dbdad233b.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Although my camera had a lot of grease on these levers, I was informed by Karl Bryan (noted autocord repair person) that the chromed surfaces shouldn&#x27;t have any grease on them. Removing the grease and cleaning everything reduced friction enough that the reset process worked.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;closing-notes&quot;&gt;Closing notes&lt;&#x2F;h2&gt;
&lt;p&gt;Actually a surprisingly straightforward camera to work on. Everything was easy to get to and relatively simple. Another feather in the cap of the autocord I suppose, since I imagine this bodes well for its future repairability and longevity.&lt;&#x2F;p&gt;
&lt;p&gt;Here are two of the images from the test roll (HP5+ in D76 1:1 for 13 min). These are sharp, in focus, well exposed images and it looks like the camera is working well again.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;test-roll-1.0d4e93fa270072d9.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;test-roll-2.c18865992dac9d3b.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Repair: Mamiya-Sekor Press 90mm f&#x2F;3.5</title>
        <published>2023-08-25T00:00:00+00:00</published>
        <updated>2023-08-25T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/repair-mamiya-sekor-press-90mm-f3-5/"/>
        <id>https://anders.conbere.org/blog/repair-mamiya-sekor-press-90mm-f3-5/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/repair-mamiya-sekor-press-90mm-f3-5/">
            
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;cover-image.9ffc207c50aa93a4.jpg&quot; &#x2F;&gt;
&lt;p&gt;This is a Mamiya-Sekor 90mm f&#x2F;3.5 lens for the Mamiya Press system. It&#x27;s the standard kit lens for the Press cameras before the Universal and Super 23 were made. I bought this lens as a reference for a previous repair, I ended up resolving those issues and hadn&#x27;t taken much time to look at this lens. This lens has some standard issues: The aperture blades are gummed up and wont move and the focus is VERY stiff (so stiff I had to put gloves on to get it back to infinity without cutting my hands).&lt;&#x2F;p&gt;
&lt;p&gt;The first step is to remove the shutter from the lens housing. To do this there&#x27;s a ring on the back that should be removed. I recommend removing the rear cell first as this can often be done easily by hand and makes the subsequent steps easier.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;remove-rear-ring.47811dd6f6517594.jpg&quot; &#x2F;&gt;
&lt;p&gt;Once that&#x27;s off, you&#x27;ll have to slide the shutter off of the lens housing. The flash setting lever is set in a slit that can require some jiggering to get out properly. The PC sync port is attached with a wire, some lenses will have a small slit that allows you to remove the port from the lens, some don&#x27;t and you&#x27;ll need to desolder the port from the wire to remove it.&lt;&#x2F;p&gt;
&lt;p&gt;At this point the shutter should be removed from the lens housing and you can remove the front cell.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;remove-front-cell.7c44b54e38dc52c1.jpg&quot; &#x2F;&gt;
&lt;p&gt;In order to disassembly the shutter the first step is to remove the lock ring that holds the top of the shutter all together. There is a small set screw that locks the ring that must be removed first (warning it is very small). After that the ring can be removed. The cover plate, and shutter timing set ring, and the control ring are all just set in place on top of this. Remove each one and note how it was put in. While there is only one way to put it back together, studying this a little will help when it comes time to put it back together.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;cover-plate.a6c7849d0b6bd800.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;control-ring.70294a04cdda5f10.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;At this point your shutter should look like this (note: there were a number of variations of this shutter made and they have minor differences):&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;open-shutter.dfd2d3ef5b022dfb.jpg&quot; &#x2F;&gt;
&lt;p&gt;In order for us to clean the aperture and shutter blades we need to remove the plate that holds the various parts from the shutter housing. To do this safely we first need to remove from the plate the parts that have sprints tensioned against the housing. If you don&#x27;t do that first you risk bending or breaking the springs as well as making reassembly very difficult&lt;&#x2F;p&gt;
&lt;p&gt;First I remove the winding spring:&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-winding-spring.290d98241ef4a6ce.jpg&quot; &#x2F;&gt;
&lt;p&gt;Then I remove the shutter lever and little guy next to it:&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-disassembly-1.b1149787ca8f174c.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-lever.5285db232569e257.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-disassembly-2.33311a23609f2390.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-next-to-shutter-lever.4651865295a4cd65.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Then I remove the main spring gear:&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-main-spring-gear.ab00e1e6c359d4ef.jpg&quot; &#x2F;&gt;
&lt;p&gt;Next is this little screw that holds the return spring for the shutter blades and a locking detent for the flash setting ring.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-return-spring-holder.c3ebaec7b10029b0.jpg&quot; &#x2F;&gt;
&lt;p&gt;As a warning, this screw is a pain to get back in. The process I&#x27;ve landed on is to first set the detent spring down slightly to the right of where the screw hole is. Then I place the screw with the detent spring attached near that spring further to the right, then I place my tweezers slightly to the left at the edge of the plate, and with a slotted screw driver I position it into the slot while pushing towards the hole to the right. Usually using this method I can tension the springs and manage to hook it into the hole with a couple of tries.&lt;&#x2F;p&gt;
&lt;p&gt;Lastly I remove the two pieces that form the shutter catch (the hole the main spring tensioned until the shutter lever is pressed). One looks like a J and the other looks like a lightning bolt.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-main-spring-catch.e7c7949e4f090f25.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-main-spring-catch-J.3951f510c6dd889c.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-main-spring-catch-lightning-bolt.0c0dfc44a0873a68.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;With those two pieces out of the way we have removed all the parts with tension springs. We can then flip the shutter over and remove the aperture ring and flash setting ring.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-aperture-ring.87f49a1343d5844d.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-flash-setting-ring.ac9247442061f216.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;With both rings removed you can then remove the retaining screws that hold the parts plate to the shutter housing:&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-plate-retaining-screws.1c27645736ec4518.jpg&quot; &#x2F;&gt;
&lt;p&gt;Flip the shutter back over and carefully remove the parts plate. Note that the shutter blades will probably come out all a mess. Usually a few will be stuck to stuff and some won&#x27;t be. This is all fine. Just set them aside for cleaning later.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-plate-removed.3b270343b0c627c1.jpg&quot; &#x2F;&gt;
&lt;p&gt;Under the shutter blades will be a plate that holds the aperture blades against the bottom of the shutter housing. Remove the three screws and the aperture blades.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-aperture-holding-plate.23d0e67908baccf9.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-aperture-control-plate.8ae88db31a407bb6.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;At this point your shutter is completely disassembled. Take this time to clean all the surfaces and each blade. Sometimes a soaking in naphtha or isopropyl alcohol will help clear away persistent grease and grime. When everything is good and clean reverse this process to re-assemble the shutter.&lt;&#x2F;p&gt;
&lt;p&gt;I didn&#x27;t remember to fully document my process for reassembling the various blades, it&#x27;s tricky. For a shutter this size I like to set the parts on an old film canister and reassemble from there. I use a pair of blunt tipped tweezers to avoid scratching along with a toothpick to help position the blades back into place. The aperture blades will be easy until the last one that needs to slide under the first one, but if you&#x27;re patient it should work out okay.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;aperture-blade-clean-replace-1.fde7b757fd1cc014.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;aperture-blade-clean-replace-2.bbcec5ba58174b97.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-blade-clean-replace-1.3b50801d6801eeb5.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Anyway, that&#x27;s what I have documented, if you have questions shoot me an email and I&#x27;ll see if I can dig up more resources.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Repair: Argus C3</title>
        <published>2023-05-14T00:00:00+00:00</published>
        <updated>2023-05-14T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/repair-argus-c3/"/>
        <id>https://anders.conbere.org/blog/repair-argus-c3/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/repair-argus-c3/">
            
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;IMG_2001.1db08f291c8ca6c7.jpg&quot; &#x2F;&gt;
&lt;p&gt;After the challenges that I had with repairing my Olympus 35SP I wanted to step back and think about how I could learn and grow and repair. I got a recommendation to try starting at the beginning of the enthusiast cameras and moving forward one step at a time. So I bought a Kodak Brownie! I should write a quick post about that camera too, but I don&#x27;t have anything to say about it that hasn&#x27;t already been said. And this post is about the Argus C3.&lt;&#x2F;p&gt;
&lt;p&gt;The Argus C3 is a classic american camera, it is boxy, heavy, inellegant, simple, and super easy to repair! There were millions of them sold and they can be picked up for cheap used all over the country. This made it a great candidate to be my next camera attempt. The camera came with this description:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Shutter fires, is not accurate, is sticky at 1&#x2F;10th setting. Rangefinder is very foggy, almost impossible to use, and needs adjustment. Lens has minimal internal dust, no haze or fog. Focus is very stiff&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;I liked this camera because it was, clean, the lens was in great shape, and it was appropriately priced ($15).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;sticky-shutter&quot;&gt;Sticky Shutter&lt;&#x2F;h2&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;IMG_1995.767cff6a4531de55.jpg&quot; &#x2F;&gt;
&lt;p&gt;The first issue I wanted to look at was the shutter speeds. When cocked and fired the shutter blades frequently got stuck, a second shot might get them to move, or not. The Argus C3 has a focal plane leaf shutter and is pretty easy to get access to. After opening the front of the camera it only requires three screws to remove the entirea assembly.&lt;&#x2F;p&gt;
&lt;p&gt;The first thing I noticed on opening the camera was that it was pretty clear what the issue with the shutter was. There was grease all over the body of the camera, and SAND in all the grease. It was clear grease on the shutter blades. I pulled the shutter out and cleaned it with lighter fluid. Some actuation of the shutters later and the shutter moved smoothly again.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;stiff-focus&quot;&gt;Stiff Focus&lt;&#x2F;h2&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;IMG_1997.bd8a20c7c8b76735.jpg&quot; &#x2F;&gt;
&lt;p&gt;It was apparent to me until I set about cleaning the lens action that this Argus C3 is an interchangable lens rangefinder! Argus produced a small range of lenses for the camera on a 33mm mount. Happily this makes is quite easy to remove the lens and get it fixed.&lt;&#x2F;p&gt;
&lt;p&gt;Getting access to the helicoils only requires removing one set screw and then the two pieces unscrew. Inside of the lense we found... more grease and sand. After clearning the lens and adding a small amount of oil the lense movement was restored.&lt;&#x2F;p&gt;
&lt;p&gt;I found getting the coils back together to be a little tricky. I left a mark where the groove for the set screw should end up, but this wasn&#x27;t super helpful. The challenge ends up being lining up the lens action with the gear teeth on the outside endge of the lens that operate the coupled rangefinder. The trick ends up just being each of the 6 helicoil positions until you find the one where the lens top screws all the way down to the bottom.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;foggy-range-finder&quot;&gt;Foggy range finder&lt;&#x2F;h2&gt;
&lt;p&gt;Pretty easy to clean. The viewfinder assemebly is held in by a single snap roing on the back of the camera. Opening that up there two lenses, spaced by what appears to be a little cardboard tube. Cleaning the lenses and re-assembling fixed the issue entirely. Note to folks, the order of those little lenses matters, I ended up having to play with it a bit. The bigger lens should have a flat side, that side goes towards your eye.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;shutter-speeds&quot;&gt;Shutter speeds&lt;&#x2F;h2&gt;
&lt;p&gt;The Argus C3 puports to support shutter speeds from 1&#x2F;300 to 1&#x2F;10. In practice folks suggest that 1&#x2F;300 was always more like 1&#x2F;200 and the way the system works the speeds in between are pretty much guess work. That being said my camera had some specific issues.&lt;&#x2F;p&gt;
&lt;p&gt;I noticed that after repairing the shutter that the shutter blades weren&#x27;t opening entirely, and measuing shutter speeds I was getting 1&#x2F;200th across the board. The issue ended up being that the shutter cocking cam wasn&#x27;t positioned correctly.&lt;&#x2F;p&gt;
&lt;p&gt;The way the shutter cocking mechanism works is that as you rotate the shutter cocking arm, it rotates an assmebly in the body of the camera, that pulls a metal ribbon. The ribbon pulls a little carriage with a shaped buttom that moves the shutter actuator. Turned far enough and the assembly catches on the shutter trigger and waits for a press.&lt;&#x2F;p&gt;
&lt;p&gt;Adjusting the assmebly angle allows you to fine tune the position of the carriage so that the shutter actuator is properly moved. Fixing that also put the assambly&#x27;s bottom flange in the right position for the shutter speed adjustment armg thing. So yeah.&lt;&#x2F;p&gt;
&lt;p&gt;Finally you can fine tune the shutter speeds themselves with this little triangle that translates the downward arm of the shutter speed dial into tension on a spring in the shutter speed assembly. Tweaking that got us closer (but it&#x27;s still not great). I think when I shoot with it I&#x27;ll mostly try to be in 1&#x2F;200 and when I slow down I&#x27;ll try to give that some lattitude.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;range-finder-adjustments&quot;&gt;Range finder adjustments&lt;&#x2F;h2&gt;
&lt;p&gt;Given that I&#x27;d been mucking acbout with the rangefinder and lens I figured I should check that it&#x27;s adjusted correctly. (Side note, the way interchangeable lenses work with this system makes this all a bit of a guess). But the rangefinder seemed good. I tested at 25&#x27; and infinity and it worked perfectly.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;final-wrap-up&quot;&gt;Final wrap up&lt;&#x2F;h2&gt;
&lt;p&gt;The last thing I had to do was replace the leatherette and clean everything up. Replacing leatherette sucks, the previous glue turned into nasty black sludge and got everywhere, and pliobond smells terrible. Would not recommend, my least favorite part so far.&lt;&#x2F;p&gt;
&lt;p&gt;Resources:&lt;&#x2F;p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;rick_oleson.tripod.com&#x2F;index-120.html&quot;&gt;Rick Oleson&#x27;s Argus C3 Page&lt;&#x2F;a&gt;&lt;li&gt;
&lt;&#x2F;ul&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Repair: Olympus OM 28mm f&#x2F;2.8</title>
        <published>2023-05-09T00:00:00+00:00</published>
        <updated>2023-05-09T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/repair-olympus-om-28mm-f28/"/>
        <id>https://anders.conbere.org/blog/repair-olympus-om-28mm-f28/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/repair-olympus-om-28mm-f28/">
            
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;olympus-om-28mm-f28.2aa82e5f0ff51ba7.jpg&quot; &#x2F;&gt;
&lt;p&gt;Bought this lens while picking up an OM-1n body from a former professional photographer here in Seattle. We got to talking and she mentioned that she had some other stuff in a box and I came home with a book, the lens, a cable release, and some other bits and boops. The lens is a really nice 28mm with a decently fast 2.8 aperture, it&#x27;s super sharp up to f16, and it&#x27;s tiny. However it came to me non-functional, the aperture ring was jammed tight and no amount of pushing and pulling would get it to move, and the aperture blades were sticky.&lt;&#x2F;p&gt;
&lt;p&gt;For the aperture ring, many Olympus lenses use a small ball bearing to provide a detente between f-stops. My hypothesis is that the ball bearing had moved out of it&#x27;s little hole and had become jammed under the plate that moves over it. The fix for this issue involves opening up the front of the lens, unscrewing the name ring, and then readjusting the ball bearing.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;aperture-detentes.4d98114c778d4be8.png&quot; &#x2F;&gt;
&lt;p&gt;This lens the name ring has spanner holes that are deep set and my spanner can&#x27;t reach them. I tried to use a lens rubber tool (it&#x27;s like a little rubber cup that you can use to unscrew plates with friction), but that didn&#x27;t work. I tried putting the lens in the freezer for a few hours. I tried lubricating the threads with some Ronsonol. Really nothing worked.&lt;&#x2F;p&gt;
&lt;p&gt;I built this contraption to get more pressure on the name plate. One of the problems I was having is that this rubber cub set isn&#x27;t very stiff and will fold with enough pressure. This set up gives more structure to the cup. With the lens turned upside down and pushing down into the table I pushed pretty hard, the name ring didn&#x27;t move... but the aperture ring did! After that the ring moved perfectly with a really nice perfect clickyness.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;contraption.27829cad3bf29267.jpg&quot; &#x2F;&gt;
&lt;p&gt;For the sticky shutter blades involves opening up the other side of the lens. It&#x27;s pretty straightforward, three screws hold the back plate on. Mine were pretty tight but a drop of Acetone got them moving. Below the plate there is a trio of plates that interface with the aperture check and lens release buttons on the side of the lens.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;plate-trio.a48777625ca9e2a3.jpg&quot; &#x2F;&gt;
&lt;p&gt;The common failure point for the blades is for a bit of lubricant to drip down onto those plates and just increases the friction enough to drag the blade movement down. A little IPA and a cotton swap to clean them up got them moving nicely again, and with that the lens was back in action.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Repair: Olympus 35 SP</title>
        <published>2023-04-30T00:00:00+00:00</published>
        <updated>2023-04-30T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/repair-olympus-35sp/"/>
        <id>https://anders.conbere.org/blog/repair-olympus-35sp/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/repair-olympus-35sp/">
            &lt;p&gt;I recently picked up an Olympus 35-SP for a good price on eBay, knowing that it had a busted meter and some dust on the inside of the lens. I&#x27;d been repairing some Olympus vintage lenses for my Pen-F and was feeling capable. However this is not a story of success but a story of failure.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;olympus-35sp-intake.31209c387e070c75.jpg&quot; &#x2F;&gt;
&lt;p&gt;The Camera, other than the known flaws was in very good condition. The big things worked, all the controls moved smoothly, the apertures all worked, the shutter moved cleanly, focus was set correctly, etc.&lt;&#x2F;p&gt;
&lt;p&gt;I built a little system for measuring shutter speeds. It&#x27;s pretty simple, a laser, a photo diode, and a little samd21 microcontroller that measures the time between when it sees the laser and when it goes away. Using this system this camera had very accurate shutter speeds on top of it all.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;shutter-speed-measurement.f05471c43afb1f17.jpg&quot; &#x2F;&gt;
&lt;h2 id=&quot;the-meter&quot;&gt;The Meter&lt;&#x2F;h2&gt;
&lt;p&gt;The first thing I worked on was the meter. The most common kind of issues with these camera meters is just simple electrical faults. It&#x27;s really common for corrosion around the battery terminal to cause power failures so I started by opening up the bottom.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;olympus-35sp-bottom.0ab4f6e003d72581.jpg&quot; &#x2F;&gt;
&lt;p&gt;The wire connecting to the battery terminal had failed and come lose, so I soldered in some more wire to give myself some room, and soldered it back into the battery terminal.&lt;&#x2F;p&gt;
&lt;p&gt;The next most common issue is that the CdS cell fails. To check that I opened up the top of the camera. The meter in this camera sits behind a little iris on the left of the camera. (the iris is controlled by a little ISO dial and adjusts the amount of light the meter receives to accommodate the film speed.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;olympus-35sp-top.3eb526cd4f4cc300.jpg&quot; &#x2F;&gt;
&lt;p&gt;(It&#x27;s a bit hard to see here but the actual photocell is located at the very top of this image with the three wires coming off).&lt;&#x2F;p&gt;
&lt;p&gt;Once I&#x27;d made sure that the cell was getting the correct 1.35v from the battery I wanted to check that the cell itself was working. The 35-SP is unique for this era of cameras because it contains two metering zones, an center averaged zone and a spot zone. The Cell thus has one wire for each of the zones. While I don&#x27;t have the tools to measure the accuracy of the meter, I could see that as I brought a light up to the meter and turned it away I saw a voltage swing from about 1v to 250mv which to me indicates that the cell is at least doing something.&lt;&#x2F;p&gt;
&lt;p&gt;So then there&#x27;s the last part of the meter, the galvanometer, which is the electrical component that moves the meters needle in response to the change in voltage.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;olympus-35sp-galvanometer-in-housing.400e889c3835082f.jpg&quot; &#x2F;&gt;
&lt;p&gt;The galvanometer is the brass piece you can see here with the three wires leading to it. You can barely make out the needle stuck to the far left.&lt;&#x2F;p&gt;
&lt;p&gt;To test the galvanometer I took it out of the camera and desoldered it. A galvanometer works by running a little current through a winding, the needle sits in the winding and is moved by the generated magnetic field. When testing it you should get a low resistence, just the resistence of the windings, but when I tested mine out of circuit it tested open.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;olympus-35sp-galvanometer-out-of-housing.81580e630628077e.jpg&quot; &#x2F;&gt;
&lt;p&gt;Looking at it, there are little springs that connect from the housing to the windings, both the top and the bottom springs had come desoldered on mine. But even after repair the meter tested open. Sometimes, poking around enough it would work, but never reliably.&lt;&#x2F;p&gt;
&lt;p&gt;Setting the meter aside for a minute I decided to look into the dust in the lens.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-lens&quot;&gt;The Lens&lt;&#x2F;h2&gt;
&lt;p&gt;The lens on this camera is a famously sharp 40mm f1.7. I knew that to get to the back of the front element I needed to open up the front of the lens. The first piece is a small little alluminum ring called the &quot;name ring&quot; or the &quot;brand ring&quot;, it has the manufacturers brand and the lens info. For some 35-SPs this is just glued in, but mine is one of the less common threaded in kind.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;olympus-35sp-name-ring.9c2c67f0db6974a2.jpg&quot; &#x2F;&gt;
&lt;p&gt;I&#x27;ve removed these a good handful of times and so set to it without thinking too much about it. However while the lens got moving okay, after a few turns it got well and truly stuck. Looking back at this image today I can see that the threads aren&#x27;t clean, and this is something I&#x27;m unlikely to ever forget. No ammount of trying could get it unjammed. I tried everything, I couldn&#x27;t reverse it back, I cleaned it with IPA, I oiled the threads, I pushed and pulled, and eventually I give it one big go and heard a series of pops and knew that I&#x27;d finally broken something.&lt;&#x2F;p&gt;
&lt;p&gt;My best hypothesis was that I&#x27;d broken the three screws that I knew sat just below the name ring on the lens assembly. This felt BAD. After all, I&#x27;d started with a working camera. The unspoken rule of folks repairing these old things is first do no harm and I broke that rule. I set that camera down and walked away.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;coming-back&quot;&gt;Coming back&lt;&#x2F;h2&gt;
&lt;p&gt;Okay so the name ring was jammed, and the camera was broken. I wouldn&#x27;t be able to get it repaired for a worthwhile amount of money, so I might as well keep trying. So I decided to cut the name ring off. I dremeled a good bit and then used some tiny hand files to cut through the rest of the way. When I finally got to the threads, I took some needle nose pliers and twisted a little and the ring popped out, and along with it a long string of thread that it had been jammed on.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;olympus-35sp-name-ring-cut.746976073914f651.jpg&quot; &#x2F;&gt;
&lt;p&gt;With the name ring out I could finally see what damage I&#x27;d done! Disassembling the rest of the lens went pretty smoothly. First the front lens assembly comes out, a lens spanner does the trick. Then there are three screws that hold the lens controls in (warning they&#x27;re glued in, little acetone goes a long way).&lt;&#x2F;p&gt;
&lt;p&gt;Normally, all of the control rings are mounted up to three little brass fittings attached to the shutter assembly. But mine just came free as soon as I got the lens out.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;olympus-35sp-lens-dissassembly-ring.cbd104c25812cc72.jpg&quot; &#x2F;&gt;
&lt;p&gt;The three brass rings here were supposed to be attached to this plate here:&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;olympus-35sp-lens-dissassembly.066a2e6a86b983c2.jpg&quot; &#x2F;&gt;
&lt;p&gt;This is what I broke. I had pulled those three brass fittings out. At first I thought these fittings were sort of riveted in, where the back flange would be bent over to hold it to the body. But looking closer the kind of trefoil shape on the plate reminded me a lot of pressure release cut outs and I think they were just pressed in. The brass fittings themselves had inherited the shape of the cut out. By lining them up right, and a little muscle I pressed them back in without much trouble (and added a little epoxy to the backs of each to hopefully keep them in place).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;wrapping-things-up&quot;&gt;Wrapping things up&lt;&#x2F;h2&gt;
&lt;p&gt;Well with the fittings replaced I could re-assemble the lens and getting things back together. I took a brief moment to clean up the lens.&lt;&#x2F;p&gt;
&lt;p&gt;So what&#x27;s the score? I got a clean lens, and in return... I ruined a name ring and managed to leave a couple small scratches on the lens. Ultimately this was just a bunch of fail.&lt;&#x2F;p&gt;
&lt;p&gt;I think there&#x27;s two big lessons for me here.&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;In the future I will spend a lot more time looking at filter threads. Maybe I&#x27;ll look for a lens wrench that can recut them. If I&#x27;d cleaned out those threads I don&#x27;t think anything would have gone wrong.&lt;&#x2F;li&gt;
&lt;li&gt;Cutting the ring off was way less damage than using force. I could probably get a new ring off a donor for not very much money. Way better than breaking a camera.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;In the end, I&#x27;m bummed that I did damage but I&#x27;m glad I learned some things. The name ring isn&#x27;t functional in any way, and maybe I&#x27;ll get cute and put in a 3D printed version. I think this camera is fully functional now, so I plan to put some film in it and take some pictures!&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Dive Into WebGL Text Rendering</title>
        <published>2023-01-30T00:00:00+00:00</published>
        <updated>2023-01-30T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/dive-into-webgl-text-rendering/"/>
        <id>https://anders.conbere.org/blog/dive-into-webgl-text-rendering/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/dive-into-webgl-text-rendering/">
            &lt;p&gt;As part of learning how to build applications in WebGL + WASM I wanted to get a better understanding of the state of text rendering. My previous experiences working with OpenGL suggested that it&#x27;s relatively easy to get some text drawn to the screen but it&#x27;s much harder to get text that looks great. This article is an attempt to document both the current state of text rendering in WebGL but also techniques for implementing text rendering.&lt;&#x2F;p&gt;
&lt;p&gt;Resources:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.warp.dev&#x2F;blog&#x2F;adventures-text-rendering-kerning-glyph-atlases&quot;&gt;Warp: Adventures in Text Rendering&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;servo&#x2F;webrender&#x2F;blob&#x2F;master&#x2F;webrender&#x2F;doc&#x2F;text-rendering.md&quot;&gt;Servo: Text Rendering&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;alacritty&#x2F;alacritty&#x2F;tree&#x2F;master&#x2F;alacritty&#x2F;src&#x2F;renderer&#x2F;text&quot;&gt;Alacritty: Text Renderer&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;emilk&#x2F;egui&#x2F;tree&#x2F;master&#x2F;crates&#x2F;epaint&#x2F;src&#x2F;text&quot;&gt;Egui: Text Renderer&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;alexheretic&#x2F;ab-glyph&quot;&gt;ab-glyph&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;redox-os&#x2F;rusttype&quot;&gt;rusttype&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Notes on WASM and WebGL</title>
        <published>2023-01-29T00:00:00+00:00</published>
        <updated>2023-01-29T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/notes-on-wasm-webgl/"/>
        <id>https://anders.conbere.org/blog/notes-on-wasm-webgl/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/notes-on-wasm-webgl/">
            &lt;p&gt;I&#x27;ve been using &lt;a href=&quot;https:&#x2F;&#x2F;www.figma.com&#x2F;&quot;&gt;Figma&lt;&#x2F;a&gt; more at work and have been impressed with both the application as well as its performance. One of the things to know about figma however is that while it runs completely on web standard technology, it is running as a WASM application using WebGL. On the one hand this feels a bit like the return of flash applications (but with standards!), while on the other hand I&#x27;m so completely sick of the creaking tower of abstractions that modern JavaScript has produced.&lt;&#x2F;p&gt;
&lt;p&gt;These notes are an attempt to understand the state of WASM and WebGL for building Boring Web Applications. That is, applications that are predominantly about simple user interfaces like forms, inputs, buttons, text, images, etc. For this project I&#x27;ll be using Rust and the rust tooling in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rustwasm&#x2F;wasm-pack&quot;&gt;wasm-pack&lt;&#x2F;a&gt;. My goal will be to build a simple web form to processes some textual input and renders the outputs, but purely running in wasm &#x2F; webgl.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-is-wasm&quot;&gt;What is WASM&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;webassembly.org&#x2F;&quot;&gt;WebAssembly&lt;&#x2F;a&gt; or WASM is a &quot;binary instruction format for a stack-based virtual machine [...] designed as a portable compilation target for programming languages, enabling deployment on the web&quot;. Said another way it&#x27;s an intermediate bytecode format that can shipped to browsers to be run. This is notable because as an intermediate format it enables language designers to target browser development from languages beyond JavaScript. Many languages today have compilers available that will output WASM as a target some notable examples are C&#x2F;C++, C#, Rust, Zig. Beyond that the ubiquity of javascript engines there&#x27;s a large number of environments that have suddenly become possible WASM targets.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-is-webgl&quot;&gt;What is WebGL&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.khronos.org&#x2F;webgl&#x2F;&quot;&gt;WebGL&lt;&#x2F;a&gt; a 3D graphics API based on &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;OpenGL_ES&quot;&gt;OpenGL ES&lt;&#x2F;a&gt; itself a subset of the &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;OpenGL&quot;&gt;OpenGL&lt;&#x2F;a&gt; graphics API designed for mobile or embedded applications. WebGL is notable because it offers a powerful, cross platform, 3D graphics target for the browser. For many targets the browser is able to use 3D acceleration and run directly on the computer&#x27;s GPU which provides a much high performance graphics target than you otherwise have access to from the browser APIs. There are examples of rich 3D environments, games, and 3D accelerated applications that have shipped to browsers enabled by this technology.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;setting-up-rust&quot;&gt;Setting up rust&lt;&#x2F;h2&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;rustup target add wasm32-unknown-unknown
&lt;&#x2F;span&gt;&lt;span&gt;cargo install -f wasm-bindgen-cli
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;forgetting-about-wasm-pack&quot;&gt;Forgetting about wasm-pack&lt;&#x2F;h2&gt;
&lt;p&gt;If you search for rust and wasm you&#x27;ll probably be directed to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rustwasm&#x2F;wasm-pack&quot;&gt;wasm-pack&lt;&#x2F;a&gt;. I had troubles with it though. When I tried to run it I ended up in the middle of some webpack compilation error, and this is just deep in my current work trauma so I couldn&#x27;t.&lt;&#x2F;p&gt;
&lt;p&gt;(notes on installing wasm-pack)&lt;&#x2F;p&gt;
&lt;p&gt;Wasm-pack ships with an &lt;a href=&quot;https:&#x2F;&#x2F;rustwasm.github.io&#x2F;wasm-pack&#x2F;installer&#x2F;&quot;&gt;installer&lt;&#x2F;a&gt;, It&#x27;s presented in the form of a &lt;code&gt;curl | sh&lt;&#x2F;code&gt; script, and that always makes me a bit uncomfortable. It turns out that you can just grab the tarball for your architecture from their &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rustwasm&#x2F;wasm-pack&#x2F;releases&quot;&gt;releases&lt;&#x2F;a&gt; page and execute the &lt;code&gt;wasm-pack&lt;&#x2F;code&gt; executable shipped there (this is great).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;setting-up-a-simple-project&quot;&gt;Setting up a simple project&lt;&#x2F;h2&gt;
&lt;p&gt;Without wasm-pack we need to do some stuff on our own. Luckily mostly of what wasm-pack is doing for simple projects is just running cargo and wasm-bindgen.&lt;&#x2F;p&gt;
&lt;p&gt;Cargo is pretty simple, but needs to be told to emit wasm as its target.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;cargo&lt;&#x2F;span&gt;&lt;span&gt; build \
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;    --target&lt;&#x2F;span&gt;&lt;span&gt; wasm32-unknown-unknown
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Once cargo build it will drop a &lt;code&gt;.wasm&lt;&#x2F;code&gt; file at &lt;code&gt;.&#x2F;target&#x2F;wasm32-unknown-unknown&#x2F;release&#x2F;${project.name}.wasm&lt;&#x2F;code&gt; (where project.name is whatever the projet is configured with in Cargo.toml). At that point wasm-bindgen can take that wasm and emit a javascript file useful for loading the file as well as typescript types.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;wasm-bindgen &lt;&#x2F;span&gt;&lt;span&gt;\
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;    --target&lt;&#x2F;span&gt;&lt;span&gt; web \
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;    --typescript &lt;&#x2F;span&gt;&lt;span&gt;\
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;    --out-dir&lt;&#x2F;span&gt;&lt;span&gt; pkg \
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;    --out-name&lt;&#x2F;span&gt;&lt;span&gt; index \
&lt;&#x2F;span&gt;&lt;span&gt;    .&#x2F;target&#x2F;wasm32-unknown-unknown&#x2F;release&#x2F;${&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;project.name&lt;&#x2F;span&gt;&lt;span&gt;}.wasm
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;how-does-this-work&quot;&gt;How does this work?&lt;&#x2F;h2&gt;
&lt;p&gt;Let&#x27;s look at a really simple example. Below is an add function written in rust. It takes two unsigned 32bit integers, adds them together, and returns an unsigned 32bit integer.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;rust&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-rust &quot;&gt;&lt;code class=&quot;language-rust&quot; data-lang=&quot;rust&quot;&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;pub fn &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8fa1b3;&quot;&gt;add&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;a&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;b&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;u32&lt;&#x2F;span&gt;&lt;span&gt;) -&amp;gt; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;u32 &lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    a + b
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;When I compile this into wasm I get a pretty large binary file (15.6Kb), but I can throw it into a &lt;a href=&quot;https:&#x2F;&#x2F;webassembly.github.io&#x2F;wabt&#x2F;demo&#x2F;wasm2wat&#x2F;&quot;&gt;disassembler&lt;&#x2F;a&gt; and dig around. Using that I found my function at the bottom of the file.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;wat&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-wat &quot;&gt;&lt;code class=&quot;language-wat&quot; data-lang=&quot;wat&quot;&gt;&lt;span&gt;(func $add (export &amp;quot;add&amp;quot;) (type $t0) (param $p0 i32) (param $p1 i32) (result i32)
&lt;&#x2F;span&gt;&lt;span&gt;  (i32.add
&lt;&#x2F;span&gt;&lt;span&gt;    (local.get $p0)
&lt;&#x2F;span&gt;&lt;span&gt;    (local.get $p1)))
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This looks pretty reasonable! Being relatively unfamiliar with WASM I would read this as follows&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;wat&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-wat &quot;&gt;&lt;code class=&quot;language-wat&quot; data-lang=&quot;wat&quot;&gt;&lt;span&gt;(func $add ...)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Define a function whose value will be stored in the variable $add.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;wat&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-wat &quot;&gt;&lt;code class=&quot;language-wat&quot; data-lang=&quot;wat&quot;&gt;&lt;span&gt;(export &amp;quot;add&amp;quot;)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Export it as the binding &quot;add&quot;.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;wat&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-wat &quot;&gt;&lt;code class=&quot;language-wat&quot; data-lang=&quot;wat&quot;&gt;&lt;span&gt;(type $t0)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Something about types... I&#x27;m not sure&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;wat&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-wat &quot;&gt;&lt;code class=&quot;language-wat&quot; data-lang=&quot;wat&quot;&gt;&lt;span&gt;(param $p0 i32)
&lt;&#x2F;span&gt;&lt;span&gt;(param $p1 i32)
&lt;&#x2F;span&gt;&lt;span&gt;(result i32)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Define inputs $p0, $p1 and result of type i32&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;wat&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-wat &quot;&gt;&lt;code class=&quot;language-wat&quot; data-lang=&quot;wat&quot;&gt;&lt;span&gt;(i32.add ...)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Add two i32 numbers&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;wat&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-wat &quot;&gt;&lt;code class=&quot;language-wat&quot; data-lang=&quot;wat&quot;&gt;&lt;span&gt;(local.get $p0)
&lt;&#x2F;span&gt;&lt;span&gt;(local.get $p1)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Get $p0 and $p1 off the stack&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-about-webgl&quot;&gt;What about WebGL?&lt;&#x2F;h2&gt;
&lt;p&gt;With wasm working, what about using WebGL? It turns out this isn&#x27;t too bad (beyond the difficulties of working with OpenGL period). To get OpenGL rendering we first need a canvas with the &lt;code&gt;webgl2&lt;&#x2F;code&gt; context.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;rust&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-rust &quot;&gt;&lt;code class=&quot;language-rust&quot; data-lang=&quot;rust&quot;&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span&gt; canvas = document.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;get_element_by_id&lt;&#x2F;span&gt;&lt;span&gt;(&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;webgl&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;).&lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;unwrap&lt;&#x2F;span&gt;&lt;span&gt;();
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span&gt; canvas: web_sys::HtmlCanvasElement = canvas.dyn_into::&amp;lt;web_sys::HtmlCanvasElement&amp;gt;()?;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span&gt; context = canvas
&lt;&#x2F;span&gt;&lt;span&gt;    .&lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;get_context&lt;&#x2F;span&gt;&lt;span&gt;(&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;webgl2&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;)?
&lt;&#x2F;span&gt;&lt;span&gt;    .&lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;unwrap&lt;&#x2F;span&gt;&lt;span&gt;()
&lt;&#x2F;span&gt;&lt;span&gt;    .dyn_into::&amp;lt;WebGl2RenderingContext&amp;gt;()?;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Once we have a webgl context we can write shaders!&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;rust&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-rust &quot;&gt;&lt;code class=&quot;language-rust&quot; data-lang=&quot;rust&quot;&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span&gt; vert_shader = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;compile_shader&lt;&#x2F;span&gt;&lt;span&gt;(
&lt;&#x2F;span&gt;&lt;span&gt;        &amp;amp;context,
&lt;&#x2F;span&gt;&lt;span&gt;        WebGl2RenderingContext::&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;VERTEX_SHADER&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;r&lt;&#x2F;span&gt;&lt;span&gt;##&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;#version 300 es
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt; 
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;        in vec4 position;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;        void main() {
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;            gl_Position = position;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;        }
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;        &lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;##,
&lt;&#x2F;span&gt;&lt;span&gt;    )?;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;let&lt;&#x2F;span&gt;&lt;span&gt; frag_shader = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;compile_shader&lt;&#x2F;span&gt;&lt;span&gt;(
&lt;&#x2F;span&gt;&lt;span&gt;        &amp;amp;context,
&lt;&#x2F;span&gt;&lt;span&gt;        WebGl2RenderingContext::&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;FRAGMENT_SHADER&lt;&#x2F;span&gt;&lt;span&gt;,
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;r&lt;&#x2F;span&gt;&lt;span&gt;##&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;#version 300 es
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;    
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;        precision highp float;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;        out vec4 outColor;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;        
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;        void main() {
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;            outColor = vec4(1, 1, 1, 1);
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;        }
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;        &lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;##,
&lt;&#x2F;span&gt;&lt;span&gt;    )?;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Annnnnd all the rest of the OpenGL stuff but I&#x27;ll just link &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;aconbere&#x2F;simple-rust-wasm&#x2F;blob&#x2F;main&#x2F;src&#x2F;webgl.rs&quot;&gt;this file&lt;&#x2F;a&gt;. It&#x27;s just a lot to have all here. But stick it all together and you can draw a triangle.&lt;&#x2F;p&gt;
&lt;img src=&quot;webgl-triangle.png&quot;&#x2F;&gt;
&lt;h2 id=&quot;what-about-more-complicated-stuff&quot;&gt;What about more complicated stuff?&lt;&#x2F;h2&gt;
&lt;p&gt;I looked around at rust gui libraries that ran on OpenGL and found &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;emilk&#x2F;egui&quot;&gt;egui&lt;&#x2F;a&gt;. Egui even ships with &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;emilk&#x2F;egui&#x2F;tree&#x2F;master&#x2F;examples&#x2F;custom_3d_three-d&quot;&gt;examples&lt;&#x2F;a&gt; compiling and running on webgl. With that in hand, and some minor adjustments to get it running in the scaffolding I&#x27;d already set up, I managed to have the egui 3D triangle example running in my web browser.&lt;&#x2F;p&gt;
&lt;img src=&quot;webgl-egui.png&quot;&#x2F;&gt;
&lt;h2 id=&quot;conclusions&quot;&gt;Conclusions&lt;&#x2F;h2&gt;
&lt;p&gt;Well, some minor hiccups along the way, but honestly this works pretty well. I want to spend some time writing some more complex guis and checking out performance. It seems like, maybe an interesting way to write rich web apps, without the current pain of writing web apps.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>r3Ddragon a Virtual Boy emulator for the 3DS</title>
        <published>2022-11-05T00:00:00+00:00</published>
        <updated>2022-11-05T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/r3ddragon-a-virtual-boy-emulator-for-the-3ds/"/>
        <id>https://anders.conbere.org/blog/r3ddragon-a-virtual-boy-emulator-for-the-3ds/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/r3ddragon-a-virtual-boy-emulator-for-the-3ds/">
            &lt;p&gt;Lately I&#x27;ve been playing around a bit with the (r3Ddragon)[https:&#x2F;&#x2F;github.com&#x2F;mrdanielps&#x2F;r3Ddragon] Virtual Boy emulator for the Nintendo 3DS. The 3DS is a unique and interesting emulation target for the Virtual Boy because it&#x27;s one of the few emulation tarets that could emulate both the machine and it&#x27;s steroscopic 3D display. This manages to combine a few of my obsessions: the Nintendo 3DS and obscure video game hardware so ... what was a boy to do?&lt;&#x2F;p&gt;
&lt;p&gt;When I pulled the latest r3Ddragon source it wasn&#x27;t building, so I fixed up some small issues, upgraded some libraries and added some tooling support.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Shin Megami Tensei: Devil Summoner: Soul Hackers</title>
        <published>2022-11-04T00:00:00+00:00</published>
        <updated>2022-11-04T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/shin-megami-tenesi-devil-summoner-soul-hackers/"/>
        <id>https://anders.conbere.org/blog/shin-megami-tenesi-devil-summoner-soul-hackers/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/shin-megami-tenesi-devil-summoner-soul-hackers/">
            &lt;p&gt;Shin Megami Tensei: Devil Summoner: Soul Hackers is an interesting entry in the Shin Megami Tensei (SMT) series. Part of the &quot;Devil Summoner&quot; spin off series that began in 1995 with the release of &quot;Shin Megami Tensei: Devil Summoner&quot; in 1995. It was initially released in Japan in 1997 for the Sega Saturn, then later ported to the PS1, but only got its first western release in 2012 for the Nintendo 3DS.&lt;&#x2F;p&gt;
&lt;p&gt;The game is in many ways an old school JRPG of it&#x27;s vintage. Much like the first two entries in the series The game is first person dungeon crawler; it is obtuse to a fault; It&#x27;s filled with poorly compressed full motion video (FMV), and it predates the advent of SMTs Press Turn battle system that the series is known for. However the game has a surprising amount to offer modern gamers: Its world is detailed and intereseting, set in a near future cyberpunk city in Japan. Character portraits are beautifully rendered and character dialog is fully voiced. Menus are snappy, and the game controlls well, and feels good to play.&lt;&#x2F;p&gt;
&lt;p&gt;In others it&#x27;s fairly modern; The game is blessedly short clocking in at around 40 hours to complete. Save points, and healing spots are generously distributed, you can even acquire a skill that allow you to save anywhere. And the 3DS entry offers some quality of life improvements like a difficulty slider, some tweaks to the demon And while the battle mechanics lack mechanical interest, the rest of the game is absolutely filled with odd little avenues of exploration. Whether that&#x27;s a demon fusion (the other series staple), sword fusion (???), zoma fusion (a kind of demon that evolves as you feed it other demons), a trading system, a casino, each with their own very Atlus takes. It&#x27;s easy to spend a lot of time optimizing a party or building out better builds by investing time in these systems.&lt;&#x2F;p&gt;
&lt;p&gt;Overall, while this game doesn&#x27;t hit the highs of something like Shin Megami Tensei IV or Devil Survivor, I thought it was an interesting look back at the series. An entry that offers a lot more to the player than SMT I or SMT II did, but in many ways is a reflection of those earlier games.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Shin Megami Tensei: Devil Survivor</title>
        <published>2022-11-04T00:00:00+00:00</published>
        <updated>2022-11-04T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/shin-megami-tenesi-devil-survivor/"/>
        <id>https://anders.conbere.org/blog/shin-megami-tenesi-devil-survivor/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/shin-megami-tenesi-devil-survivor/">
            &lt;p&gt;Shin Megami Tensei: Devil Survivor is a spin off of the Shin Megami Tensei (SMT) series released in 2009 for the Nintendo DS. This time around the team at Atlas has fused (heh) the time tested SMT formula with the Strategy Role Playing Game genre. This entry takes the demon fusion, and a variant of the press turn battle system, but leaves demon negotiation on the cutting room floor. The story plays out through visual novel style plackards, and retains the series&#x27; branching paths and morality system.&lt;&#x2F;p&gt;
&lt;p&gt;Like many of the SMT games, Devil Survivor takes place in a modern day Tokyo. Three kids hanging out find themselves trapped there in a government lockdown under the auspices of a gas leak in the subways. Through a strange encounter with a hacker cousin the kids come into possession of devices that are revealed to be able to summon demons. Then over the course of the next six days the game explores the devolution of society as people run out of resources, as the truth of their imprisonment becomes clear, and as powerful people take advantage of the weak. The game uses this to explore ideas about morality, law, order and chaos, and the role of god and freewill in society.&lt;&#x2F;p&gt;
&lt;p&gt;The game play takes standards of the SRPG genre; A grid based map with units and enemies spread across it each with their own strengths and weaknesses; and it amends it with clever turn based battles as you&#x27;d see in a modern SMT game. Devil Survivor succeeds by shrinking the maps you might find in a game like Fire Emblem, forcing you into tactical encounters. You get three main characters to take into any battle, along with two demons, on a team. Each map asks you to consider not just the strengths of your main characters but the make up of their teams while planning a route that optimizes for their strengths while guarding against their weaknesses.&lt;&#x2F;p&gt;
&lt;p&gt;The game starts a little slow, by the second or third day it picks up pace when the narrative has started to play out and picking your way through its branching story becomes more exciting while at the same time your collection of demons opens up increasing options during battles. Unlike some games in the series I didn&#x27;t find this game to be overly hard, giving plenty of opportunities to level up naturally and to replay missions to acquire more skills. I thoroughly enjoyed my time with this game and consider it among the best in the series, with tight game play, and an interesting story.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>The Goblin Emperor</title>
        <published>2022-11-04T00:00:00+00:00</published>
        <updated>2022-11-04T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/the-goblin-emperor/"/>
        <id>https://anders.conbere.org/blog/the-goblin-emperor/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/the-goblin-emperor/">
            &lt;p&gt;The Goblin Emperor is a 2014 novel by Katherine Addison. While built on a high fantasy setting of elves and goblins, the central story could be found in any court drama set in Europe. A young half goblin prince is exiled when his father marries a younger wife and bears new heirs. When a freak accident kills the king and his heir the young prince is thrust into the court with no training and few allies, drama ensues. But ultimately this book shines with it&#x27;s excellent characters, the young prince Maia in particular, exudes so much warmth and kindness that you can&#x27;t help but root for him.&lt;&#x2F;p&gt;
&lt;p&gt;I thought this novel was lovely, a true tale about how kindness can win.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Tempest Restoration</title>
        <published>2022-03-15T00:00:00+00:00</published>
        <updated>2022-03-15T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/tempest-restore/"/>
        <id>https://anders.conbere.org/blog/tempest-restore/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/tempest-restore/">
            &lt;blockquote&gt;
&lt;p&gt;Wondering if you&#x27;ve got anything fun hiding in your garage that needs some work that you might willing to part with. - Me&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;I bought the Tempest cab from a friend of a friend Justin R. It was my second machine. The first, an Asteroids Deluxe, I had also bought from Justin a few months earlier. I felt as though it was important to start looking for another project soon after having finished the Asteroids restore. I wanted an opportunity to test what I had learned the first time through, to attempt to do it with as little help as possible. My ideal cabinet is one that is fun, broken in some way, and in reasonably good cosmetic condition: the side art is intact, the control panel overlay isn&#x27;t worn through or covered in cigarette burns, the marque is clean. Machines in this condition have two important characteristics; they are affordable and they&#x27;re fun to fix! Turns out that Justin had an old Tempest in the back of his garage that he&#x27;d planned on fixing but hadn&#x27;t gotten around to. When he bought it the game started up but the monitor wasn&#x27;t working (playing blind), he sent me the following pictures:&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;original-condition-2.4437bb528e2ff6d2.jpg&quot; &#x2F;&gt;


&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;original-condition-3.b1d717a8c624463c.jpg&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;Tempest was released by Atari in 1981 (the same year as Asteroids Deluxe!), it was the first of a handful of color vector games released from &#x27;81 to &#x27;85. It&#x27;s an awesome, frantic, colorful, and completely unique game. It&#x27;s is one of the greatest of all time arcade games, and Justin is willing to sell it to me for a reasonable price. So what&#x27;s a man to do but drive down to a tiny little rural town outside of Tacoma. To a suburban home with a two car garage filled end to end with Arcade and pinball machines. To take home a beautiful broken old game from 1981.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Atari machines of this era were all composed of roughly similar components.
Power Supply: Transforms 120vAC into a bunch of different voltages, supplying the boards, sound, marquee, monitor among others.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;power-supply.b2eb37815b4bc084.jpg&quot; &#x2F;&gt;
&lt;p&gt;Audio Regulator Board: Isolates and amplifies audio from the board.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;audio-regulator.a187d721f6c7ae34.jpg&quot; &#x2F;&gt;
&lt;p&gt;Main Board: The computing system that the game runs in. A big PCB that houses a CPU, ROM and Ram chips, and accessory processing.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;main-board.d4008197311cf376.jpg&quot; &#x2F;&gt;
&lt;p&gt;Control Panel: A bunch of buttons and lights and UI for the player.
Monitor: A CRT that displays the game.
Harness: A maze of wires that connect all the components together.&lt;&#x2F;p&gt;
&lt;p&gt;One fun thing is that these machines were built with the assumption that operators would be required to maintain and repair them. Subsequently they came with an astonishing amount of high quality documentation. One of the first and most important steps to take when beginning a repair is the familiarize yourself with the machine and documentation.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;manual.92e2714b0f5627cc.png&quot; &#x2F;&gt;
&lt;p&gt;These manuals are filled with schematics, debugging procedures, parts lists, they&#x27;re amazing.Once the machine is home I begin a process of general diagnostics. Many individual parts: capacitors, transistors, resistors, integrated circuits; that make up these games can fail with time and use. I clean and check all the components in the cabinet then begin testing each one starting from power and moving towards the monitor.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;assembled.2751ad5cfaee0252.jpg&quot; &#x2F;&gt;
&lt;p&gt;When I got everything out on my bench and started testing I only found a minor issue on the AR board (the 12v DC line was dead indicating a dead 7812 voltage regulator). Testing the +12VDC I was only reading 1.2VDC tracing back from the text lug the next component back is the 7812 Voltage regulator, but the voltage leading in was correct (22VDC). This indicates a failure of that part, I&#x27;ve removed it and ordered a new replacement for the next round of testing.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;audio-regulator-recapped.f91147b10d67335f.jpg&quot; &#x2F;&gt;
&lt;p&gt;Here it is after the fact, you can see the +12VDC test lug used.So I connected all the components together and flipped the switch. Unfortunately out on the bench the game wasn&#x27;t playing blind. After some double checking of my intuition and that I was getting appropriate voltages on the board I was convinced that the game wasn&#x27;t running.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Debugging a board like this is debugging a computer, to debug it we have to understand how it&#x27;s supposed to work. Once again we are lucky and many of the functionings of this computer were meticulously documented by Atari. Like with debugging the power the best place to start with debugging the main board is at the beginning. The game runs off of a MOS 6502A CPU whose clock is driven by a simple circuit called the &quot;clock circuit&quot;.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;clock-circuit-schematic.22df8b0f8dc71a87.png&quot; &#x2F;&gt;
&lt;p&gt;Without the clock signal the CPU will be effectively dead, so our first job is to ensure this circuit is operating correctly. We can do this by using a logic probe this cheap tool lets us observe the state of the signals running through out the board and has some crude measures of the rate of signal changes. The clock circuit works by taking outputs from an oscillating crystal and feeding them to a &quot;counter&quot; IC. This circuit in turn has the effect of splitting that signal into a number of separate frequencies (it turns out that the &quot;counting&quot; functionality of this IC isn&#x27;t used at all). The new frequencies are then passed onto a handful of other circuits including the CPU.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;clock-circuit-board.f401d771d78c8f20.jpg&quot; &#x2F;&gt;
&lt;p&gt;In the above picture we can see the clock circuit, notice the oscillator as well as the C4 and B4 counters. As a brief note it&#x27;s worth describing how Atari labeled parts on their boards. All the ICs are in a grid with rows labeled A to Z and columns 1 to N. So when describing a chip as C4 we are looking in the C row at column 4. As an example the chip to the left of C4 picture would be labeled C5. As a further note all the ICs are in what are called DIP packages (dual in-line package) whose pins are labeled from pin 1 counterclockwise to pin N.&lt;&#x2F;p&gt;
&lt;p&gt;In the case of the Tempest I was working on I could trace a correct signal from the crystal to pin 5 on the Counter C4, but there were none of the output signals that should have been seen on pins 14,3,2,6, and 7. It isn&#x27;t uncommon for the ICs on these boards to fail over time and that appears to be the case with this one. Surprisingly this was also an error that I found on my Atari Deluxe, perhaps these 193 chips are starting to fail. So we come to the end of our first story with a bad SN74193N counter (the datasheet on this is also amazing and fascinating and worth reading to see how it works). When the new chip arrives I&#x27;ll remove the old one, replace it with a 14 pin socket, put a new chip in its place, and we&#x27;ll hunt for the next bug.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;repairing-the-clock-circuit&quot;&gt;Repairing the Clock Circuit&lt;&#x2F;h2&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;clock-circuit-c4-counter.8efc98a6c42b08f2.png&quot; &#x2F;&gt;
&lt;p&gt;C4 (an LS193 counter) was getting a clock signal from the oscillator but no outputs were observed. With some pattern matching since the LS193 chip was bad on my Asteroids Deluxe I immediately jumped to that as the cause this time. However, when I replaced this chip the results were exactly the same &quot;ohno&quot;.
After spending a lot of time looking at this diagram and reading the datasheet I eventually realized there is one more input to C4. You can see it labeled &quot;C&quot; in the diagram above. This pin (C4–14) is the &quot;clear&quot; pin, it resets the chip when it&#x27;s held high. When tested with a logic probe, this pin was always high. This is incorrect behavior of the board and will cause the chip to never properly begin operations. With that knowledge in hand I followed the lead.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;clock-circuit-c-14-pin.4560720dd1218ceb.png&quot; &#x2F;&gt;
&lt;p&gt;The next circuit back is the &quot;Power and Reset Circuit&quot; which is responsible for managing the incoming 5v and 10.3v rails and reseting the board via a reset switch. The two circuits are connected between C4–14 (our stuck high pin) and E6–2. E6 is an inverter, inverters take a signal either low or high and flip it. When tested the E6 chip appears to be working, E6–2 is high because the input E6–1 is low, but E6–1 should not be low.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;power-reset-in-board.08cf57a4fd9568e5.jpg&quot; &#x2F;&gt;
&lt;p&gt;The expected behavior of this circuit is that 5v runs to E6–1 (high) which is flipped to low to run to the clear pins in the clock circuit, E6–1 is pulled to ground via the reset switch, which resets the clock chips by bringing those pins high. If E6–1 is always low then something is very wrong. I have to admit that I don&#x27;t fully understand what this circuit does. Talking with my friend he thinks perhaps it&#x27;s responsible for creating a quick pulse that issues the initiating clear signal that starts all the chips. Either way, once again we move back through the circuit. The reset button tested correctly (it wasn&#x27;t stuck open), the +5v line is correctly supplying +5v, but one further step back the +10.3v supply was completely missing!&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;edge-connector-pin-out.7d51760c9cbbb26c.png&quot; &#x2F;&gt;
&lt;p&gt;All inputs to the board come through an &quot;edge connector&quot; a 44 pin connector that grips onto a bunch of fingers on the board (this looks a lot like the edge connector of a game cartridge like an NES game). It&#x27;s a reasonable place to look to find where power comes in. The pin out for this connector is well documented and lists +10.6v as an input (unclear why there is that .3v discrepancy but let&#x27;s just ignore it). I could test connectivity between pin 14 and R84 in our reset circuit so what was going on?! Well the joke is on me because I can tell you, I chased that orange and white (OR&#x2F;W) wire back through the harness and what did I find? Oh … a connector that wasn&#x27;t connected. This really simply runs a direct line from 10.3v off the power supply to the edge connector. This was not a connector that existed on the Asteroids Deluxe and I guess I just missed it. I plugged the two connectors together and the board immediately booted correctly.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;repairing-the-monitor&quot;&gt;Repairing the Monitor&lt;&#x2F;h2&gt;
&lt;p&gt;With the board now booting we are able to put everything back in the cabinet and focus on getting the monitor working. You might say &quot;How do you know the monitor doesn&#x27;t work without testing it?!&quot; and I would say &quot;Because it came to me in a pile of pieces!&quot;, so at the very least I&#x27;ll need to put it back together.
The monitor in a Tempest is a Wells Gardner 19K6100. It&#x27;s made up of four main components:&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;monitor-deflection-board.c41b7b6d53a050db.jpg&quot; &#x2F;&gt;
&lt;p&gt;Deflection board: Amplifies input signals from the board. Since this is a vector monitor there are five signals X, Y which control the electron gun&#x27;s position in the 2D plane and RGB which define what color it should be.&lt;&#x2F;p&gt;
&lt;p&gt;In this picture the board is actually powered on! You can see the &quot;spot killer&quot; LED is on.High Voltage Board: Cranks up the voltage needed to sustain the flow of electrons from the cathode towards the anode and on towards the screen.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;monitor-hv-transformer.45c8e105dbdc70f5.jpg&quot; &#x2F;&gt;

The big black thing is the HV transformer or &quot;flyback&quot;.Neck Board: Modulates input signals from the Deflection Board to move the electron beam.&lt;&#x2F;p&gt;
&lt;p&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;monitor-neck-board.998b1acc43422ad6.jpg&quot; &#x2F;&gt;

The weird alien mouth thing connects directly to the back of the tube.Tube: A big glass vacuum tube, the screen face is coated on the back with phosphor that&#x27;s excited by the electrons smashing into it and makes it glow.&lt;&#x2F;p&gt;
&lt;p&gt;When debugging these old monitors the first thing to do is to get all the parts out and inspect them. It&#x27;s very common for wires to break, for the solder on jumper pins to crack, and for a number of other components to fail. It&#x27;s best to start with the easy stuff. This monitor was slightly complicated because it was sold to me mid repair and so the state of things was slightly more difficult to figure out and so I proceeded cautiously.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;monitor-bottlecap-transistors.b422271012746379.jpg&quot; &#x2F;&gt;
&lt;p&gt;The first thing I did after all the boards were out, cleaned off, pins reflowed, and wires reattached, fuses replaced, was to check the power transistors on the chassis. These transistors (sometimes called &quot;bottle cap&quot; transistors because of their similarity) are frequent failures and so it&#x27;s a good idea to check all of them. In this case of the 6 transistors I found 5 to be faulty.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;monitor-low-voltage-schematic.1f19c320c10aa242.png&quot; &#x2F;&gt;
&lt;p&gt;I was worried about the low voltage (LV) circuit on the board because two fuses (F100 and F200) were blow. Those fuses sit at the beginning of the LV circuit and protect against excess voltage coming from 25VAC lines. In fact, this part of the deflection board is so prone to failure that there&#x27;s a complete off the shelf replacement you can purchase! But, I tested all the components and everything seemed okay, so I moved forward. At this point I tried powering on just deflection board with no other components connected and tested the low voltage lines. I got a solid 4.8v and so I moved onto the neck board.&lt;&#x2F;p&gt;
&lt;p&gt;I did have a funny scare in all of this when I plugged the transistors into the board and the spot killer LED turned on and I jumped, thinking for a moment that I was working on a live board. It was just the big capacitors on the board draining though and I was relieved.
The neck board was in a bit of rough shape. A number of wires had broken, and the connection from the high voltage board looked fried. But the neck board is the simplest of the boards and so I resoldered the wires and cleaned it all up.&lt;&#x2F;p&gt;

&lt;img src=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;processed_images&#x2F;monitor-burnt-connector.d427ff3ccf691fdc.png&quot; &#x2F;&gt;
&lt;p&gt;Here&#x27;s that fried connector. I didn&#x27;t have a replacement so I just put new pins (0.084&quot; molex female) on the wires and skipped the connector.With the neck board done, I connected the deflection board to it, and the deflection board to the main board, turned the power on… and listened. When the neck is getting proper signals from the deflection board it will make a sound called &quot;chatter&quot; which sounds a bit like rhythmic static. Immediately the neck powered up and chattered about. You can even hear the change in what&#x27;s being rendered as the chatter changes frequency.&lt;&#x2F;p&gt;
&lt;p&gt;Last but not least I needed to get the high voltage board up and running. Three things stood out on this board. First, there was a transistor on it that had failed, second was an oddly replaced 3.9ohm resistor that had been piggy backed onto another resistor, and finally there was a diode shorted to a wire with a solder bridge.&lt;&#x2F;p&gt;
&lt;p&gt;{{ resize_image(path=&quot;.&#x2F;blog&#x2F;tempest-restore&#x2F;monitor-components-in-board.png, width=400, height=640, op=&quot;fit&quot;) }}&lt;&#x2F;p&gt;
&lt;p&gt;That yellowing plastic disk thing at the bottom will come back up in a second.I fixed those up, and plugged the HV board into the neck and deflection boards. I wanted to test what the output of the HV lines would be before plugging everything into the main board or running stuff for any amount of time. To this you can slide a special high voltage probe under the anode cap (the suction cup in this picture). The probe is great for discharging CRTs nicely but it also acts as probes to your multimeter with a 1000:1 voltage reduction.&lt;&#x2F;p&gt;
&lt;p&gt;{{ resize_image(path=&quot;.&#x2F;blog&#x2F;tempest-restore&#x2F;monitor-measuring-high-voltage.jpg, width=400, height=640, op=&quot;fit&quot;) }}&lt;&#x2F;p&gt;
&lt;p&gt;The HV line should measure about 20kV, but after a great deal of hemming and hawing and sweating before turning this all on, I was only measuring C4 (an LS193 counter) was getting a clock signal from the oscillator but no outputs were observed. With some pattern matching since the LS193 chip was bad on my Asteroids Deluxe I immediately jumped to that as the cause this time. However, when I replaced this chip the results were exactly the same &quot;ohno&quot;.
After spending a lot of time looking at this diagram and reading the datasheet I eventually realized there is one more input to C4. You can see it labeled &quot;C&quot; in the diagram above. This pin (C4–14) is the &quot;clear&quot; pin, it resets the chip when it&#x27;s held high. When tested with a logic probe, this pin was always high. This is incorrect behavior of the board and will cause the chip to never properly begin operations. With that knowledge in hand I followed the lead.
The next circuit back is the &quot;Power and Reset Circuit&quot; which is responsible for managing the incoming 5v and 10.3v rails and reseting the board via a reset switch. The two circuits are connected between C4–14 (our stuck high pin) and E6–2. E6 is an inverter, inverters take a signal either low or high and flip it. When tested the E6 chip appears to be working, E6–2 is high because the input E6–1 is low, but E6–1 should not be low.
The expected behavior of this circuit is that 5v runs to E6–1 (high) which is flipped to low to run to the clear pins in the clock circuit, E6–1 is pulled to ground via the reset switch, which resets the clock chips by bringing those pins high. If E6–1 is always low then something is very wrong.
I have to admit that I don&#x27;t fully understand what this circuit does. Talking with my friend he thinks perhaps it&#x27;s responsible for creating a quick pulse that issues the initiating clear signal that starts all the chips. Either way, once again we move back through the circuit. The reset button tested correctly (it wasn&#x27;t stuck open), the +5v line is correctly supplying +5v, but one further step back the +10.3v supply was completely missing!
All inputs to the board come through an &quot;edge connector&quot; a 44 pin connector that grips onto a bunch of fingers on the board (this looks a lot like the edge connector of a game cartridge like an NES game). It&#x27;s a reasonable place to look to find where power comes in.
The pin out for this connector is well documented and lists +10.6v as an input (unclear why there is that .3v discrepancy but let&#x27;s just ignore it). I could test connectivity between pin 14 and R84 in our reset circuit so what was going on?!
Well the joke is on me because I can tell you, I chased that orange and white (OR&#x2F;W) wire back through the harness and what did I find? Oh … a connector that wasn&#x27;t connected. This really simply runs a direct line from 10.3v off the power supply to the edge connector. This was not a connector that existed on the Asteroids Deluxe and I guess I just missed it. I plugged the two connectors together and the board immediately booted correctly.
about 10kV, half of what I needed.
There are adjustment pots on the HV board to easily fix this, but you want to be a little careful since if it&#x27;s not even close to in range it might mean something else on the board is failing and you&#x27;re just gonna fry it. Also the revision of the HV board I have (P329) has a special circuit to turn off the HV line if the voltage gets too high. That circuit was added later in the monitors life time to reduce change of X-Ray exposure. If that goes off I&#x27;ll read 0V, so we aren&#x27;t there yet.
So I tried adjusting it (with some caution), moving it high and I got 10kV, moving it low and I got 10kV. The thing to know about these potentiometers (pots) is that they break and corrode and otherwise fail frequently. Broken I thought. Pulling out a multimeter with a lead on each side you can easily test if the potentiometer works by checking if the resistance changes. This one was stick at 12.93 ohms. Broken.
I sat for a bit and figured I&#x27;d try rubbing the pot back and forth a bit. The way these things work is there&#x27;s generally a sliding lead in the dial that touches some bit of metal on the other side (lots of times it&#x27;s a loop of material) such that the further along you go the more resistance there is. It&#x27;s not uncommon for corrosion to make it so that a good connection never forms and you can sometimes get them working again by just rubbing them a bit.
So, I gave it a few full turns, and the dial came off. Broken.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;high-voltage-board&quot;&gt;High Voltage Board&lt;&#x2F;h2&gt;
&lt;p&gt;Unfortunately the failed pot turned out to be a red herring. The pot was broken, but when I replaced it HV output was still pegged at 10kV. The WG6100 FAQ &#x2F; Guide has a section that sounds really familiar.
I have seen several HV boards where ZD902 (150 volt Zener diode) goes bad and the HV drops from 19.5 kilovolts to around 10 kV.
Based on their list of suspected parts I replaced the components circled below.&lt;&#x2F;p&gt;
&lt;p&gt;{{ resize_image(path=&quot;.&#x2F;blog&#x2F;tempest-restore&#x2F;high-voltage-schematic.jpg, width=400, height=640, op=&quot;fit&quot;) }}&lt;&#x2F;p&gt;
&lt;p&gt;All three of the transistors Q900, Q901, and Q902 all tested bad when pulled, and Zener Diodes (ZD902) can&#x27;t be tested with a digital multimeter so I just replaced that blindly.
At this point I went back to testing the voltage and with a little adjustment I managed to get 19.75kV! This is pretty exciting since it&#x27;s a big leap forward in terms of the function of the monitor, and it&#x27;s encouraging that nothing else failed when I got it running. While we celebrate it&#x27;s important to test the B+ voltage, this is the input voltage to the HV transformer and should read exactly 181v. The same pot that adjusts the HV adjusts the B+ but your B+ adjustments are more precise and tunable.
It&#x27;s also exciting because the sound and feeling of a fully running CRT is a different experience than a dead one. When you turn it on the sound of static immediately ripples across the front of the tube, this hum and crackle in a way that just speaks to danger in your hind lizard brain. Even though there isn&#x27;t any appreciably difference in danger with the doubling of voltage everything feels a lot more dangerous and my adrenaline runs a bit higher now.&lt;&#x2F;p&gt;
&lt;p&gt;{{ resize_image(path=&quot;.&#x2F;blog&#x2F;tempest-restore&#x2F;high-voltage-vertical-collapse.jpg, width=400, height=640, op=&quot;fit&quot;) }}&lt;&#x2F;p&gt;
&lt;p&gt;With 20kV we&#x27;ll start to see images on the screen, so it&#x27;s time to attach the game board to the monitor and see what we get. Previously we had heard chatter when attaching the neck so I was hopeful that the whole thing would just spring to life at this point. Unfortunately what I actually got was this horizontal smear. Sometimes called &quot;collapse&quot; this often indicates an issue with the analog output of the main boar
It&#x27;s common for the pots one these old monitors to get old and corroded and fail (remember that HV pot we were working on?). You can sometimes get them to fee up a little just by rotating them back and forth, cleaning off old corrosion. I started with the pots on the monitor but nothing happened. But messing with all the pots on the main board the monitor suddenly snapped to life.&lt;&#x2F;p&gt;
&lt;p&gt;This is what happiness looks like&lt;&#x2F;p&gt;
&lt;insert link to youtube&gt;
&lt;p&gt;Finally with everything working it was time to put it all back in the cabinet and enjoy the game. I want to tell you it all worked out, but reality intrudes. I got everything back in the cabinet, wired it back up, flipped the switch and a quick little snap told me all I needed to know. The screen was dark again.
I pulled the monitor back out onto the bench and my heart sunk as I measured B+ at 25v. Measuring HV I got nothing at all (this makes sense if you know that B+ feeds the high voltage transformer and 25v isn&#x27;t anywhere near enough to make it work). It was as if I had done nothing for weeks, not only was the monitor back to dead, but there were so many possible ways to fail that I would functionally need to start again. So next time… I over.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Untangling the capitol attack</title>
        <published>2021-01-10T00:00:00+00:00</published>
        <updated>2021-01-10T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/untangling-the-capitol-attack/"/>
        <id>https://anders.conbere.org/blog/untangling-the-capitol-attack/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/untangling-the-capitol-attack/">
            &lt;p&gt;On January 9th AWS let Parlor know that their account would be suspended because calls of violence across the platform violated Amazon&#x27;s terms of service. The subsequent responses on social media complained of first ammendment violations and the loss of free expression in today&#x27;s environment. But it&#x27;s important to point out as many have that the first ammendment only makes assertions about the obligations on behalf of the government, not private enterprises like Amazon. That being said, most people when bringing up the first ammendment are actually alluding to free expression. Instead of a legal argument most people are actually debating whether we as a society should support the behaviors of companies like Apple, Google, or Twitter when they deplatform a site.&lt;&#x2F;p&gt;
&lt;p&gt;Some folks have brought forward a slippery slope argument, that the deplatforming of Parlor from AWS will lead to the deplatforming of other voices from the broader internet. We&#x27;ve seen examples of fairly aggressive and broad deplatforming of folks like Alex Jones, Gab, Storm Front and others. On the face of it there doesn&#x27;t seem to be any limitations to the ability to remove access to the internet. This raises interesting questions about the relationship between free enterprise and wether we as a society should consider access to the internet a right in and of itself. While idealogically I find the listed examples reprehensible, I am simpathetic to the idea that it&#x27;s possible we want to protect access to publishing on the internet for alternative voices. I would, for instance, be sympathetic to protecting access to DNS, IP, and TCP for all legal behaviors.&lt;&#x2F;p&gt;
&lt;p&gt;Another set of discussions has revolved around changes to so called &quot;Section 230&quot; that provides limited liability protections to &quot;interactive computer services&quot; (aka websites) for user generated content. The line of reasoning is that there already exist laws to protect against the insitement of violence by individuals, thus removing an entire platform. Instead, they argue, we should allow law enforcement to do their job and police the site. Some of these discussions will also promote adjustments to Section 230 such that if the site chooses to use targeted moderation they would lose section 230 protections. By and large I find these arguments to be dissengenious. It&#x27;s been clear that Parlor had no intentions of aggressive self moderation to remove the illegal content, also that law enforcmement lacks the tools, the will, and the capabilities to police large social services.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>back-to-hall-effect</title>
        <published>2021-01-07T00:00:00+00:00</published>
        <updated>2021-01-07T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/back-to-hall-effect/"/>
        <id>https://anders.conbere.org/blog/back-to-hall-effect/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/back-to-hall-effect/">
            &lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.digikey.com&#x2F;en&#x2F;products&#x2F;detail&#x2F;allegro-microsystems&#x2F;ACS758KCB-150B-PFF-T&#x2F;2042747?s=N4IgjCBcoLQBxVAYygMwIYBsDOBTANCAPZQDaIAbAEwAMIAugL6OFVkgCCAwgMoDsAVjgBpLgCEYYATQkAFAGLyYAFQaMgA&quot;&gt;Hall Effect Sensor&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.digikey.com&#x2F;en&#x2F;products&#x2F;detail&#x2F;allegro-microsystems&#x2F;ACS780LLRTR-100U-T&#x2F;6189093?s=N4IgTCBcDaIIIGEDKB2AHABgDJYEoBVcBaARgwwFUj8QBdAXyA&quot;&gt;Hall Effect Sensor&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.allegromicro.com&#x2F;en&#x2F;insights-and-innovations&#x2F;technical-documents&#x2F;hall-effect-sensor-ic-publications&#x2F;an296141-secrets-of-measuring-currents-above-50-amps&quot;&gt;Designing for heat dissipation&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.mouser.com&#x2F;ProductDetail&#x2F;Panduit&#x2F;LAMA6-14-QY&#x2F;?qs=jZi1jxfVU96EQSed14OVoA%3D%3D&quot;&gt;Lugged Terminal&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;lugsdirect.com&#x2F;IHI_HIGH_CURRENT_PCB-TERMINALS-_SELECTION_CHART2.htm#65A&quot;&gt;Lugs&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.mouser.com&#x2F;ProductDetail&#x2F;Crydom&#x2F;D06D100&#x2F;?qs=KoN42VEC625NjYRVJ6akqg%3D%3D&quot;&gt;Big Relay&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.mouser.com&#x2F;ProductDetail&#x2F;Crydom&#x2F;D06D100&#x2F;?qs=KoN42VEC625NjYRVJ6akqg%3D%3D&quot;&gt;Screw Terminal&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>testing-i2c</title>
        <published>2021-01-01T00:00:00+00:00</published>
        <updated>2021-01-01T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/testing-i2c/"/>
        <id>https://anders.conbere.org/blog/testing-i2c/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/testing-i2c/">
            &lt;p&gt;https:&#x2F;&#x2F;www.sparkfun.com&#x2F;products&#x2F;12942
https:&#x2F;&#x2F;www.testandmeasurementtips.com&#x2F;testing-and-debugging-the-i2c-digital-data-bus&#x2F;
https:&#x2F;&#x2F;www.ti.com&#x2F;lit&#x2F;an&#x2F;scaa106&#x2F;scaa106.pdf?ts=1609370352308&amp;amp;ref_url=https%253A%252F%252Fwww.google.com%252F&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Using i2c With Simavr</title>
        <published>2020-12-23T00:00:00+00:00</published>
        <updated>2020-12-23T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/simvar-i2c/"/>
        <id>https://anders.conbere.org/blog/simvar-i2c/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/simvar-i2c/">
            &lt;p&gt;This will run your avr program and start gdb listening on 1234
~&#x2F;simavr&#x2F;simavr&#x2F;run_avr -m attiny85 -f 8000000 -g ~&#x2F;Projects&#x2F;attiny85-example&#x2F;build&#x2F;main.elf&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;gdb
&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; file main.elf
&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; target remote :1234
&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; load
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;to set a break point&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;&amp;gt; b loop
&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; c
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Use these commands to display variables every break point
&amp;gt; display state
&amp;gt; display &#x2F;t PORTB
&amp;gt; display &#x2F;t PINB&lt;&#x2F;p&gt;
&lt;h2 id=&quot;using-i2c-with-avrsim&quot;&gt;Using i2c with avrsim&lt;&#x2F;h2&gt;
&lt;p&gt;The example in &lt;code&gt;board_i2c&lt;&#x2F;code&gt; uses the &lt;code&gt;i2c_eeprom&lt;&#x2F;code&gt; library provided to operate as a simple read and write source.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;&#x2F;&#x2F; initialize our &amp;#39;peripheral&amp;#39;, setting the mask to allow read and write
&lt;&#x2F;span&gt;&lt;span&gt;i2c_eeprom_init(avr, &amp;amp;ee, 0xa0, 0x01, NULL, 1024);
&lt;&#x2F;span&gt;&lt;span&gt;i2c_eeprom_attach(avr, &amp;amp;ee, AVR_IOCTL_TWI_GETIRQ(0));
&lt;&#x2F;span&gt;&lt;span&gt;ee.verbose = 1;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then in the firmware they write to the eeprom as a secondary i2c device. The way it works is that when the the start address is in write mode, the eeprom device waits for two bytes to define an internal pointer to where to write the data.&lt;&#x2F;p&gt;
&lt;p&gt;In this case we start with the write bit set so the eeprom will wait for the pointer to be received: 0x01AA.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;i2c_start(EEPROM_ADDR + I2C_WRITE);
&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;&#x2F; eeprom address, in little endian
&lt;&#x2F;span&gt;&lt;span&gt;i2c_write(0xaa);
&lt;&#x2F;span&gt;&lt;span&gt;i2c_write(0x01);
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;We then send bytes and the eeprom records them until it recieves stop.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;i2c_write(0xd0);
&lt;&#x2F;span&gt;&lt;span&gt;i2c_write(0x0d);
&lt;&#x2F;span&gt;&lt;span&gt;i2c_stop();
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then we send start again and send a new pointer index of 0x01A8, 2 bits less than our initial starting position (representing 2 bytes).&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;i2c_start(EEPROM_ADDR + I2C_WRITE);
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Finally we start a third time in read mode and this triggers the eeprom device to begin writing bytes starting that that position and increasing after that. Subsequent reads read 0xD00D until the stop command is issued.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;i2c_start (EEPROM_ADDR + I2C_READ);
&lt;&#x2F;span&gt;&lt;span&gt;for (uint8_t i = 0; i &amp;lt; 8; ++i) {
&lt;&#x2F;span&gt;&lt;span&gt;  i2c_readNak();
&lt;&#x2F;span&gt;&lt;span&gt;};
&lt;&#x2F;span&gt;&lt;span&gt;i2c_stop();
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Notes:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;buserror&#x2F;simavr&quot;&gt;Sim AVR&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;[Sparkfun Article on I2c](https:&#x2F;&#x2F;learn.sparkfun.com&#x2F;tutorials&#x2F;i2c&#x2F;all#:~:text=The%20Inter%2DIntegrated%20Circuit%20(I,communications%20within%20a%20single%20device)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;ww1.microchip.com&#x2F;downloads&#x2F;en&#x2F;DeviceDoc&#x2F;Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf&quot;&gt;ATtiny85 manual&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;i2c.info&#x2F;&quot;&gt;i2c info&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.ti.com&#x2F;lit&#x2F;an&#x2F;slva704&#x2F;slva704.pdf?ts=1608665248724&amp;amp;ref_url=https%253A%252F%252Fwww.google.com%252F&quot;&gt;Understanding the i2 Bus&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;blog.oddbit.com&#x2F;post&#x2F;2019-01-22-debugging-attiny-code-pt-1&#x2F;&quot;&gt;Debugging ATtiny85 Code&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;visualgdb.com&#x2F;gdbreference&#x2F;commands&#x2F;display&quot;&gt;GDB Reference: display command&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.technoblogy.com&#x2F;show?RPY&quot;&gt;Attiny85 Uart&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;arduino.stackexchange.com&#x2F;questions&#x2F;22898&#x2F;how-to-design-and-debug-a-custom-i2c-master-slave-system&quot;&gt;StackOverflow on the topic&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Current Sensing and Shunts</title>
        <published>2020-12-18T00:00:00+00:00</published>
        <updated>2020-12-18T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/current-sensing/"/>
        <id>https://anders.conbere.org/blog/current-sensing/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/current-sensing/">
            &lt;p&gt;In my initial attempt at building current sensing into my relay I confused the behavior of shunt based parts and hall effect parts. My design used a cost effective hall effect device but was attached to the current path as though it were shunting. In actuality the hall effect parts expect the full current to run through them, given my expectations of eventually achieving high current flow I believe this rules out the possibility of using hall effect sensors in my final design. Given that I&#x27;ve been been researching shunt based designs.&lt;&#x2F;p&gt;
&lt;p&gt;Shunt based designs are based on a simply understanding of ohms law R = V &#x2F; I which tells us that if we add resistance to a circuit we&#x27;ll observe a reduction in the voltage proportional to the current. Using that and a precise resistor placed in parallel we can measure the total current by carefully measuring the voltage drop across the resistor. Because we want this voltage drop to be very small in order to minimize power dissipation we will typically amplify the resulting drop up to spec for measurement.&lt;&#x2F;p&gt;
&lt;p&gt;When selecting a shunt resistor your primary variables will be maximum acceptable error at your minimum expected current and the power dissipation at maximum expected current. Error is key, because ultimately we are using the shunt resistor to make a measurement and operate on it. Our allowable error will dictate facets of the size of the resistor needed as well as the quality of amplifier. Power, because this resistor will be within the current flow of our circuit and thus will dissipate power (waste heat) and we&#x27;ll need to be able to remove that heat. Ultimately our choice of components will need to balance error which is proportional to resistance and power which is inversely proportional to resistance.&lt;&#x2F;p&gt;
&lt;p&gt;Error in this system will be measure of the measured output voltage of the amplifier compared to the ideal amplifier. There are numerous sources of error within a system but for this selection it&#x27;s useful to focus on the amplifier&#x27;s offset error. In an ideal amplifier when the difference between its inputs is zero the output will be zero, but amplifiers in the real world aren&#x27;t ideal, and so there&#x27;s a small amount of error that&#x27;s added to the system called offset error. This error will be more prominent the smaller the measured voltage.&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;OffsetError = (Voffset &#x2F; Vsense) * 100
&lt;&#x2F;span&gt;&lt;span&gt;VSense = Rshunt * Iload
&lt;&#x2F;span&gt;&lt;span&gt;OffsetError = (Voffset &#x2F; (Rshunt * Iload)) * 100
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;img src=&quot;error-as-a-function-of-voltage.png&quot;&gt;
&lt;p&gt;Power is defined as current multiplied by voltage (P = I * V), using ohms law we can substitute in the voltage drop across our resistor (Vsense) for V, and further I for Vsense &#x2F; Rshunt (see above).&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;Power = Rshunt * (Iload ^ 2)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;img src=&quot;power-as-a-function-of-resistance.png&quot;&gt;
&lt;p&gt;Lastly in order to read our values we want to fully saturate our available bandwidth of our measurement tools (for the ATtiny85 ADC that&#x27;s 0 - VCC or in the case of my design 0-3V). The amplifier we choose will have some amount of gain, and based on that we can understand what values we can work with. Choosing the Texas Instruments INA 199 A1 as a reasonable example:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;INA 199 A1
&lt;&#x2F;span&gt;&lt;span&gt;Gain = 50
&lt;&#x2F;span&gt;&lt;span&gt;Vout = 5
&lt;&#x2F;span&gt;&lt;span&gt;Voffset = 15mV
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Max Resistance = (Vout &#x2F; Gain)  &#x2F; Maximum Current
&lt;&#x2F;span&gt;&lt;span&gt;Max Resistance = (3 &#x2F; 50) &#x2F; 100 = 0.60 mΩ
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Using 500uΩ as our shunt resistance and putting it all together we get&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;Min Current = 30A
&lt;&#x2F;span&gt;&lt;span&gt;Max Current = 100A
&lt;&#x2F;span&gt;&lt;span&gt;Voffset = 150uV
&lt;&#x2F;span&gt;&lt;span&gt;Rshunt = 500uΩ
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Error = Voffset &#x2F; (Rshunt * Iload) * 100
&lt;&#x2F;span&gt;&lt;span&gt;Error = 15uV &#x2F; (500uΩ * 30) * 100
&lt;&#x2F;span&gt;&lt;span&gt;Error = 1%
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Power = Rshunt * (Iload ^ 2)
&lt;&#x2F;span&gt;&lt;span&gt;Power = 500uΩ * (100A ^ 2)
&lt;&#x2F;span&gt;&lt;span&gt;Power = 5W
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Turns out the Mouser sells a &lt;a href=&quot;https:&#x2F;&#x2F;www.mouser.com&#x2F;ProductDetail&#x2F;IRC-TT-Electronics&#x2F;LRMAP5930B-R0006FT&#x2F;?qs=sGAEpiMZZMtlleCFQhR%2FzRH%2FPnzm6Qg05hvXX7wWOCq38p0CesHoOw%3D%3D&quot;&gt;500uΩ, 5W shunt resistor at 1% precision&lt;&#x2F;a&gt;. So I&#x27;ll order that and see what I can do with it.&lt;&#x2F;p&gt;
&lt;p&gt;I put all of this together in a &lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;spreadsheets&#x2F;d&#x2F;1xbL8f6aTPYwkqkhdr42UmlsUaC6uOflFTslz2OaUQeY&#x2F;edit#gid=152462723&quot;&gt;spreadsheet&lt;&#x2F;a&gt; that folks are welcome to browse around.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.ti.com&#x2F;amplifier-circuit&#x2F;current-sense&#x2F;overview.html&quot;&gt;TI Products&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;e2e.ti.com&#x2F;cfs-file&#x2F;__key&#x2F;communityserver-discussions-components-files&#x2F;14&#x2F;Session-04-_2D00_-How-to-choose-an-appropriate-shunt-resistor.pdf&quot;&gt;TI How to choose an appropriate shunt resistor&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.ti.com&#x2F;product&#x2F;INA199&quot;&gt;INA199 26V current sense amplifier&lt;&#x2F;a&gt; - Includes calculator for shunt size (&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.mouser.com&#x2F;Passive-Components&#x2F;Resistors&#x2F;Current-Sense-Resistors&#x2F;Current-Sense-Resistors-SMD&#x2F;_&#x2F;N-7fjcg?P=1yzmxlzZ1z0wljo&quot;&gt;Mouser shunt resistors&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;spreadsheets&#x2F;d&#x2F;1FLXVmKyOZgLP-0cL6zAktkqMBsYb6-wDfeKL75_aMfg&#x2F;edit#gid=0&quot;&gt;Shunt Resistor Calculator&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;training.ti.com&#x2F;getting-started-current-sense-amplifiers-session-4-how-choose-appropriate-shunt-resistor&quot;&gt;TI Video Series on Shunt Resistors&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Four-terminal_sensing&quot;&gt;Four Terminal Sensing&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.digikey.com&#x2F;en&#x2F;articles&#x2F;fundamentals-of-current-measurement-part-1-current-sense-resistors&quot;&gt;Digikey Summary of Current Sense Resistors&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.digikey.com&#x2F;en&#x2F;products&#x2F;detail&#x2F;allegro-microsystems&#x2F;ACS770LCB-100U-PFF-T&#x2F;4473982&quot;&gt;Allegro 100A DC Current Sensor&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Input_offset_voltage&quot;&gt;Input offset voltage&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Current Sensing With Large Currents</title>
        <published>2020-12-17T00:00:00+00:00</published>
        <updated>2020-12-17T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/high-amp-current-sensing/"/>
        <id>https://anders.conbere.org/blog/high-amp-current-sensing/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/high-amp-current-sensing/">
            &lt;p&gt;The current project I&#x27;m working on, a relay that provides remote triggering and voltage and current measurements back to the user, has been plodding along. I recently got the boards delivered and I&#x27;ve been working on assembly and as such I&#x27;ve been finding the mistakes you make in a V0 prototype.&lt;&#x2F;p&gt;
&lt;p&gt;Here are some pictures of the boards as the arrived from the manufacturer and a dry fitting.&lt;&#x2F;p&gt;
&lt;img src=&quot;sensing-relay-v0-board.jpg&quot;&gt;
&lt;img src=&quot;sensing-relay-v0-dry-fit.jpg&quot;&gt;
&lt;p&gt;The biggest mistake is that I&#x27;ve radically missunderstood the way that the TI TMCS-1101 hall effect sensor works. My mental model of this device was that it operated in parallel with the existing current path, took some trickle current, measured that and amplified it. But that is NOT the correct model. As I was reading the datasheet again it became clear that this device is expected to run in series with the current path as shown in &lt;a href=&quot;https:&#x2F;&#x2F;anders.conbere.org&#x2F;blog&#x2F;high-amp-current-sensing&#x2F;TMCS1101-inline-motor-phase-sensing.jpg&quot;&gt;this picture&lt;&#x2F;a&gt;. While that in and of itself wouldn&#x27;t be dissasterous it made me think more about the overall design parameters of this project.&lt;&#x2F;p&gt;
&lt;p&gt;Ultimately I want to be able to drop one of these relays into a solar charging sytem that could supply loads as high as 100A with a voltage of 40v. In my previous mental model I wasn&#x27;t worried too much about the total current load since I expected the device to be shunting the larger current, with this new model I think it&#x27;s unlikely that I find a surface mount chip that can sustain 100A loads for long.&lt;&#x2F;p&gt;
&lt;p&gt;So, step one has been, digging deeper into the methods of current sensing. Digikey has a nice &lt;a href=&quot;https:&#x2F;&#x2F;www.digikey.com&#x2F;en&#x2F;articles&#x2F;fundamentals-of-current-measurement-part-1-current-sense-resistors&quot;&gt;summary article&lt;&#x2F;a&gt; on the topic. From there it seems like I should be thinking about a shunt resistor design, basically a low resistence, high watt, resistor that we can observe the the voltage differential across, since the voltage drop is proportional to the current (V = I&#x2F;R) we can use that differential to measure the current through the resistor.&lt;&#x2F;p&gt;
&lt;p&gt;Small mistake... totally forgot a current limiting resistor on the power LED.&lt;&#x2F;p&gt;
&lt;p&gt;Another observation from reading more about current sensing technology is that a lot of folks use heft Lugs on the PCB and that&#x27;s an interesting direction to go if I&#x27;m going to need to run the full load through the device.&lt;&#x2F;p&gt;
&lt;p&gt;Notes:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.allegromicro.com&#x2F;en&#x2F;insights-and-innovations&#x2F;technical-documents&#x2F;hall-effect-sensor-ic-publications&#x2F;an296141-secrets-of-measuring-currents-above-50-amps&quot;&gt;Alegro: Secrets of Measuring Currents Above 50 Amps&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;training.ti.com&#x2F;getting-started-current-sense-amplifiers-session-4-how-choose-appropriate-shunt-resistor&quot;&gt;Selecting an Appropriate Shunt Resistor&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Daily Log 2020-11-29: Finishing the sensing relay pcb</title>
        <published>2020-11-29T00:00:00+00:00</published>
        <updated>2020-11-29T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/daily-log-2020-11-29/"/>
        <id>https://anders.conbere.org/blog/daily-log-2020-11-29/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/daily-log-2020-11-29/">
            &lt;p&gt;I&#x27;ve been working on and off on the pcb for my sensing relay project. Here were a few of the design challenges.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;cost&quot;&gt;Cost&lt;&#x2F;h2&gt;
&lt;p&gt;Cost is an obvious optimization dimension. For most board manufacturers the cost is directly proportional to the area of the board. That puts some pressure on ensuring that the design fits into the smallest area possible.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;high-power-relay&quot;&gt;High power relay&lt;&#x2F;h2&gt;
&lt;p&gt;The biggest challenge of the design is dealing with this high power relay. I&#x27;m hoping to have a safe operating range of 0 - 50V DC and 0 - 10A. That means a maximum power of 500W and that feels huge to me. One of the first things I was worried about was providing sufficient trace width between the terminal block and the relay. Traces are just little wires in a substrate, and so the same intuition that you have about wires (more current requires thicker wire) applies to traces as well.&lt;&#x2F;p&gt;
&lt;p&gt;In order to calculate the minimum trace width we need to know the maximum expected current the thickness of the traces. We already know we expect 10A but the thickness will depend on the manufacturing parameters. OshPark offers a special 2 layer 2oz board for high power applications (it also says it&#x27;s thinner... so I hope that&#x27;s not an issue). Using that and this &lt;a href=&quot;https:&#x2F;&#x2F;www.digikey.com&#x2F;en&#x2F;resources&#x2F;conversion-calculators&#x2F;conversion-calculator-pcb-trace-width&quot;&gt;trace width calculator&lt;&#x2F;a&gt; we can plug these details in to see that we need 360mil traces. 1 mil is 1&#x2F;1000th of an inch so this is roughly a third of an inch, this is HUGE, and frankly probably unachievable.&lt;&#x2F;p&gt;
&lt;p&gt;My current plan is to try running two 180 mil traces on both sides of the board. The traces should act like parallel wires each carrying half the load and so hopefully this works. I think that if this doesn&#x27;t end up working (the result will be that traces will get too hot and melt) then maybe I can just try connecting the terminal and relay directly with some hefty 16AWG wire.&lt;&#x2F;p&gt;
&lt;p&gt;Another thing we have to worry about is giving sufficient spacing from the high voltage traces. However looking into what that would be for 50V it&#x27;s still only a couple of mil and my safe trace distance of 4 - 5 mil is more than sufficient.&lt;&#x2F;p&gt;
&lt;p&gt;Lastly I&#x27;ve tried to separate the high voltage side from low voltage to prevent any leakage that could damage components and to make it clear to users what&#x27;s safe to handle.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;relay-rf-emissions&quot;&gt;Relay RF Emissions&lt;&#x2F;h2&gt;
&lt;p&gt;I&#x27;ve mentioned this a few times in previous logs but I&#x27;m thinking about the RF emissions from the relay opening and closing. When the coil gets opened and closed and there&#x27;s a spray of RF from the magnetic field created from the inductor. This can impact other components, an early design I tried to place the hall effect sensor (current sensor) under the relay as it should be places as close to the current source as possible. However I ended up being nervous about the way that RF might impact the devices and put it further back in the low voltage side for safety.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-final-design&quot;&gt;The &quot;Final&quot; Design&lt;&#x2F;h2&gt;
&lt;p&gt;This is the final v0 pcb layout that I intend to have printed. It will end up costing me about $4.50 to have it printed from OshPark. Along with the bill of materials that total cost per board should end up about $13.40.&lt;&#x2F;p&gt;
&lt;img src=&quot;v0-smart-relay-pcb-layout.png&quot;&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Daily Log 2020-11-28: More Rust AVR</title>
        <published>2020-11-28T00:00:00+00:00</published>
        <updated>2020-11-28T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/more-rust-avr/"/>
        <id>https://anders.conbere.org/blog/more-rust-avr/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/more-rust-avr/">
            &lt;h2 id=&quot;trying-out-avr-hal&quot;&gt;Trying out avr-hal&lt;&#x2F;h2&gt;
&lt;p&gt;From the rust avr gitter channel;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;https:&#x2F;&#x2F;github.com&#x2F;Rahix&#x2F;avr-hal&lt;&#x2F;li&gt;
&lt;li&gt;https:&#x2F;&#x2F;github.com&#x2F;Rahix&#x2F;avr-hal&#x2F;tree&#x2F;master&#x2F;chips&#x2F;attiny85-hal&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;workspaces-and-git-imported-crates&quot;&gt;Workspaces and Git Imported Crates&lt;&#x2F;h3&gt;
&lt;p&gt;This mostly worked but avr-hal isn&#x27;t hosted on crates.io and is imported via git. This would be fine but I wasn&#x27;t familiar with how workspaces and git imported crates worked.&lt;&#x2F;p&gt;
&lt;p&gt;hal-avr defines a Cago.toml entry that looks like this&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;[workspace]
members = [
&quot;avr-hal-generic&quot;,
...
&quot;chips&#x2F;attiny85-hal&quot;,
...
&quot;boards&#x2F;trinket&quot;,
]&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;This defines a series of &quot;workspaces&quot; in cargo terminology. A workspace is a package in a package and allows you to split up a project into a series of interdependent crates. In typical use of Crates.io these all just show up as separate crates.&lt;&#x2F;p&gt;
&lt;p&gt;When you define a dependency in your own Cargo.toml like&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;[dependencies.attiny85-hal]
git = &quot;https:&#x2F;&#x2F;github.com&#x2F;Rahix&#x2F;avr-hal&quot;
rev = &quot;a22f954&quot;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;It tells Cargo to find the &quot;attiny85-hal&quot; crate &lt;em&gt;somewhere&lt;&#x2F;em&gt; in the linked repository including any workspaces. So in this case since we want to use this with our ATtiny85 board we are importing specifically the &lt;em&gt;attiny85-hal&lt;&#x2F;em&gt; crate from the avr project.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;compiling&quot;&gt;Compiling&lt;&#x2F;h3&gt;
&lt;p&gt;I ran into some issues getting my very simple test compiling (just a loop in main). The avr-hal project provides an &lt;code&gt;entry&lt;&#x2F;code&gt; macro that sets up your main function to be properly loaded for running by the chip. In this case while I could &lt;code&gt;use attiny85_hal&lt;&#x2F;code&gt;, no macro entry was found. This ended up having to do with &quot;features&quot;. This isn&#x27;t a feature of cargo that I&#x27;m familiar with and it took me a bit of fumbling to get it working. Eventually I added this to my Cargo.toml.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;[features]
default = [&quot;rt&quot;]
rt = [&quot;attiny85-hal&#x2F;rt&quot;]&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;rt is a Cargo feature that includes a runtime. It appears to be derived from the &lt;a href=&quot;https:&#x2F;&#x2F;docs.rs&#x2F;svd2rust&#x2F;0.17.0&#x2F;svd2rust&#x2F;&quot;&gt;scd2rust crate&lt;&#x2F;a&gt; which provides automated code generation based on SVD specs.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>A Brief Diversion: Rust AVR</title>
        <published>2020-11-27T00:00:00+00:00</published>
        <updated>2020-11-27T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/a-brief-diversion/"/>
        <id>https://anders.conbere.org/blog/a-brief-diversion/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/a-brief-diversion/">
            &lt;p&gt;So I didn&#x27;t realize it, but rust has had AVR support since July 2020. So to take a break from the regularly scheduled hardware design to see how rust feels working on the ATTiny85. I didn&#x27;t end up getting this working. While I was able to get a build running &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;aconbere&#x2F;avr-rust-attiny85-test&quot;&gt;here&lt;&#x2F;a&gt;, I&#x27;m still unclear how to access specific registers of the ATtiny85 like PORTB or DRRB, and I&#x27;m not convinced that if I did program my chip with this program that it would run.&lt;&#x2F;p&gt;
&lt;p&gt;It did however make a reasonable sized binary only about twice as large as the similarly simple C++ program.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;h2 id=&quot;avr-memory-usage&quot;&gt;AVR Memory Usage&lt;&#x2F;h2&gt;
&lt;p&gt;Device: attiny85&lt;&#x2F;p&gt;
&lt;p&gt;Program:      92 bytes (1.1% Full)
(.text + .data + .bootloader)&lt;&#x2F;p&gt;
&lt;p&gt;Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Also it took forever. A release build of this simplist of examples took nearly 20s. I hope I can figure out more and I&#x27;ll report back here if I figure anything out.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;getting-started&quot;&gt;Getting Started&lt;&#x2F;h2&gt;
&lt;p&gt;Still need a bunch of avr packages&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;sudo apt-get install binutils gcc-avr avr-libc avrdude&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;You need the avr toolchain&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;https:&#x2F;&#x2F;www.microchip.com&#x2F;mplab&#x2F;avr-support&#x2F;avr-and-arm-toolchains-c-compilers
PATH=$PATH:$HOME&#x2F;Downloads&#x2F;avr8-gnu-toolchain-3.6.2.1759-linux.any.x86_64&#x2F;avr8-gnu-toolchain-linux_x86_64&#x2F;bin&#x2F;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;installing-avr-support&quot;&gt;Installing AVR support&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;$ rustup toolchain install nightly
$ rustup component add rust-src --toolchain nightly&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;turning-on-nightly-support&quot;&gt;Turning on nightly support&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;rustup override set nightly&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;building&quot;&gt;Building&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;cargo build -Z build-std=core --target target.json --release&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;setting-up-a-target&quot;&gt;Setting up a target&lt;&#x2F;h3&gt;
&lt;p&gt;The Rust nightly compiler includes a built-in target for ATmega328 but not ATtiny85. To get support for ATtiny85 you need to build a target json configuration.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;rustc --print target-spec-json -Z unstable-options --target avr-unknown-gnu-atmega328 &amp;gt; my-custom-avr-unknown-gnu-atmega328.json&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Daily Log 2020-11-27: Selecting Diodes for Relays</title>
        <published>2020-11-27T00:00:00+00:00</published>
        <updated>2020-11-27T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/daily-log-2020-11-27/"/>
        <id>https://anders.conbere.org/blog/daily-log-2020-11-27/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/daily-log-2020-11-27/">
            &lt;p&gt;When relays are closed the current that supplies the armature solenoid is cut off. The solenoid forms an inductor and when that current stops the magnetic field created by the prevoiusly flowing current collapses and induces and equal and opposite current in the coil. With nowhere to go this current can create a spike of voltage as high as 1000 volts. In order to prevent this from damaging other components it&#x27;s useful to place a diode in between the coil leads that allows the current to flow in reverse without the spike in voltage.&lt;&#x2F;p&gt;
&lt;p&gt;When selecting the diode we need to know what current that would be flowing through the coil when on, and then voltage applied to the coil. The Diode&#x27;s forward current should be equal to the relay&#x27;s coil current, and the Diode&#x27;s reverse voltage should be at least equal to the relay&#x27;s coil voltage.&lt;&#x2F;p&gt;
&lt;p&gt;In the case of the GL5E I&#x27;m using the coil current at 5 volts is 79.4 mA. With some buffers we should be safe with a diode of the following specs:&lt;&#x2F;p&gt;
&lt;p&gt;V reverse = 100V
I forward = 100mA&lt;&#x2F;p&gt;
&lt;p&gt;The &lt;a href=&quot;https:&#x2F;&#x2F;www.mouser.com&#x2F;ProductDetail&#x2F;ON-Semiconductor-Fairchild&#x2F;1N4148?qs=i4Fj9T%2FoRm8RMUhj5DeFQg%3D%3D&quot;&gt;ON 1N4148&lt;&#x2F;a&gt; fits the bill with a reverse voltage of 100V and a forward current of 300mA.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Daily Log 2020-11-24</title>
        <published>2020-11-24T00:00:00+00:00</published>
        <updated>2020-11-24T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/daily-log-2020-11-24/"/>
        <id>https://anders.conbere.org/blog/daily-log-2020-11-24/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/daily-log-2020-11-24/">
            &lt;h2 id=&quot;connectors&quot;&gt;Connectors&lt;&#x2F;h2&gt;
&lt;p&gt;I hate connectors. Every time I have to select connectors for a project it&#x27;s a pain. On my current project I need 4 wire inputs: VCC, GND, and two I2C communication wires. As this is the same layout as the sparkfun QWIIC system I figured it would be nice to make the connectors compatible. They use a 4 pin JST SH connector, this should be easy!&lt;&#x2F;p&gt;
&lt;p&gt;Unfortunately Mouser doesn&#x27;t carry JST connectors (but digikey does). The &lt;a href=&quot;https:&#x2F;&#x2F;www.digikey.com&#x2F;en&#x2F;products&#x2F;detail&#x2F;SHR-04V-S-B&#x2F;455-1379-ND&#x2F;759868?itemSeq=345975521&quot;&gt;housing&lt;&#x2F;a&gt; was easy enough to find and showed up as the first search result. Unfortunately searching for the model number. On the other hand searching for the header model number from the datasheet returns a discontinued product. Going sideways and searching through JST SH products brings up the correct listing. On top of this all the headers are over 50c a piece.&lt;&#x2F;p&gt;
&lt;p&gt;At least I already own a crimper that should work... &lt;em&gt;sigh&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;finished-schematic&quot;&gt;Finished Schematic&lt;&#x2F;h2&gt;
&lt;p&gt;With the footprints all worked out I&#x27;ve finally finished the fully schematic. With that done it will be time to layout the PCB.&lt;&#x2F;p&gt;
&lt;img src=&quot;relay-full-schematic.png&quot;&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Daily Log 2020-11-23</title>
        <published>2020-11-23T00:00:00+00:00</published>
        <updated>2020-11-23T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/daily-log-2020-11-23/"/>
        <id>https://anders.conbere.org/blog/daily-log-2020-11-23/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/daily-log-2020-11-23/">
            &lt;h2 id=&quot;assigning-footprints&quot;&gt;Assigning footprints&lt;&#x2F;h2&gt;
&lt;p&gt;Most modern PCB manufacturing will start life in Electronics Design Automation software, there are many available but I&#x27;ve learned using &lt;a href=&quot;https:&#x2F;&#x2F;kicad.org&#x2F;&quot;&gt;KiCad&lt;&#x2F;a&gt;. KiCad is free and open source and certainly capable of meeting my hobbyist needs. In order to move from a schematic to PCB design the layout software needs to know how to map the various electrical connections in the schematic into the physical space that connection will occupy on the PCB. That physical space is called a footprint and the The process of mapping from an abstract component like an inverter or adder, to a specific chip like a 74LS283 is called assigning footprints.&lt;&#x2F;p&gt;
&lt;p&gt;If the first part of the design process is about working out theoretical requirements of your design assigning footprints is the gateway into the practical. In order to assign footprints you have to have the specific part you need, it will have a size, a cost, it may not even exist.&lt;&#x2F;p&gt;
&lt;p&gt;Even something as seemingly simple as a resistor immediately dumps an astonishing amount of information. Here are just a few of the dimensions beyond resistance that I look at:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Type: Metal foil, Ceramic, etc.&lt;&#x2F;li&gt;
&lt;li&gt;Termination Style: Axial, Radial, etc.&lt;&#x2F;li&gt;
&lt;li&gt;Through hole or surface mount&lt;&#x2F;li&gt;
&lt;li&gt;Wattage&lt;&#x2F;li&gt;
&lt;li&gt;Length&lt;&#x2F;li&gt;
&lt;li&gt;Diameter&lt;&#x2F;li&gt;
&lt;li&gt;Cost&lt;&#x2F;li&gt;
&lt;li&gt;Precision&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Some of these variables will be defined by requirements of your design, Wattage in particular is something you have to be thinking of while designing your circuit. Other variables will be related, if you have precision requirements that will likely rule out various types of resistor like carbon composite resistors. Variables like through hole or length will be defined by things like your enclosure size. Lastly, you&#x27;ll be limited by availability or cost, you might have the perfect component but be unable to find it, or unable to find it at the right price.&lt;&#x2F;p&gt;
&lt;p&gt;Once you have the specific component the next step is to get that component into the EDA. For a lot of components on the market this just means you&#x27;ll need to design the footprint yourself. All of these components will have datasheets for their use with all the specs needed to design the footprints. This could be lead spacing, lengths, widths, etc. Other components will have footprints provided for you. Mouser works with a company Samacsys who provides footprints and 3D models of components.&lt;&#x2F;p&gt;
&lt;p&gt;For no reason at all I&#x27;ve historically used &lt;a href=&quot;https:&#x2F;&#x2F;mouser.com&quot;&gt;mouser.com&lt;&#x2F;a&gt; as my goto distributor, this implies working with samacsys to get predesigned footprints. Unfortunately the provided tools don&#x27;t work on linux. You can work around this limitation by going straight to &lt;a href=&quot;https:&#x2F;&#x2F;componentsearchengine.com&#x2F;&quot;&gt;component search engine&lt;&#x2F;a&gt; but it&#x27;s slow and unwieldy. Someone kindly built an open source replacement &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;olback&#x2F;library-loader&quot;&gt;library-loader&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Daily Log 2020-11-21</title>
        <published>2020-11-21T00:00:00+00:00</published>
        <updated>2020-11-21T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/daily-log-2020-11-21/"/>
        <id>https://anders.conbere.org/blog/daily-log-2020-11-21/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/daily-log-2020-11-21/">
            &lt;h2 id=&quot;triggering-a-relay&quot;&gt;Triggering a Relay&lt;&#x2F;h2&gt;
&lt;p&gt;Relays are electrically controlled switches. Most relays use mechanical connectivity for switching as opposed to semiconduction like a transistor (this isn&#x27;t strictly true as there are semiconductor relays that blur the lines). Most often relays are found in high voltage &#x2F; high current applications where semiconductors would impractical, they trade off cheapness and resiliency for speed of switching. An electromagnetic relay consists of contacts, a solenoid (a bit of wire wrapped around a bit of iron), and an arm that moves to connect between the contacts. When a small current is run through the solenoid it magnetizes and moves the arm between contacts turning them on or off.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;ve been working on a design for a simple relay that also offers voltage and current sensing across the terminals, enabling simple programming for applications like solar battery charge management. For my uses I want to minimize power use while maximizing the power that the relay can transmit. In that regard, one dimension to consider when evaluating relays is the coil voltage and current, as this will define the power draw of the relay. In my prototype I&#x27;m using a G5LE-1-ASI which is a single pole double throw (SPDT) relay, the coil voltage and current are given as 5 VDC and 79.4 mA respectively, resulting in a minimum draw of approximately 400 mW.&lt;&#x2F;p&gt;
&lt;p&gt;Another consideration is &lt;em&gt;how&lt;&#x2F;em&gt; to trigger the relay, while the ATtiny85 controller I&#x27;m using can easily supply the needed 5V, 80mA far exceeds the safe operating current of any of its available outputs. In order to meet those current needs we&#x27;ll need to find a way to connect the relay&#x27;s coil to the power supply and trigger it via an output pin on the controller. This is actually a great application of the Op Amp I was discussing yesterday, in that case we wanted a high impedance input to buffer a signal from the high voltage line to the low impedance sensing. In this case we want to buffer the low current input signal to the high current output signal.&lt;&#x2F;p&gt;
&lt;p&gt;It turns out that selecting an appropriate transistor is tricky:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Transistor type: MOSFETs for their ability to transfer large loads&lt;&#x2F;li&gt;
&lt;li&gt;channel type: N channel types are considered easier to work with and are more efficient&lt;&#x2F;li&gt;
&lt;li&gt;Gate to Source voltage (Vgs): The voltage at which the device is in the fully on state (logic level is shorthand for 3-5v)&lt;&#x2F;li&gt;
&lt;li&gt;Drain Current Continuous: The amount of current that can run through the drain continuously&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Based on that I found a &lt;a href=&quot;https:&#x2F;&#x2F;www.mouser.com&#x2F;ProductDetail&#x2F;ON-Semiconductor-Fairchild&#x2F;BSS138K?qs=kDD%2FdQe9TTeCJ7OVuffPnA%3D%3D&quot;&gt;reasonably priced SMD mosfet&lt;&#x2F;a&gt; with a Vgs of 4.5V and Drain Current of 200ma. This should be completely sufficient for my uses of triggering the relay. Note that for prototyping these SMD mosfets are a pain to work with, but I have some simple adapters that allow me to solder one of them into a board that fits the PID-6 package which should work for my uses.&lt;&#x2F;p&gt;
&lt;p&gt;Resources:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.espruino.com&#x2F;mosfets&quot;&gt;https:&#x2F;&#x2F;www.espruino.com&#x2F;mosfets&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;circuitjournal.com&#x2F;which-mosfet-should-you-use-with-arduino&quot;&gt;https:&#x2F;&#x2F;circuitjournal.com&#x2F;which-mosfet-should-you-use-with-arduino&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Last but not least one needs to consider &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Flyback_diode&quot;&gt;Inductive Kickback&lt;&#x2F;a&gt;. Kickback is the result of opening a circuit that contains any inductor. As current drops in the inductor the inductor resists the dropping current with a resulting increase in voltage. For a short period of time this voltage can be much greater than the supplied voltage, enough to damage sensitive electronics connected to the inductor. In the case of a relay the coil operates as an inductor and triggering the relay opens and closes the circuit and our sensitive electronics is our microcontroller. To protect against the effect we can place a diode across the coil. The Diode opens a loop for the current to flow from the inductor back into itself preventing the huge spike in voltage.&lt;&#x2F;p&gt;
&lt;p&gt;Below is a schematic view of a logic controllable relay:&lt;&#x2F;p&gt;
&lt;img src=&quot;logic-triggered-relay.png&quot;&gt;
&lt;h2 id=&quot;selecting-resistors-for-leds&quot;&gt;Selecting resistors for LEDs&lt;&#x2F;h2&gt;
&lt;p&gt;With Vf (forward voltage), Vcc (supplied voltage), Ifc (Forward Current), and our mystery R. Ohms law &lt;code&gt;I = V &#x2F; R&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ifc = (Vcc - Vf) &#x2F; R
R = (Vcc - Vf) &#x2F; Ifc&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;As an example taking this &lt;a href=&quot;https:&#x2F;&#x2F;www.mouser.com&#x2F;datasheet&#x2F;2&#x2F;239&#x2F;LTL-4231N-1139959.pdf&quot;&gt;LiteOn LED&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Ifc: 30 mA&lt;&#x2F;li&gt;
&lt;li&gt;Vf: 2.1V&lt;&#x2F;li&gt;
&lt;li&gt;Vcc: 5V&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;R = (5V - 2.1V) &#x2F; 30 ma
R = 96.7 ohms&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;To save life and reduce brightness we know we can choose any resistor greater than 100 ohms and feel good.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Daily Log 2020-11-20</title>
        <published>2020-11-20T00:00:00+00:00</published>
        <updated>2020-11-20T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/daily-log-2020-11-20/"/>
        <id>https://anders.conbere.org/blog/daily-log-2020-11-20/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/daily-log-2020-11-20/">
            &lt;h2 id=&quot;operational-amplifier&quot;&gt;Operational Amplifier&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Operational_amplifier&quot;&gt;Op Amp Wikipedia&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The operational amplifier (Op Amp) is a common differential amplifier used in numerous devices around your house and around the world. It was first developed in 1941 and saw wide use but saw massive popularity with the invention of the MOSFET in 1959.&lt;&#x2F;p&gt;
&lt;p&gt;The standard Op Amp has two inputs, one output, and positive and negative supply. In the open loop configuration the Op Amp has limited practicality, with any difference between it supplies saturating one of the supply voltages to the output. This configuration is unstable with differences in supply voltage, temperature, and other conditions resulting in changes to the output. More common is to see op amps in closed loop configurations that feedback the output into the inputs.&lt;&#x2F;p&gt;
&lt;p&gt;The Relay project that I&#x27;m working on requires stepping down a large input voltage (0-50V) to a voltage that can be read by the Analog to Digital Converter (ADC) on an ATtiny85. In yesterday&#x27;s log I outlined the challenges this provides given the constraints of low power consumption and low input impedance. With a naive voltage divider in order to meet the input impedance requirements of the ADC you would end up wasting enormous power through the voltage divider. The op amp provides a useful buffer. In a simple negative feedback configuration it acts as a 1:1 amplifier, taking advantage of the high impedance inputs and the low impedance outputs to separate the two electrical components.&lt;&#x2F;p&gt;
&lt;img src=&quot;voltage-divider-opamp.png&quot;&gt;
&lt;p&gt;My question at the end of the day was &quot;How does this actually work?&quot;. I could find a lot of resources explaining that in the negative feedback configuration the op amp&#x27;s output will adjust to ensure there difference between + and - inputs is zero. But I couldn&#x27;t find any explanations of how the feedback loop compensated for the infinite gain, I suspect the answer will be &quot;differential equations&quot; but after spending some time trying to work it out myself I decided to ask.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;web.mit.edu&#x2F;2.010&#x2F;www&#x2F;psets&#x2F;hw2_dir&#x2F;tutor2_dir&#x2F;feedback_algebra.html&quot;&gt;Black&#x27;s Formula&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;using-simavr-and-avr-gdb-to-debug-attiny85-projects&quot;&gt;Using simavr and avr-gdb to debug ATtiny85 projects&lt;&#x2F;h2&gt;
&lt;p&gt;Using this &lt;a href=&quot;https:&#x2F;&#x2F;blog.oddbit.com&#x2F;post&#x2F;2019-01-22-debugging-attiny-code-pt-1&#x2F;&quot;&gt;helpful guide&lt;&#x2F;a&gt; I got simavr running and connected to it through avr-gdb below are some notes for getting that working. Special call out for the ubuntu package for avr-gdb being called gdb-avr which cost me at least 20 minutes of googling. At first I tried just using gdb but it fails to map registers to the remote correctly.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Set avr-g++ to produce debug builds: &lt;code&gt;-g -Og&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;https:&#x2F;&#x2F;github.com&#x2F;buserror&#x2F;simavr&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;.&#x2F;simavr&#x2F;run_avr -m attiny85 -f 8000000 -g TARGET.elf&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;$&amp;gt; sudo apt install gdb-avr&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;$&amp;gt; avr-gdb&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;gdb&amp;gt; file TARGET.elf&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;gdb&amp;gt; target remote :1234&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;gdb&amp;gt; display &#x2F;t PORTB&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;gdb&amp;gt; display &#x2F;t PINB&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;designing-a-pcb-for-a-high-power-relay&quot;&gt;Designing a PCB for a high power Relay&lt;&#x2F;h2&gt;
&lt;p&gt;Remember to use the &lt;a href=&quot;http:&#x2F;&#x2F;circuitcalculator.com&#x2F;wordpress&#x2F;?p=25&#x2F;&quot;&gt;circuit calculator&lt;&#x2F;a&gt; to figure out the correct trace width.&lt;&#x2F;p&gt;
&lt;p&gt;For high voltage circuits you need to be aware of safe creepage and clearance distances. This is why most high voltage Relay PCBs will have some airgapping to ensure there isn&#x27;t any danger of the high voltage side leaking into the low voltage side.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.tempoautomation.com&#x2F;blog&#x2F;understanding-pcb-creepage-and-clearance-standards&#x2F;&quot;&gt;Creepage and clearance definitions&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;pcbdesign.smps.us&#x2F;creepage.html&quot;&gt;Creepage and clearance calculator&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;electronics.stackexchange.com&#x2F;questions&#x2F;57363&#x2F;what-are-good-practices-for-traces-on-the-mains-side-of-a-relay&quot;&gt;Stackoverflow&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

        </content>
        
    </entry>
    <entry xml:lang="en">
        <title>Daily Log 2020-11-19</title>
        <published>2020-11-19T00:00:00+00:00</published>
        <updated>2020-11-19T00:00:00+00:00</updated>
        <author>
          <name>Anders Conbere</name>
        </author>
        <link rel="alternate" type="text/html" href="https://anders.conbere.org/blog/daily-log-2020-11-19/"/>
        <id>https://anders.conbere.org/blog/daily-log-2020-11-19/</id>
        
        <content type="html" xml:base="https://anders.conbere.org/blog/daily-log-2020-11-19/">
            &lt;h2 id=&quot;stepping-down-a-large-voltage-for-sensing&quot;&gt;Stepping down a large voltage for sensing&lt;&#x2F;h2&gt;
&lt;p&gt;Typically I would use a simple voltage divider for this.&lt;&#x2F;p&gt;
&lt;img src=&quot;voltage-divider-standard.png&quot;&gt;
&lt;p&gt;When using the Analog to Digital Converter (ADC) on the ATtiny85 this poses a problem because in order to keep the power loss to a minimum the impedance of the circuit will exceed the maximum input impedence.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;example&quot;&gt;Example:&lt;&#x2F;h3&gt;
&lt;p&gt;I&#x27;m expecting an input voltage between 0 and 50V, the ADC can read from 0 to 5V so I want to step down the input by a factor of 1&#x2F;10th. The formula for a voltage divider is &lt;code&gt;Vout = (R2 &#x2F; (R1 + R2)) * Vin&lt;&#x2F;code&gt;. Taking an R1 = 90Ω and R2 = 10Ω we get the correct output voltage of 0 to 5V. However it will come at enormous cost to power. We can compute the current so at the peak of 50V :&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;
I = V &#x2F; R
P = I * V
P = V^2 &#x2F; R

V = 50V
R = 100Ω 
P = 2500 &#x2F; 100Ω = 25W
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;25 Watts is a HUGE amount of power, to adjust that we can increase the resistance of the resistors to offset that. Using &lt;code&gt;R1 = 27kΩ, R2 = 3kΩ&lt;&#x2F;code&gt; we preserve the 1&#x2F;10 ratio and reduce the power consumption to 1.8 mA. This would seem to solve our problem except the ADC also has a maximum input impedance of 10kΩ. Running through our equations again:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;
V = 50V
R = 30kΩ
P = 2500 &#x2F; 30000 = 83mW
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h3 id=&quot;solution&quot;&gt;Solution:&lt;&#x2F;h3&gt;
&lt;p&gt;A solution to this problem is to use an OpAmp as a buffer. An OpAmp with its output wired to it&#x27;s input works as a 1:1 amplifier (aka a buffer) but has the useful properties of isolating the input and output sides.  An OpAmp has a &quot;near infinite&quot; input impedance which prevents current leakage from the 50V inputs, but a near zero output impedance, which allows our ADC to sample the outputs within its maximum allowable input impedance (10kΩ).&lt;&#x2F;p&gt;
&lt;img src=&quot;voltage-divider-opamp.png&quot;&gt;
&lt;h2 id=&quot;i2c&quot;&gt;I2C&lt;&#x2F;h2&gt;
&lt;p&gt;In the past I&#x27;ve found the Arduino ecosystem difficult to work in; I want to use my own editor, manage my libraries myself, and more control over compilation, linking, and programming. When I set out to work on the ATtiny85 I decided I&#x27;d do it outside of the Arduino ecosystem but that choice brought with it some challenges when trying to find good open source libraries for common requirements like I2C. After spending a couple of days trialling a number of I2C options I ended up writing my own based on existing sources.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;libraries-i-looked-into&quot;&gt;Libraries I looked into&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;lucullusTheOnly&#x2F;TinyWire&quot;&gt;TinyWire&lt;&#x2F;a&gt; - This library worked without Arduino but took up over a kilobyte of rom (nearly 25% of the available storage space for the ATtiny85).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;SpenceKonde&#x2F;ATTinyCore&quot;&gt;ATTinyCore&lt;&#x2F;a&gt; - This is an arduino core that comes with a ton of useful functionality including I2C libraries. Unforunatly it seems very baked into the Arduino ecosystem which I was hoping to avoid.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;technoblogy&#x2F;tiny-i2c&quot;&gt;tiny-i2c&lt;&#x2F;a&gt; - This is my favorite so far. It&#x27;s small (compiles down to less than 400bytes) but depends on Arduino headers. When I vendored in the Arduino headers it compiled but wasn&#x27;t working.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;You can find my attempt at meeting the requirements for my project at my &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;aconbere&#x2F;twi&#x2F;&quot;&gt;twi github project&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

        </content>
        
    </entry>
</feed>

