Controllo inverter da pwm

Sezione dedicata all'elettronica di controllo cnc.
ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: Controllo inverter da pwm

Messaggio da ross » martedì 21 aprile 2020, 14:23

Per il convertitore Pwm/0-5V utilizza questo schema.
BBB_OptoPwm.png
Nel file hal devi inserire queste righe di configurazione:
Ad inizio file dovresti avere queste righe:

Codice: Seleziona tutto

addf hpg.capture-position servo-thread
addf bb_gpio.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.0.do-pid-calcs servo-thread
addf pid.1.do-pid-calcs servo-thread
addf limit1.0 servo-thread
addf limit1.1 servo-thread
addf hpg.update  servo-thread
addf bb_gpio.write servo-thread
E verso la fine queste:

Codice: Seleziona tutto

net spindle-on motion.spindle-on => bb_gpio.p9.out-14
net spindle-speed-cmd motion.spindle-speed-out => hpg.pwmgen.00.out.00.value
setp hpg.pwmgen.00.pwm_period       1000000
setp hpg.pwmgen.00.out.00.pin       916
setp hpg.pwmgen.00.out.00.enable    1
setp hpg.pwmgen.00.out.00.value     0.0
setp hpg.pwmgen.00.out.00.scale     1000
Il "pwm_period" è la frequenza del pwm, dovrebbe essere 1000Hz (andrebbe misurata con un oscilloscopio per verificarla).
La riga "setp hpg.pwmgen.00.out.00.pin 916" identifica il pin di uscita dove è disponibile il segnale pwm, 916 significa pin 16 del P9 della BBB che dovrebbe essere il pin 7 del connettore P4 della cape che hai.
Per accendere il mandrino usi bb_gpio.p9.out-14 ma prima imposti i giri con il pwm.
Il convertitore non fornisce in uscita un segnale fino a 5V ma leggermente meno a causa della saturazione dei transistor, con il parametro "scale" imposti il limite massimo che ti occorre.
Il "pwmgen" è la generazione del pwm via software per un pc normale ma dato che hai una BBB, il pwm va generato con le PRU per non appesantire la CPU e non serve altro.

Ross
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login

Avatar utente
ziociccio
Member
Member
Messaggi: 362
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » martedì 21 aprile 2020, 15:40

@hellfire39

A me oltre a regolare la velocità, serve poterlo avviare e fermare da GCODE.
Per esempio tramite S2800 M3 l'inverter deve avviare il motore alla frequenza di 50Hz (corrispondenti a 2800 rpm).
Per la regolazione della velocità, l'inverter accetta anche segnali in corrente 4-20 mA, oltre che in tensione (0-5 o 0-10 V).
Adesso sulla BBB ho due uscite, corrispondenti a 2 pin: la prima mi da 0V quando il mandrino è fermo e 5V quando GCODE esegue l'istruzione M3, la seconda mi da un'uscita variabile in tensione da 0-6V in base al valore di S.
Queste uscite penso vadano filtrate e trasformate in tensione analogica.
Qual è lo schema che non è corretto? Quello che ho postato io?

@Ross
nel file hal ho il primo blocco di istruzioni, ma le voci addf bb_gpio.read e addf bb_gpio.write sono già presenti e sono base-thread. Le devo cambiare in servo-thread?

Poi, queste righe le lascio?

Codice: Seleziona tutto

loadrt pwmgen output_type=0
addf pwmgen.update servo-thread
addf pwmgen.make-pulses base-thread
l'ultimo schema è solo per la regolazione della velocità, giusto?

I componenti sono:

1 resistenza 820 ohm + 6 resistenze 4,7 k ohm
2 condensatori da 1mF (da quanti V?)
2 transistor NPN BC337
1 transistor PNP BC327
1 fotoaccoppiatore PC817

per l'avvio invece vale questo schema, giusto?

Immagine

Avatar utente
hellfire39
God
God
Messaggi: 3789
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: Controllo inverter da pwm

Messaggio da hellfire39 » martedì 21 aprile 2020, 17:15

si, la connessione del transistor che hai postato tu, quella con la resistenza messa in diagonale #-o :doubt:

usa gli schemi forniti da ross

P.S. occhio alle unità di misura. Nell'ultimo post hai scritto mF (milliFarad) per i condensatori, ma sullo schema ci sono i microfarad (µF)

Avatar utente
ziociccio
Member
Member
Messaggi: 362
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » martedì 21 aprile 2020, 17:31

perdonami, di elettronica ci capisco poco e niente, sto imparando qualcosa grazie a voi
e poi sono pigro anch' io, mi scocciavo di inserire la µ :mrgreen:

finalmente ho recuperato un vecchio pc e dall'alimentatore ATX ho ricavato 2 condensatori da 1µF 50V, possono andare bene?
Purtroppo tutti gli altri componenti non ci sono, le resistenze forse, ma il resto lo dovrò prendere online.
Hai qualche consiglio? Mi conviene prendere anche un paio di schedine millefori per assemblare il tutto?

grazie a te e Ross

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: Controllo inverter da pwm

Messaggio da ross » martedì 21 aprile 2020, 18:40

Usa i due schemi che ho indicato, quello con solo il fotoaccoppiatore serve per avviare il mandrino e l'altro è il convertitore pwm che andrai a mettere al posto del potenziometro per regolare i giri.
La tensione massima di lavoro del condensatore da 1µF in quel circuito è 16V ma 50V va bene lo stesso. Nella scheda dell'alimentatore ATX dei pc c'è sempre un fotoaccoppiatore, probabilmente ha un'altra sigla e se riesci a trovarlo scrivilo qui, vedo se puoi utilizzarlo altrimenti prendi tutti i componenti dal tuo fornitore abituale.
Un circuito "al volo" è preferibile montarlo in una millefori che poi andrà messo in una scatolina metallica con la carcassa collegata a terra (da non collegare alla massa dei due circuiti) da cui escono solo i fili, effettuerà la schermatura.
I collegamenti tra i componenti vanno sempre fatti molto corti.

Il base_thread serve quando si usa un pc, con la BBB non viene usato in quanto si fa tutto con le due PRU e con il servo_thread.

Le righe qui sotto non servono, si usa le PRU.

Codice: Seleziona tutto

loadrt pwmgen output_type=0
addf pwmgen.update servo-thread
addf pwmgen.make-pulses base-thread
Inserisci le righe di configurazione che ti ho indicato nel post precedente e riguardandolo ho involontariamente inserito due righe che non ti occorrono in quanto non usi i finecorsa, sono quelle contenenti limit1.0 e limit1.1 ma tutto il resto va inserito.

Ross

Avatar utente
ziociccio
Member
Member
Messaggi: 362
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » martedì 21 aprile 2020, 19:01

guarda, non so come ringraziarti per l'aiuto che mi stai dando

domani controllo meglio se c'è il fotoaccoppiatore, ma non mi pare di averlo visto...ma ad ogni modo dovendo prendere altro materiale (millefori etc.) e visto anche il costo contenuto, ordino tutto online

giusto per conferma, prima di fare l'ordine, mi dici se vanno bene?

- Resistenza STRATO CARBONE 4,7 KOhm 2W 2 WATT 5% (dovrebbe essere kOhm)
- Resistenza STRATO CARBONE 820 ohm 1/4W 0,25 WATT 5%
- BC327 Transistor PNP 45V 0,5A TO92
- BC337 Transistor NPN 50V 0,8A 10 TO92
- PC817C EL817C Fotoaccoppiatore Optocoupler 4 Pin

in particolare il fotoaccoppiatore ha queste caratteristiche:

Categoria prodotto: Optoaccoppiatore con uscita a transistore
Package/involucro: PDIP-4
Tipo di uscita: NPN Phototransistor
Numero di canali: 1 Channel
If - Corrente diretta: 5 mA
Tensione collettore-emettitore massima: 80 V
Corrente collettore massima: 50 mA
Tensione di isolamento: 5000 Vrms
Tensione di saturazione collettore-emettitore massima: 0.2 V
Vf - Tensione diretta: 1.4 V
Vr - Tensione inversa: 6 V
Pd - Dissipazione di potenza: 200 mW
Temperatura di lavoro minima: - 30 C
Temperatura di lavoro massima: + 100 C
Configurazione: 1 Channel
Altezza: 3.5 mm
Lunghezza: 4.58 mm
Larghezza: 6.5 mm
Marchio: Sharp Microelectronics
Tensione di rottura collettore-emettitore: 80 V
Stile di montaggio: Through Hole
Rapporto di trasferimento di corrente: 600 %
Tempo di caduta: 18 us
Tipo di prodotto: Transistor Output Optocouplers
Tempo di salita: 18 us
Marca Everlight
Riferimento: 5426-FOX1-398

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: Controllo inverter da pwm

Messaggio da ross » martedì 21 aprile 2020, 19:24

Tutte le resistenze sono a strato di carbone (va bene anche a strato metallico) da 1/4 di Watt (0.25W), non servono da 2W.
Il fotoaccoppiatore è quello, idem per i transistor (TO92 è il contenitore, la grandezza del componente).

Ross

Avatar utente
ziociccio
Member
Member
Messaggi: 362
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » martedì 21 aprile 2020, 20:19

grazie ancora, gentilissimo

Avatar utente
ziociccio
Member
Member
Messaggi: 362
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » giovedì 23 aprile 2020, 17:43

allora, ho realizzato il primo schema e funziona: il mandrino si avvia e si ferma correttamente, a seconda delle istruzioni presenti nei file gcode in machinekit

Immagine

però, purtroppo, ci sono 2 problemi:

1) il mandrino si avvia anche quando spengo la BBB tramite lo shutdown da machinekit: la macchina si spegne e il mandrino riparte. Al momento è ancora collegato il potenziometro esterno... se non è a zero il mandrino riparte

Misurando col tester, c'è continuità sui morsetti in entrata e su quelli in uscita, quindi il circuito CC - F si chiude e il mandrino si avvia. Misurando la tensione ho

avvio bbb, machinekit non avviato, il mandrino (correttamente) è fermo
26DCV sui morsetti uscita (CC - F)
0 DCV sui morsetti in entrata (P4-5 - P4-6)

con machinekit avviato, funziona
avvio mandrino gcode: 26DCV sui morsetti uscita (CC - F)
stop mandrino gcode: 1DCV sui morsetti uscita (CC - F)

questi 26 volt sono normali? Mica possono danneggiare l'inverter?

2) all'avvio di machinekit mi da un hal error:

pin hpg.pwmgen.00.out.00.value is connected to a signal

se commento queste righe funziona

Codice: Seleziona tutto

setp hpg.pwmgen.00.pwm_period       1000000
setp hpg.pwmgen.00.out.00.pin       916
setp hpg.pwmgen.00.out.00.enable    1
setp hpg.pwmgen.00.out.00.value     0.0
setp hpg.pwmgen.00.out.00.scale     1000
potrebbe dipendere dal fatto che qui non è ancora collegato nulla?

questa è la schedina che ho realizzato, perdonate le saldature, ma ho controllato col tester e i collegamenti sono a posto
il fotoaccoppiatore è orientato con la scritta come da schema, non c'erano numeri sui pin ma ho ipotizzato che fossero, partendo dal pin superiore sinistro:

Codice: Seleziona tutto

1 - 4
2 - 3

IMG_20200423_165418.jpg
IMG_20200423_165441.jpg
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login

Avatar utente
ziociccio
Member
Member
Messaggi: 362
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » giovedì 23 aprile 2020, 18:41

riguardo al problema 2 aggiungo qualche dettaglio, se può essere di aiuto: la riga che genera l'errore è solo questa

Codice: Seleziona tutto

setp hpg.pwmgen.00.out.00.value     0.0
nel debug della finestra di errore dopo "signal" sulla riga successiva ci sono

Codice: Seleziona tutto

2415
PID TTY STAT TIME COMMAND
commentandola e avviando machinekit, nella finestra Hal configuration, nell'elenco dei pin è presente la voce 'hpg.pwmgen.00.out.00.value' a cui è assegnato 0.0000... da profano mi sembra tutto a posto
purtroppo non riesco a copiare le voci, se serve provo a fare una foto dello schermo

ho controllato anche il file hal per vedere se a quel pin venivano assegnati altri valori, ma sembra tutto corretto

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: Controllo inverter da pwm

Messaggio da ross » giovedì 23 aprile 2020, 18:57

C'è qualcosa che non mi torna in ciò che hai scritto, il circuito funziona così:
- A macchina spenta (BBB non avviata) non devi avere la tensione di 5V tra Pin5 e Pin4 di P4, quindi il fotoaccoppiatore non può chiudere F con CC e lo devi verificare misurando la tensione tra F e CC, dovrebbe essere circa 24V (26V va bene lo stesso). Attenzione alla polarità, F=+24V CC=0V (massa interna dell'inverter).
- A macchina accesa (BBB avviata) e machinekit avviato non devi avere la tensione di 5V tra Pin5 e Pin4 di P4, quindi inverter non azionato (come sopra)
- A macchina accesa e solo con il comando g-code puoi avviare o fermare il mandrino, non può essere diversamente.

Da come descrivi il funzionamento sembra che l'inverter non è configurato correttamente, verifica il parametro F127 (nel manuale a pagina 13, c'è una tabella) che dovrebbe essere impostato con 0 ("sink" vedi pagina 4).

Se il F127 è settato con 100 devi collegare il fotoaccoppiatore in modo diverso: dove nello schema ho scritto FWD... va collegato a P24 (è il comune a 24V), l'altro terminale che ho indicato con "negativo dell'inverter" va collegato a F ("source" vedi pagina 5).
Qui c'è un breve tutorial su come configurare i parametri, con tanto di video.

Per quanto rigurda l'errore all'avvio di machinekit la cosa migliore è scrivere qui tutto il contenuto del file hal, appena posso te lo verifico.

Ross

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: Controllo inverter da pwm

Messaggio da ross » giovedì 23 aprile 2020, 19:01

Il setp è un comando hal per settare di default un parametro, prova a mettere un # a inizio riga in modo da renderla non eseguita.
Per il pinout del fotoaccoppiatore verifica con l'immagine che ho inserito in questo post.

Ross

Avatar utente
ziociccio
Member
Member
Messaggi: 362
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » giovedì 23 aprile 2020, 21:31

Ti rispondo per punti
C'è qualcosa che non mi torna in ciò che hai scritto, il circuito funziona così:
- A macchina spenta (BBB non avviata) non devi avere la tensione di 5V tra Pin5 e Pin4 di P4, quindi il fotoaccoppiatore non può chiudere F con CC e lo devi verificare misurando la tensione tra F e CC, dovrebbe essere circa 24V (26V va bene lo stesso). Attenzione alla polarità, F=+24V CC=0V (massa interna dell'inverter).
- A macchina accesa (BBB avviata) e machinekit avviato non devi avere la tensione di 5V tra Pin5 e Pin4 di P4, quindi inverter non azionato (come sopra)
- A macchina accesa e solo con il comando g-code puoi avviare o fermare il mandrino, non può essere diversamente.
ho verificato, le tensioni sono esattamente queste e il mandrino si comporta esattamente così.
L'unica differenza è che dopo aver fatto shutdown da machinekit quando la BBB si spegne (i led blu smettono di lampeggiare e la BBB rimane con un led verde acceso) succede questo:

il mandrino si riattiva

In questo stato, misurando direttamente sulla schedina (quindi con tutti i fili collegati)
su P4(-) e P5 (+) ci sono 3,6V
su CC(-) e F (+) ci sono 0,9V

se scollego dalla scheda i fili CC e F che provengono dall'inverter:

misurando direttamente su inverter ai morsetti CC e F: 26 V
misurando su scheda:
morsetti CC e F (senza i fili di cui sopra collegati): -0,003V (notare il segno negativo)
morsetti P4 e P5: 3.6V

questi sono i test... è come se rimanesse una tensione in memoria da qualche parte dopo l'esecuzione di machinekit
perché quando accendo la macchina e non faccio partire MK le tensioni sono ok, cioè il mandrino non si avvia
Per il pinout del fotoaccoppiatore verifica con l'immagine....
si, ho seguito quella posizione dei pin basandomi sulla sigla PC817
Da come descrivi il funzionamento sembra che l'inverter non è configurato correttamente, verifica il parametro F127 (nel manuale a pagina 13, c'è una tabella) che dovrebbe essere impostato con 0 ("sink" vedi pagina 4).
L'inverter è settato F127 = 0, quindi è sink.
Il setp è un comando hal per settare di default un parametro, prova a mettere un # a inizio riga in modo da renderla non eseguita.
Sì, ho fatto così e machinekit si avvia senza problemi
Per quanto rigurda l'errore all'avvio di machinekit la cosa migliore è scrivere qui tutto il contenuto del file hal, appena posso te lo verifico.
questo è il mio file hal

Codice: Seleziona tutto

# #######################################
#
# HAL file for BeagleBone + Panther cape with 3 steppers
#
# Derived from example BeBoPr-Bridge.hal
#
# ########################################

# Launch the setup script to make sure hardware setup looks good
loadusr -w ./setup.bridge.sh


# ###################################
# Core EMC/HAL Loads
# ###################################

# kinematics
loadrt trivkins

# motion controller, get name and thread periods from ini file
# trajectory planner
loadrt tp
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES tp=tp kins=trivkins

# load low-level drivers
loadrt hal_bb_gpio output_pins=914,916,917,918 input_pins=911,913,915,817,923,925,927,926,924,826,912,815,942,818,922,921
loadrt [PRUCONF](DRIVER) prucode=$(HAL_RTMOD_DIR)/[PRUCONF](PRUBIN) [PRUCONF](CONFIG) halname=hpg
loadrt pid count=2
# loadrt limit1 count=2
# loadrt pepper count=1


# Python user-mode HAL module to read ADC value and generate a thermostat output for PWM
# t = Thermistor table (only epcos_B57560G1104 or 1 supported for now)
# a = analog input channel
# loadusr -Wn Therm ./ReadTemp.py -n Therm --num_chan 2 -t 1 1 -a 4 5

# ################################################
# THREADS
# ################################################

addf hpg.capture-position                 servo-thread
addf bb_gpio.read                         servo-thread
addf bb_gpio.write                        servo-thread

addf motion-command-handler               servo-thread
addf motion-controller                    servo-thread
addf pid.0.do-pid-calcs                   servo-thread
addf pid.1.do-pid-calcs                   servo-thread
#addf limit1.0                             servo-thread # FINECORSA
#addf limit1.1                             servo-thread # FINECORSA
addf hpg.update                           servo-thread
# addf pepper.update			  		  base-thread

# ######################################################
# Axis-of-motion Specific Configs (not the GUI)
# ######################################################


# ################
# X [0] Axis
# ################

# axis enable chain
newsig emcmot.00.enable bit
sets emcmot.00.enable FALSE

net emcmot.00.enable <= axis.0.amp-enable-out
net emcmot.00.enable => hpg.stepgen.00.enable


# position command and feedback
net emcmot.00.pos-cmd <= axis.0.motor-pos-cmd
net emcmot.00.pos-cmd => hpg.stepgen.00.position-cmd

net motor.00.pos-fb <= hpg.stepgen.00.position-fb
net motor.00.pos-fb => axis.0.motor-pos-fb


# timing parameters
setp hpg.stepgen.00.dirsetup        [AXIS_0]DIRSETUP
setp hpg.stepgen.00.dirhold         [AXIS_0]DIRHOLD

setp hpg.stepgen.00.steplen         [AXIS_0]STEPLEN
setp hpg.stepgen.00.stepspace       [AXIS_0]STEPSPACE

setp hpg.stepgen.00.position-scale  [AXIS_0]SCALE

setp hpg.stepgen.00.maxvel          [AXIS_0]STEPGEN_MAX_VEL
setp hpg.stepgen.00.maxaccel        [AXIS_0]STEPGEN_MAX_ACC

#setp hpg.stepgen.00.step_type       0
# P8.9
setp hpg.stepgen.00.steppin          0x65
# P8.7 
setp hpg.stepgen.00.dirpin           0x62


# ################
# Y [1] Axis
# ################

# axis enable chain
newsig emcmot.01.enable bit
sets emcmot.01.enable FALSE

net emcmot.01.enable <= axis.1.amp-enable-out
net emcmot.01.enable => hpg.stepgen.01.enable


# position command and feedback
net emcmot.01.pos-cmd <= axis.1.motor-pos-cmd
net emcmot.01.pos-cmd => hpg.stepgen.01.position-cmd

net motor.01.pos-fb <= hpg.stepgen.01.position-fb
net motor.01.pos-fb => axis.1.motor-pos-fb


# timing parameters
setp hpg.stepgen.01.dirsetup        [AXIS_1]DIRSETUP
setp hpg.stepgen.01.dirhold         [AXIS_1]DIRHOLD

setp hpg.stepgen.01.steplen         [AXIS_1]STEPLEN
setp hpg.stepgen.01.stepspace       [AXIS_1]STEPSPACE

setp hpg.stepgen.01.position-scale  [AXIS_1]SCALE

setp hpg.stepgen.01.maxvel          [AXIS_1]STEPGEN_MAX_VEL
setp hpg.stepgen.01.maxaccel        [AXIS_1]STEPGEN_MAX_ACC

#setp hpg.stepgen.01.step_type       0
# P8.8
setp hpg.stepgen.01.steppin          0x63
# P8.10
setp hpg.stepgen.01.dirpin           0x64


# ################
# Z [2] Axis
# ################

# axis enable chain
newsig emcmot.02.enable bit
sets emcmot.02.enable FALSE

net emcmot.02.enable <= axis.2.amp-enable-out
net emcmot.02.enable => hpg.stepgen.02.enable


# position command and feedback
net emcmot.02.pos-cmd <= axis.2.motor-pos-cmd
net emcmot.02.pos-cmd => hpg.stepgen.02.position-cmd

net motor.02.pos-fb <= hpg.stepgen.02.position-fb
net motor.02.pos-fb => axis.2.motor-pos-fb


# timing parameters
setp hpg.stepgen.02.dirsetup        [AXIS_2]DIRSETUP
setp hpg.stepgen.02.dirhold         [AXIS_2]DIRHOLD

setp hpg.stepgen.02.steplen         [AXIS_2]STEPLEN
setp hpg.stepgen.02.stepspace       [AXIS_2]STEPSPACE

setp hpg.stepgen.02.position-scale  [AXIS_2]SCALE

setp hpg.stepgen.02.maxvel          [AXIS_2]STEPGEN_MAX_VEL
setp hpg.stepgen.02.maxaccel        [AXIS_2]STEPGEN_MAX_ACC

#setp hpg.stepgen.02.step_type       0
# P9.15 GPIO1_16
setp hpg.stepgen.02.steppin          0x4C
# P9.23 GPIO1_17
setp hpg.stepgen.02.dirpin           0x4D

# ##################################################
# Standard I/O - EStop, Enables, Limit Switches, Etc
# ##################################################

# Standard inputs
net in0 bb_gpio.p9.in-24 => motion.digital-in-00
net in1 bb_gpio.p8.in-26 => motion.digital-in-01
net in2 bb_gpio.p9.in-12 => motion.digital-in-02
net in3 bb_gpio.p8.in-15 => motion.digital-in-03

# Standard outputs
# net out0 motion.digital-out-00 => bb_gpio.p9.out-14
# net out1 motion.digital-out-01 => bb_gpio.p9.out-16
# net out2 motion.digital-out-02 => bb_gpio.p9.out-17
# net out3 motion.digital-out-03 => bb_gpio.p9.out-18

#######################################################################
# START MANDRINO
# net startVFD motion.spindle-on => bb_gpio.p9.out-14
#######################################################################

#######################################################################
# VELOCITA' MANDRINO
# net spindle-speed-cmd motion.spindle-speed-out => pwmgen.0.value
# net spindle-on motion.spindle-on => pwmgen.0.enable <= bb_gpio.p9.out-14
# net spindle-pwm pwmgen.0.pwm => bb_gpio.p9.out-16

# Set the spindle's top speed in RPM
# setp pwmgen.0.scale 2800

# DA ROSS
net spindle-on motion.spindle-on => bb_gpio.p9.out-14
net spindle-speed-cmd motion.spindle-speed-out => hpg.pwmgen.00.out.00.value

setp hpg.pwmgen.00.pwm_period       1000000
setp hpg.pwmgen.00.out.00.pin       916
setp hpg.pwmgen.00.out.00.enable    1
# setp hpg.pwmgen.00.out.00.value     0.0
setp hpg.pwmgen.00.out.00.scale     1000
# END ROSS

# Il "pwm_period" è la frequenza del pwm, dovrebbe essere 1000Hz 
# (andrebbe misurata con un oscilloscopio per verificarla).
# La riga "setp hpg.pwmgen.00.out.00.pin 916" identifica il pin di uscita dove è 
# disponibile il segnale pwm, 916 significa pin 16 del P9 della BBB 
# che dovrebbe essere il pin 7 del connettore P4 della cape che hai.
# Per accendere il mandrino usi bb_gpio.p9.out-14 ma prima imposti i giri con il pwm.
# Il convertitore non fornisce in uscita un segnale fino a 5V 
# ma leggermente meno a causa della saturazione dei transistor, 
# con il parametro "scale" imposti il limite massimo che ti occorre.
# Il "pwmgen" è la generazione del pwm via software per un pc normale 
# ma dato che hai una BBB, il pwm va generato con le PRU 
# per non appesantire la CPU e non serve altro.



# create a signal for the estop loopback
net estop-loop iocontrol.0.user-enable-out => iocontrol.0.emc-enable-in
# net estop bb_gpio.p9.in-26 => iocontrol.0.emc-enable-in
# setp bb_gpio.p9.in-26.invert 1

# create signals for tool loading loopback
net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed


# home switches

# invert the home input signals
setp bb_gpio.p9.in-11.invert 1
setp bb_gpio.p9.in-13.invert 1
setp bb_gpio.p9.in-15.invert 1
# setp bb_gpio.p8.in-17.invert 1
# setp bb_gpio.p9.in-23.invert 1

# wire the home inputs
net Xhome bb_gpio.p9.in-11 => axis.0.home-sw-in
net Yhome bb_gpio.p9.in-13 => axis.1.home-sw-in
net Zhome bb_gpio.p9.in-15 => axis.2.home-sw-in
# net Ahome bb_gpio.p8.in-17 => axis.3.home-sw-in
# net Bhome bb_gpio.p9.in-23 => axis.4.home-sw-in
grazie

Avatar utente
ziociccio
Member
Member
Messaggi: 362
Iscritto il: domenica 8 marzo 2020, 10:20
Località: Provincia di AV
Contatta:

Re: Controllo inverter da pwm

Messaggio da ziociccio » venerdì 24 aprile 2020, 13:34

Stamattina ho fatto altri test che mi confermano l'ipotesi che sia la Cape a memorizzare la tensione quando la BBB si spegne.
Non so se sia normale, ma a naso mi sembra di no.
Ho cambiato alimentatore (pensando fosse un problema di corrente, sono passato da uno 2A a uno 1A), escluso la schedina che ho collegato ieri, i driver degli stepper, l'inverter etc... tutto quello che poteva interferire a livello elettrico.

ho scollegato tutti i connettori dalla Cape e misurato la tensione direttamente sui pin P4-5 (+) e P4-6 (-) e si comportano in questo modo:

1) accendo la BBB: 0V
2) avvio machinekit: 0V
3) avvio mandrino da machinekit: 5V
4) stop mandrino da machinekit: 0V
5) spengo la BBB tramite il menu shutdown di machinekit:
--- la BBB si spegne, sulla cape resta acceso un led verde
--- la tensione sale a 3,5V che fa ripartire il mandrino quando è collegato tramite la schedina pwm converter

questo capita anche se non avvio machinekit, saltando i passaggi 2, 3, 4
e ho notato che questa tensione c'è anche sugli altri 3 pin di output.

Alla fine ho scollegato anche la cape e ho misurato la tensione direttamente sui pin P9-14 e P9-2 della BBB:

1) accendo la BBB: 0V
2) avvio machinekit: 0V
3) avvio mandrino da machinekit: 3,5V
4) stop mandrino da machinekit: 0V
5) spengo la BBB tramite il menu shutdown di machinekit: 0 / 0,1V

questo capita anche se non avvio machinekit, saltando i passaggi 2, 3, 4
quindi la BBB non credo c'entri, il problema sembra riguardare la Cape

quello che mi suona strano è che all'avvio i pin della Cape hanno 0V, poi quando la BBB si spegne la tensione sale a 3,5V
riaccendendola si resetta a 0
non credo sia normale

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: Controllo inverter da pwm

Messaggio da ross » venerdì 24 aprile 2020, 14:23

Non c'è niente di anomalo, è solo l'alimentazione 5V che alimenta la BBB e la cape che rimane sempre alimentata.
Se spegni la BBB e scolleghi il suo alimentatore il problema sparisce, chi ha sviluppato quella cape ha omesso un particolare che io ritengo fondamentale, in quella che ho sviluppato lo scorso anno l'ho fatto.
Nella BBB c'è un pin che si chiama SYS5V, lì è presente un segnale di controllo (attenzione, è un pin di controllo ma non per alimentare qualcosa, si rischia di danneggiare la BBB) che si utilizza per verificare visivamente con un led e un transistor l'accensione della BBB, in pratica quando è avviata quel pin va a 5V e quando è spenta va a 0V ma la cape prende l'alimentazione da un pin che sta li vicino e dove è sempre presente 5V, anche quando la BBB è spenta.
Appena ho un attimo ti trovo la soluzione ma se già provi a togliere l'alimentazione alla BBB il mandrino si spegne.

Ross

Rispondi

Torna a “Elettronica CNC”