Ciao a tutti.
Sto cercando di realizzare un circuito con un PIC16f84, che mi chiuda il tetto apribile dell'auto quando gli arrivi un determinato segnale.
Praticamente l'auto ha una funzione (funzione comfort), quando tengo premuto a lungo il tasto del telecomando, il computer di bordo manda un determinato segnale ai motorini degli alzavetri, i quali capiscono che devono alzarsi o abbassarsi.
Ora, io ho realizzato un circuito che andrebbe collegato al filo del segnale comfort, e quando riceve quel segnale dovrebbe far partire il tetto apribile.
L'unico prolema è che non conosco che tipo di segnale arriva, sicuramente arrivera qualche bit per l'apertura e la chiusura.
Dato che non ho un'oscilloscopio per poter registrare il segnale, avrei pensato di sfruttare il circuito col PIC per registrare quello che gli arriva nel momento in cui faccio partire la funzione comfort.
Mi potreste aiutare a creare il codice per fare questa funzione, ammesso che sia possibile?
Per farvi capire quello che sto realizzando vi invito a vedere una mia discussione in questo forum
Grazie.
ciao, matteosr
Registrare sequenza di bit con PIC
Moderatore:
Paolino
14 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
0
voti
Io azzardo un paio di ipotesi.
Per la connessione dei dispositivi di periferia alla centralina di controllo, FIAT utilizza un bus di campo e molto probabilmente si tratta di CANBUS. Se vuoi fare un'analisi dettagliata di un pacchetto CANBUS dovresti prima di tutto interporre un driver che sia in grado di interpretare i segnali CANBUS, come ad esempio MCP2515 di Microchip.
L'alternativa è quella di usare dei microcontrollori che integrano il CANBUS come ad esempio questi.
Nel caso invece il dispositivo di cui parli non sia su CANBUS, dovresti quantomeno fornire indicazioni circa la dinamica del segnale. Da lì, con una rete di condizionamento adeguata (qualora i segnali non fossero TTL) si può pensare di leggere il segnale in transito. Certo che senza oscilloscopio è dura...
Ciao.
Paolo.
Per la connessione dei dispositivi di periferia alla centralina di controllo, FIAT utilizza un bus di campo e molto probabilmente si tratta di CANBUS. Se vuoi fare un'analisi dettagliata di un pacchetto CANBUS dovresti prima di tutto interporre un driver che sia in grado di interpretare i segnali CANBUS, come ad esempio MCP2515 di Microchip.
L'alternativa è quella di usare dei microcontrollori che integrano il CANBUS come ad esempio questi.
Nel caso invece il dispositivo di cui parli non sia su CANBUS, dovresti quantomeno fornire indicazioni circa la dinamica del segnale. Da lì, con una rete di condizionamento adeguata (qualora i segnali non fossero TTL) si può pensare di leggere il segnale in transito. Certo che senza oscilloscopio è dura...
Ciao.
Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
0
voti
Faccio presente che in Mikrobasic/MikroC ecc.. il protocollo canbus è implementato in una libreria dedicata.
Occorre scegliere il PIC adatto, sicuramente serie superiore non certo il pic16f84A.
Ciao
Antonio
Occorre scegliere il PIC adatto, sicuramente serie superiore non certo il pic16f84A.
Ciao
Antonio
0
voti
No i motori degli alzavetri non usano il canbus, hanno in più un filo che comanda la funzione comfort.
A questo filo e sempre presente una tensione di 12V, quando tengo premuto a lungo il tasto del telecomando, arriva un impulso a "0" e subito torna a 12, ed i motorini abbassano i vetri; quando lascio il tasto del telecomando arriva un altro impulso a "0" e poi torna a 12V, ed i motorini si fermano.
Purtroppo non avendo un'oscilloscopio, questo segnale l'ho misurato con un multimetro, (un Fluke 189 con funzione di memoria, inutile perché campiona al minimo ogni secondo), e quindi non so di preciso cosa succeda in quell'attimo in cui la tensione va a 0, sicuramente arrivera un dato di qualche bit che non faccio in tempo a leggere col multimetro.
L'idea che mi sono fatto io è che il computer di bordo, tramite quell'uscita mandi un dato ai motorini per farli alzare o abbassare, per esempio;
manda 0101 e i vetri si alzano;
manda 0100 e i vetri si fermano;
manda 0111 e i vetri si abbassano;
e non in logica ttl, credo che 0V sia 0, e 12V sia 1.
Il circuito che ho creato ha un transistor che inverte il segnale del comfort, facendo diventare 0 quando al pin ci sono 12V, e 5V quando c'è 0, così da poterlo adattare alla logica ttl del PIC.
Ora quello che vorrei fare è di registrare il dato che arriva dal cdb tramite il PIC; in poce parole il PIC è sempre in attesa, nel momento in cui il pin d'ingresso cambia stato, inizi a memorizzare da qualche parte tutto quello che succede fin quando non torna nella posizione di riposo. In seguito mi vado a leggere il PIC, e mi ricavo il dato trasmesso.
Non so se sono stato abbastanza chiaro.
Che dite è fattibile?
In alternativa avrei pensato di costruirmi un piccolo datalogger su porta parallela del PC, tramite un adc, e tentare di registrare il dato in questo modo. Può funzionare la cosa secondo voi?
Vi ringrazio.
ciao, matteosr
A questo filo e sempre presente una tensione di 12V, quando tengo premuto a lungo il tasto del telecomando, arriva un impulso a "0" e subito torna a 12, ed i motorini abbassano i vetri; quando lascio il tasto del telecomando arriva un altro impulso a "0" e poi torna a 12V, ed i motorini si fermano.
Purtroppo non avendo un'oscilloscopio, questo segnale l'ho misurato con un multimetro, (un Fluke 189 con funzione di memoria, inutile perché campiona al minimo ogni secondo), e quindi non so di preciso cosa succeda in quell'attimo in cui la tensione va a 0, sicuramente arrivera un dato di qualche bit che non faccio in tempo a leggere col multimetro.
L'idea che mi sono fatto io è che il computer di bordo, tramite quell'uscita mandi un dato ai motorini per farli alzare o abbassare, per esempio;
manda 0101 e i vetri si alzano;
manda 0100 e i vetri si fermano;
manda 0111 e i vetri si abbassano;
e non in logica ttl, credo che 0V sia 0, e 12V sia 1.
Il circuito che ho creato ha un transistor che inverte il segnale del comfort, facendo diventare 0 quando al pin ci sono 12V, e 5V quando c'è 0, così da poterlo adattare alla logica ttl del PIC.
Ora quello che vorrei fare è di registrare il dato che arriva dal cdb tramite il PIC; in poce parole il PIC è sempre in attesa, nel momento in cui il pin d'ingresso cambia stato, inizi a memorizzare da qualche parte tutto quello che succede fin quando non torna nella posizione di riposo. In seguito mi vado a leggere il PIC, e mi ricavo il dato trasmesso.
Non so se sono stato abbastanza chiaro.
Che dite è fattibile?
In alternativa avrei pensato di costruirmi un piccolo datalogger su porta parallela del PC, tramite un adc, e tentare di registrare il dato in questo modo. Può funzionare la cosa secondo voi?
Vi ringrazio.
ciao, matteosr
0
voti
Ciao matteosr.
Direi che, sì, è fattibile. Come detto i segnali vanno adattati alla logica TTL.
Si possono utlizzare due tecniche.
1. Sfruttare l'IOC (Interrupt On Change) che permette di registrare le variazioni del segnale TTL da 0 a 1 e viceversa, unitamente ad un timer che registra i tempi tra una variazione e la successiva.
2. Cambiare PIC e usarne uno con il modulo CCP e configurarlo in modalità CAPTURE per misurare i tempi tra le variazioni di stato del segnale TTL.
Una volta acquisita la sequenza, questa potrebbe essere trasmessa via seriale ad un PC o visualizzata su display LCD.
Ti sono chiare le tecniche?
Ciao.
Paolo.
Direi che, sì, è fattibile. Come detto i segnali vanno adattati alla logica TTL.
Si possono utlizzare due tecniche.
1. Sfruttare l'IOC (Interrupt On Change) che permette di registrare le variazioni del segnale TTL da 0 a 1 e viceversa, unitamente ad un timer che registra i tempi tra una variazione e la successiva.
2. Cambiare PIC e usarne uno con il modulo CCP e configurarlo in modalità CAPTURE per misurare i tempi tra le variazioni di stato del segnale TTL.
Una volta acquisita la sequenza, questa potrebbe essere trasmessa via seriale ad un PC o visualizzata su display LCD.
Ti sono chiare le tecniche?
Ciao.
Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
0
voti
Paolino ha scritto:Si possono utlizzare due tecniche.
1. Sfruttare l'IOC (Interrupt On Change) che permette di registrare le variazioni del segnale TTL da 0 a 1 e viceversa, unitamente ad un timer che registra i tempi tra una variazione e la successiva.
Una volta acquisita la sequenza, questa potrebbe essere trasmessa via seriale ad un PC o visualizzata su display LCD.
Stupidamente credendo che sia stato semplice realizzare il tutto, o già creato e assemblato il PCB del circuito, quindi scarterei l'ipotesi di cambiare PIC, ma vorrei utilizzare lo stesso circuito per registrarmi il dato.
Allego lo schema per rendere l'idea del circuito.

Il pin d'ingresso è RA2 che tramite un transistor npn ho provveduto ad adattare il segnale d'ingresso alla logica ttl, ed ho a disposizione ancora 4 pin (RA0 RA1 RA3 RA4), che potrei collegare alla seriale.
Purtroppo il mio ultimo progetto con i microcontrollori risale a dieci anni fa, e sono abbastanza arrugginito su questo punto, se faccio domande troppo banali perdonami.
Quindi si potrebbe trasferire la sequenza alla seriale di un PC, ma come funziona la cosa?
Cioè dovrei realizzare un programma che mi legga dalla seriale, o esiste già qualcosa?
In alternativa la sequenza potrebbe essere scritta direttamente sul PIC, così poi lo leggo con il programmatore e ottengo il dato?
In definitiva, dovrei leggere 4 sequenze (l'apertura, lo stop apertura, la chiusura e lo stop chiusure), e queste sequenze poi saranno gli input del codice.
Praticamente, quando al PIC gli arriverà una di quelle sequenze dovrà svolgere le funzioni ad essa associate.
Mi daresti una mano a creare il codice per acquisire le sequenze, se non ti crea problemi?
(ovviamente una volta collaudato tutto, nel progetto che sto realizzando oltre agli schemi mettero un file con i credits
dove ci sarà il tuo nome ed il riferimento a questo forum)
Ti ringrazio infinitamente.
Ciao, matteosr
0
voti
Ieri sera sono tornato a casa un po' tardi (e stanco...) quindi ho dato solo una breve occhiata al tuo schema. Purtroppo dall'ufficio non ci riesco (accidenti a questo server!).
Da quel che ricordo ho un paio di osservazioni da fare:
1. ho visto dei relè: ricorda di porre i diodi di libera circolazione che intervengono quando si diseccita la bobina;
2. l'IOC lavora sui pin da RB4 a RB7 mentre l'interrupt del su pin esterno lavora su RB0... Secondo me con il tuo schema non si riesce a combinare la misurazione. Dovresti realizzarne uno ad hoc, magari con un altro PIC.
3. non sappiamo quale siano i tempi di ogni singolo bit trasmesso quindi, ponendo il caso di crearsi uno schema specifico, potresti trovare qualche difficoltà in fase di scelta della Fosc del PIC.
Sostengo vivamente l'ipotesi di impiego di un oscilloscopio. Se non ce l'hai tu, cerca di individuare qualcuno che possa aiutarti a far misure. Poi si potrà tentare di replicare la forma d'onda prevista.
Ciao.
Paolo.
Da quel che ricordo ho un paio di osservazioni da fare:
1. ho visto dei relè: ricorda di porre i diodi di libera circolazione che intervengono quando si diseccita la bobina;
2. l'IOC lavora sui pin da RB4 a RB7 mentre l'interrupt del su pin esterno lavora su RB0... Secondo me con il tuo schema non si riesce a combinare la misurazione. Dovresti realizzarne uno ad hoc, magari con un altro PIC.
3. non sappiamo quale siano i tempi di ogni singolo bit trasmesso quindi, ponendo il caso di crearsi uno schema specifico, potresti trovare qualche difficoltà in fase di scelta della Fosc del PIC.
Sostengo vivamente l'ipotesi di impiego di un oscilloscopio. Se non ce l'hai tu, cerca di individuare qualcuno che possa aiutarti a far misure. Poi si potrà tentare di replicare la forma d'onda prevista.
Ciao.
Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
0
voti
1. ho visto dei relè: ricorda di porre i diodi di libera circolazione che intervengono quando si diseccita la bobina;
Non ci ho proprio pensato, dato che ho già realizzato il PCB, e non mi va di rifarlo, li salderò direttamente sotto ai relè.
Sostengo vivamente l'ipotesi di impiego di un oscilloscopio. Se non ce l'hai tu, cerca di individuare qualcuno che possa aiutarti a far misure. Poi si potrà tentare di replicare la forma d'onda prevista.
Penso che farò proprio così, speriamo che riesca a trovare un laboratorio che mi faccia questo favore.
Ti rigrazio tantissimo per i tuoi consigli.
ciao, matteosr
0
voti
matteosr ha scritto:Penso che farò proprio così, speriamo che riesca a trovare un laboratorio che mi faccia questo favore
Mah, secondo me senza scomodare un laboratorio, puoi trovare qualche hobbista in grado di aiutarti a far misure. Non conosci nessuno nella tua zona?
Ciao.
Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
0
voti
No purtroppo in tutta la mia città (cittadina, siamo 50000 abitanti), credo che solo io ho questo hobby.
Comunque, sto costruendo un'oscilloscopio su porta parallela, con un ADC0820, speriamo che riesca a leggere il segnale con questo.
Ciao, matteosr
Comunque, sto costruendo un'oscilloscopio su porta parallela, con un ADC0820, speriamo che riesca a leggere il segnale con questo.
Ciao, matteosr
14 messaggi
• Pagina 1 di 2 • 1, 2
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 21 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

