Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

FET logic level, azionamento solenoide tramite PIC.

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

0
voti

[11] Re: FET logic level, azionamento solenoide tramite PIC.

Messaggioda Foto UtenteLelettrico » 23 gen 2012, 19:08

Sono happy, ti ricordo ancora come con Fidocadj e' piu' semplice per il forum lavorare sugli schemi postati.
Sono direttamente editabili essendo il sorgente embedded nel post.
Ad esempio come nel tuo caso dove vedo un errore (o orrore) nello schema che proponi, sarebbe stato utilissimo avere lo schema in FidocadJ.
Se lo fai cosi' non funzionera' mai con il Gate e Source di Q1 entrambi a massa ... ma penso che tu lo abbia visto di tuo ... :?: :?: :?:
Avatar utente
Foto UtenteLelettrico
2.458 1 4 6
Master
Master
 
Messaggi: 1108
Iscritto il: 13 set 2010, 12:24

5
voti

[12] Re: FET logic level, azionamento solenoide tramite PIC.

Messaggioda Foto Utentelallax » 24 gen 2012, 0:24

lelettrico, grazie della nota, ho ridotto lo schema da uno precedente e ho fatto confusione, vista l'ora tarda chiedo conferma... è questo il modo esatto?

Ne approfitto per fare un po' di pratica con FidoCad, se ho fatto tutto giusto è veramente veloce, complimenti!
Avatar utente
Foto Utentelallax
25 3
 
Messaggi: 25
Iscritto il: 23 gen 2012, 11:09

0
voti

[13] Re: FET logic level, azionamento solenoide tramite PIC.

Messaggioda Foto UtenteLelettrico » 24 gen 2012, 0:36

Mi sembra tutto OK, bello e veloce col FidocadJ . :ok:
Adesso un altro lo puo' caricare in locale e facilmente editarlo. Per il momento io lascerei come e' per vedere se funziona. E dovrebbe ... se il programma pilota il tutto correttamente.
O_/
PS: rivedi C7 che c'e un piccolo refuso da copy paste
E ... attenzione alla tensione di lavoro di C9, non hai snubber e quindi la tensione puo' diventare molto elevata a seconda di cosa fara' il programma. :!:
Avatar utente
Foto UtenteLelettrico
2.458 1 4 6
Master
Master
 
Messaggi: 1108
Iscritto il: 13 set 2010, 12:24

0
voti

[14] Re: FET logic level, azionamento solenoide tramite PIC.

Messaggioda Foto UtenteIsidoroKZ » 24 gen 2012, 0:49

Toh, uno schema comprensibile :) complimenti!

Qualche osservazione. Con i valori di resistenze R7, R3 ed R5, la tensione del boost rischia di salire fino a 40V o anche molto oltre. A che tensione e` previsto che lavori?

Il solenoide quanta corrente consuma e a che tensione deve lavorare? Q1, se dello stesso tipo di Q2, potrebbe essere troppo grande per essere pilotato direttamente dal micro, che ha solo poche decine di milliampere di corrente di uscita. La commutazione e` sicuramente lenta e potrebbe dissipare parecchio. A che frequenza lavora Q1?

Mi sembrava che parlassi anche di una alimentazione a 3V: con quella potrebbe essere impossibile accendere i MOS: quello che bisogna guardare non e` la tensione si soglia, ma la tensione a cui conduce corrente elevata.
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

0
voti

[15] Re: FET logic level, azionamento solenoide tramite PIC.

Messaggioda Foto Utentelallax » 24 gen 2012, 2:32

Delineo il funzionamento che ho in testa, sperando di rispondere ai Vs dubbi: in grossa parte mi ha aiutato nello schema un utente di un forum straniero che lavora ad una applicazione simile, e di quello che mi ha passato non sono sicuro di aver capito tutto.

L'oscillatore interno del PIC lavora a 4mhz. La pila 12V alimenta L1, quando il Gate di Q1 è innalzato dal PIC, la batteria si dovrebbe trovare in cortocircuito con la massa, tranne che per L1 che comincia a caricarsi: ma prima che raggiunga la saturazione e diventi un cortocircuito, Q1 taglia l'alimentazione. Quindi L1 può solo caricare C9. R3 manda un feedback al PIC pin6 proporzionale alla corrente in C9. Il comparatore del PIC serve ad accendere e spegnere l'impulso a Q1 mantenendo il livello di corrente desiderato.

Nel mio caso ho due solenoidi di diverse dimensioni, il più grande richiede 16Volt, il più piccolo 32Volt. Via programma posso settare il limite a 8V-16V-24V-32V.

Il boost dovrebbe essere quello che chiamo SMPS(Q1, L1, D2, C9): per massimizzare la vita della pila, e visto che il solenoide ha un duty cycle ridottissimo, e distanziato di circa 45secondi tra una scarica e la seguente, genero un impulso di 9ms, corrente istantanea 210ma, medio 25ma il ciclo di carica del condensatore può durare qualche secondo a vantaggio della durata della pila.

Il solenoide è questo, primo della lista da 4,9 ohm a 20C*:
http://docs-europe.electrocomponents.co ... 650706.pdf
lavora abbondantemente sotto l'1% di duty cycle, quindi posso spingerlo a 32V.

Vorrei valutare l'alimentazione a 3V tramite pila bottone cr2032, con il solenoide che lavora attorno ai 16V, per questioni di ingombro del circuito; non ho idea di quanti cicli possa fare. Sempre per questioni di ingombro mi permetterebbe di togliere U1, C1 e C2, e credo di poter togliere anche R1 lasciando a R5, R7 R3 il compito di scaricare il condensatore una volta spento il circuito, credo in un paio di minuti.

Spero di non aver detto troppe imprecisioni, e indirizzato altri consigli/domande.
Grazie e buonanotte.
Avatar utente
Foto Utentelallax
25 3
 
Messaggi: 25
Iscritto il: 23 gen 2012, 11:09

0
voti

[16] Re: FET logic level, azionamento solenoide tramite PIC.

Messaggioda Foto Utentelallax » 24 gen 2012, 9:59

Mi sono accorto che qui sopra stanotte ho fatto confusione da corrente e tensione... :oops: non posso più modificare il messaggio.. :oops:

Il primo schema da cui ho derivato il mio è questo, Q1 e Q2 sono Fet normali, non logic level, quindi U3 funge da tramite perché l'uscita del PIC non ce la farebbe ad azionarli.
Lo schema qui sotto dovrebbe essere la replica fedele di un prototipo che ho assemblato e funziona, ricavando una tensione per C9 fino a 150V partendo da una pila 9V.
Cercando una board di dimensioni più limitate l'idea era di cambiare Q1 e Q1 con dei logic level per togliere la parte relativa al FET driver, e successivamente con la pila 3V togliere anche U1, C1, C2.

Avatar utente
Foto Utentelallax
25 3
 
Messaggi: 25
Iscritto il: 23 gen 2012, 11:09

3
voti

[17] Re: FET logic level, azionamento solenoide tramite PIC.

Messaggioda Foto UtenteLelettrico » 24 gen 2012, 11:20

Direi che essendo il 4427 non invertente dovrebbe andare ancora tutto come hai previsto, cioe' senza toccare il programma del micro.
Come faceva notare Foto UtenteIsidoroKZ la corrente in uscita dal micro potrebbe essere insufficiente.
Il 4427 ha la capacita' di caricare e scaricare 1000 pF in 25 nS :!: Cioe' siamo a Ipk typ di 1.5 A :!:

Aggiungerei che occorre verificare cosa succede al pin del micro nella fase di bootstrap (quando accendi). Se la tensione per un qualche motivo resta alta piu' del dovuto (per un tempo non controllato e lungo) rischi di cuocere il MOS. La resistenza di pull down nel secondo schema non farebbe male anche nel primo.
Riguardo al solenoide ACH! bella bobinazza ... ma qui penso stia a te ...

Comunque l'idea che hai non e' balzana, si puo' fare, ma attenzione alle criticita' nascoste. Punto focale la tensione di lavoro del boost che deve essere assolutamente tenuta sotto controllo e secondo la corrente massima del micro che potrebbe essere poca per pilotare il gate del MOS logico. Tutto sommato il secondo schema e' migliore, fin qui penso non ci siano dubbi. Nell'ottica di ridurre i costi, ottica prettamente industriale, la soluzione che sempre vince e' quella a minor costo. O_/
Avatar utente
Foto UtenteLelettrico
2.458 1 4 6
Master
Master
 
Messaggi: 1108
Iscritto il: 13 set 2010, 12:24

0
voti

[18] Re: FET logic level, azionamento solenoide tramite PIC.

Messaggioda Foto Utentelallax » 24 gen 2012, 11:29

Il solenoide dello schema originale è piazzato a 300V perché deve essere al di sopra di ogni debolezza, va in un sistema che non deve essere toccato dall'utente finale e deve rimanere lì per una decina di anni buoni. inizialmente per la stessa applicazione era usato un condensatore da 180V sfruttato sempre al limite ed è sempre stato quello che cedeva per primo.

Il secondo schema è migliore e finora funziona senza problemi.
Ma l'evoluzione è far stare tutto in una board 30x40mm, per 15mm di altezza max dei componenti. Anche SMD, e considerando che ci deve stare anche la pila 12V lo spazio è veramente risicato. Da qui gli studi per ridurre parti, e cambiare alimentazione verso una Cr2032.
La di lavoro del boost è sotto controllo tramite PIC, me lo fate notare tutti evidentemente qualcosa mi sfugge perché mi sembrava la cosa più semplice, visto come si può giostrare via software/trimmer.

comunque, per quanto riguarda le possibilità del PIC verso Q1 e Q2, presto detto, quando mi arrivano i componenti saldo e provo! :D
Avatar utente
Foto Utentelallax
25 3
 
Messaggi: 25
Iscritto il: 23 gen 2012, 11:09

0
voti

[19] Re: FET logic level, azionamento solenoide tramite PIC.

Messaggioda Foto Utentelallax » 24 gen 2012, 13:24

Segnalo che continuo a prendere fischi per fiaschi, sopra ho confuso solenoide con condensatore ecc... ecc... :oops:
Avatar utente
Foto Utentelallax
25 3
 
Messaggi: 25
Iscritto il: 23 gen 2012, 11:09

0
voti

[20] Re: FET logic level, azionamento solenoide tramite PIC.

Messaggioda Foto Utentelallax » 27 gen 2012, 9:15

Non funziona purtroppo.... per adesso l'ho assemblato con la breadboard, dal circuito sopra con una batteria 9 V ottengo circa 6VOLT sul condensatore C9, nessun segno di vita dal led.
Il programma che ho flashato sul PIC è questo sotto, semplificato al massimo, si limita a caricare fino a VRCON 0xa3, circa 24 V, la scarica è azionata da S2 sul pin4 (chiusura switch), il pin 3 resta vuoto: non nego che ci potrebbe essere qualche errore ma spero di no.

Oggi farò l'ovvia prova di reinserire un TC4427A come da schema più completo per vedere se il problema sono i MOS F12N10L che ho usato, oppure cambio mosfet e vado in cerca di 2N7000 che dovrebbe essere sempre logic level o comunque funzionare sicuramente con il TC4427A.

Codice: Seleziona tutto
;File: Programma senza switch di sicurezza.asm January 2012
;Configuration Settings::::::
;Oscillator: Internal RC No Clock
;Watchdog Timer: Off
;Power Up Timer: On
;Master Clear Enable: Internal
;Code Protect: Off
;Daa EE Read Protect: Off
;Brown Out Detect: BOD and SBOREN disabled
;Internal External Switchover Mode: Disabled
;Monitor Clock Failsafe: Enabled
;Configuration code: 38C4
;PIC Pinouts:
;Pin Function Use
;1 Vdd
;2 GP5 Output, default high; LED bring low to turn on
;3 GP4 Output, low, unused
;4 GP3 Input, Switch
;5 GP2 Input, PWM out to SMPS FET, becomes output
;6 GP1 Input, High V feedback
;7 GP0 Output, low, Pulse to fire FET
;8 Ground
;TMR0 used for firing pulse period
;TMR1 used for half second timing loop for flashing LED
;TMR2 used for PWM
LIST P=12F683
__config 38C4
ERRORLEVEL -302 ;stop TRIS warning message
TMR0 EQU H'0001' ;Bank 0
PCL EQU H'0002'
STATUS EQU H'0003'
GPIO EQU H'0005'
INTCON EQU H'000B'
PIR1 EQU H'000C'
TMR1L EQU H'000E'
TMR1H EQU H'000F'
T1CON EQU H'0010'
TMR2 EQU H'0011'
T2CON EQU H'0012'
CCPR1L EQU H'0013'
CCP1CON EQU H'0015'
CMCON0 EQU H'0019'
ADRESH EQU H'001E'
ADCON0 EQU H'001F'
OPTIONREG EQU H'0081' ;Bank 1
TRISIO EQU H'0085'
PR2 EQU H'0092'
VRCON EQU H'0099'
ANSEL EQU H'009F'
RP0 EQU H'0005' ;Status Register Bank Select flag
Z EQU H'0002' ;Status Register Zero flag
DC EQU H'0001' ;Status Register Digit Carry flag
C EQU H'0000' ;Status Register Carry flag
Period EQU .35 ;PWM period
DutyL EQU .9 ;PWM duty length
Flags EQU 0x20 ;Program flags
DutyVal EQU 0x21 ;Duty value for PWM
PeriodVal EQU 0x22 ;Period value for PWM
Counter1 EQU 0x23 ;General purpose counter
#define TMR2F PIR1, 1 ;Timer2 interrupt flag, used on PWM
#define TMR1F PIR1, 0 ;Timer1 interrupt flag, used for half second timing loop
#define TOIF INTCON, 2 ;Timer0 interrupt flag, used for firing pulse period
#define TMR2ON T2CON, 2 ;Timer2 on bit
#define PWMComp CMCON0, 6 ;Comparator flag (COUT) high if capacitor is charged
#define LED GPIO, 5 ;LED Port
#define Switch GPIO, 3 ;Low when breech switch is closed; High when open
#define FireFET GPIO, 0 ;Fire pulse to FET controlling solenoid
#define ChargedFlag Flags, 0 ;1=Charge level reached; 0=charge level not reached
#define PWMFlag Flags, 1 ;1=PWM on, 0=PWM off
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
org 0x00
Setup
bcf STATUS,RP0 ;GO TO Bank 0
clrf GPIO ;Make all pins low
bsf STATUS,RP0 ;GO TO Bank 1
clrf ANSEL ;Make pins digital
movlw 0xa3 ;Set comparator internal reference
movwf VRCON
movlw b'00001110'
movwf TRISIO ;Set I/O per table above
movlw b'10000010' ;GPIO pullups disabled
movwf OPTIONREG ;TMR0 on internal clock and 8:1 prescale
bcf STATUS,RP0 ;GO TO Bank 0
movlw b'00010100'
; 0 unused
; 0 Output bit, ready only;
; 0 unused
; 1 invert output as Cin+ is reference
; 0 No effect
; 100 Cin- analog; Cin+ and Cout digital
movwf CMCON0 ;Turn on comparator
;Configure PWM and start based on documentation sequence
bcf STATUS,RP0 ;GO TO Bank 0
clrf CCP1CON
clrf TMR2
bsf STATUS,RP0 ;GO TO Bank 1
bsf TRISIO, 2 ;Set P1A input for PWM in
movlw Period
movwf PR2 ;Set PWM period
bcf STATUS,RP0 ;GO TO Bank 0
movlw b'00001100' ;Configure PWM
; xx ;P1A output; other PxA pins are I/O
; xx ;Leave count 2 low bits 0
; xxxx ;Set mode to PWM
movwf CCP1CON
movlw DutyL
movwf CCPR1L ;Set duty cycle
bcf TMR2F ;Clear timer2 interrupt flag
bsf TMR2ON ;Turn Timer2 on
btfss TMR2F ;Wait for interrupt flag to set
goto $-1
bsf STATUS,RP0 ;GO TO Bank 1
bcf TRISIO, 2 ;Set P1A input for PWM out
bcf STATUS,RP0 ;GO TO Bank 0
clrf CCPR1L ;Default PWM to off
clrf Flags ;Default flags to clear
movlw 0x35
movwf T1CON ;Set Timer1 on; prescale 8:1
;MAIN LOOP MAIN LOOP MAIN LOOP MAIN LOOP MAIN LOOP
NextShot ;Start of Loop for each shot
bsf LED ;Leave LED off
ChargeProcess
call ChargeLoop ;Call process to control PWM
btfsc ChargedFlag ;If charged light LED
bcf LED ;Based on flags turn on LED
btfsc Switch ;Test for switch push to fire
goto ChargeProcess ;Back to start of loop
TriggerFire ;Firing sequence; button read as pushed
clrf CCPR1L ;Turn off PWM
bsf LED ;Turn off LED as trigger is firing
bsf FireFET ;Power up firing solenoid
movlw 0x00 ;Set timer for pulse period
movwf TMR0 ;Set up for firing pulse period
bcf TOIF ;clear timer rollover flag
btfss TOIF ;Loop until timer rolls over
goto $-1
bcf FireFET ;Stop firing pulse
ButtonRelease
bcf ChargedFlag ;Clear 'gun is charged' flag
btfss Switch ;Test trigger is pulled
goto $-1 ;Continue loop until trigger is open
goto NextShot
;MAIN LOOP MAIN LOOP MAIN LOOP MAIN LOOP MAIN LOOP
;Manages charging the cap. PWMComp is high voltage feedback state from comparator.
ChargeLoop
btfss PWMComp ;High means capacitor is charged-so turn off
goto PWMOn ;Low means cap needs charge--so turn on
PWMOff ;Turn or keep PWM off
btfss PWMFlag ;Test flag to see if following has been done
return ;Don't repeat following steps so return
clrf CCPR1L ;Clear duty cycle value of PWM
bcf PWMFlag ;Clear flag to show PWM is off
bsf ChargedFlag ;PWM turned off because gun is charged
return
PWMOn ;Turn or keep PWM on
btfsc PWMFlag ;Test flag to see if following has been done
return ;Don't repeat following steps
movlw DutyL
movwf CCPR1L ;Set duty cycle
bsf TMR2ON ;Turn Timer2 on to start PWM
bsf PWMFlag ;Set flag showing PWM is active
return
End
Avatar utente
Foto Utentelallax
25 3
 
Messaggi: 25
Iscritto il: 23 gen 2012, 11:09

PrecedenteProssimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 79 ospiti