Python Script für Berechnung der Sinus-Tabelle

main
Tom 11 months ago
parent 904318d15d
commit 82cf0cff2d

5
.gitignore vendored

@ -0,0 +1,5 @@
*~
.*.swp
Audio
External
Source

@ -0,0 +1,63 @@
#!/usr/bin/python
#
# pwm_sinewave
#
# Calculate values for generate a PWM table for a Sinewave
# Used on a AVR ATMEGA 328
#
# 2013-02-24 tom@dl7bj.de Tom, DL7BJ
#
frequency = 488
cpuclock = 8000000
pwmbit = 32
maxdutycycle = 98
mindutycycle = 2
def compute_sinewave(pwmbit, fpeaktopeak, zerobeat):
t = 1
ul = []
tl = []
while t <= pwmbit:
u = sin(2*pi*t/pwmbit)
u = u * fpeaktopeak/2
u = u + zerobeat
u = int(round(u))
print(' ',u,',\t//',t)
ul.append(u)
tl.append(t)
t = t + 1
return ul,tl
import sys
from math import pi, sin
from scitools.std import *
if maxdutycycle <= mindutycycle:
print("Error - maxdutycycle must be greater than mindutycycle")
if maxdutycycle == 100:
maxamplitude = pwmbit - 1
else:
maxamplitude = int((round(pwmbit * maxdutycycle/100.0)))
if mindutycycle == 0:
minamplitude = 1
else:
minamplitude = int((round(pwmbit * mindutycycle/100.0)))
peaktopeak = maxamplitude - minamplitude
print("Amplitude from ", minamplitude, " to ", maxamplitude, "(", peaktopeak," Schritte)")
zerobeat = int(round((minamplitude + maxamplitude)/2.0))
print("Zerobeat on PWM step ", zerobeat)
fpeaktopeak = float(peaktopeak)
ulist,tlist = compute_sinewave(pwmbit,fpeaktopeak,zerobeat)
plot(tlist,ulist)
savefig('tmp.eps')
print("Ready.")
Loading…
Cancel
Save