www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

1-wire senzor in radio modul

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> VF tehnika in sistemi radijskih zvez
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.69
Kraj: Kranj - struževo

PrispevekObjavljeno: Tor Mar 01, 2011 8:27 pm    Naslov sporočila:  1-wire senzor in radio modul Odgovori s citatom

Prestavljeno iz ZS:
compaq je napisal/a:
Pozdravljen

Malo sem brskal po forumu in sem yasledil da se kar dosti ukvarjas y one-wire senzorji...

Mogoce bo se mal cudno zvenelo ampak imam kar nekaj vprasanj glede tega projekta, ker sam izdelujem nekaj podobnega...

moja ideja...

senzor-RF -pic-lcd

bi bilo to tako izvedljivo, ali mora bit na strani senzorja tudi ukontroler
bi sploh delovalo z vecimi DS senzorji (sorry ker ne dajem vprasajev, ampak mi nekaj tipkovnica nagaja....)

hvala za pomoc
lp



Zdravo, 1-wire senzorji - no odvisno od tega, kateri čip imaš v mislih, rabijo kar nekaj energije in časa, da opravijo svojo nalogo. Temperaturni recimo 1 sekundo in morajo biti ta čas dobro napajani.

Če misliš uporabit RFID, potem rabiš na strani senzorja vsaj en konkreten RFID modulatorski sprejemno-oddajni čip.
Še nekaj pasivnih komponent, pa bi mogoče celo šlo.
Seveda med tem, ko senzorji delujejo, mora biti RFID zanka aktivna na polno, da dovede dovolj energije za vse čipovje.
Moči mora biti toliko, da dobiš ven 5V. Koliko toka, je odvisno od posameznega 1-w čipa.


compaq je napisal/a:
Ja za, nabavil sem tistega od SE, ki obratuje na 433MHz

ampak dvome mi postavlja, misel, da ce na oddajni strani ni PIC-a da mi potem nebo delovalo. Mogoce z enim DS-jem gre, ampak ce bi jih dal kaj vec bi se zadeva verjetno zakomplicirala...

ti programiras v asemblerju


Radio modul je čisto drugo kot RFID. Če bi že prej kaj več napisal... Anxious
Ja, vsekakor rabiš mikrokontroler na obeh straneh.

PIC-e sem "odpisal" že pred leti, assembler pa tudi. Ampak za tako malo aplikacijo bi šlo brez težav tusi v ASM.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
compaq
Član
Član



Pridružen-a: Tor 10 Mar 2009 12:53
Prispevkov: 100
Aktiv.: 0.50
Kraj: Maribor

PrispevekObjavljeno: Tor Mar 01, 2011 8:37 pm    Naslov sporočila:   Odgovori s citatom

aly super ideja, verjetno bo komu drugemu tudi prav prišlo... Smile

PIC sem izbral, ker sem že prejšnji projekt one-wire naredil z njim, tak da sem ga že malo spoznal.

Ja komunikacija bi bila preko radio modula, begala me je pa ta zadevica če na obeh straneh ali pa samo na eni.

Tak na grobo si predstavljam delovanje...čip na oddajniku odčita, mogoče tudi preračuna kakšno temperaturo (povprečna, maksimalna, minimalna), na drugi strani pa obdelava, izpis na LCD....edino moram preveriti kaj in kako lahko kaj pošiljam po RF modul-u, ker je to "nova voda" zame.

Sam uporabljam C, tak da ASM odpade Wink

lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
compaq
Član
Član



Pridružen-a: Tor 10 Mar 2009 12:53
Prispevkov: 100
Aktiv.: 0.50
Kraj: Maribor

PrispevekObjavljeno: Pon Mar 07, 2011 10:18 am    Naslov sporočila:   Odgovori s citatom

@aly
Imaš ti mogoče pri roki kakšen vir/literaturo kje bi našel kako bi lahko naredil RX/TX kounikacijo med dvema PIC-ema? Za začetek bi čist zadostovalo, če bi mi uspelo prižiganje ledice na MC2, medtem ko na MC1 pritisnem tipko...

kakšen primer tudi nebi škodoval...

_________________
Za vsakega drifterja raste robnik!!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3387
Aktiv.: 15.99

PrispevekObjavljeno: Pon Mar 07, 2011 11:32 am    Naslov sporočila:   Odgovori s citatom

Compaq, tukaj je lepo prikazano, kako to deluje. Našel sem ti drugi del od treh o RF komunikaciji (kam je izginil prvi?). Malce še poglej med AVR tutoriali.....
Sicer je za AVR, ampak glede na to da uporabljaš C, princip povsem ustreza.

Pa še kaj drugega se tu med tutoriali najde.

EDIT: Našel!. Spodaj med odgovori in vprašanji sta tudi povezavi na 1. in 2. del


Nazadnje urejal/a lojzek Pon Mar 07, 2011 11:36 am; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Musty
Član
Član



Pridružen-a: Sob 28 Apr 2007 8:54
Prispevkov: 1575
Aktiv.: 7.13
Kraj: Rače

PrispevekObjavljeno: Pon Mar 07, 2011 11:36 am    Naslov sporočila:   Odgovori s citatom

Podoben projekt: http://scanlime.org/2009/01/wireless-temperature-picture-frame-mashup/
Tudi sam sem že razmišljal o 1-wire in brezžični povezavi, mislim da bi bilo najboljše narediti namensko vezje, ki deluje preprosto kot 1-wire wireless bridge.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
compaq
Član
Član



Pridružen-a: Tor 10 Mar 2009 12:53
Prispevkov: 100
Aktiv.: 0.50
Kraj: Maribor

PrispevekObjavljeno: Pon Mar 07, 2011 3:29 pm    Naslov sporočila:   Odgovori s citatom

lojzek je napisal/a:
Compaq, tukaj je lepo prikazano, kako to deluje. Našel sem ti drugi del od treh o RF komunikaciji (kam je izginil prvi?). Malce še poglej med AVR tutoriali.....
Sicer je za AVR, ampak glede na to da uporabljaš C, princip povsem ustreza.

Pa še kaj drugega se tu med tutoriali najde.

EDIT: Našel!. Spodaj med odgovori in vprašanji sta tudi povezavi na 1. in 2. del


Hvala ti!
Sem sam tudi našel to, ampak sem bil v dvomih kako in pa kaj naredit da bi mi delovalo...sicer sem nekaj poskušal naredit, ampak še brez kakpnih rezultatov. Bov v teku dneva še poskušal, pa če nebo šlo bom kar tisto kodo pripel, pa da mi svetujete kaj oz. kje sem naredil napako.....

lp

_________________
Za vsakega drifterja raste robnik!!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
compaq
Član
Član



Pridružen-a: Tor 10 Mar 2009 12:53
Prispevkov: 100
Aktiv.: 0.50
Kraj: Maribor

PrispevekObjavljeno: Ned Mar 27, 2011 10:22 pm    Naslov sporočila:   Odgovori s citatom

Končno sem našel nekaj časa in sem se začel ukvarjat z mojim projektom.

Torej trenutno stanje.....
Uporablajm 2, enega za čitanje temperature drugega pa pač za prikaz na LCD zaenkrat.
Za komunikacijo sem izbral Manchester knjižnico (MikroC pro).

Torej kaj je moja težava, zadeva deluje AMPAK včasih mi nagaja, na trenutke deljuje perfektno, na trenutke pa se "sistem" postavlja nekaj časa, se izpišejo na LCD-ju tudi nekakšne vrste hieroglifi Shocked ..... Ima mogoče kdo kakšno idejo kaj bi naredil narobe?


koda za transmiter:
Koda:



sbit MANTXPIN at RB2_bit; //Dolocitev oddajnega pina
sbit MANTXPIN_Direction at TRISB2_bit;

  unsigned char character;
    unsigned int index;
// String array to store temperature value to display
char *temp = "000.00";
//char txt[8];

// Temperature Resolution : No. of bits in temp value = 9
const unsigned short TEMP_RES = 9;

// Variable to store temperature register value
unsigned temp_value;

void Display_Temperature(unsigned int temp2write) {
  const unsigned short RES_SHIFT = TEMP_RES - 8;

  // Variable to store Integer value of temperature
  char temp_whole;

  // Variable to store Fraction value of temperature
  unsigned int temp_fraction;

  // check if temperature is negative
  if (temp2write & 0x8000) {
     temp[0] = '-';
     // Negative temp values are stored in 2's complement form
     temp2write = ~temp2write + 1;
     }

  // Get temp_whole by dividing by 2 (DS1820 9-bit resolution with
  // 0.5 Centigrade step )
  temp_whole = temp2write >> RES_SHIFT ;

  // convert temp_whole to characters
  if (temp_whole/100)
  // 48 is the decimal character code value for displaying 0 on LCD
     temp[0] = temp_whole/100  + 48;
  else
     temp[0] = '0';

  temp[1] = (temp_whole/10)%10 + 48;             // Extract tens digit
  temp[2] =  temp_whole%10     + 48;             // Extract ones digit

  // extract temp_fraction and convert it to unsigned int
  temp_fraction  = temp2write << (4-RES_SHIFT);
  temp_fraction &= 0x000F;
  temp_fraction *= 625;
  temp[3]='.';
  // convert temp_fraction to characters
  temp[4] =  temp_fraction/1000    + 48;         // Extract tens digit
  temp[5] = (temp_fraction/100)%10 + 48;         // Extract ones digit

  // print temperature on LCD

          Man_Send(0x0B);                // Send "start" byte
    Delay_ms(50);                 // Wait for a while
   
    for (index=0; index<6; index++){            // String ends with zero

      Man_Send(temp[index]);         // Send character
      Delay_ms(50);                // Wait for a while
      }
          Man_Send(0x0E);                // Send "end" byte
    Delay_ms(500);
}

void main() {

  CMCON  |= 0x07;                       // Disable Comparators
     Man_Send_Init(); //Iniciazavcija Manchester knjižnice
Delay_ms(100);



  //--- perform startup temperature reading
  Ow_Reset(&PORTA, 4);      // Onewire reset signal
  Ow_Write(&PORTA, 4, 0xCC);   // Issue command SKIP_ROM
  Ow_Write(&PORTA, 4, 0x44);   // Issue command CONVERT_T
  Delay_ms(600);

  //--- main loop
  do {
    //--- perform temperature reading
    Ow_Reset(&PORTA, 4);      // Onewire reset signal
    Ow_Write(&PORTA, 4, 0xCC);   // Issue command SKIP_ROM
    Ow_Write(&PORTA, 4, 0x44);   // Issue command CONVERT_T
    //Delay_ms(600);
    // If this delay is less than 500ms, you will see the first reading on LCD
    //85C which is (if you remember from my article on DS1820)
    //a power-on-reset value.

    Ow_Reset(&PORTA, 4);
    Ow_Write(&PORTA, 4, 0xCC);    // Issue command SKIP_ROM
    Ow_Write(&PORTA, 4, 0xBE);    // Issue command READ_SCRATCHPAD

    // Read Byte 0 from Scratchpad
    temp_value =  Ow_Read(&PORTA, 4);
    // Then read Byte 1 from Scratchpad and shift 8 bit left and add the Byte 0
    temp_value = (Ow_Read(&PORTA, 4) << 8) + temp_value;
    //--- Format and display result on Lcd
     Display_Temperature(temp_value);
    } while (1);
}



pa še koda za reciver:
Koda:
// LCD connections definitions
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD connections definitions

unsigned char temp;
unsigned char error;
unsigned int  ErrorCount;

char *polje = "000.00";
unsigned int index;

// Manchester module connections
sbit MANRXPIN at RC7_bit;
sbit MANRXPIN_Direction at TRISC7_bit;

// End Manchester module connections


void main() {
ErrorCount = 0;

   Lcd_Init();                                    // Initialize LCD
  Lcd_Cmd(_LCD_CLEAR);                           // Clear LCD
  Lcd_Cmd(_LCD_CURSOR_OFF);

   Man_Receive_Init();                             // Initialize Receiver
           index=0;
  while (1) {                                     // Endless loop

      Lcd_Cmd(_LCD_FIRST_ROW);                    // Move cursor to the 1st row

      while (1) {                                 // Wait for the "start" byte
        temp = Man_Receive(&error);               // Attempt byte receive
        if (temp == 0x0B)
        {
         index=0;                         // "Start" byte, see Transmitter example
          break;
          }                                 // We got the starting sequence
        if (error)                                // Exit so we do not loop forever
          break;
        }
      do
        {
          temp = Man_Receive(&error);             // Attempt byte receive
          if (error) {                            // If error occured
            //Lcd_Chr_CP('?');                      // Write question mark on LCD
            ErrorCount++;                         // Update error counter
            if (ErrorCount > 5) {                // In case of multiple errors
              temp = Man_Synchro();               // Try to synchronize again
              //Man_Receive_Init();               // Alternative, try to Initialize Receiver again
              ErrorCount = 0;                     // Reset error counter
              }
            }
          else {
              if (temp != 0x0E)
                //Lcd_Chr_CP(temp);

                 polje[index]=temp;
                 index++;
              }
          Delay_ms(25);
        }
      while (temp != 0x0E) ;
      Lcd_Out(2, 5, polje);
   }
}


komentarji pri nekaterih vrsticah niso pravilni!

Hvala za pomoč že v naprej!
lp

_________________
Za vsakega drifterja raste robnik!!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> VF tehnika in sistemi radijskih zvez Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 496 dni


Powered by phpBB © 2001, 2005 phpBB Group