|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Andraz23 Član
Pridružen-a: Sob 20 Feb 2016 12:51 Prispevkov: 28 Aktiv.: 0.28
|
Objavljeno: Sob Feb 20, 2016 1:02 pm Naslov sporočila: Krmiljenje Reed relejev z Arduino |
|
|
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 |
|
|
Obelix Član
Pridružen-a: Pon 19 Maj 2008 13:59 Prispevkov: 1862 Aktiv.: 9.60 Kraj: Maribor
|
Objavljeno: Sob Feb 20, 2016 1:08 pm Naslov sporočila: |
|
|
Ena možnost je, da vzameš Arduino Mega. Ta ima nekje 50 I/O pinov |
|
Nazaj na vrh |
|
|
dumr666 Član
Pridružen-a: Tor 31 Jan 2012 23:30 Prispevkov: 409 Aktiv.: 2.75 Kraj: Ljubljana
|
Objavljeno: Sob Feb 20, 2016 1:53 pm Naslov sporočila: |
|
|
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 |
|
|
igo Član
Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3638 Aktiv.: 17.04
|
Objavljeno: Sob Feb 20, 2016 4:11 pm Naslov sporočila: |
|
|
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 |
|
|
Jaka57 Moderator
Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5773 Aktiv.: 25.90 Kraj: Grosuplje
|
Objavljeno: Sob Feb 20, 2016 4:21 pm Naslov sporočila: |
|
|
Nič nisi napisal, katerega Arduina boš uporabil.
Če uporabiš Arduino MEGA 2560 ti ostane poleg uporabljenih 24 digitalnih IO pinov še 30 , č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 |
|
|
igo Član
Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3638 Aktiv.: 17.04
|
Objavljeno: Sob Feb 20, 2016 5:15 pm Naslov sporočila: |
|
|
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.
Č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 |
|
|
|
|
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: 73 dni
Powered by phpBB © 2001, 2005 phpBB Group
|