Optical Delay Dynamic RAM (ODDRAM!) - Page 1
Forum section: electronics / projects

author: wobbly
author_rank: Regular Contributor
timestamp: August 02, 2024, 04:17:12 pm
content: A while back I was thinking about delay lines in old vintage electronic devices. There aremany kinds.For some unknown reason I wanted to make anopticaldelay line. These already exist of course and they are used to do things like fractional phase shifts of high frequency signals and often give delays in the region of nanoseconds thereabouts.That's no good to me, I want a delay of a few seconds! But rather than buy several hundred thousand kilometres of fibre-optic cable, I decided to do it a different way...Imagine a plywood disc about 100mm in diameter. Around the edge we have 40 holes drilled, each one containing a glow-in-the-dark ("GITD") plastic ball ("BB"). This disc can rotate and is driven by a stepper-motor by way of gear teeth around the disc's perimeter.Attached is averybasic sketch of what it might look like. I haven't shown the motor or any of the electronics.Theory of OperationEach of the 40 BBs represents one binary bit, giving us a generously capacious 5 bytes of RAM. If a BB is dark then it represents a0 bit, if it is brightly lit or "charged", then it represents a1 bit.The disc will be in constant motion and each BB will need to be periodically "refreshed" by passing through a "read/write head".Each read/write head will consist of a light sensor and a powerful light source of an appropriate type. If a 0 bit needs to be refreshed, then no light is applied to the BB because natural decay of the phosphor will reinforce the zero value. If a 1 bit needs to be refreshed, the powerful light is applied to reinforce the 1 state.So the RAM is implemented as a 40-bit analog ring buffer ("Ring" henceforth).To begin with, the ring will contain only 0 bits (all dark). A microcontroller will control the stepper-motor and thus the disc's motion. The same micro will control the read/write head(s). The micro will provide a simple RS-232 interface through which a human user may interact with and control the machine.The user will be able to write a brief message (up to 5 whole characters!) that will be written to the Ring and held there perpetually or until the machine is switched off.When the Ring contains a message, that message will be endlessly read and echoed back to the RS-232 terminal from which the user may derive tremendous joy and enrichment.ExpectationsI don't know if this will work. I think itmightwork if all the many variables are under control, but I'm not certain.Ultimately I'm hoping to make a simple and mildly amusing interactive gizmo that demonstrates an idea that we can use obscure physics phenomena to store even small amounts of information for later retrieval.

author: wobbly
author_rank: Regular Contributor
timestamp: August 02, 2024, 04:19:07 pm
content: POST RESERVED FOR REVISION INFO AND UPDATES ETC...

author: pcprogrammer
author_rank: Super Contributor
timestamp: August 02, 2024, 04:33:16 pm
content: I read about this in yourthreadabout getting project inspiration and have some remarks.How can you turn a one back into a zero?The beads glow some time after exposure and need a refresh to stay one, but when you need it to become zero you basically have to wait for it to die out until the sensor sees it as a zero. Since you are thinking about a slow system it might not be a problem, but be aware of it, and maybe even add an additional sensor on another part of the disc to allow for checking if it really became a zero.The beads might have different responses time wise and might need a full stop of the disc for extending the "erasure".Another thing already touched in the other thread is the ambient light. I guess you want to see the data with the naked eye as a visual effect, but with ambient light sources the project might fail miserably. What comes to mind for this is to use a camera and put the disc in a fully closed chamber. Show the camera image on a screen and you have your visual display of the memory.For the rest it does sounds as a very fun project.

author: wobbly
author_rank: Regular Contributor
timestamp: August 02, 2024, 04:56:54 pm
content: Quote from: pcprogrammer on August 02, 2024, 04:33:16 pmYes, you're absolutely right. The only way I can force a zero bit is to wait for the natural glow to decay. This presents a bit of a paradox... I want the bits to store their state for a long time so that I don't have to refresh them too often. But I also want the write of a zero bit and the write of a one bit to be equal in duration.So I think I'm going to need a great deal of control over the many variables in this project.I might have to deliberately use BBs that are not that good at retaining their brightness for more than a few seconds. There will be a balancing act between Disc rotation speed and the sensitivity of my light sensors.I'm planning to use"TSL235R" Light-to-Frequency Converterdevices, which are now sadly obsolete, but I have a few left in my parts bin. They are fantastic devices and I recommend anyone to grab some off Ebay or wherever they can. They are very fast to respond and are very sensitive.

author: wobbly
author_rank: Regular Contributor
timestamp: August 02, 2024, 05:12:48 pm
content: Quote from: pcprogrammer on August 02, 2024, 04:33:16 pmYes, again you're bang-on. The problem I really have with doing this in a normally lit room is that glow in the dark plastic isn't very "contrasty" to the human eye in my experience. The effect I'm hoping to demonstrate would simply be basically invisible to onlookers, which is a bummer.So, I think that in all likelihood, this madcap idea will only have any chance of working when it's running in complete darkness. But that's fine, all I have to do is make a video of it with suitable camera settings and use that to demonstrate it to people.I'm flying by the seat of my pants here. I love the input that EEVBlog Forums have been giving me on this project - it's really awesome to have so many keen minds to tap into. Thanks to all of you.

author: jpanhalt
author_rank: Super Contributor
timestamp: August 02, 2024, 05:53:25 pm
content: I had to look up Airsoft tracers and now realize the phosphorescence is fairly short lived (like a second). Its SDS/MSDS doesn't say what the phosphor is, nor did I find that specifically. If you are curious, here's a link to something that may apply. Like the Airsoft pellets, some of the compounds described are UV excited and emit green or other colors:https://pubs.rsc.org/en/content/articlehtml/2021/sc/d1sc00446hScroll about 1/3 of the way down to the discussion of IPA (not isopropyl alcohol) and PMA. The rest is pretty interesting. I suspect you will not be doing any of the chemistry and will use off the shelf tracer BB's. Apparently, they do have a limited reuses, and I suspect they cannot be quenched without destroying them.Once each byte is read, you could just let them fall into a bin and reload with dark ones from the same bin. They will not self-excite as the absorption and emission wavelengths (Stokes shift) are too far apart.

author: wobbly
author_rank: Regular Contributor
timestamp: August 02, 2024, 06:27:18 pm
content: @JpanhaltIt makes total sense to me now that BB tracer pellets would be cost-optimised to use the cheapest possible chemical mixture. Because once they are fired they are never going to be seen again!Perhaps GITD BBs are not a good option. Perhaps 3D printed GITD filament might be a better option. Because if someone take the effort to 3D print something, chances are that it'll be something that they want to have around for a few years at least. Right? Maybe it would be a better chemical blend that can take a lot more light/dark cycles without deteriorating much?

author: ch_scr
author_rank: Frequent Contributor
timestamp: August 02, 2024, 06:29:10 pm
content: Looking at 1942Metascopenight vision devices,they used a phosphor coating (charged by e.g. white light) that would then phosphoresce when hit by infrared radiation.But that will drain the energy out of the phosphor - shortening it's "non-infrared radiated waste glow" that limits the time it keeps charged.So after projecting IR onto it, the "inverse picture" is visible - the phosphor get's discharged!One might try different IR wavelength LED's at different BB's to see if there's -by chance- a combination (phosphor and IR) where such an effect is visible,which would allow the "controlled discharge" of the afterglow by radiating off it's energy in a much shorter time.Edit: I would not focus too much on the longevity of the phosphor(they all age anyway), for such a "demonstration item".If it's easy to replace it - like in the case of BB's in a chamber(or even just a short bundle of cut pieces of 3dP filament), you can just replace them regularly.

author: PCB.Wiz
author_rank: Super Contributor
timestamp: August 03, 2024, 05:04:32 am
content: Quote from: wobbly on August 02, 2024, 04:56:54 pmYou could use two storage elements, in differential mode. One for H and one for L, and the difference defines 1 or 0.That's also a bit more ambient light tolerant.You always re-pulse/refresh the brighter storage element.If you designed a PCB disk with plated holes, with glow backing, you could flash illuminate down the hole, and sense the same way with an opto interrupter.That allows bits closer together, and gives better light immunity.I wonder how much side ways creepage the material has ?

author: pcprogrammer
author_rank: Super Contributor
timestamp: August 03, 2024, 05:40:26 am
content: I thought up some other options.If the light is just for the visual effect you could use a capacitor and a small LED. SMD types produce a lot of light without needing much current. Some work already quite well with a couple of 100uA. To charge the capacitor you can use either contacts with a brush mechanism on the back of the plate or use a magnetic field to transfer the energy. A bit like what is used in electric tooth brushes or contactless smart cards.With the contacts it is not needed to sense the light and clearing back to zero is also simple. With the magnetic option it would be more or less the same as with your GITD BB's.Another thought is to look into photovoltaics to charge the capacitors. Maybe something possible with a laserdiode to do the charging in such a way that ambient light won't be a problem.A cheat option can be to use a microcontroller to control the LED's and have it just be a visual effects thing. Couple the data in via a wireless connection.

author: wobbly
author_rank: Regular Contributor
timestamp: August 03, 2024, 10:36:45 am
content: My goal is definitely to have the phosphor itself store the data bits, I really want the physics to be a central part of the workings.

author: wobbly
author_rank: Regular Contributor
timestamp: August 03, 2024, 12:12:21 pm
content: I've found some phosphorescent powder that is intended for mixing with water-based paint for art purposes. If I fill each of the small holes with the powder and then pour in some optically clear 2-part polyurethane resin perhaps this will work better than the BBs.Meanwhile I'm putting together the light sensor. I'm using a short section of 6mm brass tube to make the TSL235R sensor sensitive to light only from the front. By default it's clear plastic package allows light in from all angles which is no good for this project.So I've mounted it into the end of the tube (see photo attached) and have used clear PU resin to hold it in place. When the resin has set, I'll pot the whole thing again in opaque black epoxy leaving the tube open. This will block all light coming from the sides or the back of the sensor.

author: jpanhalt
author_rank: Super Contributor
timestamp: August 03, 2024, 12:26:21 pm
content: Be sure to paint the inside of the tube dull black. If the wheel rotates through a slot, effects of ambient light will be minimized.

author: wobbly
author_rank: Regular Contributor
timestamp: August 03, 2024, 03:34:24 pm
content: Clear PU potting is complete. And the sensor still works properly, so I haven't broken it in the process!The tube is about 16mm long. The next stage will be to do another potting operation with opaque black epoxy to cover the rear of the sensor.The photos show a few bubbles in the PU resin - I'm going to deal with that issue by pretending I haven't seen it.

author: Kleinstein
author_rank: Super Contributor
timestamp: August 04, 2024, 11:34:17 am
content: For shielding the light from the back, I would consider some metal. Paint and colored plastics are often not that light tight. Especially NIR light may pass through some block pigments.

author: wobbly
author_rank: Regular Contributor
timestamp: August 04, 2024, 12:04:52 pm
content: Quote from: Kleinstein on August 04, 2024, 11:34:17 amVery true. I used black epoxy to pot the sensor but since it's only a thin layer it's still fairly translucent. So I've added a layer of self-adhesive copper tape to make certain it's fully light-tight.Also I've put together the UV light source that will energise the phosphorescent material. It's a 395 nm ultraviolet LED in another short piece of brass tube. Does a nice job of tightening up the beam and leaves a nice uniform circle on the tape.I'm probably going to use some thin self-adhesive phosphorescent tape as the GITD material. It responds very quickly to the UV LED, glows brightly and decays at a decent rate too.More pics...

author: wobbly
author_rank: Regular Contributor
timestamp: August 04, 2024, 02:37:07 pm
content: Next thing to do is to make the ring gear and the driving gear. For this I'm using Matthias Wandel's excellentGearGeneratorsoftware (https://woodgears.ca/gear/index.html).I'm going to export this as a DXF and then print it out 100% scale and use that as a template to cut out gears from plywood on my scrollsaw. If that fails (more than likely) I'll have to send it of to be laser cut.

author: shakalnokturn
author_rank: Super Contributor
timestamp: August 04, 2024, 11:35:40 pm
content: Is the gearing an important part of the project's aesthetics?I'm sure you could get away with having the disc mounted directly to the stepper's axis.In a more DIY style, a very basic pulsed motor using regularly spaced ferrous pieces mounted to the disc and 2 or 3 sequenced electromagnets.In any case you'll need some sort of index pulse to identify the begining of your memory.

author: wobbly
author_rank: Regular Contributor
timestamp: August 05, 2024, 06:41:41 pm
content: Never made gears on a scroll saw before, came out better than I'd thought. Pic attached.The gear teeth are not perfect, so I'll do some tuning up here and there with sandpaper later on to stop them jamming. I think the proper spacing between gear centres will help too. Not that it needs to be precise really. A few degrees here and there doesn't really matter.The bearing is a 19mm one simply press-fit into a close fitting hole, cut on the saw and brought to tolerance with a half-round file.I love my scrollsaw, it probably saved me £30 and a week waiting for some laser cutting shop to make these for me!I might paint the gears black to reduce unwanted reflections - will have to see how it goes.I think I'll use more plywood to construct the rest of this mechanism - the scrollsaw makes it easy to cut even complex shapes quickly.Quote from: shakalnokturn on August 04, 2024, 11:35:40 pmYes, I'll probably use a reed switch and a neodymium magnet for this.

author: jpanhalt
author_rank: Super Contributor
timestamp: August 05, 2024, 06:54:21 pm
content: OT: What wood species is the plywood facing? It looks a little like paulownia. Is the core something else?As for start of memory, can't the beginning of each session be arbitrary, then the MCU takes care of the end? With gears, it is pretty unlikely anything will get out of timing.

author: wobbly
author_rank: Regular Contributor
timestamp: August 05, 2024, 07:23:17 pm
content: Quote from: jpanhalt on August 05, 2024, 06:54:21 pmThe species name is "the cheapest stuff I could find at B&Q 15 years ago and have left to get all gross and warped in the garage ever since"It looks better in the photo than in real life.Quote from: jpanhalt on August 05, 2024, 06:54:21 pmThe only unknowable thing at power-up is the position of the stepper motor shaft. Chances are it won't be centred on a "bit" position, could be between two bits. Easiest thing - implementation wise - is to glue a magnet on the large gear and have it trigger a reed switch when the motor has settled on a bit position.I'll make a short automatic calibration sequence at startup that spins the large gear around quickly until the reed switch gets a reading, and then from that point onwards simply keep a tally of how many stepper motor steps I have made. These gears are so light and there is a decent gear ratio so I don't expect the stepper to miss any steps. I'm going to use an EasyDriver (v44) module to drive the motor, this has a decent amount of current capability. If it can work for an inverted pendulum balancer, this project will be a piece of cake for it!

author: jpanhalt
author_rank: Super Contributor
timestamp: August 05, 2024, 07:54:37 pm
content: I would use a Hall sensor for the magnet.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 05, 2024, 08:06:20 pm
content: Resetting of the bits should be possible if you choose the rpm and the threshold for the photodiode that way that each bb keeps it charge for exactly one rotation.So the logic could be:Read:read 0 --> no rechargeread 1 --> rechargewrite:write 0 --> don't chargewrite 1: (re-)chargeIf recharging an already set bit makes it significantly brighter than the other bits, then you could reduce the on time of the recharge-LED so that all is leveled. But due to exponential decay of the light intensity I suppose that´s not even necessary, at least slow rpm's.

author: PCB.Wiz
author_rank: Super Contributor
timestamp: August 05, 2024, 08:13:55 pm
content: Quote from: wobbly on August 04, 2024, 12:04:52 pmNice pics.How does a Blue LED go at this ? That has the benefit of being visible to users.I did find some useful looking parts at Everlight, if you wanted to make this in larger numbers.https://en.everlight.com/sensor/category-ambient_light_sensor/analog_ambient_light_sensor/They have SMD light to current sensors, some 3 pin, some 2 pin, that are photo diodes + filters + amplifiers.Response times mostly sub ms, so not super fast, but they are compact and many can reverse mount to look through a hole.

author: wobbly
author_rank: Regular Contributor
timestamp: August 05, 2024, 08:34:14 pm
content: Quote from: PCB.Wiz on August 05, 2024, 08:13:55 pmThank youQuote from: PCB.Wiz on August 05, 2024, 08:13:55 pmIn fact theallegedly UVLEDs I'm using are in fact visible to the naked eye, so clearly it's not a very good UV LED - whatever, it's what I've got in my parts bin, they get the job done! As soon as the light hits the phosphorescent tape it glow very brightly in pale green. However due to my own concerns that near UV wavelengths are potentially harmful I'm taking all efforts to reduce the raw emissions from the LED die from escaping directly into the room.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 06, 2024, 06:14:27 am
content: Quote from: wobbly on August 05, 2024, 08:34:14 pmMost of these phosphorescent dies are best excited at wavelengths below 400nm - that´s exactly the wavelength of these barely visible near-UV-LEDs.LEDs with smaller wavelength usually have worse efficiency and are more expensive. So from an engineering point of view you´ve choosen the right device

author: Haenk
author_rank: Super Contributor
timestamp: August 06, 2024, 07:57:05 am
content: Doh, I just tossed the perfect item for your building project:Essentially a large round disc coated with light retaining material. The little horses had a blue-ish LED which could be activated by pressing down the horse, leaving a trail. Actually quite some fun.(Obviously, I hope, this toy belonged to my daughter...)The larges problem is to find the threshold between on/off light intensity.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 06, 2024, 10:08:55 am
content: I think about hijacking the idea and building an own ODDRAM drum.I have a phosphorescent tape laying around here that I would like to glue around a cylinder that´s connected to a stepper motor.The stepper motor should spin the cylinder to 60-120 rpm. I´m going to use a 395nm UV LED with a single focus lens so that it images itself to a small spot on the tape. Next to this I´m going to put a photodiode with a colimator and/or focusing lens.The biggest disadvantage of the tape (or Haenks fairy disk) is it´s continuos nature. If I just make the LED light up as soon as the diode threshold is reached, the LED will feedback into the diode and will never turn off again.I suppose this can be solved by modulating the LED with e.g. a 60 Hz- squarewave. The idea is that each time the modulation forces the LED to be off the feedback loop latches off again. Or, if a bit comes around that´s still lighting from the round before then it is expected to be refreshed during the on-period.This way the single band should deliver 30-60 bits of storage, depending on the rpm and the modulation frequency. If it works it would be quite easy (and probably mesmerizing to look at) to build 8 or 16 tracks on the drum.I´ll keep you updated!

author: jpanhalt
author_rank: Super Contributor
timestamp: August 06, 2024, 10:45:17 am
content: I agree. Like old tape recorders, you don't need discrete holes to write. Pulsing collimated/focused leds and using a simple protocol, like start bit + data + stop bit, should work. However, the TS's plan may have more appeal and be easier to understand by a particular audience.

author: wobbly
author_rank: Regular Contributor
timestamp: August 06, 2024, 12:31:59 pm
content: @Phil1977, that's a great idea please do that!@jpanhalt, my brain only works in digital, so that means microcontrollers and code.. Phil's idea sounds like it could be done entirely in analog electronics, which is beyond me. I can imagine what a 16 channel drum version would look like spinning around and I think most people would find it more impressive than my simple gears.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 06, 2024, 12:43:48 pm
content: I don't see it as a competition who has the better / more impressive ideas.The bb-balls representing single bits are very hands-on and are for sure amazing. The great thing about these projects is everybody can build them with own priorities. And in the end all ideas that work are good ideas!

author: MrAl
author_rank: Super Contributor
timestamp: August 06, 2024, 02:50:05 pm
content: Quote from: wobbly on August 02, 2024, 05:12:48 pmHello,Two possible solutions to the onlooker viewing problem...1. Maybe a two-way mirror if the reflections inside do not agitate the phosphors too much. You'd be able to see the bits, but the bits would not be able to see you2. Since you have to use a microcontroller to refresh the 'bits', you can drive a set of external LEDs to show the current states of the internal phosphors. If you do not want to install all the LEDs that would match the internal 'bits', then you might use an LED or LCD display instead. Microcontrollers are good for that kind of stuff.

author: wobbly
author_rank: Regular Contributor
timestamp: August 06, 2024, 06:56:53 pm
content: @MrAl,The real aesthetic novelty of this concept is that the phosphor is nice to look at. Best way to do that is to run the thing in a fairly dark room. Doesn't have to be pitch black because the tape I'm using is really quite bright.Anyway, I've made a start on the chassis and I've mounted the main gear on it and I'm now planning how to mount the stepper motor. Photos attached.Super pleased with how the main gear turned out, it's flat, has good geometric consistency all the way around (still will need tweaking here and there though). It spins very freely on its bearing and doesn't grind against the backboard.The black oblong slot shape I've pencilled in underneath the gear is going to be a cut-out to allow the stepper motor shaft to poke through from the back. It's position will be adjustable to allow better gear meshing.Now, even thoughI'm not using the BB gun balls any more(because they are very weak), I did put some in the gear just for fun and to give a bit of an idea what is to come later.

author: wobbly
author_rank: Regular Contributor
timestamp: August 08, 2024, 07:44:51 pm
content: Build Progress:Mostly mechanical stuff yesterday and today. Chassis is mostly done, a simple affair crafted from the finest materials that can be found rotting in my garage.Stepper motor and gear meshing adjustment works nicely, gears (unexpectedly) turn quite smoothly for the most part.I have started to build the control circuit, using a plated-through double-side bit of perfboard of just the right size. I have chosen an Atmel ATTiny2313 as the brain of the system. Honestly it's overkill -- but it does have a 16-bit timer and an 8-bit timer which was my main concern. I wanted to use a 16-bit timer to measure the 0-500 kHz output from the light sensor, and an 8-bit timer to provide the frequency drive for the stepper motor. Plus this chip has plenty of GPIO and external interrupts and all that other lovely stuff!I have decided to put the UV LED at top-dead-centre on the ring gear. I think that aesthetically that is where people would expect new bits to be "born"!I also want the "RAM ring gear" to be rotating in a CLOCKWISE direction. This means that the light sensor needs to be placed immediately BEFORE the UV LED. For my hardware that means that the sensor needs to be just to the left of the UV LED.Legend for the photo called "BACK.jpg"..."E" is the UVEmitter at top-dead-centre on the RAM ring gear"S" is the lightSensor, just before the emitter"H" is the axleHub to reinforce the ring gear structurally and keep it straight and not wobble!"M" is the stepperMotor mounted in its adjustable slots"" is the area where the control circuit will be affixed once it's finished.

author: jpanhalt
author_rank: Super Contributor
timestamp: August 08, 2024, 08:17:00 pm
content: Please keep the updates coming. Fun read.John

author: wobbly
author_rank: Regular Contributor
timestamp: August 08, 2024, 08:23:31 pm
content: The sharp-eyed will notice that I've mounted both the UV LED and the light sensor on the back of the ring. This was a tricky choice, but I wanted to make the entire ring gear visible to the viewer without any ugly obstructions.This poses an existential problem though - the UV LED and the SENSOR cannot occupy the same position on the Ring! This means that the microcontroller MUST have some internal MEMORY state that existsin addition toandin parallelwith,the RING!OK, so a compromise has to be made for the sake of getting the project finished. The sensor sits 2 bits earlier than the LED. This means that my microcontroller has to maintain it's own tiny memory buffer of 2 bits worth of ring data in order to keep the ring refreshed.Is that justifiable? I think so...If the ring was 100 bits instead of 40, then the distance between sensor and emitter would still be2 bits.If the ring was 1,000,000,000,000,000 bits instead of 40, then the distance between sensor and emitter would still be2 bits.So, it's immaterial, basically.Later on, I foresee a slightly larger existential crisis, but I'll burn that bridge when I get to it.

author: PCB.Wiz
author_rank: Super Contributor
timestamp: August 08, 2024, 11:46:35 pm
content: Quote from: wobbly on August 08, 2024, 08:23:31 pm'That's ok as you already need a single bit detect and store before you decide to re-fire the LED or not.If you wanted to, you could mount two leds on the rear, to show the content of that 2 bit shift register, which would mimic the front side.

author: Kleinstein
author_rank: Super Contributor
timestamp: August 09, 2024, 03:50:31 am
content: One bit of external memory is needed anyway to get from detect the rewrite. If absolutely needed one could skip the 2nd bit of memory and just write the new data to the next available position and not the old position as it has been before. This would however drop the advantage of keeping the bits in the same state and getting a somewhat better SNR / lower error rate as constant bits don't get the rest from the old state.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 09, 2024, 05:50:28 am
content: But especially with the BB-bullets you could use the feedback of the excited BB to "latch" the excitation mechanism so that it stores this single bit by itself.Why I mean:- Put the BBs with sufficient distance so that light from one BB can not reach the other- Use the detector photodiode directly to trigger the excitation LED. Put the in line radial to the wheel, so that no phase offset exists- If a BB is not charged, the sensitivity threshold of the photodiode should be so low that it just passes the "read-write-head"- If a BB is charged, it triggers the LED which instantaneously latches in on-state because light from itself and spontaneous fluorescence of the BB falls onto the photodiode.- The latch is reset as soon as the BB leaves the sensing position. Probably the place between the BBs needs to be as black as possible to reset the latch.Of course, the question if a bit is stored in a digital circuit or in a sensor latch is really purely academically - but why not ;-)

author: wobbly
author_rank: Regular Contributor
timestamp: August 09, 2024, 06:15:09 pm
content: Bought some green phosphorescent powder off of the intarwebs. It's designed for mixing into art supplies like paint, for creative people to use to adorn their cave walls.It says you're supposed to mix it 1 part into 2 parts water-based paint or suchlike. Optically clear polyurethane (PE) two-part epoxy resin is probably water based right? Sure why not.So I did that and it looks awesome! Pic attached, the camera does not do it justice though. It looks like that green rod Homer fumbles in the opening credits of the Simpsons. It also decays slower than the crappy BB's I started with, but faster than the nice tape I also have. So now I have a few different options forphosmaterial.Fun stuff to play with over the weekend!

author: jpanhalt
author_rank: Super Contributor
timestamp: August 09, 2024, 07:20:12 pm
content: I don't think common 2-part epoxy is water based. Some polyurethanes are water cure (e.g., Gorilla glue), and they tend to form bubbles. The usual polyurethane varnishes do not form such bubbles. A 2-part polyurethane is probably the same as 2-part epoxy in not requiring water to cure.You may want a relatively thin coating as with a 2-part epoxy or polyurethane varnish. The directions may specify water-based for safety reasons and to avoid VOC fears. That does not mean the powder you have requires water to suspend it. If it actually dissolves, then that's a different story.What is the powder you found? I will look it up.

author: wobbly
author_rank: Regular Contributor
timestamp: August 09, 2024, 07:43:41 pm
content: Quote from: jpanhalt on August 09, 2024, 07:20:12 pmYou are likely correct. But I will press on regardless, throwing caution to the wind!For now though I'm staying with the Phos tape, because it is easily handled and removable. Its performance is decent too.

author: jpanhalt
author_rank: Super Contributor
timestamp: August 09, 2024, 07:58:01 pm
content: A thinner layer or less concentrated layer will probably give shorter detection lifetimes. Consider that, if your spots stay detectably on too long.

author: wobbly
author_rank: Regular Contributor
timestamp: August 09, 2024, 08:29:05 pm
content: 1 part glow powder plus 2 parts PU resin works pretty well...

author: wobbly
author_rank: Regular Contributor
timestamp: August 10, 2024, 03:50:50 pm
content: Quick update:Stepper motor is up and running, and the gears move quite smoothly, despite being hand-cut on a scroll-saw! UV LED is also ready (driven at 30 mA by a 2n3904 transistor in saturation).Next steps are to install the phosphorescent tape on the main gear and the LED and light-sensor into the chassis back-board. I'll need to make some wire extensions to make them reach far enough, that's my lack of planning!Then I need to configure the ATTiny2313 to have Timer1 take the signal from the TSL235R as it's input clock.I'll need to have some way of gating the Timer1 counter to get accurate frequency measurements. I think I might use Timer0 to perform two functions: 1) driving the stepper motor and 2) gating Timer1. I think these two uses can co-exist if I am careful to manage the interrupts and whatnot. Itmightbe possible to simply have Timer0 running continuously and "piggy-back" the gating of Timer1 on top of the stepper frequency drive. I'll think about this.

author: wobbly
author_rank: Regular Contributor
timestamp: August 12, 2024, 06:19:38 pm
content: A bit more progress...I've used the PU resin and glow powder mixture to create the 40 data bits in the ring gear. Photo below. Left it out in the sun for a while to charge up before I took the picture. I'm very pleased at how it came out - it appears that each cell is able to store roughly the same brightness from a uniform light source (e.g. the Sun).First I used post-it-notes to seal the bottom of each bit cell so the powder could be added without it falling through.Then I put a little glow powder into each bit cell in the ring gear (actually not easy to do but I think I managed to do it fairly evenly).Next, I filled up each cell with the PU resin using a dual-cartridge applicator and a static mixer nozzle.Finally, I went back around the ring with a bit of stiff wire, mixing the contents of each cell into a uniform paste. To my surprise this reduced the volume massively! Each cell was only about 50% full at the end of this part. I think the (extremely fine) glow powder must have a lot of air trapped within it. Mixing in the resin expels the air apparently!Also, doing this on the warmest day of the year wasn't a great idea, I could feel the resin curing as I was mixing the cells which had me worried for a minute, but it worked out OK.We live and learn. Anyway it came out great. Later on I'm going to paint the ring gear matt-black to minimise unwanted reflections.I've started on the firmware - the TX side of the UART is running to provide some debug output and to allow me to see what values the light sensor is receiving.I've got some hall sensors incoming so I should be able to set up some means to do a power-on self-calibration sequence to find "bit 0" in the ring automatically.The stepper is a 200 steps per rotation type. And I have just realised that I've made a blunder with the small driving gear. 6 teeth does not divide 40 teeth nicely. So I'll have a non-integer number of steps per bit position.I might remake the small gear to have 8 teeth which should fix that ((200/40) * (40/8)) == 25 steps per bit without microstepping, which seems pretty good. Microstepping would possibly make things smoother and quieter.

author: Kleinstein
author_rank: Super Contributor
timestamp: August 12, 2024, 07:01:43 pm
content: For the memory speed the time scale of the decay of the glow intensity is an important parameter. Before overwriting a cell one would have to wait for the old light to decay to something like 50% or ideally even more. There is a chance the glow powder may be a bit on the slow side.

author: jpanhalt
author_rank: Super Contributor
timestamp: August 12, 2024, 07:05:04 pm
content: What the approximate half-life for the glow when you used long exposure to the Sun?

author: PCB.Wiz
author_rank: Super Contributor
timestamp: August 12, 2024, 11:44:38 pm
content: Quote from: wobbly on August 12, 2024, 06:19:38 pmYou can fix that in SW, as there is room to do so.You need > 40/6 = 6.666666667 turns of small gear for full 40 rotate, which is 200*(40/6) = 1333.333333 steps for full rotate or = 33.33333333 steps per bit.If you group sets of 3 as Step 33+33+34, repeating, that will average 33.3333, with no accumulating errors, and a small absolute error on any given dot.

author: wobbly
author_rank: Regular Contributor
timestamp: August 13, 2024, 07:23:51 pm
content: Update:In addition to the arrival of my ordered Hall effect sensors, I have also acquired a very painful shoulder injury (yay!), which is going to slow down the development of this project's hardware slightly (although thankfully, the mechanical stuff is almost finished). Once the wood, nails and paint part is finished, then the rest is software which should forge ahead at full steam! I have a good idea of the final mechanical form and it's quite straight-forward.So tonight, I wired up a Hall sensor (https://www.bitsboxuk.com/index.php?main_page=product_info&products_id=3392) on a breadboard and measured it's performance on my scope. Picture below.Sensor works like a champ. It shows no sign of problematic noise when Islowlyturn the ring gear by hand. And the hysteresis pattern is nice and wide. I'll place the sensor just ahead of the "zero" bit so the CPU can calibrate itself during startup.In the photo, the hall sensor is held temporarily in place with blue tape, and a small neodymium magnet is blu-tac'd into the gear teeth just to the right of the sensor. The sensor's output is shown on the scope in the background.Thanks to Kleinstein, jpanhalt and PCB.Wiz for your comments:I am going to make a new 8-tooth gear rather than fix it in software, because I like making stuff on my scrollsaw and I don't like software kludges.Regarding the "halflife" of the glow material - I can't measure that accurately right now for many reasons, but I will do so in a scientific manner and share the results with you all at a later date (maybe the weekend hopefully?).This glow powder is quite amazing actually. Last night at about 2am I awoke and saw that the ring gear sat forlorn on my bench was almost entirely dim. So I grabbed my flashlight and hit 4 of the bits from point blank range with a very short blast of bright light. Immediately, the small room was subtly illuminated with a faint green glow!Four hours later I could still tell which 4 bits they were! Not scientific at all but fun to know.I am optimistic about a good result from this project! Stay tuned.

author: jpanhalt
author_rank: Super Contributor
timestamp: August 13, 2024, 07:58:57 pm
content: Won't 4 hours, or even 30 minutes, be a bit long to show the bytes changing? The BB's were much shorter. So far as I know, there is no way to reversibly quench phosphorescence.John

author: jamesglanville
author_rank: Contributor
timestamp: August 13, 2024, 07:59:53 pm
content: I think you could skip the hall sensor:You just need to center on a glowy spot, so turn the light on for a second, then off then rotate back and forward to find the maximum brightness

author: wobbly
author_rank: Regular Contributor
timestamp: August 13, 2024, 08:50:13 pm
content: Quote from: jpanhalt on August 13, 2024, 07:58:57 pmDon't get the wrong end of the stick, mate. The half-life is only (I'd estimate off the top of my head) 1 minute (the dynamic range of the human eye is HUGE). Ignore the fact that the eye can detect a state retained for 4-hours in a little bit of plastic.My sensor can do a MUCH better job on a MUCH SHORTER time scale (tens or hundreds of milliseconds). I know this for a fact, I can see the frequency of the PWM output change smoothly and rather quickly in real time on my scope.Consider the size of the wheel... 40 bits. AND it takes time to charge up each bit as well! We have time to burn!People are apparently neglecting the other variables we have under our control:*Charge time -- arbitrary down to the microsecond.*Charge intensity -- a UV LED running at 30 mA.By definition, the brightness change will be most easily detectable when the brightnessgradientis (falling) steepest. That is immediately after charging!If my eye can see a state held for 4 hours, then a closely-coupled sensor should be able to do the same after 1 minute or however long the wheel takes to turn (less than that)!Maybe I can read a bit, advance the wheel and charge a bit and advance the wheel again in less than 1 second. That's 40-ish seconds per revolution, without data loss. In a fairly dark room I suppose.

author: wobbly
author_rank: Regular Contributor
timestamp: August 13, 2024, 08:52:31 pm
content: Quote from: jamesglanville on August 13, 2024, 07:59:53 pmWhere does the glowy spot come from? The LED might be between bits at startup (e.g. no glowy spot at all, or perhaps twohalf-glowyspots).Hence needing calibration.

author: PCB.Wiz
author_rank: Super Contributor
timestamp: August 13, 2024, 09:10:56 pm
content: Quote from: wobbly on August 13, 2024, 08:52:31 pmTrue, but a smarter calibrate could work.If you drive the led and wobble over 2-3 bits, you always have one bit full bright plus 2 bits of possible fractional bright.You then sweep across the 3 bits and calibrate to the brightest plateau.An advantage is this would not need a full turn to seek the Hall trip.You could extend this angle calibrate to sensor calibrate too, by drive the wheel the 'wrong way', you can vary the LED energy and choose an operating point of brightness, by reading a few dots as they go past. This locks angle and gain.This could self adjust for daylight/nighttime.

author: jpanhalt
author_rank: Super Contributor
timestamp: August 13, 2024, 09:14:46 pm
content: I am familiar with half-life. An optical filter with an OD of 1.0 (10% transmission, about 3.3 half-lives) appears quite dark. 5 half-lives is 1/(2^5) or about only 3% as bright. Six half-lives is 1.5% as bright. The BBs were only a few seconds. In a dim, not dark room, I suspect you will need about 5 to 6 half-lives for an observer to preserve O's instead of 1's.

author: wobbly
author_rank: Regular Contributor
timestamp: August 13, 2024, 09:16:36 pm
content: @PCB.wiz,Yeah that's true. But I could also build a rocketship to explore Neptune. In the interests of actually finishing the project I think I will just use a Hall sensor 😊

author: wobbly
author_rank: Regular Contributor
timestamp: August 13, 2024, 09:22:44 pm
content: Quote from: jpanhalt on August 13, 2024, 09:14:46 pmYou are talking about the "observer?Do you mean a human? There is no human in my electronics. Observation might be done either in person or with a digital camera perhaps.People, please give me a chance to build this thing before finding obstacles for it. I'm learning too!

author: Kleinstein
author_rank: Super Contributor
timestamp: August 13, 2024, 10:17:08 pm
content: Changing the time for charging or LED intensity should not have much effect on the speed. The problem is reliably seeing the difference between a dot charges 1 turn and 2+3+4 turns ago. This wants enough (e.g. 1 half life, as 1/2+1/4+1/8 is already quite close to 1) of a decay for one turn. So it gets tricky with less than 1 half life. If really needed one could gain a little from using less power for refreshing a bit than writing a new bright dot, but this compicates things.One the other hand one wants enough light left, like no more than some 6 half lifes to get enough light left even with relatively short charging time.The intesity may not follow a strict exponential law, but could be a bit stretched from a mix of lifetimes.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 14, 2024, 06:16:53 am
content: Yes. The time constant of the decay (or the half-life-time) definitely need to be in the same order of magnitude than the period time of the wheel.If the decay time is too high, you can't reset bits.If it´s too low, you have little SNR for readout.I´d set the threshold for readout in a way that a visibly lighting dot is recognized by the photodiode. Afterwards I would try to find two critical speeds of the wheel:- V1: The minimum speed when an activated lighting bit just triggers the photodiode with its next revolution- V2: The maximum speed when an activated lighting bit just not triggers the photodiode after two revolutionsThe average (V1+V2)/2 should be a good starting speed for operation...

author: 3roomlab
author_rank: Frequent Contributor
timestamp: August 14, 2024, 06:55:02 am
content: acoustic delay line memory ?

author: wobbly
author_rank: Regular Contributor
timestamp: August 14, 2024, 06:46:28 pm
content: Not had time to do very much today, but I did get the 8-tooth gear made (see pic), which will make the maths a bit neater in the firmware.Ordered some matte-black paint too, which should arrive tomorrow.Maybe I'll have something worth photographing (videoing even?) by the weekend.By the way I keep forgetting to mention - the glow powder I'm using is this stuff:https://www.amazon.co.uk/dp/B0788NLQKZ?th=1It mixes beautifully with optically clear two-part Polyurethane epoxy resin and works best when in thin layers up to about 3mm thickness.

author: wobbly
author_rank: Regular Contributor
timestamp: August 14, 2024, 06:53:43 pm
content: @Phil1977, did you develop your multi-channel "Drum" memory version any further?

author: ebastler
author_rank: Super Contributor
timestamp: August 15, 2024, 11:08:02 am
content: Great to see this neat memory idea gaining traction! I can't resist a little nitpicking though:This isnot"RAM", as in Random Access Memory. A connected computer will not be able to access any "random" memory address at any time, but will have to wait until the right data word comes along on the drum or disk -- as was the case with all the serial memory architectures based on magnetic or capacitive drums, acoustic delay lines etc.When I got into computers in 1980, I thought the naming of memory types to be quite unlogical: ROM made sense for "read only memory", but why the heck was the writable version called "RAM"?! I guess it's a carry-over from the days of transitioning from delay lines and magnetic drums used as main memory, to ferrite cores which had the revolutionary capability of "random access"! (Well, the Williams/Kilburn tube could provide random access before, but did not gain traction in any commercial computer to my knowledge.)In the tradition of "magnetic drum memory", I would probably call this "optical drum (or disk) memory". The "delay" part is inherent in the drum-based design.

author: wobbly
author_rank: Regular Contributor
timestamp: August 15, 2024, 11:38:24 am
content: @ebastler: I am delighted by your nitpick. I knew someone would notice eventually!I think it's too late to change the name though.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 15, 2024, 12:05:33 pm
content: Just as a heads-up:What you see on the right is a cheap robot wheel with the tire removed and replaced by the phosphorescent tape. On the left is a standard blue 3mm-LED with a slot aperture and an eyepiece of a $2.99 telescope as a focusing lens. The LED is connected to a pulse generator with 3Hz and 10% PWM.The robot wheel runs at around 15-20rpm. Slower would be better but then its motor stalls. Next step is to replace the robot wheel by a larger 3d-printed wheel on a stepper motor for direct phase control.For the first run I´ll try a photodiode that´s exactly the same construction as the LED assembly. Probably I´ll set the detector at 180° position to the emitter. I´ll try to use an edge-detector that triggers the emitter LED with a fixed pulse width of around 250ms.With the 180° detector position I waste half of the storage capacity but I don't have to mess with direct optical feedback from the emitter to the detector.

author: wobbly
author_rank: Regular Contributor
timestamp: August 15, 2024, 07:25:51 pm
content: @Phil1977, thanks for the PMI do like the finer pitch that your glow tape allows, rather than the fixed pitch model that I'm using.I've just had an idea for a new device that might be useful in such projects... Imagine a very small plastic Hammond case (like this onehttps://www.newark.com/hammond/1551pbk/enclosure-pcb-box-abs-black/dp/53K7866). Inside is a UV LED, a suitable light sensor (I'm tending towards my favourite TSL235R) and a small chamber for aTEST SAMPLE!Put a sample of some random glow material in the chamber and put the lid on the box to make it light-tight. Then run some code on a microcontroller that energises the sample repeatedly over days/weeks and records the brightness over time. Basically acurve-tracerfor phosphorescent optical materials.I don't care if this already exists, I'm going to make one, because it sounds fun. Then we can begin the race to find the best phosphorescent glow material in the universe!Hmm, I guess my lack of inspiration issue has been solvedDon't worry, I'll finish the ODDRAM machine first, of course!

author: wobbly
author_rank: Regular Contributor
timestamp: August 15, 2024, 07:33:44 pm
content: Project progress update:Paint arrived, later than hoped, so I only had time to do the large gear and not the backboard just yet. See pic.Contrast is drastically better, which is great. In addition to painting it, I also made some repairs to a few of the glow "bits" because a few bubbles had crept in and left holes in the glow/epoxy mixture. So I poked in a bit of glow powder (as one might fix some busted drywall) and poured some fresh PU resin on top without mixing it in. And then topped-off all the rest of the bits with more PU. So now, all 40 bits have a nice "lens" of PU resin to help make the glow more uniform around the entire ring. Looks good to my eyes; judge for yourself and let me know what you think.

author: ebastler
author_rank: Super Contributor
timestamp: August 15, 2024, 07:42:09 pm
content: Quote from: Phil1977 on August 15, 2024, 12:05:33 pmDo you expect direct crosstalk from the emitter into the detector to be an actual problem? You could run them in a time-multiplexed, alternating scheme -- read the detector in the pauses between emitter pulses. That's as long as you don't saturate the detector to an extent where it needs a very long time to recover, which I would not expect to happen since your detector does not have to bethatsensitive.I would be tempted to share the same lens (eyepiece) between both, detector and emitter. If you place detector and emitter next to each other in the image plane, with the displacement in the direction of drum travel, the emitter can write slightly "downstream" from the detector position, hence hit the same spot on the drum when is lights up a short time after the detector has read a bit.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 15, 2024, 09:53:11 pm
content: The 180° setup is just the lowest hanging fruit. I expect it to work from the point I have found a sensitive enough photodiode.The feedback into the detector should theoretically be no problem with the rising edge detector and a fixed pulsewidth. Anyhow I expect I need to give the detector a certain dead time after a pulse was written.And for some idealogical reason I want to do the logic with discrete electronics. I do not want to control a superslow 32bit memory with a comparatively superfast megabyte mcu.But when the 180° readout is working then the combined read/write unit would be nice. Just take it slowly, it´s a project without any timeline

author: wobbly
author_rank: Regular Contributor
timestamp: August 16, 2024, 05:08:17 pm
content: Hi all. See pics.I've painted most of the mechanical bits matte black to minimise reflections that might be problematic or at the least annoying.The 8-tooth drive cog meshes nicely with the ring gear. Anyone who wants to make their own plywood gears - go buy a scrollsaw, they are great.I've re-assembled it all for now minus the Hall sensor, because I'm having a hard time deciding where I want to install it. I'll deal with that later.For now I'll just manually turn the driving gear to a sensible start position before powering on the electronics.The picture called "Sensor view" shows the contrast between a dimly activated bit and a brightly glowing one -- and this photo was taken in broad daylight, which is encouraging.Next up: extending the wiring between the sensors and the PCB and wiring that into the microcontroller.

author: wobbly
author_rank: Regular Contributor
timestamp: August 17, 2024, 03:18:43 pm
content: Hardware is done. I've attached a wiring pinout for reference, and a picture of the magnet, which is a small neodymium axially magnetised one simply pressed into a 5mm hole in the plywood. The Hall sensor is directly behind the magnet on the backboard and orientated to suit the magnet's poles.The Hall sensor works very well and has a very narrow "focus" for want of a better word. I can turn the stepper one step and it'll trigger the sensor, then turn it back one step and it returns to it's previous state. The distance between the magnet and the Hall sensor is probably 3mm at the most and there's no other ferrous material nearby to interfere.So now all that remains is firmware!I'll use an interrupt to respond to the falling edge of the Hall sensor, and set a flag to indicate that the next time the stepper reaches a known bit position, that'll be bit 0 in the ring.The ATTiny2313 has one 16-bit counter and one 8-bit counter I'll use the TSL235R light sensor's frequency output to provide the clock signal for the 16-bit counter. This means I'll need to gate that counter to provide sensible readings. I can use the 8-bit counter to do that. When I'm not reading the light sensor (e.g. when I'm moving the stepper motor) I can use the 8-bit counter to provide the stepping waveform for the stepper motor.I want to use as much of the ATTiny's hardware features as possible because it reduces the amount of software needed. I like that because I think the software is kind of a distraction from what I'm trying to demonstrate -- that Phosphor can be used as a memory medium.I like Phil1977's approach of using discrete components in his "drum memory" concept, because it is much more like how the original delay line memories were developed back in the middle of the last century. I'm just trying to make something that looks cool, so I'm being lazy and using a micro!

author: Kleinstein
author_rank: Super Contributor
timestamp: August 17, 2024, 06:33:11 pm
content: A good way to measure the frequency (specially if relatively low, like < 10 kHz) is to use the ICP function of the 16 bit timer. This way one can make a reciprocal counter, measureing the time of the transistions and get good resolution already fast. It may still be overkill. The other PWM channel could still be used as a delay timer. For a higher frequency direct counting may be easier, but it could be tricky for the low frequency for the dark case.

author: wobbly
author_rank: Regular Contributor
timestamp: August 17, 2024, 07:41:59 pm
content: @Kleinstein, I have no doubt that you are right. I'm just not very experienced in using AVR Timer/Counters for frequency measurement.I just like the simplicity of using the output of the TSL235R sensor as a clock source. The main software loop of this project will be 99.9% idle, so I don't really mind if there's a bit of slack.

author: wobbly
author_rank: Regular Contributor
timestamp: August 18, 2024, 02:29:56 pm
content: Progress:Start up process is complete. The ring turns quickly until the magnet is detected and then stops dead. Then I advance the motor by a hard-coded number of steps to compensate for the discrepancy between the magnet's alignment with the bit positions. After that, bit 0 is correctly aligned with the UV LED.Also I think that the LED I'm using isn't bright enough for this task. I'm running it at it's maximum safe rating of 30 mA (from 5 V). So I will have a look around for something a bit more potent. Perhaps a laser?Would a laser be any better than a normal LED when shooting point-blank? I don't know. At least it's an excuse to buy lasers, so that's fine.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 18, 2024, 02:53:25 pm
content: Quote from: wobbly on August 18, 2024, 02:29:56 pmA laser would for sure be easy to focus onto the active bit - but regarding it´s power a usual LED should be more than enough.In my setup I waste probable 90% of the LED power by a slit aperture. And another 90% by the PWM I have used. And I just used a clear 3mm-LED at 10mA. Anyhow, even at usual indoor daylight the activated phosphorescent dye has been clearly visible.Do you use any lens with your LED? Even if you have no aperture you would strongly increase the irradiance by any focusing lens. Or just use a laser ;-)

author: wobbly
author_rank: Regular Contributor
timestamp: August 18, 2024, 05:41:11 pm
content: Quote from: Phil1977 on August 18, 2024, 02:53:25 pmNothing other than the LED's own clear package.This is a roughly to-scale image of the LED in relation to the bits...The orange part is a short bit of brass tube which is a snug fit for the LED. I reckon that at least 75% of the LED's output reaches the phosphor dots, as a conservative estimate. Might be as much as 90%.Perhaps I can find a COB LED with a bit more grunt.

author: wobbly
author_rank: Regular Contributor
timestamp: August 18, 2024, 06:04:03 pm
content: I now have the TSL235R hooked up and Timer1 taking it's external clock from it. Works great, and I can get usable readings from it.As a test just now, I configured the sensor to be read for 1 second at each bit position. And after each reading I'm sending the data out via the USART to my PC. I then charged up a few of the bits with a flashlight and allowed them to move past the sensor...Code:Light:9Light:6Light:7Light:10Light:14Light:20Light:14Light:15Light:11Light:10Light:175Light:209 <------ :) Brightest Bit passing the sensor!Light:128Light:94Light:47Light:9Light:7Light:7Light:8Light:7Light:6Light:6Light:6I'm quite pleased with this result. The dynamic range isn't great (it's a 16-bit timer) but I think it is usable. But this will depend on me finding a more powerful UV LED. I was charging the bits from the "wrong" side using my flashlight, which does reduce the effectiveness a bit but as a first test I think this is quite encouraging.

author: Kleinstein
author_rank: Super Contributor
timestamp: August 18, 2024, 07:41:31 pm
content: The resolution is not very high, but should still be sufficient. One is somewhat limited in the speed to still get at least a little reading for the dark dots.An interesting test would be so look at the decay. So look at 1 originally bright dot for a longer time and record the decay over something like 1 or 5 minutes. The speed will tell how fast or slow one would have to run the thing. So maybe more time to write and one would also know the time available for the frequency measurement.Brass is pretty absorbing in the blue / UV range, but this should not be that bad. Ideally the LED would have a relatively small opening angle to get more of the light actually to the target. Simply less distance and a 3 mm LED could also be an idea.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 19, 2024, 01:45:03 pm
content: Another small step towards the optical memory revolution:https://youtu.be/LTuTPwY1iZcA non-collimated photodiode (BPW34) is already creating enough feedback for the 180°-assembly to periodically refresh the memory content.The circuit between the Photodiode and the LED is currently just a 2-stage OpAmp-Amplifier with AC coupling and small hysteresis.Next step will be to built a collimator for the photodiode, then - hopefully - the storage density will rise and more complex patterns may be feasible.

author: wobbly
author_rank: Regular Contributor
timestamp: August 19, 2024, 05:00:20 pm
content: @Phil1977, your setup is looking very promising. It will be interesting to know what kind of bit-density you can squeeze onto that wheel.I'm now wondering about how the "charging" light should best be applied. I think that a high intensity light for a short amount of time, is greatly preferable to a lower intensity light for a longer time. But there is a latency to the charging process! When the LED turns on it takes a while for the phosphor to respond and this is actually visible - the LED goes to full brightness instantly, but the glow from the phosphor takes a little time to increase. And then the same happens in reverse, when the LED goes off, the phosphor's natural decay is very obvious.Following is a graph of my light sensor's output frequency (y-axis) over time (seconds, x-axis). The phosphor was charged up for 1 second from a 30 mA 395 nm LED basically at point blank, and aimed at the same side of the phosphor that faces the sensor...This tells me a few things:My LED sucks. So I've ordered some hopefully more capable COB LEDs (3 Watts allegedly)The TSL235R is an awesome sensor. Apart from it being unobtainable these days.I'm going to have to complete a full ring revolution in something like 15 seconds. Including sensing and refreshing the bits.The half-life isn't constant! It increases as it gets dimmer. Hmm.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 19, 2024, 05:20:58 pm
content: Thanks for naming your sensor - I needed quite some tries to find something appropriate.But then the BPW34 together with a rather bad opamp proofed as more than sensitive enough.The shown circuitry is only the very first try. AC-coupling is not optimized in any way yet, it was just the first breadboard setup and I was quite glad it did something.D1 is the photodiode, D3 is the "writing" LED. LM324 was just used because it was laying around and fast opamps sometimes do stupid things on breadboards. The feedback loop of U1A is a little strange (filter cap outside of the loop) because it significantly reduced mains hum on this stages output.For the next circuitry I want to superimpose a clock sine with the photodiode so that the memory content gets phase stable.

author: Kleinstein
author_rank: Super Contributor
timestamp: August 19, 2024, 06:45:32 pm
content: Getting a non exponential decay and thus a half life that gets longer over time is not that surprising. One can naturally expect areas that are faster and slower, so a mix of different half lifes. After some time less of the fast part and more of the slow part is present.I would not expect this to be an effect of the intensity, more a time effect. So first fast and later slow.The time constant looks good. Form that side one should be able to use something like 4 seconds to 30 seconds for a cycle / rotation.The intensity may not be greate, but looks like it is enough to measure, at least for the time used in the test. Faster writing may want more intensity.For the charging / writing with the LED there should be little difference between short time with high intensity or longer with less intensity. It should be the energy delivered that matters.For the TIA circuit the capacitor C1 is odd: one usually tries to keep that capacitance at a minimum. In simulation the capacitance is usually there to include parasitics and the capacity of the photodiode. It is more that one want a little capacitance in parallel to R2 to better tollerate capacitance of the detector.

author: wobbly
author_rank: Regular Contributor
timestamp: August 19, 2024, 06:55:44 pm
content: Quote from: Kleinstein on August 19, 2024, 06:45:32 pmFor my (not ideal) hardware I think that 20 to 30 seconds per revolution would be a good balance between robust operation and being something visually appealing to look at.If I can really hammer the light into the phosphor quickly by using a high intensity pulse of strong UV, then I can also use a shorter sensor sampling time and thus increase the speed of the ring's rotation.Another worry is that the phosphor degrades with repeated charge / discharge cycles and has a limited lifetime. That would be a showstopper.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 19, 2024, 08:17:44 pm
content: Quote from: wobbly on August 19, 2024, 06:55:44 pmThese phosphors are usually meant to be daylight-stable, and 12h of daylight will be many thousand hours of data storage...Quote from: Kleinstein on August 19, 2024, 06:45:32 pmYep, C1 should get into the feedback loop. I´ll try it the next run. Thanks!I also have a OPT-101 photodiode with integrated TIA in my box with parts to play with. I once scavenged it because it features an opamp in a very fancy crystal clear housing. Maybe it´s a good opportunity to use it...

author: wobbly
author_rank: Regular Contributor
timestamp: August 23, 2024, 07:05:43 pm
content: I'm sorry I've not been posting lately. Shoulder pain problems continue :'( , and I'm waiting for more powerful LEDs to arrive hopefully in the next day or two.

author: jpanhalt
author_rank: Super Contributor
timestamp: August 23, 2024, 07:16:02 pm
content: That's OK. I love the updates. Just don't delay more that 7 days as that makes one weak.

author: wobbly
author_rank: Regular Contributor
timestamp: August 27, 2024, 06:21:17 pm
content: Shoulder works again. If anyone tells you to look after your "rotator cuffs" and avoid standing up before the bus has come to a halt... LISTEN TO THEM! Thank me later. Torn muscle, inflammation and trapped nerve. Not fun.Anyway! Back to the matter at hand.I found some highly dubious UV COB LEDs on the interwebs:395 nm3 Watts totalVf = 3.5 V80-110 mW of UV spectral emission power800 mASurprisingly enough I think this data checks out. I'm running it for very short periods (1 second and then 1 minute turned off).Driving it from the main 12V supply through a very overkill NFET (23A, 30V) and a 10, 3W resistor (hence the low duty cycle), it does a good job of "charging" up my phosphor material.I've got some more mechanical things to do now so I can mount the new shaped LEDs into the machine (the LEDs are these annoyingly shaped things mounted on hexagonal aluminium PCBs). So tiresome.So, I think I have an emitter strong enough to make this a possibly viable system!

author: Kleinstein
author_rank: Super Contributor
timestamp: August 27, 2024, 06:42:08 pm
content: A power full LED can help, but no real need to got that extreme. One should have something like 1/2 the time for a bit (e.g. on the order of 0.5 seconds), and expect a duty cycle of up to 50%.One may be able so save a bit on the power, if the bit is not overwritten from dark to lit, but is just refeshing a lit bit.

author: iMo
author_rank: Super Contributor
timestamp: August 28, 2024, 08:50:26 am
content: FYI - these guys are discussing the QDots as the memory elements.. In case you would need a ROM as the next step

author: wobbly
author_rank: Regular Contributor
timestamp: August 28, 2024, 06:43:45 pm
content: Video time!https://www.youtube.com/shorts/8GnpiZxX6PIIt's only 33 seconds long though so blink and you'll miss it.This is part of the early debugging process. I'm still working out the timings needed and light thresholds I can get away with. Changing one changes all the others, so it's a combinatorics nightmare!In the video you'll see the ring make 3 full rotations. Firstly, it does a very fast seek to locate the magnet (ends up at 12 o'clock position). Second, it does a rotation to write a sequence of date bits to the ring.Then lastly, it just runs around the ring again doing nothing, which demonstrates that the phosphor can store a visible amount of light for at least 1 full revolution without being refreshed. Assuming I can get the threshold right.This thing is going to be hard to tune for long periods of data retention.This video wasn't made in a dark room though, so the real contrast and noise will be better in later tests when I've had time to set up a darkened work area.Encouraging, I think?Also, there is now a new problem! Notice how that group of 3 bits is noticeably brighter than the rest? That's due to light bleeding across between adjacent bits. Inter-bit noise if you like. I can mitigate this a bit by pushing the emitter tube further through the hole in the plywood so it almost grazes the back of the ring gear. That's about all I can do though.So plenty of limitations to play with!

author: Kleinstein
author_rank: Super Contributor
timestamp: August 28, 2024, 10:00:08 pm
content: Looks nice, though not yet with a refresh. The decay also looks slow and the bits may be somewhat visible even after 2 turns. The slow decay can limit the speed as one has to wait long enough for the dots to get dark again. The point to tell apart is a bit just written a bright after a longer dark and a bit that gets dark after beeing bright for multiple turns.I don't think there is much leakage to neighboring dots. At least the single dots look like there is not much light in the dark ones to both sides.

author: robzy
author_rank: Regular Contributor
timestamp: August 29, 2024, 04:10:20 am
content: Quote from: Kleinstein on August 28, 2024, 10:00:08 pmDoes that matter? You choose what threshold brightness you want to use.I've browsed through the thread, but can't find the answer - what's the solution to writing a 0?It seems like there's no other option than to "wait for it to dim enough", which will skyrocket the latency.One work around for this is to use two wheels and, essentially, store the bits differentially. Or use one wheel with two circles of BBs.: Or a double-sided wheel?! With BBs on both sides. I don't know why, but that gets me excited.

author: wobbly
author_rank: Regular Contributor
timestamp: August 29, 2024, 05:25:27 am
content: Robzy, see replies #2 & #3 on page 1, regarding writing zeroes. You're right. But I'm not going to make any new hardware for this experiment, it'll either work or it won't. It's just a bit of fun really.I think Phil1977's drum-based version has better scope for bit integrity and reliability than my ring gear one.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 29, 2024, 05:57:47 am
content: Quote from: wobbly on August 29, 2024, 05:25:27 amBut yours is visually much more attractive!I´m just hanging at mounting the drum to a stepper motor. So far I used a gear motor that´s running slightly above it´s stall speed. Hence the angular velocity is much to unstable to do use any bitwise modulation.I´m having high hopes that after switching to a stepper motor with a step-by-step drum motion I can get it stable. But as I said I'll try to avoid the MCU in my case and this also means I can not just take a Trinamic motor controllerI have to build a 2 phase oscillator to control e.g. a L298N H-bridge IC. Has anyone a simple idea for such an oscillator?

author: Kleinstein
author_rank: Super Contributor
timestamp: August 29, 2024, 07:24:36 am
content: An old style 2 phase oscillator could be a phase shift oscillator, with 1 inverter and than likely 2 x 2 RC elements to get around 90 deg. phase shift each.A more digital solution would use the 2 D flip-flops from a 74HC74 or similar as a 2 step shift register loop to divide a seprate produced clock by 4.So clock to both flip flops and Q1 to D2 and /Q2 to D1 for the loop.A differential mode would make it easier to write a 0. With enough waiting time so that the intensity decayed enough within 1 turn, just waiting should be enough. In this case the signal could be improved if the write intensity also depends on the previous state, not just the new written bit. So newly writing a bright bit to a cell that was dark before would want a bit more (e.g. 1.5x) UV light than just a refresh.From the video it look like there are like 2 components in the decay, a rather fast part and a rather slow one. Chances are the system could also would a bit faster, mainly using the fast part and alowing the slow part as background. One may have to play with the speed to see when the SNR is good enough.My guess it could be a bit better with something like 2 x the current speed.

author: Phil1977
author_rank: Frequent Contributor
timestamp: August 29, 2024, 08:10:19 am
content: Thank you! The digital solution sounds good because it´s not so frequency dependent. A NE555 + 74HC74 should be able to clock everything. I can feed the states of the flipflops into an AND-gate to get an enable-signal for the LED to guarantee blanks between the bits. I probably start with 75% blanking and go down to 50% if its stable.Maybe the drum version allows to use the fast decay component if the drum makes a few rotations per second.I´ll keep you updated!

author: wobbly
author_rank: Regular Contributor
timestamp: August 29, 2024, 08:46:37 pm
content: I've been struggling with a very severe ideological and existential dilemma.The light sensor (e.g. "Data Read Head") is two physical bits BEFORE the "refresh" LED ("Data Write Head"), there is a gap between them that cannot be accounted for in the mechanical apparatus. Both heads are behind the backboard and right next to each other, and cannot get closer without serious mechanical problems!Up to now I have figured I would just use the microcontroller to store the two bits of rolling FIFO storage needed to maintain this data between reading the state and refreshing it. Having a microcontroller at all is bad enough to start with, let alone using it for all the easy stuff! I now realise that this is morally and ethically abhorrent.So, I have decided to implement this 2-bit FIFO in hardware. I'm lazy though so it's going to be a 74HC74 Dual D-FlipFlop chip dangling off the microcontroller.Nice thing is that I can put a small green LED on each of the two FIFO bits to visualise the two problematic bits that are being handled by the FIFO.I just want this project to be over now. Such a pain in the bum!

author: wobbly
author_rank: Regular Contributor
timestamp: August 30, 2024, 04:19:40 pm
content: I've wired in the D-FlipFlop (SN74HC74) to handle the two philosophically contentious data bits as mentioned in my previous post.I feel better about that now. I'm pretty near the end now so I'll post the rough schematic below. Boring stuff omitted like the 5V regulation and fuses etc.Also a picture of the board after the latest updates. It shows the 74HC74, which acts as the 2-bit FIFO and shows it's internal states by way of the two red LEDS. All that's left is software and faffing around with light intensity thresholds. Hopefully this project will be finished by the end of Sunday.

author: wobbly
author_rank: Regular Contributor
timestamp: August 31, 2024, 04:27:12 pm
content: A bit of progress! I've been playing around with the bit-refreshing method today. First attempt is a bit janky but it does have some potential to work.I constructed a light-proof box that fits over the machine and does a pretty good job of cutting out external light sources.I've used my old camera to take a video through the front of the box (photo of the setup attached).For this test I'm writing "100010001" to the first 9 bits in the ring. Then I put the machine into a read and refresh mode, where it endlessly measures each bit and refreshes it's state. Unfortunately, the difference in brightness between a 1 and a 0 is way down in the 5 - 12 range. This is a major issue because the difference between any two adjacent 1 bits can be as wide as 30! This is due to the inconsistencies in the way each bit was created (by hand-mixing each one out of polyurethane resin and phosphor glow-powder).The video here shows 3 revolutions of the ring, and you can see the migration of the bits clearly. Near the end of the video we even get an erroneous double-bit!I think the bits are too close together and the phosphor isn't optimal. And a dozen other problems.The FIFO works nicely though, which means that the microcontroller has absolutely no knowledge of what data is on the ODDRAM ring. This makes me happy for some reason.I think that there are few ways to improve this project without completely rebuilding it from scratch. I'm not going to do that. I think this proves that data CAN be stored on luminous phosphor for many seconds. It's just hard to do without serious R&D effort.

author: wobbly
author_rank: Regular Contributor
timestamp: August 31, 2024, 04:38:24 pm
content: D'oh! The migrating bits issue was actually a firmware screwup. I've fixed that now, but I'm still having problems with the phosphor being too inconsistent from one bit to the next.UPDATE: I've got all three 1 bits refreshing properly now. The threshold for a 1 bit is now 8 counts from a 16-bit register. That is deeply annoying. Looks great, like you imagine it should. Just 3 green dots spinning around and around for all time. SWEET!This picture was taken several minutes after the latest test was started. There is no sign of instability so far (12 minutes and counting!!)...My phone's camera is weirdly sensitive to the phosphor even when it's dim. My eye has a hard time seeing the dark bits, but the bright ones really are bright!

author: wobbly
author_rank: Regular Contributor
timestamp: August 31, 2024, 07:32:51 pm
content: I had to wait a while for the phosphor to darken to make a new video...Please note that the "charging" LED is on the opposite side of the phosphor with respect to the camera view. You will notice that the first bit is visibly dimmer than the others, but it still triggers the sensor for a positive refresh. This is because the phosphor material is rather dense and the UV light doesn't penetrate very far into the bit material. The sensor is on the far side also. This means that the sensor has a much brighter view of the bits than my camera does in this video!This is so much fun!!!

author: ebastler
author_rank: Super Contributor
timestamp: September 02, 2024, 06:25:36 pm
content: That looks very cool indeed!But compared to the visually observed decay time of the phosphor, it seems like the rotation should be much faster? I would have expected a rotation period of approximately the delay half-life, maybe even faster.That way, you would still have plenty of signal left after one full rotation -- and, more importantly, you would have another significant decay after thenextfull rotation, in case you want to "write" a zero (dark spot) by not re-exciting it. I assume that this would help with the narrow margin which you were concerned about two posts above.

author: wobbly
author_rank: Regular Contributor
timestamp: September 02, 2024, 07:24:17 pm
content: Quote from: ebastler on September 02, 2024, 06:25:36 pmThe problem here might be due to the lack of sensitivity of my light sensor. Since its output is a variable frequency, It's not something I can amplify in a linear manner. I can't give it a gain of 40 dB and run the gear faster for instance.Another factor is that I cannot energise the UV LED at the same time that a bit brightness measurement is taking place. The LED's output would overwhelm the sensor and ruin everything.Thirdly, ideally, the measurement time and the energise time are equal - this means that 1 bits and 0 bits take the same amount of time to be "processed" by the refreshing system. Because the sensor is not very sensitive to this spectrum, the measurement time must be long (200 milliseconds in the above video). And for the same reason the energise time must also be as long as possible (also 200 ms).If I go any faster I have to either make the bits dimmer or spend less time measuring them. If I had used an analog sensor instead followed by a bunch of gain then I think you are right, the ring could go much faster, probably 10x perhaps.But this was never really about speed. It's just a proof of concept ultimately. I wasn't sure if it was feasible, and now I believe that it is.Alas it's not remotely practical in any conceivable way. But it looks pretty

author: wobbly
author_rank: Regular Contributor
timestamp: September 02, 2024, 07:33:03 pm
content: I'm not sure if it's worth going much further with this project. There are several problems with the implementation of the mechanical aspects that would requirea lotof effort to rectify. I'm ready to move on to new projects (not that I can think of any).Unless anyone can think of any brainwave to improve this, I think I'll park it for a while and maybe revisit at a later date.Many thanks to all of you who gave your advice and insights to this interesting project. I've learned a lot in the process.Cheers.