semplice tx-rx onde convogliate

ciao,

come spesso accade, per poter attivare dei carichi o c'=E8 un bel "filo"

( tra centralina e apparato) o un collegamento RF con i moduli TX-RX.

Cercavo un modo pi=F9 casereccio per utilizzare le onde convogliate, senza scomodare x-10, modem su power line , etc...

Cercando in rete ho trovato pochi esempi tra cui quello di filrub.

Il concetto "sembra" semplice. Riporto la sua spiegazione... [=2E..] Il principio di base =E8 sovrapporre alla tensione di rete (f=3D50 Hz) un segnale a frequenza elevata (160 KHz) e ampiezza limitata (100-200 mV).

Questo segnale si propaga in tutto l'impianto elettrico di casa ed =E8 quindi "disponibile" in ogni presa. Se stabilisco che la condizione di "uno logico" equivale al segnale a

160 KHz presente e la condizione di "zero logico" equivale al segnale non presente posso allora trasmettere dei dati digitali attraverso l'impianto elettrico, e posso far comunicare tra loro diversi dispositivi posti in stanze diverse senza dover tirare nuovi fili. [=2E..] Da qui l'idea di usare un PIC per ridurre ulteriormente la componentistica. Diciamo che non =E8 necessario comunicare con un rs232 sulla linea, ma =E8 sufficiente scambiare qualche byte (ovvio che =E8 serializzato !) senza troppi controlli sull'esito di trasmissione e ricezione. Il pic avrebbe un comportamento standard che, con l'aggiunta di qualche

componente esterno, dovrebbe poter essere utilizzato in modo facile e veloce ogni

qualvolta si necessita di una "comunicazione" su linea elettrica. Ad esempio (prendendo spunto dal dtmf decode 8870) alcuni pin potrebbero svolgere le seguenti funzioni: RA2=3D dato pronto: se in scrittura il dato =E8 pronto per essere inviato se in lettura il dato =E8 pronto per essere letto RA3=3D read/write: se 0 il PIC si mette in ascolto sulla linea, se 1 il pic scrive RB0-RB3 =3D cifra letta (diciamo di inviare un dato a 4 bit) RB4=3D output su linea elettrica RB5=3D input da linea elettrica

All'interno del PIC =E8 controllato il valore di RA3 (read/write) e mi metto nella proc di lettura o scrittura. Il clock del PIC16f88 =E8 8Mhz quindi 1 istruzione dura 0.5 us. Con questo clock riesco a generare frequenze tra 150kHz (6.6us) e

166KHz(6us) che sono in linea con quanto letto in materia di frequenze utilizzate per la linea elettrica.

Per comodit=E0 il tempo di bit lo imposto a 250*6us=3D1.5ms Il mio pacchetto da inviare (nell'ordine LSB-MSB) sar=E0 quindi una cosa

del tipo: SAAAADDDDP quindi 10 bit: S=3D bit di start =3D sempre 1 A=3D bit di indirizzo (diciamo per far comunicare pic differenti sulla linea) D=3D bit di dato P=3D bit di stop =3D sempre 1 totale 15ms, pi=F9 o meno...

Il circuito allegato =E8 ispirato a quanto gi=E0 visto. Q1 dovrebbe generare il burst (livello 1 del bit) e spararlo sulla linea elettrica tramite TR1 (che su consiglio di filrub =E8 un wb1010)

R3,L1 e C1 effettuano un ottimo filtro (sempre consigliato da filrub) sulla rete (forse per frequenze sui 166kHz sarebbe merglio 92uH), quindi il segnale viene raddrizzato e Q2 ricostruisce il livello 0/1.

Dato che sono alle prime armi e lo schema =E8 puramente teorico, cosa suggerite ?

1) non =E8 possibile usare un solo "trasformatore" ? 1=2E1) anch'io penso di si, ma in che modo ? 2) quali sar=E0 l'ampiezza del segnale in ricezione ? 3) forse =E8 meglio amplificarlo ? (la semplicit=E0 dello schema per=F2 si

va a far benedire)

Scusate se non posto subito lo schema in fidocad, ma se volete ho quello di eagle.

formatting link

P=2ES: un grazie a chi mi ha aiutato nel progetto precedente

formatting link
,

con tanta pazienza:

Allego un prototipo di codice in basic.

Define CONF_WORD =3D 0x2f18 Define CONF_WORD_2 =3D 0x3ffc Define CLOCK_FREQUENCY =3D 8

Symbol pin_dp =3D RA2 Symbol pin_rw =3D RA3 Symbol pin_out =3D RB4 Symbol pin_in =3D RB5

Dim val_lettura As Bit Dim val_scrittura As Bit Dim val_datook As Bit Dim val_datonook As Bit Dim val_livelloon As Bit Dim val_livellooff As Bit

Dim valorepin As Bit Dim i As Byte Dim j As Byte Dim cifra As Byte Dim indirizzo As Byte Dim pacchetto As Word Dim appo As Word

'--------- inizio programma

val_lettura =3D 0 val_scrittura =3D 1

val_datook =3D 1 val_datonook =3D 0

val_livelloon =3D 0 val_livellooff =3D 1

OSCCON =3D 0x70 'internal 8mhz clock OPTION_REG =3D 0 AllDigital ANSEL =3D 0 TRISA =3D 0 TRISB =3D 0

TRISB.5 =3D 1 TRISA.3 =3D 1

mainloop:

If pin_rw =3D val_lettura Then Gosub main_lettura Endif

If pin_rw =3D val_scrittura Then Gosub main_scrittura Endif

Goto mainloop End burst: 'circa 1.5 ms i =3D 250 '--bit time While i 0 pin_out =3D 1 i =3D i - 1 ASM: nop pin_out =3D 0

Wend

'--bit time end Return no_burst: '1.5 ms di silenzio a 8mHz pin_out =3D 0 For i =3D 1 To 250 ASM: nop ASM: nop ASM: nop Next i

Return attendi_mezzobit: '0.75 ms di pausa a 8mHz For i =3D 1 To 125 ASM: nop ASM: nop ASM: nop Next i Return attendi_unbit: '1.5 ms di pausa a 8mHz For i =3D 1 To 249 ASM: nop ASM: nop ASM: nop Next i Return

main_lettura: 'ricevo prima il bit meno significativo pin_dp =3D val_datonook If TRISA.2 0 Then ' se non ero in lettura ' mi predispongo per l'output TRISA.2 =3D 0 TRISB =3D TRISB And 0xf0 RB =3D RB And 0xf0 Endif appo =3D 0

'in ricezione attendo di sentire un 1 While pin_in =3D val_livellooff ASM: nop If pin_rw =3D val_scrittura Then Goto finelettura Endif Wend ' dopo , mi sincronizzo con ' il centro del segnale ' e ricevo 9 bit sucessivi Gosub attendi_mezzobit For j =3D 1 To 9 Step 1 Gosub attendi_unbit appo =3D ShiftRight(appo, 1) valorepin =3D pin_in If valorepin =3D val_livelloon Then appo =3D appo Or 0x0100 Endif Next j Break 'l ultimo deve essere un 1 If appo.8 =3D 1 Then appo =3D appo And 0x00ff cifra =3D appo.LB cifra =3D cifra And 0xf indirizzo =3D appo.LB indirizzo =3D ShiftRight(indirizzo, 4) PORTB =3D PORTB Or cifra pin_dp =3D val_datook Endif finelettura:

Return main_scrittura: 'mando prima il bit meno significativo If TRISA.2 1 Then 'se non ero in scittura ' mio predispongo TRISA.2 =3D 1 TRISB =3D TRISB Or 15

Endif pin_out =3D 0 'attendo l'indicazione di dato pronto While pin_dp =3D val_datonook ASM: nop If pin_rw =3D val_lettura Then Goto finescrittura Endif

Wend cifra =3D PORTB And 15 'il "pacchetto" =E8 composto ' da primi4 bit indirizzo ' secondi 4 bit cifra ' preceduti da un 1 e seguiti da un 1 pacchetto =3D cifra pacchetto =3D pacchetto + (indirizzo * 16) pacchetto =3D ShiftLeft(pacchetto, 1) pacchetto.0 =3D 1 pacchetto =3D pacchetto And 0x01ff pacchetto =3D pacchetto Or 0x0200

appo =3D pacchetto For j =3D 1 To 10 Step 1 Break If appo.0 =3D 1 Then Gosub burst Else Gosub no_burst Endif appo =3D ShiftRight(appo, 1)

Next j=20 finescrittura:=20

Return

Reply to
merco
Loading thread data ...

Di scomodare X10. La teoria e' bella ma quello che trovi in linea e' un'altra cosa. Ormai trovi tonnellate di info su X10, direi che vale la pena dargli un'occhiata e compararla con quanto hai descritto. Alla fine non e' molto dissimile, X10 lo butti tranquillamente su un PIC, e' standard, trovi attuatori a tonnellate, ecc. ecc. ecc.

IMHO c'e' sempre un certo fascino a riscoprire l'acqua calda, ma anche un po' di praticita' a volte non fa male :-)

C'ya Steve

--
Genius may have its limitations, but stupidity is not thus handicapped.
Elbert Hubbard (1856 - 1915)
Reply to
Stefano Bodini

quindi dici che in questo caso, "farsi la pasta in casa", non =E8 cos=EC utilie ?

Tu hai "scomodato" x10 ?

Stefano Bodini ha scritto:

Reply to
merco

No, dico di non ignorare X10 visto che fa la stessa cosa che hai descritto te, e' bene o male uno standard e trovi molto materiale. Se tu avrssi progettato qualcosa di totalmente diverso come concetto, sarebbe stato un altro discorso.

Si' ma non e' quello il punto. E non ti sto nemmeno dicendo di mollare quello che hai fatto, tuttaltro. Solo di integrare quanto hai fatto alla luce dei problemi che affronteresti, problemi che X10 ha comunque risolto. Non c'e' nulla di male a vedere come altri hanno risolto dei problemi.

C'ya Steve

--
Genius may have its limitations, but stupidity is not thus handicapped.
Elbert Hubbard (1856 - 1915)
Reply to
Stefano Bodini

in effetti =E8 piuttosto simile. Una domanda: mi sembra di aver capito che in x10 il dato viene ripetuto pi=F9 volte: =E8 proprio necessario ? E se in fase di ricezione se ottengo dei dati diversi, scarto tutto ?

ciao

Reply to
merco

Diciamo che non basta nemmeno a garantire la ricezione corretta. Il dato e' ripetuto due volte ma su linee disturbate non passa lo stesso.

Dipende dalla tua scelta. In X10 si' il dato e' ignorato. Direi che almeno a buon senso, se non capisci cosa devi fare la politica migliore e' non fare. Quindi meglio ignorare un comando che arriva errato piuttosto che attivare il carico sbagliato. Se prevedi un feedback puoi eventualmente richiedere una ritrasmissione ma i tempi aumentano a dismisura, tanto magari da richiedere 4 o 5 secondi per portare a termine un comando.

C'ya Steve

--
Genius may have its limitations, but stupidity is not thus handicapped.
Elbert Hubbard (1856 - 1915)
Reply to
Stefano Bodini

Ciao Se vuoi un esempio pratico, ne mostra uno Nuova Elettronoca, Ha il vantaggio di essere fatto con componenti di facile reperibilita' anche se per questo usa frequenze piu' alte del solito (455 Khz), Per fare delle prove semplici, basta un oscillatore modulato in frequenza (NE555) come trasmettitore, Il ricevitore e' un po' piu' complesso, per via del necessario filtraggio ,ma non e' niente di speciale. Io l'ho usato per anni per trasmettere le immagino catturate dal meteosat, dalla camera del ricevitore a quella del PC. Purtroppo non ho mai messo su carta i valori dei componenti !!!. Ma se ti servono gli schemi per farti una idea...mandami un mail.

Ciao Giorgio

--
non sono ancora SANto per e-mail
Reply to
giorgiomontaguti

ho modificato un po' lo schema aggiungendo un limitatore a diodi e un stadio amplificatore (ho usato un max 412).

formatting link
Domanda da profano : un op amp pu=F2 amplificare ed essere accordato sulla frequenza da me scelta (senza MF) ? (io penso di no...)

X giorgio : Se lo schema l'hai gi=E0 fatto, mi piacerebbe darci una occhiata anche se con le MF non soprei proprio da dove cominciare (e poi non le ho disponibili ). Gli schemi di NE li ho gi=E0 visti e infatti usano tutti le MF.

Reply to
merco

Ma se ti servono gli schemi per farti una idea...mandami un mail. chiedendomi Trasconv.gif e Ricconv.gif Io non ho usato MF ma induttori per filtri a 150 Khz. LO schema Riconv e' piu' complesso del necessario, perche' comprende anche altre cose. Ciao Giorgio

si dovrebbe capire il mio username !!!

--
non sono ancora SANto per e-mail
Reply to
giorgiomontaguti

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.