I'm making a Nixie Tube Clock as a project for a class. The whole point of the project is to essentially to do it from scratch. I'll be designing a PCB for the project and I want to put the microcontroller chip directly on the PCB instead of simply using a standalone microcontroller. I've never done this before so I'm just looking for some advice for what is easy to use. Not just from the programming language but also how do I get the program onto the board, connect I/O, and make sure the chip doesn't lose the program every time I disconnect power.

I've programmed in MIPS assembly, C, and C++ before so any chip using those or something similar would be fine for me.

I was thinking about a Atmega328P with the Arduino bootloader already on the chip but that may be overkill for my project.

Thank you for the help!

  • \$\begingroup\$ Vague as all get-out. Perhaps you could do some research yourself? \$\endgroup\$ – Ecnerwal Feb 29 '16 at 5:27

I was thinking about a Atmega328P with the Arduino bootloader already on the chip but that may be overkill for my project.

An ATmega328P is a good choice, as there is a free software toolchain as well as the Arduino IDE if you are more comfortable with that, and programmers are cheap (~$15). Additionally, there is a lot of community support and it is very easy to get an ATmega up and running on a board by itself. Take a look at the Arduino UNO schematic, and strip out the things you don't need. Basically, at a bare minimum, it boils down to the following:

  • A stable logic voltage supply (5V or 3V3 would be a good choice).
  • A way to program the device. Easiest way to do this is with an ICSP header (6 pins, programmers are cheap, very easy to use).

A crystal is optional. The ATmega328 has an internal oscillator. Because you don't need a high clock frequency, and I presume you'll be using an external RTC, you don't need a stable or fast clock.

You'll need to choose the peripherals for your clock: I'm guessing you'll want an RTC and some I/O expanders (or shift registers) to drive the clock.

make sure the chip doesn't lose the program every time I disconnect power.

Every microcontroller (within reason) has non-volatile (flash-based) program storage and will retain its program code through power cycles.

Other reasonable microcontroller alternatives:

  • If you need less horsepower, an ATtiny would be a reasonable choice. However, most ATtiny's will also have less I/O, which might be an issue. The toolchain/programmer is the same though.

  • If you want a more modern/capable/fast MCU, look at ARM Cortex M0+ and M4 chips. I would recommend STMicro or perhaps Freescale (now NXP) Kinetis chips. Keep in mind that STMicro programmers are much cheaper than Freescale programmers.

  • \$\begingroup\$ If I were to use a battery pack for power would that be stable enough as a logic voltage supply or would I need to do something to clean up the signal before sending it to the Atmega328P? I wasn't planning on using an RTC to set the time of the clock. I was going to set up a series of switches and flip them to create the binary representation of the time I'm trying to set and then flip another switch for the clock to recognize the input. I have to have some way a user can input as part of the project. \$\endgroup\$ – user3055889 Feb 29 '16 at 4:26
  • \$\begingroup\$ How long are you wanting this clock to run? Nixie tubes and batteries are not a usual mix. Without an RTC, it isn't going to be much of a clock i.e. it won't keep time. It's possible to power an ATmega directly from a battery, but you'll need to design for a significant voltage droop over the lifetime of the battery (no ADC, no communication with anything that requires a stable voltage). \$\endgroup\$ – uint128_t Feb 29 '16 at 4:29
  • \$\begingroup\$ Would using a crystal be worth adding in? Sorry the comments are hard to read I tried to add a blank line between the two questions but whenever I saved it was gone. \$\endgroup\$ – user3055889 Feb 29 '16 at 4:30
  • \$\begingroup\$ I can scrap the battery idea if it seems unreasonable. That was strictly for aesthetic so I didn't have a cord running from the clock. \$\endgroup\$ – user3055889 Feb 29 '16 at 4:31
  • \$\begingroup\$ The ATmega328 has an internal 8MHz oscillator. Unless you need the extra cycles (which you don't, in a clock), why bother? \$\endgroup\$ – uint128_t Feb 29 '16 at 4:32

I would recommend to look at STM32F030K6 - It also has 32 pins, RTC, internal clock, but much cheaper (~2$), has easy to use configuration utility - stm32 CubeMX(+cubeF0), you can programm it with serial port.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.