Python Script für Berechnung der Sinus-Tabelle
parent
904318d15d
commit
82cf0cff2d
@ -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…
Reference in New Issue