I've used HV5522 and HV5622 a lot without any issue - I always use a 
CD40109B level shifter to convert from 3v3V or 5V to 12V (I know many do 
not).

In Arduino Land there is a function called ShiftOut which does all the 
required clocking - it's for 8 bits as standard but can easily be re-worked 
for however many bits you want.

I have one clock with 4 x HV5522 in series for which I made a 128 bit 
ShiftOut function.

See here for details of the shiftout process: Arduino shiftOut(): Control 
chips with a 3 wire Serial Interface. (best-microcontroller-projects.com) 
<https://www.best-microcontroller-projects.com/arduino-shiftout.html#:~:text=Arduino%20shiftOut%20is%20a%20purely%20software%20implementation%20of,data%20input%20%28the%20equivalent%20software%20function%20is%20shiftIn%29.>

It's an interesting page with scope traces to help explain.

Ultimately I moved over to using SPI transfers which are driven purely by 
the processor but the theory is all very similar.

- Richard





On Saturday, 13 August 2022 at 22:28:27 UTC+1 flata...@gmail.com wrote:

> You are a legend! I've looked at the schematics, very neat.
>
> I'm traveling on business tonight, back next weekend. Then I'll design my 
> own board for 4 beautiful Rz568m (present for my parents on Christmas). 
>
> Glad I now understand how the HV5530 etc work. 
>
> Looking forward to playing around with the code. 
>
> I'll definitely include RTC, GPS receiver and IR motion sensor (I finally 
> designed and tested a circuit using the cheap Ds203 ir sensor. I'm trying 
> to design a microwave sensor but only with minor success so far, the 
> antenna is very challenging to design without proper training and 
> measurement tools). 
>
> Thanks everyone for jumping in with so many suggestions. 
>
> I'll send a pic of my clock when ready. 
>
>
>
> -------- Original message --------
> From: "SWISSNIXIE - Jonathan F." <jfre...@gmail.com> 
> Date: 13/08/2022 22:16 (GMT+00:00) 
> To: neonixie-l <neoni...@googlegroups.com> 
> Subject: Re: [neonixie-l] Re: Nixie Clock - Direct Drive HV5530 
>
> Yes, the code is open source :)
>
> You can download it at the bottom of the page
> https://www.swissnixie.com/sunixs/
>
>
> I programmed it in Arduino with the atmeag328, but it should be a good 
> start to look at the function "setOutputs" in the code, it contains the 
> actual shifting process.
> Also it's easier to layout the outputs of the IC and cathode-pins as 
> "numbered" with the output number unless you are very experienced with the 
> code.  This allows bitwise operations for creating the variable containing 
> the value.
> For example, if your Cathode 0 is connected to output 1, and cathode 9 to 
> pin 10, you can use a function to shit as a single bit according to the 
> current digit number. If your digit is 8, you can do " 0x01<<8". If your 
> cathodes are randomly connected (to make an easy layout) you will need to 
> implement more code. 
>
> On Saturday, 13 August 2022 at 22:35:13 UTC+2 flata...@gmail.com wrote:
>
>> Jonathan,
>>
>> I just found this, it's excellent. 
>>
>> http://swissnixie.com/projects/SUNIX-S/SN_SUNIX_S_R1.2_WTB_SCHEMATIC.png
>>
>> From this post:
>> https://groups.google.com/g/neonixie-l/c/S1oX30hLrmw
>>
>> If the code is open source, I'll just use that otherwise I'll adapt mine 
>> to use hv5530 and hef4104. 
>>
>> Awesome! 
>>
>>
>> -------- Original message --------
>> From: "SWISSNIXIE - Jonathan F." <jfre...@gmail.com> 
>> Date: 13/08/2022 20:51 (GMT+00:00) 
>> To: neonixie-l <neoni...@googlegroups.com> 
>> Subject: Re: [neonixie-l] Re: Nixie Clock - Direct Drive HV5530 
>>
>> The time to shift out the bits is not critical, the clock rate is as fast 
>> as you implement it, there is only a minimum clock time, but no maximum one.
>> Brightness should be the same as putting the tube pin directly to ground, 
>> the internal resistance of the mosfet in the HV5530 is in the Ohms range, 
>> while your anode resistor will probably will be a few kiloohms, so no 
>> visible issue.
>>
>> About voltage:
>> The HV5530 is specified for 10.8 to 13.2V, but alot of people seem to use 
>> it with 5V logic and it works. If you want do operate ith with 12V logic, 
>> you need a 12V source and a level shifter. HEF4104 
>> <https://www.digikey.com/en/products/detail/nexperia-usa-inc/HEF4104BT-653/1156435>
>>  
>> could work
>>
>>
>> On Saturday, 13 August 2022 at 19:04:21 UTC+2 flata...@gmail.com wrote:
>>
>>> Thanks.
>>>
>>> In terms of nixie brightness, is there any advantage in using serial to 
>>> parallel converter+shift register vs multiplexing using high voltage 
>>> transistors on anodes and cathodes of the nixies? Other than saving 
>>> component and uC pins, of course. 
>>>
>>> -------- Original message --------
>>> From: Bill Stanley <billsta...@gmail.com> 
>>> Date: 13/08/2022 17:32 (GMT+00:00) 
>>> To: neonixie-l <neoni...@googlegroups.com> 
>>> Subject: [neonixie-l] Re: Nixie Clock - Direct Drive HV5530 
>>>
>>> I use that part for my NIXIE, Panaplex and LED displays and I also write 
>>> in assembly (8051, not PIC)
>>> For my code, I send the serial data for NEXT time to display in the time 
>>> after a 1 second update. On the 1 second "hack"
>>> I update the display by doing the serial to parallel pulse.
>>>
>>> Here is the code I use:
>>>
>>> ;************************************************************************
>>> ;*                                    *
>>> ;*    Serial clock the data in the raw buffer to the H/W drivers.     *
>>> ;*    Note: this routine does not strobe the data to the display.    *
>>> ;*                                    *
>>> ;*    On Entry: None.                            *
>>> ;*    On Exit:  Display H/W drivers updated from ram.            *
>>> ;*                                    *
>>> ;************************************************************************
>>>
>>> WRT_NIXIE_HW:    MOV    R0,#DISP_RAW_TH        ;point at start of raw 
>>> display ram
>>>                                  MOV    R1,#12d            ;12 bytes of 
>>> data to send
>>> RAW_BYTE_LP:     MOV    R2,#5            ;5 bits per byte
>>>                                 MOVX    A,@R0            ;get a 5 bit 
>>> value
>>>                                 INC    R0            ;bump the pointer
>>>
>>> RAW_BIT_LP:        RRC    A            ;bit 0 into carry
>>>                                MOV    DISP_DAT,C        ;put the bit 
>>> into the I/O port
>>>                                CALL    HV_BIT_DELAY        ;delay
>>>                                SETB    DISP_CLK        ;clock high
>>>                                CALL    HV_BIT_DELAY        ;delay
>>>                                CLR    DISP_CLK        ;clock low
>>>                                DJNZ    R2,RAW_BIT_LP        ;loop 5 bits
>>>                                DJNZ    R1,RAW_BYTE_LP        ;loop 12 
>>> bytes
>>>                                RET                ;and return
>>>
>>>
>>> ;************************************************************************
>>> ;*                                    *
>>> ;*    Update the NIXIE readouts with the data in the H/W buffers.    *
>>> ;*                                    *
>>> ;*    On Entry: None.                            *
>>> ;*    On Exit:  NIXIE displays show updated values.            *
>>> ;*                                    *
>>> ;************************************************************************
>>>
>>>
>>> UPDATE_DISP:    CALL    HV_BIT_DELAY        ;delay
>>>                               SETB    DISP_STRB        ;strobe the data
>>>                               CALL    HV_BIT_DELAY        ;delay
>>>                               CLR    DISP_STRB        ;un-strobe NIXIE 
>>> drivers
>>>                               RET
>>>
>>>
>>>
>>> On Saturday, August 13, 2022 at 8:40:39 AM UTC-7 flata...@gmail.com 
>>> wrote:
>>>
>>>> Thank you both.
>>>>
>>>> Say that I want to drive high HVOUT12 on pin2 (that is binary 
>>>> b'00000010') of the HV5530... and reading your previous messages, do I 
>>>> simply...:
>>>>
>>>> drive pin28 (CLOCK) low
>>>> drive pin31 (LE) low
>>>>
>>>> drive pin28 (CLOCK) high
>>>> drive pin32 (DATA Input) low ; send 0 for bit 0 of b'00000010'
>>>> drive pin28 (CLOCK) low
>>>> drive pin28 (CLOCK) high
>>>> drive pin32 (DATA Input) high ; send 1 for bit 1 of b'00000010'
>>>> drive pin28 (CLOCK) low
>>>> drive pin28 (CLOCK) high
>>>> drive pin32 (DATA Input) low ; send 0 for bit 2 of b'00000010'
>>>> drive pin28 (CLOCK) low etc
>>>> etc...
>>>> drive pin31 (LE) high.
>>>>
>>>> Of course, I'd need to do it do it within a certain time frame (nS, I 
>>>> suppose)
>>>>
>>>> Then I guess I would need a level shifter as while the input voltage is 
>>>> 12V, the PIC is at 3.3V (LF series). Argh. 
>>>>
>>>> I'm starting to think whether that is really a better approach than 
>>>> using an 80pin or 100pin PIC with HV transistors to drive the cathodes of 
>>>> the Nixies (pic18f46k22 would do for instance). It would increase 
>>>> component 
>>>> count and cost of PIC etc, but it's not a commercial project, I'm only 
>>>> making 3 clocks in total.
>>>>
>>>> Indeed, I'm building a clock with Dalibor's RZ568M (beautiful!).
>>>>
>>>> Il giorno sabato 13 agosto 2022 alle 15:46:58 UTC+1 gregebert ha 
>>>> scritto:
>>>>
>>>>> Be sure to use a level translator to drive the 5530-type devices at 
>>>>> the proper signal voltages (12 VDC). Some people have driven them at 5V, 
>>>>> which is out-of-spec and not guaranteed to work.  I use these drivers in 
>>>>> some of my clocks and they work very well. 
>>>>>
>>>>> Pardon my rant below, but I've been designing IC's for a living since 
>>>>> the 1980's and too often I see others having problems with serial devices 
>>>>>  :
>>>>>
>>>>>   One thing that annoys me about the HV5530 (and similar) devices is 
>>>>> that the datasheet specs are incomplete for the serial data signals. The 
>>>>> data-in hold time (tH) is 10nsec, but there is no *minimum* propagation 
>>>>> time in the spec (tDLH, tDHL). The only have a maximum (100ns). What this 
>>>>> means is that per the datasheet, you cannot simply cascade multiple 
>>>>> devices. It might work if you do, but if you want to guarantee that it 
>>>>> will 
>>>>> always work, place a rising-edge flip-flop between cascaded devices). In 
>>>>> order to have reliable shifting, the minimum propagation-delay of the 
>>>>> driving device *must be greater* than the hold-time of the next 
>>>>> device. If there is no minimum prop-delay spec, assume it's zero (a very 
>>>>> safe and reasonable assumption). 
>>>>>
>>>>> My current clock project (6-tube RZ 568m) has multiple PC boards with 
>>>>> ribbon cables interconnecting them. Not just for the three HV5530's that 
>>>>> drive the tubes, but also many other devices in the same serial chain for 
>>>>> reading switches and controlling lamps. After many weeks of testing with 
>>>>> billions of bits, there are zero bit errors.....because I made sure setup 
>>>>> and hold times are met.
>>>>>
>>>>>
>>>>> On Saturday, August 13, 2022 at 6:32:31 AM UTC-7 SWISSNIXIE - Jonathan 
>>>>> F. wrote:
>>>>>
>>>>>> Hi Max,
>>>>>> The HV5530 and other HV-Series IC's are "Serial to Paralell" 
>>>>>> converters which allow to be control 32-pins (or even more with multiple 
>>>>>> ic's) from single clock and data lines. They are basically normal serial 
>>>>>> to 
>>>>>> parallel converters with high voltage transistors attached. 
>>>>>>
>>>>>> To operate these you will need a clock source (for easy way a gpio 
>>>>>> that goes high/low) and a data source, which means either a pin that is 
>>>>>> high or low at the time of clock. After you've sent the required amount 
>>>>>> of 
>>>>>> data (number of outputs on the IC) the first data will transfer to "DATA 
>>>>>> OUT" pin and into the next IC (if there is one).
>>>>>>
>>>>>> For a 6 digit clock you need 2 pcs of HV553
>>>>>>
>>>>>> I cannot provice ASM code for PIC, but here is a low level code of 
>>>>>> ATMega:
>>>>>>
>>>>>> *#define thePort PORTD *
>>>>>> *#define DATA PD5*
>>>>>>
>>>>>> *#define CLK PD7 *
>>>>>>
>>>>>>
>>>>>> *PORTC |= _BV(PC1);  //Set OE/LE Signal LOW*
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> * for (int i = 0; i < 32; i++) {    thePort &= ~_BV(DATA);  //Data 
>>>>>> LOW    if ( bitRead(val_one, i) == 1) {      thePort |= _BV(DATA);  
>>>>>> //Data 
>>>>>> HIGH    }    thePort |= _BV(CLK);  //CLK HIGH    thePort &= ~_BV(CLK); 
>>>>>> //CLK LOW  }*
>>>>>> *PORTC &= ~_BV(PC1);  //Set OE/LE Signal HIGH* 
>>>>>>
>>>>>> The general operation of the 5530 is as following.
>>>>>>
>>>>>> 1.) Drive Data pin and Clock pin LOW
>>>>>> 2.) Before starting to send data, drive LE pin LOW
>>>>>> 3.) For each bit you need to do a clock signal and data pin, for this:
>>>>>> 3.1) Drive CLOCK High
>>>>>> 3.2) Drive DATA high or low, depending if you want to turn the digit 
>>>>>> on or off
>>>>>> 3.3) Drive CLOCK Low
>>>>>> 3.4) Drive DATA Low
>>>>>> 4.) This needs to be done for all Inputs of an ic, if you have two 
>>>>>> ic's chained you need to to it two times.
>>>>>> 5.) After all Data has been sent, drive LE pin HIGH, Outputs will now 
>>>>>> be set to the data you've just send
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Saturday, 13 August 2022 at 12:13:24 UTC+2 flata...@gmail.com 
>>>>>> wrote:
>>>>>>
>>>>>>> Hello,
>>>>>>>
>>>>>>> I'm starting to design my first 6 digit nixie clock and I'd like to 
>>>>>>> use direct drive of the tubes (my power supply can take 6 nixies 
>>>>>>> without 
>>>>>>> multiplexing).
>>>>>>>
>>>>>>> So far I have built my Nixie watch, coding in ASM, worked on extreme 
>>>>>>> power saving etc.
>>>>>>>
>>>>>>> I could multiplex the nixies as I did in this project 
>>>>>>> https://fb.watch/eTb69SnxEP/ , but since I have a good power supply 
>>>>>>> I wanted to build a clock with direct drive of the tubes.
>>>>>>>
>>>>>>> I prefer to code in ASM (don't ask why :)  ), I could use a 100pin 
>>>>>>> PIC18 to drive each digit individually through MMBTA92 & A42 
>>>>>>> transistors. 
>>>>>>> However, if I want to use a PIC with a lower pin count (say 40pins), I 
>>>>>>> may 
>>>>>>> use a driver such as HV5530.
>>>>>>>
>>>>>>> Would I still get same brightness as a genuine direct drive as when 
>>>>>>> using A92&A42 transistors? I suppose the switching that happens using 
>>>>>>> CLK/SDA on the HV5530 is not too different than a good multiplexing. I 
>>>>>>> may 
>>>>>>> be wrong.
>>>>>>>
>>>>>>> And if I were do code ASM to use HV5530, does anyone have sample ASM 
>>>>>>> code? I managed to write myself the code to read/write time from an RTC 
>>>>>>> using CLK/SDA so I suppose it's very similar but I cannot figure it out 
>>>>>>> from the datasheet of HV5530.
>>>>>>>
>>>>>>> Any help is much appreciated.
>>>>>>>
>>>>>>> Max
>>>>>>>
>>>>>> -- 
>>> 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/c2e49484-d56e-4545-b635-942952d2c1f4n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/neonixie-l/c2e49484-d56e-4545-b635-942952d2c1f4n%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/e7145848-36e9-48cc-a5c5-f5fec8fcbcdfn%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/neonixie-l/e7145848-36e9-48cc-a5c5-f5fec8fcbcdfn%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/33c9a621-0006-4f94-998f-5f2e29a7fb6cn%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/neonixie-l/33c9a621-0006-4f94-998f-5f2e29a7fb6cn%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/f4edcebe-36e9-4f8c-9fd0-f1500d9d9ae2n%40googlegroups.com.

Reply via email to