tgb99 Inserito: 17 luglio 2006 Segnala Share Inserito: 17 luglio 2006 Buon giorno a tuttivorrei, per cortesia, sapere se qualcuno usa microcode studio per programmare i pic: se si vorrei inviare un listato (programma) per verificarne la correttezza in qunato ho dei problemi relativi alla comunicazione seriale tra due o più pic.Mi spiego meglio: ho motorizzato le tapparelle di casa ed ho inserito, per ciascun motore, un pic opportunamente programmato per eseguire varie funzioni. Salita, discesa, fermata, memoria1, memoria2 e trasmissione di un codice (per esempio una "o") per dire agli altri pic (tapparelle) di alzarsi, abbassarsi, fermarsi, andare alla memoria1 o alla memoria2 ecc.Il problema è che usando lo stesso piedino per ingreso s eriale ed uscita seriale, a volte va in tilt tutto il sistema, anche se è quasi impossibile che due pulsanti di due tapparelle diverse vengano premuti contemporaneamente!!Questo problema si verifica saltuariamente, ma quando inizia, i relè cominciano a vibrare con il rischi di compromettere il motore della tapparella che non costa proprio poco!Se qualcuno ha esperienza in questo ed è disponibile, invierei schema elettrico e listato del programma.GrazieCiao TGB Link al commento Condividi su altri siti More sharing options...
rfabri Inserita: 18 luglio 2006 Segnala Share Inserita: 18 luglio 2006 Il tuo circuitino lo stai provando su una breadboard o lo stai provando già sul campo?perchè potrebbero essere solo dei disturbi da filtrare oportunamente,BYE. Link al commento Condividi su altri siti More sharing options...
tgb99 Inserita: 18 luglio 2006 Autore Segnala Share Inserita: 18 luglio 2006 ciao rfabriil mio circuito lo sto già provando sul campo: in effeti sul banco prova funziona tutto a meraviglia!!Ma è possibile che dei disturbi possano far impazzire un pic? Per esempio il motore della tapparella parte da solo oppure il relè cominciano ad azionarsi alternativamente ecc.... ogni volta qualcosa di nuovo ed anche un blocco totale che impedisce qualsiasi comando esterno (sono costretto a resettare).Questi fatti mi accadono solo se collego il cavetto per la comunicazione seriale tra i pic. Se non ti scoccia dai un'occhiata al listato:include "modedefs.bas"up var PORTA.1 ' pin 18 salita uscitadown var PORTA.0 ' pin 17 discesa uscitasi con 4 ' seriale in ingresso pin 10so con 4 ' seriale in uscita pin 10sw1 var PORTA.2 ' pulsante su pin 1 salitasw2 var PORTA.3 ' pulsante su pin 2 stosw3 var PORTA.4 ' pulsante su pin 3 discesasw1a var PORTB.0 ' pulsante su pin 6 memoria 1sw2a var PORTB.1 ' pulsante su pin 7 stopsw3a var PORTB.2 ' pulsante su pin 8 memoria 2cnt var PORTB.3 'input conta impulsi su pin 9 (b3)n var Word 'contatore per impulsist var Byte 'stato : 0 = discesa 1 = salitapos var Word 'posizione in movimentoa var Byteb0 var ByteZ var Byten1 var Word 'memoria 1n2 var Word 'memoria 2a1 var Byte'read 1,n1.byte0 :read 2,n1.byte1 'in caso di mancanza corrente'read 3,n2.byte0 :read 4,n2.byte1 'lettura posizione e memoria'read 5,pos.byte0 :read 6,pos.byte1 'loop:Low up: Low downIf sw2 = 0 And sw1 = 0 And sw1a = 0 Then n1 = pos ':write 1,n1.byte0:write 2,n1.byte1:pause 450 ' memoria 01If sw2 = 0 And sw1 = 0 And sw3a = 0 Then n2 = pos ':write 3,n2.byte0:write 4,n2.byte1:pause 450 ' memoria 03If sw2a = 0 Then Serout so, n2400, ["o"] 'tx stop generaleIf sw2 = 0 Then loopIf sw1 = 0 Then High up: st = 1: Gosub timer 'sw1 premutoIf sw3 = 0 Then High down: st = 0: Gosub timer 'sw3 premutoIf sw1a = 0 Then n = n1: Goto memo1 ' richiamo memo1If sw3a = 0 Then n = n2: Goto memo1 ' richiamo memo2Serin si, n2400, 5, loop, b0 'rx comandoIf b0 = "s" Then High up: st = 1: Gosub timer 'rx comando per descesaIf b0 = "d" Then High down: st = 0: Gosub timer 'rx comando per salitaIf b0 = "o" Then loopIf b0 = "1" Then n = n1: Goto memo1 ' rx comando memo1If b0 = "2" Then n = n2: Goto memo1 ' rx comando memo2Goto looptimer:'disable interrupta1 = cntFor a = 1 To 25 ' timer 1 unità = 1 secondoFor Z = 1 To 200If sw1a = 0 And a < 2 Then Serout so, n2400, ["s"] 'tx comando salitaIf sw2 = 0 Then Goto loopIf sw3a = 0 And a < 2 Then Serout so, n2400, ["d"] 'tx comando discesaIf cnt <> a1 Then Gosub incSerin si, n2400, 5, timer_rx, b0If b0 = "o" Then loop 'rx comando stoptimer_rx:Next ZNext aIf st = 0 Then pos = 10 'riposizionamento del controllo "pos" a zeroGoto loopmemo1:a1 = cntIf pos > n Then st = 0: High downIf pos < n Then st = 1: High upFor a = 1 To 25 ' timer 1 secondo = 1 unitàFor Z = 1 To 200If sw1 = 0 And a < 2 Then Serout so, n2400, ["1"] 'tx comando memo1If sw3 = 0 And a < 2 Then Serout so, n2400, ["2"] 'tx comando memo2If pos = n And a > 2 Then Goto loopIf sw2 = 0 Then Goto loopIf cnt <> a1 Then Gosub incIf st = 0 And pos = < n Then Goto loop ' fine memoIf st = 1 And pos = > n Then Goto loop ' fine memoIf sw2a = 0 Then Serout so, n2400, ["o"]Serin si, n2400, 5, timer_memo1, b0If b0 = "o" Then Goto loop 'rx comando stoptimer_memo1:Next ZNext aGoto loopinc:If st = 1 Then pos = pos + 1 'incremento in salitaIf st = 0 Then pos = pos - 1 'decremento in discesaa1 = cntpause 15ReturnSono quasi intenzionato a mollare tutto!!! boh!Eppure 3 tapparelle con questo sistema funzionano egrtegiamente ( in verità anche a loro ogni tanto capita di bloccarsi o di fare qualche "bizza" e non so il perchè).Grazie in anticipo Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 18 luglio 2006 Segnala Share Inserita: 18 luglio 2006 Ma è possibile che dei disturbi possano far impazzire un pic? Link al commento Condividi su altri siti More sharing options...
tgb99 Inserita: 18 luglio 2006 Autore Segnala Share Inserita: 18 luglio 2006 CIao LivioGrazie come al solito per i consigli; in effetti ho trascurato non poco l'hardware del circuito: ho costruito il tutto su una basetta 1000 fori con collegamenti a filo nella facciata inferiore..... puoi immaginare la non professionalità. Tuttavia ritengo che il circuito sia valido: ho inserito dei condensatori da 47000 pF all'ingresso di ogni pulsante, ho usato cavetti schermati per tutti i collegamenti ed ho usato due bc547 per pilotare i due relè.L'alimentazione proviene da un alimentatore stabilizzato 12v. con conversione mediante Ua 7805 a bordo del circuito.A quanto pare devo ricominciare da zero.Provo ad allegare lo schema elettrico.Ciao e grazie TGB Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 19 luglio 2006 Segnala Share Inserita: 19 luglio 2006 Separa l'alimentazione del micro da quella dei relè, ponendo un filtro pigreco (C-L-C) prima del 7805. Metti anche dei filtri soppressori in parallelo alle bobine dei relè e cura che non ci siano accoppiamenti sulle alimentazioni e sulle masse. Tieni due comuni separati: uno 0v per il micro ed un altro per la potenza (relè); poi fai convergere i due zeri in un unico punto di massa.Sono solo l'ABC ma forse bastano per risolvere i tuoi problemi Link al commento Condividi su altri siti More sharing options...
tgb99 Inserita: 20 luglio 2006 Autore Segnala Share Inserita: 20 luglio 2006 Ancora una volta Grazie LivioProvvederò a mettere in pratica i tuoi consiglio; penso che ci metterò un po' di tempo perchè, praticamente, devo rivedere tutto lo stampato (posizionamento componenti e piste ramate), tuttavia appena avrò risultati sarà mia premura comunicarlo a tutti i componenti del forum.Grazie ancora ciao TGB Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 21 luglio 2006 Segnala Share Inserita: 21 luglio 2006 a grandi linee , di dolito si usa separare i circuiti di 24 V proveniente da e per il campo dai circuiti TTL.Puoi usare degli optoisolatori per tenere separate le masse del circuito dalle masse del campo .Poi si usa anche filtrare gli ingressi con reti RC per ovviare agli inconvenienti di antirimbalzo dei pulsanti e disturbi simili .Per gli optoisolatori devi leggerti i datasheet e verificare le correnti di saturazione , e si usa mettere dei diodi in serie agli ingressi 24 V e resistenza in parallelo per avere certezza che i foro transistorall'interno degli optoisoltori non scattino per soglie minime .Insomma ci sono un sacco di cosucce da fare e verificare , non da grandi scienziati , ma credo da persone con esperienze e conoscenze abbastanza approfondite.ciao walter Link al commento Condividi su altri siti More sharing options...
tgb99 Inserita: 22 luglio 2006 Autore Segnala Share Inserita: 22 luglio 2006 Grazie Walterper quanto riguarda diodoi e rete rc sui pulanti per i rimbalzi di contatto, ho già provveduto con successo e non ho problemi, mentre per il discorso optoisolatori su ingressi o uscite digitali ho già avuto modo di usarli quindi non penso di avere problemi particolare; una cosa però non ho ancora pensato come risolvere: io uso un piedino del pic come ingresso e uscita seriale (il software lo commua durante il programma in outo oppure in a seconda delle esigenze); come faccio a collegare uno o due optoisolatori (tipo per es. 4n25) su un solo piedino che funziona come in-out? non ci sono "cortocircuiti"?Ti chiedo un chiarimento: cosa significa "tenere separate le masse del circuito dalle masse del campo" ?Grazie ancoraCIao tgb Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 22 luglio 2006 Segnala Share Inserita: 22 luglio 2006 (modificato) Ti chiedo un chiarimento: cosa significa "tenere separate le masse del circuito dalle masse del campo" ? Modificato: 22 luglio 2006 da Livio Orsini Link al commento Condividi su altri siti More sharing options...
tgb99 Inserita: 22 luglio 2006 Autore Segnala Share Inserita: 22 luglio 2006 (modificato) mille grazie Liviocome al solito i tuoi consigli e le tue spiegazioni sono esaurienti!Ho già messo in pratica quanto mi hai scritto: ho usatoun optoisolatore in ingresso per il segnale proveniente dal motore (nel mio caso mi da la posizione della tapparella) e già cosi il circuito iniziava a funzionare correttamente. In seguito ho isolato le due masse del circuito facendole confluire poi in un solo punto (per provare ho usato un trasformatore toroidale che avevo con due avvolgimenti in uscita: uno a 8 volt che ho usato per alimentare il pic con 5 volt in uscita da un 7805; l'altro avvolgimento da 15 volt che ho usato per pilotare i relè con un 7812 come stabilizzatore.Per quanto riguarda l'uscita seriale (che è anche un ingresso) non ho seguito il tuo consiglio in quanto ho problemi di spazio (la schedina è posta dentro una scatoletta murata biticino con sei pulsanti sulla mascherina della stessa) ma funziona tutto a dovere! Probabilmente i disturbi arrivavano dall'alimentazione e dall'ingresso di controllo della tapparella.Per riassumere: ho inserito un optoisolatore in ingresso al segnale di controllo, ho separato le masse delle due alimentazioni e, infine, ho semplicemente schermato con più cura i cavi e curato un po' meglio il cablaggio avendo cura di tenere abbastanza distanti tra loro cavetti che portano il segnale seriale e fili a 220 volt.Sono molto soddisfatto grazie a tutti per i consigli, ora devo costruire altre 5 schede come questa per completare l'impianto di casa quindi collegare il tutto fra loro!! speriamo bene!CIao e grazie ancore Modificato: 22 luglio 2006 da tgb99 Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 22 luglio 2006 Segnala Share Inserita: 22 luglio 2006 Sono felice per teche hai risolto, sembra, i tuoi problemi. Sono anche felice perchè hai postato i risultati del lavoro, purtroppo non sempre accade.Descrivere i risultati e le modifiche apportate è un'importante forma di trasmissione dell'esperioenze che arricchisce tutti i partecipanti. Link al commento Condividi su altri siti More sharing options...
tgb99 Inserita: 22 luglio 2006 Autore Segnala Share Inserita: 22 luglio 2006 Se posso cerco di rendere le mie esperienze un bene di comune condivisione (nel mio piccolo)!!!!!grazie e buon week end Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora