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 

Krmiljenje Reed relejev z Arduino

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Andraz23
Član
Član



Pridružen-a: Sob 20 Feb 2016 12:51
Prispevkov: 28
Aktiv.: 0.28

PrispevekObjavljeno: Sob Feb 20, 2016 1:02 pm    Naslov sporočila:  Krmiljenje Reed relejev z Arduino Odgovori s citatom

Pozdravljeni,

iščem nasvete kako rešiti problem katerega predstavim tukaj spodaj.

Se pravi, sestaviti moram elektroniko, ki bo vgrajena v kabelski snop za avtomobile - to je snop 24-tih vodnikov. Vsak vodnik naj bi bil prekinjen z releyem in tako bi simulirali prekinjenostm napačno zaporedje vodnikov itd.

Zamislil sem si naslednje. Uporabil bi krmilnik Arduino, kateri bi krmilil reed releye po naslednji shemi:


Torej reed releye priklopimo na baterijo 9-12 V. S primernim uporom (na sliki 220) ohmov dobimo napetostni delilnik, ki ga sestavljajo: Upornost tuljave releja 500 ohm, 220 ohmski upor in upornost tranzistorja ob vklopu R_DSon=30 ohm. S tem dosežemo ,da dobimo na releju primerno napetost (5V), da se rele vklopi.
Tuljava releya zahteva 10 mA, njena upornost je 500 ohm.

Prosil bi za mnenje o tej aplikaciji in za nasvete kako bi še lahko rešil problem. Prvi je zagotovo ta, da imamo premalo digitalnih 5V izhodov na Arduinotu, saj moram krmiliti 24 RELEJEV. (na zgornji sliki so samo 4je) Ta problem bi rešil z 8-bitnimi I/O expanderji, kateri serijsko komunicirajo z arduinotom. Uporabil bi 3 in s tem dobil 24 krmilnih signalov za MOSFETe.

Za nasvete in mnenja se zelo priporočam!

Slike se pripenjajo v temo, kajti jutri te slike ne bo več in je tema kot taka brez pomena!

_________________
Andraz23
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Obelix
Član
Član



Pridružen-a: Pon 19 Maj 2008 13:59
Prispevkov: 1862
Aktiv.: 9.61
Kraj: Maribor

PrispevekObjavljeno: Sob Feb 20, 2016 1:08 pm    Naslov sporočila:   Odgovori s citatom

Ena možnost je, da vzameš Arduino Mega. Ta ima nekje 50 I/O pinov
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
dumr666
Član
Član



Pridružen-a: Tor 31 Jan 2012 23:30
Prispevkov: 409
Aktiv.: 2.75
Kraj: Ljubljana

PrispevekObjavljeno: Sob Feb 20, 2016 1:53 pm    Naslov sporočila:   Odgovori s citatom

lahko pa uporabiš PCA9555 ima 16 I/O ostalih 8 pa daš na pine od arduinota
_________________
Robots will steal your job. But that's OK.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.05

PrispevekObjavljeno: Sob Feb 20, 2016 4:11 pm    Naslov sporočila:   Odgovori s citatom

Uporabi 3 x 74HC595 .
Tole je za 4 zaporedno, za 3 pa samo vržeš ven en klic zanke:
Koda:

//////////////////////////////////////////////////
//////////////////////////////////////////////////
void Pise595()    // TO FUNKCIJO SE KLICE ZA PISANJE NA 32 595 IZHODOV, MSB najprej
{
/*
#define   pinTd A14  //  Izhodi DATA
#define   pinTp A12  //  Izhodi Pisi
#define   pinTc A10  //  Izhodi CLK
unsigned char biti5950; // POSAMEZNI BITI v spremenljivki MORAJO BITI ZNANI, PREDEN SE KLICE FUNKCIJO
unsigned char biti5951;
unsigned char biti5952;
unsigned char biti5953;
unsigned char j; // maska
unsigned char k;
  pinMode(pinTp, OUTPUT); //  Izhodi Pisi
  pinMode(pinTc, OUTPUT); //  Izhodi CLK
  pinMode(pinTd, OUTPUT); //  Izhodi DATA
*/
    Pise595z(biti5953); // MSB = bit 31 SE GRE NAJPREJ
    Pise595z(biti5952);
    Pise595z(biti5951);
    Pise595z(biti5950); // LSB = bit 0 JE NA KONCU

    digitalWrite(pinTp, LOW);  // impulz na pin PIŠI prenese vse serijske bite na izhode
    digitalWrite(pinTp, HIGH);  // pin PIŠI
}
//////////////////////////////////////////////////
//////////////////////////////////////////////////
void Pise595z(char k) // (spremenljivka) ZANKA za 8 bitov
{
  j = B10000000; // maska
  for(i=0; i<8; i++)
  {
    if ((k & j) != 0 )  // Za negirano logiko samo ==
    {
      digitalWrite(pinTd, LOW );  //  pošlje bit [j]
    }
    else
    {
      digitalWrite(pinTd, HIGH );  //  pošlje bit [j]
    }
    digitalWrite(pinTc, LOW);  // impulz na CLK pin za izhodeT
    digitalWrite(pinTc, HIGH);  // pin PIŠI
    j = j >> 1; // ZACNE NA BITU 7 (MSB od k), nato pomakne masko za 1 bit v desno
  }
}
//////////////////////////////////////////////////
//////////////////////////////////////////////////

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5773
Aktiv.: 25.91
Kraj: Grosuplje

PrispevekObjavljeno: Sob Feb 20, 2016 4:21 pm    Naslov sporočila:   Odgovori s citatom

Nič nisi napisal, katerega Arduina boš uporabil.

Če uporabiš Arduino MEGA 2560 ti ostane poleg uporabljenih 24 digitalnih IO pinov še 30 Wink , če pa boš uporabil manjšega Arduina, pa upoštevaj kar je napisal igo, saj se 74HC595 običajno uporablja pri Arduinu (in še kje drugje) kot expander.

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.05

PrispevekObjavljeno: Sob Feb 20, 2016 5:15 pm    Naslov sporočila:   Odgovori s citatom

Ah, ja,...
Pripel sem programček, kjer imam na izhodu najprej negatorje 7406, 2k7 pull-up upore na 24V, zelooo dolg oklopljen kabel po industrijskem okolju, na strani 595 pa napetostne delilnike nazaj dol na 5 V.

Arrow Če boš priklopil direktno na 595, moraš v vseh šestih digitalWrite samo med seboj zamenjati vse LOW in HIGH.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija Č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: 70 dni


Powered by phpBB © 2001, 2005 phpBB Group