POV
the idea is that the compass needle can rotate slow in both directions to set / point a direction of choice.
but also can spin up to about 1800rpm (= 30rps) and have LEDs to create a classic POV display.
on every half of the needle are 12..20 LEDs (APA102-2020 or Nichia NSSM124D with TLC5971 or something similar) so we have a 12..20-Pixel high circle-screen.
some first simple tests are documented at POV_simpletest
Contents
basic calculations
130mm Needle, 3mm Pixel Pitch
line = virtual pixel line on circumference (from inside to outside of circle)
name | test | value | formula |
---|---|---|---|
updates_per_second = revolution_per_second | 30 | ||
rpm (revolution per minute) | 1800 | 1800 | updates_per_second * 60 |
pixel_pitch | 3mm | ||
needle_diameter | 130mm | ||
needle_active_radius | 60mm | 60 | (needle_diameter - 10) / 2 |
pixel_per_line_count | 20 | toFixed(needle_active_radius / pixel_pitch; 0) | |
pixel_per_line_count_total | 40 | pixel_per_line_count * 2 | |
line_circumference | 408mm | toFixed(π * needle_diameter; 1) | |
line_count | 136 | toFixed(line_circumference / pixel_pitch) | |
line_updates_per_revolution | 136 | line_count | |
line_updates_per_second | 4080 | updates_per_second * line_updates_per_revolution | |
line_updates_per_minute | 244800 | rpm * line_updates_per_revolution | |
duration_per_revolution | 33ms | toFixed(1000 / updates_per_second; 1) | |
duration_per_line | 0.242ms | toFixed((duration_per_revolution / line_count); 7) | |
duration_per_line_us | 242us | toFixed(duration_per_line * 1000; 0) | |
duration_per_line_ns | 242000ns | toFixed(duration_per_line * 1000000; 0) | |
line_pwm_duration_for_8bit | 945ns | toFixed(duration_per_line_ns / 256; 0) | |
line_pwm_rate_for_8bit | 1,06MHz | toFixed(1000 / line_pwm_duration_for_8bit ; 2) | |
line_pwm_duration_for_9bit | 478ns | toFixed(duration_per_line_ns / 512; 0) | |
line_pwm_rate_for_9bit | 2,09MHz | toFixed(1000 / line_pwm_duration_for_9bit ; 2) | |
line_pwm_duration_for_10bit | 236ns | toFixed(duration_per_line_ns / 1024; 0) | |
line_pwm_rate_for_10bit | 4,24MHz | toFixed(1000 / line_pwm_duration_for_10bit; 2) | |
line_pwm_duration_for_11bit | 120ns | toFixed(duration_per_line_ns / 2048; 0) | |
line_pwm_rate_for_11bit | 8,33MHz | toFixed(1000 / line_pwm_duration_for_11bit; 2) | |
line_pwm_duration_for_12bit | 59ns | toFixed(duration_per_line_ns / 4096; 0) | |
line_pwm_rate_for_12bit | 16,95MHz | toFixed(1000 / line_pwm_duration_for_12bit; 2) | |
line_pwm_duration_for_13bit | 30ns | toFixed(duration_per_line_ns / 8192; 0) | |
line_pwm_rate_for_13bit | 33,33MHz | toFixed(1000 / line_pwm_duration_for_13bit; 2) | |
line_pwm_duration_for_14bit | 15ns | toFixed(duration_per_line_ns / 16384; 0) | |
line_pwm_rate_for_14bit | 66,67MHz | toFixed(1000 / line_pwm_duration_for_14bit; 2) | |
line_pwm_duration_for_15bit | 7ns | toFixed(duration_per_line_ns / 32768; 0) | |
line_pwm_rate_for_15bit | 142,86MHz | toFixed(1000 / line_pwm_duration_for_15bit; 2) | |
line_pwm_duration_for_16bit | 3,7ns | toFixed(duration_per_line_ns / 65535; 2) | |
line_pwm_rate_for_16bit | 270,27MHz | toFixed(1000 / line_pwm_duration_for_16bit; 2) |
reminder / helper
1 s = 1Hz
1 000 ms = 1Hz
1 000 000 us = 1Hz
1 000 000 000 ns = 1Hz
1 000 000 000 000 ps = 1Hz
1s = 1Hz
1ms = 1kHz
1us = 1MHz
1ns = 1GHz
1ps = 1THz
links
LEDs & LED-Driver
data transmission
look at pov_datatransmission.md
power transmission
look at pov_powertransmission.md