POV Display Fidget Spinner Using ATmega8 and Arduino IDE

by _Robox_ in Circuits > Arduino

3736 Views, 29 Favorites, 0 Comments

POV Display Fidget Spinner Using ATmega8 and Arduino IDE

IMG_20201017_190150.jpg
INS1.png
IMG_20201017_202848.jpg
IMG_20201017_210407.jpg
IMG_20201017_211136.jpg

Fidget spinners are always fun to play with but dont necessarily have a purpose, keeping this in mind and after coming across a few Light displaying Fidget spinners on web, I desgined this project to with an aim to acheive similar results in a very less manufacturing cost!

This PCB project is very similar to basic fidget spinners when it comes to size and feel but it displays pre programmed messages, single word or multiple using a method known as POV Displaying (Persistance of Vision)

Programming is done in the Arduino envoironment which makes it very easy to update and find support regarding the project. Its based on SMD Atmega8 which is comparatively very cheap than regular Atmega328p, but needs to be flashed with a bootloader in order to be programmed via Arduino which is explained in coming steps.

Gerber files are available exclusively for patrons : https://www.patreon.com/robox

Reach out on any of the platforms to buy the Spinner :)

Supplies

  1. Soldering tools
  2. Tweezers
  3. Single core wire

Components Required:

  1. 220 Ohm SMD resistor 0805 - 9
  2. 10KOhm SMD resistor 0805 - 1
  3. SMD LED 0805 - 9
  4. 16Mhz crystal
  5. SMD ATmega8-au
  6. TCRT5000 sensor -1

What Is POV?

Robox POV Fidget Spinner |Display Test|
pov.png
pov2.jpg

POV stands for Persistence of Vision, where LEDs are attached in a linear line and are moved physically to form a matrix of LEDs. The human eye cannot process more than 10-12 images per second. When a series of images more is presented in quick succession, it gives us the illusion that the images are in motion. This movement is fast enough to trick our eyes in thinking the message is displayed entirely.

Images here show how we frame the data bytes which need to be displayed and how we display one letter at a time.

For more detailed info on POV click here.

PCB Designing and Features:

IMG_20201017_210324.jpg
IMG_20201017_210525.jpg
IMG_20201017_211308.jpg
IMG_20201028_193015.jpg

PCBs are designed in Altium designer (click here to get a free trail) and were manufactured by PCBWay,

First prototype order on PCBWay is free! Head on to https://www.pcbway.com/ to avail exciting offers.

Click here to buy these PCBs directly from PCBWay using the shared project feature.

Features:

  1. Atmega8 Microcontroller based
  2. 9 SMD LEDs used
  3. Powered by cheap CR2032 batteries
  4. 3 battery sockets for more run time
  5. TCRT sensor used for precision
  6. Clocked at 16MHz
  7. FTDI programming port on board

Specifications:

  1. Size: 72*72 mm
  2. Bearing used:
  3. FR4 1.6 mm PCB with black soldermask

Soldering the Components

IMG_20201030_105613.jpg
IMG_20201026_125113.jpg

SMD components need be soldered first, Use of ample amount of flux will ease the task.

Remove the individual LEDs from the TCRT5000 casing to solder on to the PCB.

Solder single core wires to LEDs D5,D6,D7 (According to the silkscreen, originally the SPI pins of Atmega8) and to the cap near DTR pin in order to burn bootloader in next step.

Setting Up Arduino IDE Burning Bootloader and Testing the Board

Robox Fidget Display Spinner |Testing LEDs|

To set up Arduino IDE to program ATmega8 boards, head on to https://github.com/MCUdude/MiniCore and follow the instructions to add in the core in the Arduino environment.

Once Arduino IDE is set with the necessary cores, next step is to burn the bootloader in the chip. It will help the chip understand the Arduino language. for that we need any ardunio board, I used Arduino Nano.

Upload ArduinoISP code that can be found in examples in the Arduino and follow the regular Arduino as ISP connections connections:

Next, select Atmega8 in the minicore core from the boards menu and hit Burn bootloader command, after burning bootloader, FTDI board can be used to upload codes from now on.

A simple (slightly modified) blink code can be seen in the video.

Get Figety!

Robox POV Fidget Spinner |Tests|

Due to vast support Arduino offer, coding the spinner wasn't a difficult task. Code I utilized is mod and can be downloaded from my github.

Hop on the coin cell batteries and get fidgety :P

Improvements:

  1. Deep sleep capabilities of ATmega8 can be tested to increase run time.
  2. Adding one more sensor can result in more precise displaying along with spin direction detection