Ciao
ho dato un'occhiata al volo alla configurazione hal e hai già il pwm attivato e in parte configurato.
Occorre solo capire che cosa fa la scheda che hai collegato alla porta parallela e che tipo di segnale da in uscita.
La tua configurazione è questa:
Codice: Seleziona tutto
# Generated by stepconf 1.1 at Mon Dec 9 05:40:49 2019
# If you make changes to this file, they will be
# overwritten when you run stepconf again
loadrt [KINS]KINEMATICS
#autoconverted trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hal_parport cfg="0 out"
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0
loadrt pwmgen output_type=1
loadrt classicladder_rt numPhysInputs=15 numPhysOutputs=15 numS32in=10 numS32out=10 numFloatIn=10 numFloatOut=10
addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf classicladder.0.refresh servo-thread
addf stepgen.update-freq servo-thread
addf pwmgen.update servo-thread
net spindle-cmd-rpm => pwmgen.0.value
net spindle-on <= spindle.0.on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm
setp pwmgen.0.pwm-freq 100.0
setp pwmgen.0.scale 1166.66666667
setp pwmgen.0.offset 0.114285714286
setp pwmgen.0.dither-pwm true
net spindle-cmd-rpm <= spindle.0.speed-out
net spindle-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-cmd-rps <= spindle.0.speed-out-rps
net spindle-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-at-speed => spindle.0.at-speed
net coolant-mist <= iocontrol.0.coolant-mist
net spindle-on => parport.0.pin-01-out
setp parport.0.pin-02-out-invert 1
net xdir => parport.0.pin-02-out
net xstep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
setp parport.0.pin-04-out-invert 1
net ydir => parport.0.pin-04-out
net ystep => parport.0.pin-05-out
setp parport.0.pin-05-out-reset 1
net zdir => parport.0.pin-06-out
net zstep => parport.0.pin-07-out
setp parport.0.pin-07-out-reset 1
net astep => parport.0.pin-08-out
setp parport.0.pin-08-out-reset 1
net adir => parport.0.pin-09-out
net spindle-pwm => parport.0.pin-16-out
net xenable => parport.0.pin-17-out
net home-y <= parport.0.pin-12-in-not
net estop-ext <= parport.0.pin-11-in
net home-z <= parport.0.pin-10-in-not
net home-x <= parport.0.pin-13-in-not
net coolant-mist => parport.0.pin-14-out
...
La riga contenente "loadrt pwmgen output_type=1" indica che hai un segnale in uscita dedicato al pwm (connesso al pin 16 della porta parallela) e un altro segnale (che dalla configurazione non è connesso in uscita) che ha la funzione di invertire il senso di rotazione
qui trovi maggiori dettagli.
Le righe qui sotto riportate indicano i parametri di funzionamento e vanno modificate all'occorrenza:
Codice: Seleziona tutto
setp pwmgen.0.pwm-freq 100.0
setp pwmgen.0.scale 1166.66666667
setp pwmgen.0.offset 0.114285714286
Dal datasheet della breakout a pagina 3 c'è la tabella dei pin/segnali e nella tabella LPT-Port leggo che i pin 1 o 17 sono usati per il pwm o eventuale riduzione di corrente (google traduttore mi dice così, il tedesco non lo digerisco).
Occorre quindi modificare la configurazione e in particolare solo le due righe qui sotto:
Codice: Seleziona tutto
#net spindle-on => parport.0.pin-01-out
net spindle-pwm => parport.0.pin-01-out
In questo modo mandi il segnale pwm al pin 1 della porta parallela e la scheda dovrebbe darti in uscita una tensione 0-10V nei rispettivi pin del connettore X2 a 6 poli, al paragrafo 3.8 del datasheet è spiegato come funziona l'uscita analogica.
Per verificare l'uscita 0-10V non occorre collegare l'inverter, con un multimetro leggi la tensione sui poli azionando il mandrino in MDI da Linuxcnc, dando gli appositi comandi G-Code, poi quando tutto sembra funzionare colleghi l'inverter.
A pagina 5 e 6 del datasheet leggo anche che è indicato l'uso del watchdog, altro non è che il charge-pump.
Il charge-pump è quel segnale a frequenza fissa (da 1kHz a 20kHz nel caso della tua scheda) che viene generato da Linuxcnc quando tutto il sistema è in funzione, quando ci sono problemi e la cpu è instabile, il segnale charge-pump viene a mancare e la scheda deve bloccare il suo funzionamento per evitare danneggiamenti alla macchina a cn dovuti all'instabilità.
Qui trovi tutte le info sul charge-pump.
Per attivarlo occorre aggiungere "loadrt charge-pump" sotto alle prime rige di configurazione.
Occorre poi aggiungere "addf charge-pump base-thread" al gruppo di righe poco sotto.
Poi la riga
va modificata in
Codice: Seleziona tutto
#net spindle-pwm => parport.0.pin-16-out
net cpsignal charge-pump.out parport.0.pin-16-out
l'uscita software "charge-pump.out" viene connessa al pin16 della parallela tramite il segnale nominato con "cpsignal" (puoi chiamarlo anche pippo).
Quando si applicano le modifiche alla configurazione consiglio di lasciare la riga da modificare e inserire all'inizio il simbolo "#" che rende tutta la riga un commento e non viene processata all'avviamento di Linuxcnc.
Io non passerei mai a mach3.
Ross