Nothing like the Niximatrix for lighting up a whole room in lovely neon! Well, apart from Dalibor's H tube installation of course, but that's in a different league to everything :)
Yes, if people have the interest (and the tubes and sockets!), I should have the PCBs and components for at least a couple of Niximatrix kits without getting into a major reorder. Don't think I've got any of the acrylic front and back panels lying around, but that should just be a matter of getting some lasered up if needed. Jon. On Tuesday, January 9, 2024 at 7:20:17 PM UTC Nicholas Stock wrote: > The Niximatrix is a sight to behold!! I must dig mine out....... Do you > have any more kits Jon? > > Nick > > On Tue, Jan 9, 2024 at 12:55 AM Jon <deka...@nomotron.com> wrote: > >> >For the hardware I was thinking that one of the 595's would connect to >> low sided drivers (MPSA42 etc) to ground the required cathodes whilst the >> other 595 would connect to high sided drivers (MPSA42+MPSA92 etc) to >> connect the >desired anode to the HV supply >> >> Yes, that approach works really well. See this clock from a few years >> back: https://youtu.be/4FnxWsp58EM >> >> Each six tube row is a 2 x 3 multiplex controlled by a pair of 595s >> driving discrete transistor high-side drivers for the anodes, low side >> drivers for the decimal points and a pair of Russian K155ID1 (near >> equivalents of the 141) to decode and low side drive the digits. The >> K155ID1 route was chosen instead of a regular logic decoder and discrete >> low side drivers to save board space without getting into lots of fiddly >> SMD stuff. And then each of the seven rows simply have their pairs of 595s >> hooked up to make a 14 device total daisychain that controls the whole >> display. There's a single PIC18 running the show which bit blasts display >> refreshes down the daisychain as well as managing USB comms, talking to a >> DS3232 RTC - plenty of compute time and power to do that. The nice thing is >> that this approach reduces all the display composition and management to >> software - multiplexing, cross-fading, all the funky display animations >> shown in the video; it's all just a matter of figuring out what bits to set >> when in the 144 bit output stream. Took me right back to my programming >> roots writing for bit-mapped displays on 8 bit micros in the early 80s! :) >> >> Jon. >> >> >> On Tuesday, January 9, 2024 at 5:03:52 AM UTC Richard Scales wrote: >> >>> @ David - that is an interesting idea - I did that already in another >>> design where I wanted to reduce the workload on an ESP8266 so I used a >>> Teensy running a state machine based piece of code to do the heavy lifting >>> - the ESP8266 just fed data to the Teensy over a serial connection - I kid >>> you not - it works really well - though that is all running a lot slower >>> than what I need for this multiplexed display project. >>> I am actually hoping to do it all on ESP8266 this time round with a >>> couple of 595's driven via SPI transfers and some state-machine based code >>> which manages the display. >>> >>> The next part of my planning is to gain the understanding of what delays >>> are required and where. >>> >>> I am broadly assuming that I need to do things in the following order: >>> >>> { >>> Set the cathodes for the number to be displayed >>> Delay before turning on anode >>> Set the desired anode on >>> Wait for the desired 'anode on' time >>> Set the anode off >>> Wait for the desired 'anode off ' time >>> Increment the current anode number (reset to 0 if we got past the max) >>> } >>> >>> In this way, the anode on and off times can be set - thus controlling >>> fading etc >>> >>> My next question is - do I need to wait at all after setting the >>> cathodes up and before turning the required anode on? >>> >>> For the hardware I was thinking that one of the 595's would connect to >>> low sided drivers (MPSA42 etc) to ground the required cathodes whilst the >>> other 595 would connect to high sided drivers (MPSA42+MPSA92 etc) to >>> connect the desired anode to the HV supply. >>> >>> I was then thinking that all anodes and cathodes would connect to >>> something like 80V via a suitable resistance - as per the Bally schematic >>> for driving multiplexed panaplex displays in pinball machines. >>> >>> As detailed here: bally_as2518_15_6digit.pdf (pinitech.com) >>> <https://www.pinitech.com/retrofit/schematics/bally_as2518_15_6digit.pdf> >>> >>> Am I anywhere near the right track on any of this? >>> >>> - Richard >>> >>> >>> On Friday 3 November 2023 at 12:12:03 UTC David Pye wrote: >>> >>>> Hi, >>>> >>>> Next time I do a clock, I am going to separate my hw into 2: >>>> >>>> A cheap ARM based MCU using SPI/DMA to do multiplexing and dimming, >>>> with enough IO to drive anodes and cathodes via individual transistors, >>>> with Comms to the main MCU via spi or i2c. >>>> >>>> An esp32 or esp8266 to provide application logic >>>> >>>> Using the ARM MCU and transistors solves the issues with the HV driver >>>> ICs needing 9v and both the STM32 and the esp8266 can communicate with 3v3 >>>> signal levels and will be cheaper albeit with higher component count. >>>> >>>> David >>>> >>>> On Fri, 3 Nov 2023, 11:15 Mike Mitchell, <mmit...@gmail.com> wrote: >>>> >>>>> That's basically what I'm doing for my simple case. The upkeep work >>>>> is done after tubes are energized, where I have significantly more time >>>>> before the next event. The off time is only 200us so I don't do anything >>>>> during the off time. With the fast processors of today you could do >>>>> "quick" things in the off time, but any complex computation I'd put in >>>>> the >>>>> longer on time. I'm using the FastLED module to drive a short string of >>>>> LEDs during my "DISP_EVEN" time, but calculate what to put into the LEDs >>>>> in >>>>> the "DISP_ODD" time. >>>>> >>>>> On Friday, November 3, 2023 at 12:43:40 AM UTC-4 Richard Scales wrote: >>>>> >>>>>> @Mike >>>>>> So, I have been getting my head around the whole state-machine >>>>>> concept. I have one I did before - curiously also running on a Teensy >>>>>> but >>>>>> that was because I was worried about speed (I had no idea!). >>>>>> Regardless. >>>>>> >>>>>> Here is what I think my state-machine might look like: >>>>>> >>>>>> Set State to 'Turn Off Displays' >>>>>> >>>>>> :Main program loop >>>>>> If state = 'Turn off Displays' then turn off all the anodes and >>>>>> change state to 'Delay before turn on' >>>>>> >>>>>> //This state exists to allow the injection of any required delay >>>>>> between display of each digit / group of digits >>>>>> if state = 'Delay before turn on' then if there there has been >>>>>> sufficient delay, change state to 'Turn on desired display' >>>>>> >>>>>> //This state works out which cathodes and anodes to set and turns >>>>>> them on >>>>>> if state = 'Turn on desired display' then set the required cathodes >>>>>> and anodes and turn them on and change state to 'Display is on' >>>>>> >>>>>> //This state works out whether the display has been on long enough >>>>>> if state = 'Display is on' then has it been on long enough? If so, >>>>>> change state to 'Turn off Displays' >>>>>> >>>>>> >>>>>> Rest of clock code goes here - and by that I mean the business of >>>>>> working out what to display be it time, date, temp, pressure etc. >>>>>> Obviously everything must be non-blocking so if I want to do fancy >>>>>> things like scrolling messages then I assume that I will need to >>>>>> introduce >>>>>> more 'states' to control all that >>>>>> >>>>>> :End of main program loop >>>>>> >>>>>> I think this differs from yours in as much as I have lumped all the >>>>>> 'rest of clock code' into one place on the basis that it should not be >>>>>> blocking anything and execute quickly. >>>>>> >>>>>> Is this at all wise? >>>>>> >>>>>> - Richard >>>>>> >>>>>> >>>>>> On Thursday, 2 November 2023 at 13:32:57 UTC Richard Scales wrote: >>>>>> >>>>>>> @Mike, many thanks. >>>>>>> >>>>>>> I'll work through that. >>>>>>> >>>>>>> - Richard >>>>>>> >>>>>>> >>>>>>> On Thursday, 2 November 2023 at 12:20:53 UTC Mike Mitchell wrote: >>>>>>> >>>>>>>> My most recent Nixie project uses ZM1032 tubes. They are a 9-pin >>>>>>>> tube, with five cathode pins and two anodes. I'm using direct-drive >>>>>>>> on all >>>>>>>> the cathodes, but skimp on the tens-of-hours digit where I only drive >>>>>>>> three >>>>>>>> cathodes instead of all five. I'm using four SN75468 darlington >>>>>>>> arrays to >>>>>>>> drive the cathodes and two opto-isolators to drive the anodes, >>>>>>>> multiplexing >>>>>>>> the anodes as all evens and all odds. >>>>>>>> I'm using a Teensy 4.1 processor to control everything, though I >>>>>>>> could have used an ESP32. I just wanted something with a lot of pins >>>>>>>> to >>>>>>>> handle driving the 28 cathodes. I'm not using a timing interrupt at >>>>>>>> all. >>>>>>>> In the main loop I use the built-in arduino "micros()" call to keep >>>>>>>> track >>>>>>>> of the time and compare it to the time of the next event. I use a >>>>>>>> state >>>>>>>> variable to keep track of what to do next. Here's some pseudo code: >>>>>>>> >>>>>>>> if (long)(micros() - timeNextDisp) >= 0 { >>>>>>>> switch(dispstate) { >>>>>>>> case DISP_DELAY_EVEN: >>>>>>>> timeNextDisp = micros() + 200 >>>>>>>> turn off all anodes, turn on all cathodes >>>>>>>> dispstate = DISP_EVEN >>>>>>>> break; >>>>>>>> case DISP_EVEN: >>>>>>>> timeNextDisp = micros() + disp_even_time >>>>>>>> turn off all cathodes >>>>>>>> turn on appropriate cathodes >>>>>>>> turn on even anode >>>>>>>> dispstate = DISP_DELAY_ODD >>>>>>>> /* split work between even/odd anodes */ >>>>>>>> read PIR >>>>>>>> read GPS >>>>>>>> break; >>>>>>>> case DISP_DELAY_ODD: >>>>>>>> timeNextDisp = micros() + 200 >>>>>>>> turn off all anodes, turn on all cathodes >>>>>>>> dispstate = DISP_EVEN >>>>>>>> break; >>>>>>>> case DISP_ODD: >>>>>>>> timeNextDisp = micros() + disp_odd_time >>>>>>>> turn off all cathodes >>>>>>>> turn on appropriate cathodes >>>>>>>> turn on odd anode >>>>>>>> dispstate = DISP_DELAY_EVEN >>>>>>>> /* split work between even/odd anodes */ >>>>>>>> read RTC >>>>>>>> read ADC >>>>>>>> calculate time display values >>>>>>>> break; >>>>>>>> } >>>>>>>> >>>>>>>> In my case the even digits are behind a screen electrode which >>>>>>>> blocks their light. I keep the even digits on for about twice as long >>>>>>>> as >>>>>>>> the odd digits to even out the brightness. I could have increased the >>>>>>>> even >>>>>>>> digit's current by reducing the even's anode resistor, but I decided >>>>>>>> to >>>>>>>> keep the current the same for even/odd and just increase the "on" >>>>>>>> time. My >>>>>>>> timings are roughly 10.1ms on for even, 0.2 ms for dead time, 5.1ms on >>>>>>>> for >>>>>>>> odd, 0.2 ms dead time, for 15.625 ms per cycle (64 times a second). >>>>>>>> A more typical multiplexing scheme could have two state variables, >>>>>>>> one selects either displaying a digit or discharging the tube, the >>>>>>>> other >>>>>>>> selects what tube to display. >>>>>>>> On Thursday, November 2, 2023 at 12:56:33 AM UTC-4 gregebert wrote: >>>>>>>> >>>>>>>>> Where it all leads to, I think, is that you no longer need to do >>>>>>>>> custom logic design, and you can skip the need for certain ICs such >>>>>>>>> as >>>>>>>>> realtime clocks, by switching to a software-based design, whether >>>>>>>>> it's >>>>>>>>> RasPi, Arduino, or any other embedded controller. >>>>>>>>> >>>>>>>>> It's gotten so "bad" that I rarely need to use a scope or logic >>>>>>>>> analyzer to hunt down a bug. Several years ago I literally logged-in >>>>>>>>> remotely to the RasPi controlling my NIMO clock and did quite a bit >>>>>>>>> of >>>>>>>>> software development and debug from thousands of miles away. >>>>>>>>> >>>>>>>>> Even now, I'm too lazy to get out of my chair, and go out into the >>>>>>>>> chilly garage to work on my Pi+FPGA board. Instead, I will write a >>>>>>>>> new test >>>>>>>>> and run/debug logic simulations rather than push new (untested) code >>>>>>>>> onto >>>>>>>>> the FPGA to see if it works. >>>>>>>>> >>>>>>>>> On Wednesday, November 1, 2023 at 9:23:25 PM UTC-7 Richard Scales >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Dual Core Processors - now my head really hurts - I mean - I love >>>>>>>>>> the idea but don't think my programming skills are ever going to >>>>>>>>>> stretch >>>>>>>>>> that far! >>>>>>>>>> Just woke early (03.13) - still full of Covid and had a wrestles >>>>>>>>>> thinking session on this during which I reminded myself of all the >>>>>>>>>> success >>>>>>>>>> that I have had with B-7971/ZM1350 Smart sockets - can you see where >>>>>>>>>> this >>>>>>>>>> might be going? >>>>>>>>>> - Richard >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Wednesday, 1 November 2023 at 16:29:32 UTC Craig Garnett wrote: >>>>>>>>>> >>>>>>>>>>> I'm using a Pico in my project, I run the tube driving routine >>>>>>>>>>> on one core and everything else on the rest so it doesn't suffer >>>>>>>>>>> from >>>>>>>>>>> slowdowns. >>>>>>>>>>> I've had to introduce a delay to slow it down to a 1ms refresh! >>>>>>>>>>> >>>>>>>>>>> Craig >>>>>>>>>>> On Wednesday, 1 November 2023 at 15:47:33 UTC gregebert wrote: >>>>>>>>>>> >>>>>>>>>>>> Multiplexing might not be possible in certain software >>>>>>>>>>>> environments. Several years ago I switched to Linux-based >>>>>>>>>>>> Raspberry Pi >>>>>>>>>>>> systems in my projects, and with the unpredictable overhead of >>>>>>>>>>>> Linux I cant >>>>>>>>>>>> rely on the CPU being available every millisecond to update the >>>>>>>>>>>> display. >>>>>>>>>>>> Instead of using Arduino or a custom OS, I add an FPGA or CPLD to >>>>>>>>>>>> handle >>>>>>>>>>>> the time- critical tasks. >>>>>>>>>>>> >>>>>>>>>>>> Just by coincidence, I'm putting the final touches on the >>>>>>>>>>>> software and RTL code for a board I recently had fabbed to do >>>>>>>>>>>> this. I know >>>>>>>>>>>> it's blasphemy, but the first project using this is LED-based...I >>>>>>>>>>>> got a >>>>>>>>>>>> bunch of large 8x8 red/green LED arrays for just under 1 USD >>>>>>>>>>>> apiece and the >>>>>>>>>>>> need a multiplexed driver. Dont worry, there are several nixie and >>>>>>>>>>>> nixie-ish projects in the pipeline that will use this board. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> [image: raspi_fpga.JPG] >>>>>>>>>>>> >>>>>>>>>>>> On Wednesday, November 1, 2023 at 8:19:48 AM UTC-7 Richard >>>>>>>>>>>> Scales wrote: >>>>>>>>>>>> >>>>>>>>>>>>> @Paul - I have no idea of the sense of scale and the relative >>>>>>>>>>>>> times taken. If I were to hang another HV driver on the chain >>>>>>>>>>>>> with >>>>>>>>>>>>> associated electronics to switch the HV, is there going to be >>>>>>>>>>>>> enough time >>>>>>>>>>>>> to do the following: >>>>>>>>>>>>> >>>>>>>>>>>>> Set the bits for the segments required- I add this step just >>>>>>>>>>>>> in case any settling time might be be required >>>>>>>>>>>>> Set the bits for the segments required and the anode(s) on >>>>>>>>>>>>> Wait for 400us (typical on time for the panaplex segments I >>>>>>>>>>>>> have in mind >>>>>>>>>>>>> Set the digits and anode(s) off again >>>>>>>>>>>>> Loop to the next set of digits >>>>>>>>>>>>> >>>>>>>>>>>>> With 12 individual anodes - there would be 12 passes - one for >>>>>>>>>>>>> each anode that needed to be switched on >>>>>>>>>>>>> If I used 2 drivers (using 3 x 16 bits for cathodes, I could >>>>>>>>>>>>> use bits from the remaining 16 to control the anodes. Thus there >>>>>>>>>>>>> would be >>>>>>>>>>>>> only 3 passes. >>>>>>>>>>>>> >>>>>>>>>>>>> Please stop me when I've gone off the scent (still mid-covid) >>>>>>>>>>>>> :-( >>>>>>>>>>>>> >>>>>>>>>>>>> In Summary: >>>>>>>>>>>>> Using the HV55xx for cathodes AND anodes >>>>>>>>>>>>> Given i want 12 characters: >>>>>>>>>>>>> with 1 driver I have 16 segments and 16 spare for the 12 >>>>>>>>>>>>> anodes - easy but slowest >>>>>>>>>>>>> with 2 drivers I have 3 lots of 16 segments and then group the >>>>>>>>>>>>> displays into lumps of 4 (12 characters/3) and still have 16 bits >>>>>>>>>>>>> to >>>>>>>>>>>>> control the anodes, of which there will now only be 3) >>>>>>>>>>>>> >>>>>>>>>>>>> Am I anywhere near close with the driver split and the >>>>>>>>>>>>> pseudocode for the ISR? >>>>>>>>>>>>> I was thinking that there should be some uS delays either >>>>>>>>>>>>> before and/or after lighting the segments >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - Richard >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Wednesday, 1 November 2023 at 15:01:20 UTC Richard Scales >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> @David - many thanks for that caution though there will not >>>>>>>>>>>>>> be (nor ever will there be!) any LEDS for this project! >>>>>>>>>>>>>> @Pauld - thank you - I had thought of that but I was >>>>>>>>>>>>>> endeavouring to keep the code inside the ISR to an absolute >>>>>>>>>>>>>> minimum so >>>>>>>>>>>>>> thought that it would be best handled outside of it and hence >>>>>>>>>>>>>> separate from >>>>>>>>>>>>>> the HV chain. Using SPI.Transfer to send 32, 64 or 96 bits - I >>>>>>>>>>>>>> guess it >>>>>>>>>>>>>> all happens fairly quickly! >>>>>>>>>>>>>> @Benoit - I will look at that - ESP32 - another bridge thus >>>>>>>>>>>>>> far uncrossed! >>>>>>>>>>>>>> - Richard >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Wednesday, 1 November 2023 at 14:54:53 UTC Benoit Tourret >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hello, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> if an ESP8266 is not enough powerful, the ESP32 will do the >>>>>>>>>>>>>>> job. >>>>>>>>>>>>>>> the ESP_WROVER can be a good platfom. >>>>>>>>>>>>>>> you should have a look to Mose's work on >>>>>>>>>>>>>>> https://neonixie.com/Z57XM6DV2/ >>>>>>>>>>>>>>> the code is a bit "strong" as it can be used both on an 6 >>>>>>>>>>>>>>> IV-9 clock and a more traditional 6 digits Z57, superb clocks, >>>>>>>>>>>>>>> all they >>>>>>>>>>>>>>> need is addressable LEDs for a more colorful background. and >>>>>>>>>>>>>>> deactivable. >>>>>>>>>>>>>>> the BH1750 luxmeter does a great job and is more sensible >>>>>>>>>>>>>>> than a standard photoresistor. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Le mercredi 1 novembre 2023 à 14:38:44 UTC+1, David Pye a >>>>>>>>>>>>>>> écrit : >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I offer you one caution with the ESP8266 boards - almost >>>>>>>>>>>>>>>> everything is implemented in the libraries in software rather >>>>>>>>>>>>>>>> than onchip >>>>>>>>>>>>>>>> hw. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> That means doing things like updating addressable LEDs can >>>>>>>>>>>>>>>> cause the multiplexing to glitch slightly because of the need >>>>>>>>>>>>>>>> to send LED >>>>>>>>>>>>>>>> data at strict timings. (Or, if you sacrifice led timings to >>>>>>>>>>>>>>>> run your >>>>>>>>>>>>>>>> multiplex interrupt routine, it can glitch the LEDs. ). >>>>>>>>>>>>>>>> Chips which have >>>>>>>>>>>>>>>> DMA/more complex peripherals might avoid this. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> You might get away with it with certain combinations of >>>>>>>>>>>>>>>> things but it was a bit of a pain for me. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> David >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Wed, 1 Nov 2023, 11:54 Richard Scales, < >>>>>>>>>>>>>>>> ric...@scalesweb.co.uk> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Many thanks Nick. >>>>>>>>>>>>>>>>> Unless anything else comes to light I think I will forge >>>>>>>>>>>>>>>>> ahead on that basis. I want to drive 15 segment panaplex >>>>>>>>>>>>>>>>> displays (16 >>>>>>>>>>>>>>>>> including the DP) so plan to use HV5530 or similar driver for >>>>>>>>>>>>>>>>> the segments, >>>>>>>>>>>>>>>>> probably two of them. Then the same MPSA42/MPSA92 driver >>>>>>>>>>>>>>>>> arrangement for >>>>>>>>>>>>>>>>> the HV though there are going to be 5 of those - I might be >>>>>>>>>>>>>>>>> running low on >>>>>>>>>>>>>>>>> pins it using a Wemos - I might consider a port expander for >>>>>>>>>>>>>>>>> the extra pins >>>>>>>>>>>>>>>>> needed - I need to check pins required - I think 4 for the HV >>>>>>>>>>>>>>>>> register >>>>>>>>>>>>>>>>> chain, 6 for the Anode switching (two drivers driving a 12 >>>>>>>>>>>>>>>>> digit device - >>>>>>>>>>>>>>>>> perhaps 5 for a 10 digit device) plus I want to read a PIR >>>>>>>>>>>>>>>>> and talk to a >>>>>>>>>>>>>>>>> BMP-280 sensor. Certainly a Wemos + port expander would do it >>>>>>>>>>>>>>>>> - might get >>>>>>>>>>>>>>>>> away with a Node MCU or similar. >>>>>>>>>>>>>>>>> OK, I just realised that I can use a single 32 bit driver >>>>>>>>>>>>>>>>> with two sets of 16 bits, one going to each bank of displays. >>>>>>>>>>>>>>>>> It still has the same pin requirements of the processor I >>>>>>>>>>>>>>>>> think. That will be a juggling excersise! >>>>>>>>>>>>>>>>> - Richard >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Wednesday, 1 November 2023 at 11:10:02 UTC Nick >>>>>>>>>>>>>>>>> Sargeant wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> It’s not difficult. My fumbling attempts at a Nixie clock >>>>>>>>>>>>>>>>>> some time ago used a 4:1 multiplex ratio, using four digits >>>>>>>>>>>>>>>>>> and only one >>>>>>>>>>>>>>>>>> decoder. I used the same MPSA42/MPSA92 driver as your >>>>>>>>>>>>>>>>>> example. My multiplex >>>>>>>>>>>>>>>>>> function was called at 100Hz, so each digit was refreshing >>>>>>>>>>>>>>>>>> at 25Hz. It >>>>>>>>>>>>>>>>>> doesn’t flicker, and (whoa!) it is working 15 years later. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> The only mod I had was when switching between digits, I >>>>>>>>>>>>>>>>>> turned the cathode drive off for a period of 20 >>>>>>>>>>>>>>>>>> microseconds, before >>>>>>>>>>>>>>>>>> selecting the correct anode and turning on the next digit. >>>>>>>>>>>>>>>>>> This helped >>>>>>>>>>>>>>>>>> prevent ghosting. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Wednesday, 1 November 2023 at 10:14:25 UTC Richard >>>>>>>>>>>>>>>>>> Scales wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Actually - I just looked through an example over at: >>>>>>>>>>>>>>>>>>> https://www.hackster.io/doug-domke/multiplexed-nixie-tube-clock-759ff5 >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> ... and it all seems fairly understandable, have I >>>>>>>>>>>>>>>>>>> overthought this? >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> - Richard >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On Wednesday, 1 November 2023 at 09:22:03 UTC Richard >>>>>>>>>>>>>>>>>>> Scales wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> The time has come when I need to get a handle the dark >>>>>>>>>>>>>>>>>>>> and mysterious art of multiplexing. >>>>>>>>>>>>>>>>>>>> I have an understanding of what needs to happen though >>>>>>>>>>>>>>>>>>>> am mostly at a loss of how to implement it. >>>>>>>>>>>>>>>>>>>> I am broadly assuming that I should be using some kind >>>>>>>>>>>>>>>>>>>> of interrupt routine to make the actual display work >>>>>>>>>>>>>>>>>>>> whilst the rest of the >>>>>>>>>>>>>>>>>>>> code gets on with the job of working out what to display >>>>>>>>>>>>>>>>>>>> and when to >>>>>>>>>>>>>>>>>>>> display it. >>>>>>>>>>>>>>>>>>>> Is it even going to be feasible to have some kind of >>>>>>>>>>>>>>>>>>>> interrupt routine that decides what digits to light - set >>>>>>>>>>>>>>>>>>>> all the bits and >>>>>>>>>>>>>>>>>>>> then sets the right anode(s) on and then off again giving >>>>>>>>>>>>>>>>>>>> enough time for >>>>>>>>>>>>>>>>>>>> the persistence of vision to produce a non flickering >>>>>>>>>>>>>>>>>>>> display when using >>>>>>>>>>>>>>>>>>>> something like a wemos D1? >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> I am thinking that the interrupt routine needs to >>>>>>>>>>>>>>>>>>>> increment which digit(s) is/are being illuminated - set up >>>>>>>>>>>>>>>>>>>> the right bit >>>>>>>>>>>>>>>>>>>> pattern for the cathodes and turn on the relevant anode(s) >>>>>>>>>>>>>>>>>>>> - wait a little >>>>>>>>>>>>>>>>>>>> and then turn them off again. >>>>>>>>>>>>>>>>>>>> My worry is that the amount of time that the displays >>>>>>>>>>>>>>>>>>>> should be left on might be a little too long for the ISR >>>>>>>>>>>>>>>>>>>> as my >>>>>>>>>>>>>>>>>>>> understanding is that these should be kept as lean as >>>>>>>>>>>>>>>>>>>> possible. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Do I even need multiple interrupts (my covid addled >>>>>>>>>>>>>>>>>>>> brain is struggling to type let alone contemplate multiple >>>>>>>>>>>>>>>>>>>> ISR's!)? >>>>>>>>>>>>>>>>>>>> Can the rest of my code run in a non time critical >>>>>>>>>>>>>>>>>>>> manner as it works out what it wants to display where >>>>>>>>>>>>>>>>>>>> whilst the interrupt >>>>>>>>>>>>>>>>>>>> routine merryly illuminates digits based on values which I >>>>>>>>>>>>>>>>>>>> store in a >>>>>>>>>>>>>>>>>>>> buffer somewhere? >>>>>>>>>>>>>>>>>>>> ... or does the rest of my code have to work in come >>>>>>>>>>>>>>>>>>>> kind of state-machine fashion? >>>>>>>>>>>>>>>>>>>> I would expect (hope) to handle display brightness via >>>>>>>>>>>>>>>>>>>> PWM signals to HV Drivers. >>>>>>>>>>>>>>>>>>>> I have no need for cross fade effects either - just >>>>>>>>>>>>>>>>>>>> basic multiplexing of say 10 different multi segment >>>>>>>>>>>>>>>>>>>> displays. I am more >>>>>>>>>>>>>>>>>>>> than happy to break up the displays into say 2 (or more) >>>>>>>>>>>>>>>>>>>> groups in order to >>>>>>>>>>>>>>>>>>>> makes things a little easier. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Can anyone point me in the right direction - ideally >>>>>>>>>>>>>>>>>>>> with some code snippets that I can use as a foundation? >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Just to confirm, it is only the general implementation >>>>>>>>>>>>>>>>>>>> to drive the displays that eludes me - the rest of the >>>>>>>>>>>>>>>>>>>> clock code is well >>>>>>>>>>>>>>>>>>>> defined and working well in a direct drive capacity. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> The desire to move to multiplexed operation is born out >>>>>>>>>>>>>>>>>>>> the the desire to drive a greater number of displays with >>>>>>>>>>>>>>>>>>>> a greater number >>>>>>>>>>>>>>>>>>>> of segments which could be done via direct drive but I >>>>>>>>>>>>>>>>>>>> foresee that >>>>>>>>>>>>>>>>>>>> multiplexing the displays will simplify the electronics >>>>>>>>>>>>>>>>>>>> required. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> So many questions I know. I would be grateful for any >>>>>>>>>>>>>>>>>>>> pointers, thank you. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> - Richard >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>> You received this message because you are subscribed to >>>>>>>>>>>>>>>>> the Google Groups "neonixie-l" group. >>>>>>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails >>>>>>>>>>>>>>>>> from it, send an email to neonixie-l+...@googlegroups.com. >>>>>>>>>>>>>>>>> To view this discussion on the web, visit >>>>>>>>>>>>>>>>> https://groups.google.com/d/msgid/neonixie-l/e576bff1-8d65-4d53-b0cc-2ba5ba574232n%40googlegroups.com >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> <https://groups.google.com/d/msgid/neonixie-l/e576bff1-8d65-4d53-b0cc-2ba5ba574232n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>>>>>>>>>>> . >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "neonixie-l" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to neonixie-l+...@googlegroups.com. >>>>> >>>> To view this discussion on the web, visit >>>>> https://groups.google.com/d/msgid/neonixie-l/1bc508d5-1f0c-4b6e-af2f-3f9a0092ecc6n%40googlegroups.com >>>>> >>>>> <https://groups.google.com/d/msgid/neonixie-l/1bc508d5-1f0c-4b6e-af2f-3f9a0092ecc6n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- >> You received this message because you are subscribed to the Google Groups >> "neonixie-l" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to neonixie-l+...@googlegroups.com. >> > To view this discussion on the web, visit >> https://groups.google.com/d/msgid/neonixie-l/2edcc2a6-37e5-44db-ae77-ce3a4286aa63n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/neonixie-l/2edcc2a6-37e5-44db-ae77-ce3a4286aa63n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "neonixie-l" group. To unsubscribe from this group and stop receiving emails from it, send an email to neonixie-l+unsubscr...@googlegroups.com. To view this discussion on the web, visit https://groups.google.com/d/msgid/neonixie-l/1b79f48b-e932-468f-ba64-cdc0f00ad175n%40googlegroups.com.