rozważania o CNC

OPROGRAMOWNIE => EMC2 => Wątek zaczęty przez: markcomp Czerwca 20, 2011, 05:18:26



Tytuł: M67, 68 - sterowanie wyjściem analogowym (przez PWM)
Wiadomość wysłana przez: markcomp Czerwca 20, 2011, 05:18:26
sterowanie wyjściem analogowym


na poczatku pliku HAL znajduje się linia ładowania "motmod"
Cytuj
loadrt motmod [base_period_nsec=period] [servo_period_nsec=period] [traj_period_nsec=period]
[num_joints=[0-9]] ([num_dio=[1-64]] [num_aio=[1-16]])

gdzie musimy zarezerwować ilość wyjść analogowych za pomocą "num_aio"

przekazanie parametrów z linii gcodu

M67( 8 )  E-NN Q-WAR

gdzie:
NN - numer wyjscia analogowego
WAR - wartość dla wyjścia analogowego

WAR do zmiennej: motion.analog-out-NN

przekazanie motion.analog-out-NN do generatora PWM

net pwm-NN <= motion.analog-out-NN => pwmgen.NN.value

zmienna pwmgen.NN.value wpływa na współczynnik wypełnienia generatora PWM




Tytuł: Odp: M67, 68 - sterowanie wyjściem analogowym (przez PWM)
Wiadomość wysłana przez: markcomp Czerwca 20, 2011, 05:34:49
Przykład:

M67 E0 Q1000

w pliku HAL

loadrt pwmgen output_type=0
addf pwmgen.update servo-thread
addf pwmgen.make-pulses base-thread
net pwm-value-0 <= motion.analog-out-0 => pwmgen.0.value
setp pwmgen.0.enable 1
net pwm-0 pwmgen.0.pwm  parport.1.pin-09-out

jeszcze trzeba ustawić parametry generatora PWM

Cytuj
(float) pwmgen.<chan>.pwm-freq -- Desired PWM frequency, in Hz. If 0.0, generates PDM instead of PWM. If set higher than internal limits, next call of update_freq() will set it to the internal limit. If non-zero, and dither is false, next call of update_freq() will set it to the nearest integer multiple of the make_pulses() function period.

(bit) pwmgen.<chan>.dither-pwm -- If true, enables dithering to achieve average PWM frequencies or duty cycles that are unobtainable with pure PWM. If false, both the PWM frequency and the duty cycle will be rounded to values that can be achieved exactly.

czyli wystarczy ustawić zamiast PWM -> PDM (gęstości)... przetwornik PWM2DC to przełknie...

setp pwmgen.0.pwm-freq 0