Sari la conținut
ELFORUM - Forumul electronistilor

Comunicare intre mai multe PIC -uri


Vizitator cpu54321

Postări Recomandate

Vizitator cpu54321

Buna seara

 

Vreau sa pun in practica un proiect de incalzire inteligent

 

In fiecare camera sa montez un termostat format dintr-un pic(16F876A) , display cu 7 seg/3 digit si doua butoane  + / -

termostatele vreu sa comunice cu un modul central care in functie de temperatura / interval orar sa comande electrovalve care inchid/deschid circuitele caloriferelor

 

 

initial am vrut sa fac comunicare prin RS 232 dar din ce am studiat nu functioneaza decat intre doua module

ma gandesc sa fac o retea I2C dar nu cunosc foarte bine protocolul

 

Poate ma ajuta cineva cu vre-un exemplu, sfat, alt protocol de comunicare....................

 

 

Multumesc 

 

 

 

 

 

Link spre comentariu
  • Răspunsuri 8
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • ventzel

    3

  • Mondan

    2

  • Mircea

    1

  • puriu

    1

Top autori în acest subiect

Ai putea folosi USART din PIC cu protocol RS485 la care gasesti documentatie suficienta.

Alta solutie ar fi un protocol pe 9 bit cu detectie de adresa. 

Daca nu ai pachete de date mari de transferat ai putea folosi controllere cu CAN. Gasesti compilatoare cu suport pentru CAN, de exemplu de la Mikroe, si scapi aproape total de problemele de transmisie, receptie, collision detection, calcul crc si validare. http://www.mikroe.com/download/eng/documents/compilers/mikroc/pro/pic/help/can_library.htm

Editat de ventzel
Link spre comentariu

Merge si fara raport daca trimiti un semnal de clock si identificare pentru fiecare  in stringul emis  , iar pic mic gigi stie ca la minutul 23 intra in actiune, pic mic ion intra la minutul 29  sau ca e doar pentru el comanda respectiva . Seful comanda , ailalti asculta  adica ai sa folosesti module din alea un tx  si restul rx . Modulele nu sunt imperecheate sau nu mi-au lasat impresia asta, si e cel mai ieftin pe partea asta .Totusi e mai bine sa ai un protocol de comunicare complet cu intreaba - raspunde  are un grad de SIL(safety integrity  level)  acolo macar. primeste temperatura de la pic mic  si alti parametrii... :)

Adica stringul emis v[100]={I,D,C,L,O,C,K,1,2,:,3,0, P,I,C,M,I,C,G,I,G,I ,D,E,S,C,H,I,D,E, ,V,A,L,V,A,}

 

Iar intre timp s-au ieftinit si astea wifi  http://www.ebay.com/itm/ESP8266-Serial-WIFI-Wireless-Transceiver-Module-Send-Receive-LWIP-AP-STA-A-/201205524305?pt=LH_DefaultDomain_0&hash=item2ed8c8a751

Editat de unuldinei
Link spre comentariu

Dar nu exista astfel de montaje ?

 

Cred ca se numesc robineti termostatati;

http://www.fluidserv.ro/www-ro/produse/robineti-termostatati.php

Posted Image

 

 

Eu unul as incepe prin reverse la chestiile astea.

 

Prin ce sa comunice intre ele mai multe PIC-uri. sunt multe protocoale si poti defini si mai multe. De la serial asincron si nuai nevoie de cuart la PIC, la I2C,....

Ai putea sisenzorii de temperatura sai tragi prin fire, mai alea daca sunt senzori intagrati, cu ceva operatioane in aceeasi capsula.

daca nu ai lucrat cu ele cel mai simplu e in C.

 

Eu aveam MikroC (e gratis) si dateam parca:
Soft_UART_Write("A"); //la emisie

si

while(1) { c = Soft_UART_Read(&error); //la receptie

 

si c-ul lua valoarea c="A"

 

avea el un flag care-ti arata ca ai date primite pe serial.

 

Asincronul era bun pentru ca poti sa-l upgradezi ulterior cu module RX-TX.

 

Mi-a mers si fara cuart, pe osclator intern, cei drept cu o rata mai mare de erori.

Editat de Mondan
Link spre comentariu

 

Asincronul era bun pentru ca poti sa-l upgradezi ulterior cu module RX-TX.

 

Mi-a mers si fara cuart, pe osclator intern, cei drept cu o rata mai mare de erori.

Pentru module RF simple ii preferabil sa nu folosesti direct portu serial, adica encoding la semnal de tip zero-return. Unele module TX opresc transmisia pe radio dupa o pauza de cateva zeci de ms, deci daca ai multi biti de zero succesivi o sa-ti intre in stand-by si nu apuci sa transmiti tot mesaju.Tramsmisia radio nu incepe la primu bit 1 si poate aparea si de aici desincronizare.

O rezolvare ar fi sa folosesti encoding Manchester si decodare soft   http://www.slideshare.net/har406/05-signal-encoding

Poti folosi protocol cu preambul si sincronizare si mesaju o sa ajunga teoretic tot avand in vedere ca fiecare bit ii codat ca front crescator sau descrescator, da ii preferabil sa ai si CRC.

Un exemplu ar fi comunicatia la Keeloq de la Microchip: http://ww1.microchip.com/downloads/en/AppNotes/91045a.pdf

Dezavantaju ii ca nu poti obtine viteza de transmisie foarte mare.

Sau mai simplu, folosesti module asemanatoare cu ala prezentat de thunderer si scapi de multe probleme, plus ca ai comunicatie bidirectionala.

Link spre comentariu

<Unele module TX opresc transmisia pe radio dupa o pauza de cateva zeci de ms>

Zeci de ms e mult, dar totusi ca idee; se intampa asta si la "modulatia" AM ?

 

Am vazut multe emisii in 433MHz facut astfel: un simplu oscilator cu cristal si modulatia era de fapt alimetarea lui. Un fel de ON/OFF da' brutal.

Sau mai "delicat" modulatiaera ON/OFF pe rezistorul de polarizare in baza a tranzistoruli din oscilator.

Link spre comentariu

La modulele descrise de tine nu ai probelema cu stand-by. Opresti/reduci consumu de curent prin oprirea alimentarii.

Singura problema ar fi partea de inceput a transmisiei, mai exact daca folosesti RZ sau NRZ si primii biti din mesaj is zero sau daca incepi transmisia cu 1 byte 0xFF sa zicem si pierzi la inceputu receptiei 1 bit sau mai multi. Tot mesaju o sa aiba shift stanga cu numaru de biti pierduti. Plus ca in pauza de TX receptoru mai prinde alte semnale. Din cauza asta ziceam ca ii preferabil sa ai zona de preambul si sincronizare dupa care sa stii exact ca urmeaza datele.

Editat de ventzel
Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări