very cool
I may need one


~
*mcvei...@gmail.com <mcvei...@gmail.com>*


On Tue, Jan 9, 2024 at 12:27 PM Jon <dekat...@nomotron.com> wrote:

> 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
> <https://groups.google.com/d/msgid/neonixie-l/1b79f48b-e932-468f-ba64-cdc0f00ad175n%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/CAKYv7NR%2B8vmYV_RtUnEwiW9kGuY4jNn_DD13LFHoYNdCQMGrkg%40mail.gmail.com.

Reply via email to