Relék vezérlése

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Vendég

Relék vezérlése

Hozzászólás Szerző: Vendég »

Sziasztok!

Csinálgatok egy előfokot, melyben a poti helyére reléket meg ellenállásokat teszek. A problémám a relék kapcsoláskor hallható koppanás.
Kimásoltam egy másik topikból az idevágó beírásokat:

Rag
Kicsit technikai jellegű a kérdésem:
Ha a portra kiírok egy számot majd kicsit később egy másikat, akkor a második kiíráskor minden egyes lábra újra kiíródik az érték vagy csak a eltérő bitek?
Van közte egy rövid szünet?
pl
00000001, majd
00000010

vagy
00000001
00000000 (ez a rövid váltási rész)
00000010

Ezt azért kérdezem, mert relék kapcsolásakor van "koppanásom", mintha egy pillanatra elengedne mind.

Róbert:
Röviden:Nincsen.
Hosszabban: nem lehet hogy megrántja a tápot az új relé bekapcsolása?
Azaz
PortA=255 'mind bekapcsol
wait 5
PortA=2 'A 2. láb marad bekapcsolva
end
A programban a 2-es relé nem enged el. A reléken igaz ott van a 100V/0,1A-es védődióda? A reléket min keresztül kapcsolod? tranzisztornál védődióda, bázis ellenállás, porton fel/lehúzó ellenállás igaz nincsen?

Rag:
Kérdezgettem hozzáértőbbet és azt mondta, hogy a koppanásnak a relék meghúzási és elengedési ideje is lehet az oka. Ezért a reléket egyesével kell az új állapotba kapcsolni. Kicsit iskolai példának tűnik, de hogyan lehet leprogramozni??
6 biten 0-63-ig használom az értékeket.
Szerintem egy for ciklussal kellene bitenként végigmenni és összehasonlítani, hogy változott-e a bit. Közte egy 5 ms-os szünetet kellene tartani. (4ms-os elengedési ideje van egy ehez hasonló relének).
Hogyan lehet egy bitet kiválasztani egy 8 bites változóból?


Róbert:

Kód: Egész kijelölése

 
dim a as byte 
A=128 
if A.7=1 then print "a MSB=1" 
if a.1=1 then print "a LSB=1" 
[code]
Rag

Hozzászólás Szerző: Rag »

Ez a fránya bejelenkezés :?

Nézegettem a Bascom súgóját és találtam egy Set parancsot. Valahogy így nem lehetne?

Dim Volume, Volumenew as Byte
Dim x, y as Bit

For I = 0 to 5
X = Set(Volume,I)
Y = Set(Volumenew,I)
If X<>Y Then Portb.I = Y
Waitms(5)
Next I

Üdv
Rag

Ja és a dióda a relékre nem segített, amit javasoltál.
Robert-

Hozzászólás Szerző: Robert- »

Én így írnám:

Kód: Egész kijelölése

Dim Volume, Volumenew as Byte 
Dim x, y as Bit 

For I = 0 to 5 
if Volume.I<>Volumenew.I then Then Portb.I = Volumenew.I
Waitms 5 
Next I 

Rag

Hozzászólás Szerző: Rag »

Na igen, a gyakorlat.

Kipróbálom.

Rag
Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

Hozzászólás Szerző: nobody_hun »

Nem akarok beleavatkozni, de a dióda azért kell, mert ha a tekercs a relében "visszarúg", agyonveri a félvezetőt. Ezért _kell_ a dióda párhizamosan a relére.
Rag

Hozzászólás Szerző: Rag »

Most bennt vannak a diódák, de azt gondoltam az ULN2803-as Ic elég lesz neki.

Most próbálgatom a bitenkénti kapcsolgatást..

Üdv
Rag
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Az ULN chippel már én is +szívtam. Abbana védődióda csak 50V-ig működik. A kikapcsoláskor a tekercsben (relé esetén) akár 100-130V is indukálódhat, a külső dióda ezt hivatott levágni... (hamár a belső nem képes).
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A tipp hogy lekapcsol-e a lábat a kontroller (valami oknál fogva):

Próbáld ki simán a portaírást és várakozás után a lehapcsolást. Ha ekkor prelleg, akkor a relékörben van a hiba v. a relé utáni áramkörben.

A relé meghúzásakor a tápfesz kicsit ingadozhat alulméretezett táp esetén ez is okozhat ilyet. ezért érdemes a tápszűrésre amperenként 1000-2500 uF kapacitást számolni. ezzel nagymértékben lecsökkenthető a tápingadozásból származó hiba.
Rag

Hozzászólás Szerző: Rag »

Haladok!

Megcsináltam ezt a bitenkénti kapcsolgatást. Mostmár jó lett, de van még egy apró probléma, hogy amikor a legnagyobb biteket (16 és 32 értéket) kapcsolja és a többi nullára megy akkor koppan egy brutálisat. Oka pont az a 5 ms, amíg előtte minden bit 0-án van.

Ha ezzel nem tudok mit kezdeni, akkor egyszerűen kihagyon ezt a két értéket :)

Üdv
Rag
Robert-

Hozzászólás Szerző: Robert- »

Itt a relé és az ellenállások kapcsolása az ami a gond. Nem a relé enged el egy pillanatra, hanem a relé érintkezője prelleg....


A megoldás egy digitális potméter lenne.... (kb. 1eft nagyságrendjében mozognak...) A relés móka sztem drágább...
Esetleg egy műveleti erősítővel kombinálva. Ott nincs ilyen probléma...


A Műveleti erősítős móka esetén meg a kimenő jelszint terhelhetősége játszana bele, amit ezáltal el lehetne felejteni (kimenőimpedancia adott....).
Avatar
DOGMAN
Chipgyilok
Hozzászólások: 293
Csatlakozott: 2006. augusztus 27. vasárnap, 6:00

Hozzászólás Szerző: DOGMAN »

Üdv!

A következő a problémám:
Tiny2313 egy adott lábával szeretnék relét meghúzni:
Kép

Tranzisztor: BC547B
VCC és Relé: 5VDC
Ellenállás:270 Ohm

Az egy dolog hogy a bináris órámban így elhajt ez a tranzisztor egy 4 ledes (nagy fényerejű) oszlopot, de itt meg sem mukkan a relé/tranzisztor.

Kicseréltem a tranzisztort egy BC337-re és így már meghúzza a relét, ha van kedve valakinek elmondhatná miért hajt el a BC547 egy sor ledet, egy 70mA-es relét meg miért nem húz meg?

Plusz ha a tranzisztor BC337:
Rx(PD0) és TX (PD1) lábról egyáltalán nem működik.
Felhúzom PD0-át 1-re mérem multiméterrel 4.98Volt ráteszek egy LED-et ami alig láthatóan pislákol.
PD1 esetén az a különbség, hogy azt meg nem tudom 0-ra tenni, mindig magas (szép fényesen világít a LED)
Tudom GND-re lehúzóval, de nem lebeg hanem simán teljes tápfesz van rajta ha 0-ra állítom akkor is.

A többi lábról megy rendesen (BC337-el) ezekről miért nem?

Tinyben van valami amit meg kell még adnom, ha a soros port lábakat TTL-ként szeretném használni?
Több Tiny-t is kipróbáltam...

Kód: Egész kijelölése

$crystal = 1000000
$regfile = "Attiny2313.dat"
$baud = 1200

Config Portd.0 = Output   ' 2-es láb (Rx) 
Portd.0 = 1
Do
	Toggle Portd.0
	Waitms 500
Loop
End

Én marha mindig csinálok raszternyákra próba kapcsolást, most meg kimarattam, azt át kellett forrasztanom PA1-re a relét. (pedig olyan szép lett a vasalás :D)
Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00

Hozzászólás Szerző: SirLeslie »

DOGMAN írta:...
A többi lábról megy rendesen (BC337-el) ezekről miért nem?
...

Kód: Egész kijelölése

$crystal = 1000000
$regfile = "Attiny2313.dat"
'$baud = 1200

Config Portd.0 = Output   ' 2-es láb (Rx) 
Portd.0 = 1
Do
	Toggle Portd.0
	Waitms 500
Loop
End
...
Próbáld meg így, a baud lefoglalja az rx-tx lábakat.
Avatar
DOGMAN
Chipgyilok
Hozzászólások: 293
Csatlakozott: 2006. augusztus 27. vasárnap, 6:00

Hozzászólás Szerző: DOGMAN »

SirLeslie írta:
Próbáld meg így, a baud lefoglalja az rx-tx lábakat.
Délután megnézem, ha ez volt a baja széjjelfog vágni az ideg :twisted:
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A $baud inicializálja a sorosportot!

Hagyd ki.... Nálam is ez volt :P
Avatar
ampervadasz
Bitmanipulátor
Hozzászólások: 119
Csatlakozott: 2008. január 19. szombat, 7:00

Hozzászólás Szerző: ampervadasz »

Szervusztok!

Egy picike problémával elakadtam relé vezérlésnél.

Adott 1 bistabil relé. (Egy tekercses, polaritás váltással lehet az állapotát módosítani).

Sajnos az AVR kimenetének terhelhetése és a tekercs indukciója miatt nem lehet rákötni a lábakra közvetlenül. Egy kis segítséget kérnék, hogy lehetne ezt a típusú relét üzemeltetni a kontrollerrel. (Elemes táplálás miatt lesz ez beépítve - minimális áramfelvétel)

Segítségeteket előre is köszönöm.
Válasz küldése