Pagina 1 di 4

PIC + Trasmettitore AM

MessaggioInviato: 10 set 2011, 0:58
da devrandom
Salve a tutti.
Sto progettando un telecomando di quelli per i cancelli automatici che lavori a 433MHz.
Ho trovato l'antenna (http://www.quasaruk.co.uk/acatalog/info_QAM_TX1_433.html, economica, semplice da interfacciare ad un PIC), la mia idea è di creare un circuito stampato (non mi interessa che sia piccolo e portatile, tanto lo faccio per motivi di studio), con un PIC con il quarzo e i suoi condensatori, il trasmettitore (basta una strip di 4 pin femmina per attaccarlo), un regolatore di tensione, uno switch on-off, un totale di 6 led (power, 4 led accesi uno per volta che indicando quale cancello è selezionato correntemente (si effettua lo switch tra i cancelli con un pulsantino), un LED di cui vi spiegherò dopo l'utilizzo), un pulsante per lo switch tra i cancelli, uno per aprire il cancello.

Mi sorgono dubbi su varie cose, anche perché è il mio primo progetto in cui utilizzo un PIC (infatti prima d'ora avevo utilizzato solo microcontrollori della Atmel).

Quale PIC mi consigliate? Tutto quello che deve poter fare è avere almeno 7 uscite digitali (6 per i led, 1 per la comunicazione con l'antenna), un paio di entrate per i due pulsantini, e deve anche potersi utilizzare un oscillatore esterno dato che senza la dovuta precisione nell'oscillazione la comunicazione con l'antenna potrebbe risultare problematica.

Poi: quale regolatore di tensione mi consigliate? La corrente consumata è davvero poca, 22mA dall'antenna (mentre trasmette, 11mA a riposo), e poi la corrente consumata dal PIC che mi consiglierete. L'ideale sarebbe un regolatore che accetta 6V e li trasforma in 5V, che io sappia i PIC vogliono 5V in entrata, o mi sbaglio? L'antenna ha bisogno di poco, 1.5-5V, quindi se esiste un PIC che lavora a meno di 5V (magari a 3V, così uso due AA o due AAA e risparmio anche il regolatore) è meglio.

Il famoso LED menzionato sopra serve a una funzione che permette di trasmettere tutti i numeri a 12 bit, cosa che permette potenzialmente di aprire tutti i cancelli con ricevitore a 433MHz. Non voglio rubare biciclette, è solo per studio :D una volta capito come comunicare con l'antenna l'implementazione di questa funzione dovrebbe essere semplice.

Ultima cosa: il PIC deve comunicare con l'antenna a 1000 baud, ma io di comunicazione seriale proprio non me ne intendo. Esiste un codice già scritto per comunicare tramite un pin del PIC ad una velocità prestabilita (in questo caso 1000baud)? Il codice in questione dovrebbe permettere di inviare 12 bit esatti, fino ad ora tutti gli esempi che ho trovato inviano solo char (8 bit) e inviare 16 bit di cui solo 12 sono utili diventa problematico, dato che il cancello si apre quando riceve per 3 volte la sequenza dei 12 bit... Quindi il cancello non si aprirebbe.

Ricapitolando: quale PIC mi consigliate (min. 7 output + 2 input, possibilmente alimentabile a 3V, che supporti un oscillatore esterno)? Se non esiste un PIC che lavora 3V, quale regolatore di tensione mi consigliate? Ultima cosa: come posso inviare esattamente 12 bit all'antenna?

Grazie.

Re: PIC + Trasmettitore AM

MessaggioInviato: 10 set 2011, 12:26
da crestus
perché non usi le batterie al litio? sono già da 3V e sono estremamente poco ingombranti :ok:

comunicazione seriale di che tipo? per inviare esattamente 12bit puoi implementare da te il protocollo di trasmissione, tanto più che è un progetto specifico....

per il microprocessore ti consiglierei un 16F per la potenza di calcolo richiesta ridotta al minimo....Moltissimi PIC digeriscono alimentazioni fino a 2V.. inltre esistono i modelli siglati XLP (extreme low power) che possiedono caratteristiche di sleep profondo fino a consumare correnti dell'ordine dei microampere.
Su due piedi così ti potrei proporre questo: PIC16F1847 che è il primo della lista ordinata per numero di uscite ad essere siglato come XLP.

inoltre a riposo lantenna che ti serve accesa? perché non usi un'uscita per darle/toglierle corrente con un MOS?


ci sono anche gli rfPIC... non me ne sono mai informato... ma portrebbero fare al caso tuo... :ok:

Re: PIC + Trasmettitore AM

MessaggioInviato: 10 set 2011, 14:10
da devrandom
Ciao, per il PIC mi sono portato avanti e ho scelto un 16F505, può andare bene? Ho visto he consuma molto poco e ha abbastanza pin di I/O. Inoltre lo faccio funzionare a 3V insieme all'antenna.
Per la comunicazione con la trasmittente, non posso realizzare un mio protocollo, devo comunicare a 1000 baud in questo modo:
Immagine
Quindi per ogni bit impiego un millisecondo, se è uno il pin data per 2/3 di ms resta a 0 e per 1/3 resta a 1, se è zero per 1/3 resta a zero e per 2/3 resta a 1. O almeno è quello che ho capito. Infatti la mia difficoltà è proprio questo, capire come implementare la comunicazione con la trasmittente. So che il PIC ha una libreria chiamata mi pare "delay" che permette di fare una pausa di tot ms che si regola automaticamente a seconda della frequenza di oscillazione del PIC. Ma non sono sicuro, è il mio primo progetto con il PIC.
Per il resto penso di aver risolto, mi manca solo questa cosa... Come inviare 12 bit alla trasmittente alla velocità di 1000 baud.
Ho trovato questo articolo (http://www.ognigiorno.com/2009/03/08/come-funzionano-i-telecomandi-dei-cancelli.html), dove tra l'altro viene utilizzata la mia stessa trasmittente e più o meno si parla della stessa cosa che voglio fare io, ma non capisco il funzionamento del codice...

Re: PIC + Trasmettitore AM

MessaggioInviato: 10 set 2011, 23:44
da devrandom
In attesa della risposta mi sono portato avanti. Ho disegnato con FidoCadJ un possibile circuito per il mio progetto.
Potrebbe funzionare?

Immagine

Ecco il source del circuito, così è più comodo da modificare. Non ho usato il tag fcd perché mancavano alcuni simboli e alcune scritte...
Link al source

Re: PIC + Trasmettitore AM

MessaggioInviato: 11 set 2011, 0:17
da devrandom
Nello schema manca il collegamento al trasmettitore.

Re: PIC + Trasmettitore AM

MessaggioInviato: 11 set 2011, 12:19
da devrandom
Forse ho capito come funziona il codice di ognigiorno.com...
Ho scritto la mia versione dato che la sua non mi piaceva per niente. Che ne dite? Può andare? Una cosa: cos'è INIT_PORT?

Codice: Seleziona tutto
...

void TxBits(void bits, int nbits);
void InitTx(void);
void EndTx(void);

...

bit bits[12] = {1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1};
int i;

InitTx();
for (i = 0; i < 3; i++) TxBits(bits, 12);
EndTx();

...

void TxBits(bool bits [], int nbits)
{
   INIT_PORT;
   do
   {
      TxData = 0;
      delay_2Us(165);
      if (bits[nbits])
         TxData = 0;
      else
         TxData = 1;
      delay_2Us(164);
      TxData = 1;
      delay_2Us(165);
   } while (--nbits);
}

void InitTx(void)
{
   TxData = 1; 
   delay_2Us (165);
   TxData = 0; 
}

void EndTx (void)
{
   TxData = 0;
   DelayMs(10);
}

Re: PIC + Trasmettitore AM

MessaggioInviato: 11 set 2011, 14:21
da crestus
Beh... io intendevo proprio il fatto di creare te il codice per comunicare con il modulo...come farlo sta a te...

i delay possono essere una soluzione... oppure puoi crearteli te...uilizzando cicli for con valori opportuni...


detto questo mi sembra che i valori dei tuoi delay non rispecchino i tempi 1/3-2/3

sei sicuro?

Re: PIC + Trasmettitore AM

MessaggioInviato: 11 set 2011, 16:26
da devrandom
Il codice è adattato dal link che ho postato prima. E comunque il codice rispetta i tempi! Calcola bene, anche io all'inizio non capivo come quel codice poteva funzionare, poi ho preso la calcolatrice e in effetti i numeri sono giusti.
C'è qualche microsecondo in meno, ma a 1000 baud qualche microsecondo non fa la differenza... Infatti all'autore dell'articolo originale funziona correttamente.

Re: PIC + Trasmettitore AM

MessaggioInviato: 12 set 2011, 0:43
da crestus
mmm sì.. ho riguardato... ed in effetti va solo ad impostare il terzo centrale per ogni bit...avevo guardato con poca attenzione...

se il codice funziona sei a cavallo... :D


INIT_PORT è una funzione (in teoria.... anche se così com'è scritta non lo è...) che raggruppa tutte le impostazioni di configurazioni delle porte iniziale: quali ingressi quali uscite e così via...


alcune domande per migliorare il progetto: hai pensato a introdurre delle istruzioni per gestire la funzione di sleep? la batteria durerà più a lungo.. ed è inutile che giri il 99,99% del tempo a vuoto....
visto che il modulo invia soltanto... perché non lo spegni come ti avevo suggerito? un MOS (per la caduta di tensione minima che introduce...) e risparmi anche gli 11mA che per una batteria non sono proprio pochi...
anche ridurre il ciclo di clock potrebbe diminuire i consumi...

p.s. invece di mettere il footprint dell PIC fai un rettangolo con i pin utilizzati numerati e via..;) è più leggibile ed elegante ;) (bravo comunque ad aver utilizzato Fidocadj! :ok:

Re: PIC + Trasmettitore AM

MessaggioInviato: 12 set 2011, 8:31
da devrandom
Si, buona idea, seguirò i tuoi consigli, soprattutto quello di spegnere l'antenna mi sembra ottimo :P

Oggi primo giorno di scuola! Quando torno rifaccio lo schema. Per il footprint, non ho fatto apposta, era il mio primo utilizzo di FidoCadJ :-P Bel programma!