Mondan Postat Martie 23, 2014 Partajează Postat Martie 23, 2014 Urmatoare schema: In locul celor 2 tranzistori sa folosesc amplificatorele operationale din PIC. Pot fi folosite astfel ? Personal am PIC16F684. Sa fi montajul mai simlu. Apoi va fi extins la o telecomanda in ultrasunete. Inteleg ca asta ar merge din orce pozitie. Link spre comentariu
UDAR Postat Martie 23, 2014 Partajează Postat Martie 23, 2014 Schema nu va fi mult mai simplă. Scapi de tranzistori dar ai nevoie oricum de rezistențe și condensatoare. în plus , trebuie să verifici disponibilatatea pinilor. Oooops ! PIC16F684 NU are amplificatoare operaționale ! Link spre comentariu
Mondan Postat Februarie 11, 2015 Autor Partajează Postat Februarie 11, 2015 Bun hai sa luam PIC12F675 Eu zic ca operationalul are o amplificare mult mai mare decat tranzistorii aia, chiar daca ii faci darlington. In prima schema data ca model sunt doua etaje succesive si primul etaj are si o rezistenta de histerezis (colecrtor emitor direct), care din ce am lucrat mareste mult amplificarea. Receptorul/difuzorul ala piezzo e deja un filtru pentru frecv inalte. Problema e daca poate fi folosit operationalul integrat. E trecurt in datasheet drept comparator nu operartional. Dar are pini exrternipentru IN+, IN- si COUT. Poti sa-i pui o rezistenta (rezistor) pe reactie ? Link spre comentariu
sofian Postat Februarie 11, 2015 Partajează Postat Februarie 11, 2015 NU nu am vazut PIC,ATMEL cu operational in el, numai comparatoare Link spre comentariu
Mircea Postat Februarie 12, 2015 Partajează Postat Februarie 12, 2015 De exemplu, 16F1707 are 2 opamp rail-to-rail. Evident, folosirea lor reduce numarul de IO.Am ales unul cu numar cat mai mic de pini pentru aplicatia simpla a lui Dan. Nu exista in familia 12F nici unul cu opamps.Ca de obicei, Dan e "pionier" in idei; sincer ii urez spor la munca. Link spre comentariu
Vezi Muti Postat Februarie 12, 2015 Partajează Postat Februarie 12, 2015 in familia 24F exista PIC-uri care permit configurarea comparatoarelor ca Op Amp. Link spre comentariu
UDAR Postat Februarie 12, 2015 Partajează Postat Februarie 12, 2015 Comparatorul din PIC poate fi , în principiu, folosit ca OA în aceleași condiții în care se poate folosi un comparator normal - reacție negativă nu prea adâncă și/sau asigurarea unei rețele de compensare externe. Unele comparatoare din microcontrolere au însă histerezis intrinsec ceea ce complică lucrurile. Specificațiile fabricanților sunt destul de sumare deci e mult de testat - ajustat , nu știu dacă merită. Pur și simplu, dacă minimizarea numărului de componente contează și nu se cere un OA colosal, se folosește un PIC care are inclus așa ceva. Link spre comentariu
validae Postat Februarie 12, 2015 Partajează Postat Februarie 12, 2015 (editat) Dacă vrei sensibilitate mare ș reducerea numărului de componente, de ce nu pui ca preamplificator un operațional discret, fiindcă necesită puține componente externe și poți obține o amplificare foarte mare ? Spațiul ocupat va fi mai mic decât al celor două tranzistoare și rezistențele aferente. Editat Februarie 12, 2015 de validae Link spre comentariu
Mondan Postat Februarie 12, 2015 Autor Partajează Postat Februarie 12, 2015 <de ce nu pui ca preamplificator un operațional discret, fiindcă necesită puține componente externe> Nu cunosc astfel de operationale care se gasesc usor. Eu folosesc TL071 dar nu cred sa merge bine la tensiune asa mica. Ele merg uzual la +/-15V adica 30V.. Acum eu pot alimenta PIC-ul de la 2xR6 ceea ce inseamna 3V. Nu stiu daca ar merge bine la tensinea asta. Pot cumpara in prezent de la: http://www.elforum.info/topic/95799-integrate-tdaxxxx-st-mivarom-preturi-dubios-de-ieftine-care-i-faza/ Daca stiti vre un astfel de integrat nu ezitati sa-mi spuneti. Prin posta sa comand nu prea-mi permit. N-ar avea rost o comanda minima de 25RON pentru un integrat ieftin. Nu pot comanda mai multe o data, deorece le comand pe parcurs ce discut cu voi si le testez. Link spre comentariu
validae Postat Februarie 12, 2015 Partajează Postat Februarie 12, 2015 (editat) Un exemplu ar fi LM386 care funcționează de la 4V și are o bandă de frecvențe până la 300kHz. În fișă se specifică faptul că poate fi folosit ca driver ultrasonic.http://www.ti.com/lit/ds/symlink/lm386.pdf Editat Februarie 12, 2015 de validae Link spre comentariu
UDAR Postat Februarie 12, 2015 Partajează Postat Februarie 12, 2015 Daca stiti vre un astfel de integrat nu ezitati sa-mi spuneti. MCP6xx , de exemplu MCP601/602 , MCP6271/6272, MCP6281/6282, etc. Se găsesc , printre alții , la TME și Comet. Dacă ești din București , Comet are magazin acolo. Link spre comentariu
Mondan Postat Februarie 17, 2015 Autor Partajează Postat Februarie 17, 2015 Si totusi cred ca se poate gandi o aplificare astfel: 1. Semnalul de intrare in PIC este dreptunghiular. PIC-ul nu face decat sa masoare o frecveneta. La simulare mi-a dat ceva de acest gen. E aiurea. trebuia sa am dreptunghi la iesire. Un montaj de acest gen vreau sa incerc. Pentru cei care spun ca ma exprim neclar - Uite proiectul de la care am plecat(pus in primul post): http://www.talkingelectronics.com/projects/Elektor/Whistle/Whistle-1.html -The program detects the signal from the diaphragm and only processes a waveform that falls in the 2kHz region. MMM Cred a merge si in simulare incercat. In loc de semnalul pe piezzo intentionez sa pun in Proteus un generator de semnal. Acest generator poate reda in simulare si un fisier audio, o inregistrare. Link spre comentariu
Mondan Postat Februarie 21, 2015 Autor Partajează Postat Februarie 21, 2015 Deci,la acest punct aveti linkul: http://www.talkingelectronics.com/projects/Elektor/Whistle/Whistle-1.html <The program detects the signal from the diaphragm and only processes a waveform that falls in the 2kHz region.> Neclara putin exprimarea. Sa vedeam in continuaere; <A 2kHz signal has a period of 1,000,000 / 2,000 = 500uS>. Daca 1KHz "este" 1mS, logic e jumate <The period of a waveform is the time taken to travel from the 0v level to the maximum (positive), then to the max negative> 0V->5V->0V <This means the time when the signal will be HIGH will be 250uS and 250uS for a LOW.> Asta sa grosolan, daca nu ai alt sunet decat fluierul. Ambianta sonora super claera. <The signal will create a HIGH on the pin.> Deci este o intare digitala, asta vor sa zica <We create a very short-duration loop to look for a HIGH and when it is detected, we delay nearly 250uS and see if it is still HIGH.>ok <we look for a LOW > aici iarasi neclar ce fac ei - astepta partea LOW dar cum ? are conditie de iesie din delay ...? < This is the Interrupt Service Routine > Cu intreruperi.... nu-mi pace deloc! Start org 0x00 ;program starts at location 000 goto SetUp nop nop ;NOPs to get past reset vector address org 4 goto isr nopSetUp movlw 07h ;Set up W to turn off Comparator ports movwf CMCON ;must be placed in bank 0 goto Main ;Main ;Delays _25uS movlw .7 movwf temp1 decfsz temp1,1 goto $-1 retlw 00 _130uS movlw .45 movwf temp1 decfsz temp1,1 goto $-1 retlw 00 _250uS movlw .84 movwf temp1 decfsz temp1,1 goto $-1 retlw 00 _100mS movlw .100 movwf temp2 nop decfsz temp1,1 goto $-2 decfsz temp2,1 goto $-4 retlw 00 _250mS movlw 0FFh movwf temp2 nop decfsz temp1,1 goto $-2 decfsz temp2,1 goto $-4 retlw 00 ;interrupt service routine isr nop decfsz timer,1 ;creates 1 min delay to let you know it is on. goto Main1 movlw 03 movwf count goto sss Main Deci ei definesc niste delay-uri constante, programul incepe la Main iaer intrreruperea la isr aa call _25uS btfss GPIO,2 ;Is input HIGH? Start with a HIGH goto aa bb call _250uS btfss GPIO,2 ;Is input LOW? goto cc goto aa ;freq too low cc call _250uS btfsc GPIO,2 ;Is input LOW? goto dd goto aa ;freq too lowdd incf count,1 goto bb 1. Asteapta ca intrarea sa fie HI- bucla infinita, 2. Astapata 250us. Daca dupa asta e LO continua, daca nu o ia de la inceput, 3. Astapata inca 250us. Daca dupa asta e HI continua, daca nu o ia de la inceput, 4. Incrementeaza cont si sare la 2. Fara nicio sincronizare nimic. Ciclul pare infinit, daca intreruperea nu il scoate de aici. Daca cineva vrea sa ma ajute cu descrierea intereruperi il rog sa screie. Intentionez sa scriu acest soft fara intreruperi. La intrerupere se executa; isr nop decfsz timer,1 ;creates 1 min delay to let you know it is on. goto Main1 movlw 03 movwf count goto sss ; e doaer buzzereul aiciMain1 bcf PIE1,0 ;,0 0=disables TMR1 interrupt bcf T1CON,0 ;disable timer1 bsf status,rp0 ;Bank 1 bCf INTCON,7 ;disable all unmasked interrupts bcf INTCON,5 ;disables TMR0 interrupt bcf status,rp0 ;bank 0 swapf count,1 rrf count,1 ; rrf count,1 ;only use top 2 bits movlw b'00000011' andwf count,1 ;max 4 beeps movf count,1 btfsc status,z ;z flag will be SET if file is zero goto Main;Cu urmatoarele serari din Main:bsf status,rp0 ;Bank 1 movlw b'00100100' ;Set GP2 input GP5 input movwf TRISIO movlw b'10010100' movwf OPTION_REG ; x000 0000 x=1= weak pull-ups disabled ; 0x00 0000 INTDEG Don't care ; 00x0 0000 x=0 = internal instruction clock ; 000x 0000 Count on falling edge - don't care ; 0000 x000 0=prescaler assigned to timer0 ; 0000 0xxx = 111 = 1:128 x100=1:32 bcf status,rp0 ;bank 0 bcf GPIO,4 call _100mS ;(settling time) movlw b'10100000' ;b'10100000' movwf INTCON ;,0 1=GP0,5 interrupt flag ;,1 1=GP2 interrupt occurred ;bcf INTCON,2 ;1=TMR0 overflowed. Clear overflow flag ;bcf INTCON,3 ;1=enable GPIO port change interrupt ;bcf INTCON,4 ;1=enable GP2 external interrupt ;bsf INTCON,5 ;1=enable TMR0 overflow (interrupt) ;bcf INTCON,6 ;1=enable all peripheral interrupts ;bsf INTCON,7 ;1=enable all unmasked interrupts bcf INTCON,5 ;0=disables TMR0 interrupt bsf INTCON,6 ;1=enable all peripheral interrupts movlw b'00010101' ;b'00110001' movwf T1CON ;,7 not used ;,6 0=Timer1 is ON ;,5,4 11=8 prescale (max) 01=1:2 ;,3 bit ignored ;,2 This MUST BE SET!!!!!! ;,1 0=int clock ;,0 1=enable timer bsf status,rp0 ;Bank 1 bsf PIE1,0 ;,0 1=enables TMR1 interrupt bcf status,rp0 ;bank 0 bcf PIR1,0 ;clear TMR1 overflow flag clrf TMR1L ;clear the Timer1 low register clrf TMR1H ;clear the Timer1 high register clrf count ;count the number of cycles ;Timer0 is not used ; will go to isr when overflow occurs in TMR1 ;0.13 sec when prescaler=1:2 131,072uS ;input is LOW when no audio detected. Intrebarea e asa: De cate ori repeta ciclul ala 1.2.3.4. datorita intreruperii ? Credeti ca e cea mai buna varianta de algoritm cum au scris ei, sau se poate si altfel ? Link spre comentariu
Mondan Postat Februarie 21, 2015 Autor Partajează Postat Februarie 21, 2015 O simulare in Proteus. Am marcat intrarea in procedura amintita prin GP0 comutat putin. Ies vro 250 de ciclui din frecveta aia de 2KHz numarate. Probabil timmerul ala numara 256 si iese din 'procedura' cand 'se da peste cap". 256*500uS=256/2mS=125mS cat trebuie sa fluieri nimim. Preoblema este abaterea de la frecventa 2K, deoarece nu se resincronizeaza la aceasta numarare. Deci 250uS abatere totala maxima la 256 de cicluri=> 1us per ciclu abatere maxima 500uS=2KHz 501uS=1.996KHz E ceva exagerat aici. Poate sa fi gesit undeva si va rog sa ma corectati. N-ai cum sa fluieri exact pe frecventa aia cuo abatere asa de mica. Link spre comentariu
Mondan Postat Februarie 21, 2015 Autor Partajează Postat Februarie 21, 2015 http://www.learningelectronics.net/circuits/whistle-responder-schematic-circuit.html Aici reusec sa faca filtere din unitati logice cu reactie: Si astea au iesirea in 0 si 1 - da' au reactie. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum