Arduino Due relays compatible

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • NS_5
  • Registratie: Februari 2005
  • Laatst online: 18-12-2024
Hallo allemaal,

Een vraagje over de compatibiliteit van een Arduino Due en relais.

Ik wil voor een project een Arduino Due gebruiken. Dit vanwege de snelheid en vooral ook het aantal I/O. Ik heb me ondertussen redelijk over de Due ingelezen, maar er is één ding waar ik niet helemaal wijs uit kan worden, namelijk of ik er 5V relais mee kan aansturen.

Ik heb hier thuis dit relaisbordje. Deze relais worden geschakeld op 5V. Ik heb ook even gekeken of ze op 3.3V willen schakelijk, maar dat willen ze niet. Ik kan natuurlijk aan 5V komen, dus dat is geen probleem op zich. Ik twijfel echter of de Due dat wel leuk vindt. Om een relais te schakelijk moet je namelijk de pin op LOW zetten, waardoor er stroom gaat lopen (correct me if I'm wrong here)(?). En één van de dingen die je als eerste leest over de Due, is dat hij het absoluut niet fijn vindt als je 5V op zijn ingangen zet.

Dus, de vraag: 1) klopt het dat er stroom van de VCC van de relais naar de Due gaat lopen als ik de input LOW maak? En 2) zo ja, wat nu?

Bedankt alvast!

Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Als ik zo de schematic bekijk bevat het relaisbordje bij elk relais ook al stuurelektronica/transistor, terugslagdiode en een ledje die aangaat als de relais ingeschakeld is (+ nog een algemeen power ledje). Die transistor zorgt ervoor dat je met een kleine stroom al kan schakelen. Het is een pnp-transistor die volgens mij open gaat als je een positieve spanning op de ingang zet. Dit hoeft geen 5 volt te zijn. Verder moet je natuurlijk wel de VCC en GND aansluiten. De Arduino heeft hier gaatjes voor.

edit:
8)7 Antwoorden op de vragen:
NS_5 schreef op maandag 13 mei 2013 @ 00:18:
Dus, de vraag: 1) klopt het dat er stroom van de VCC van de relais naar de Due gaat lopen als ik de input LOW maak? En 2) zo ja, wat nu?
1) Volgens mij niet. Bij een low gaat de transistor dicht en het relais en het bijbehorende ledje uit. Misschien heb je gelijk.
2) Niets. Het bordje is er op gemaakt dat je hem veilig met een microcontroller kan aansturen.

edit2:
Het kan zijn dat ik de werking omdraai van de transistor; feit blijft wel dat hij ervoor zorgt dat de stuurstromen vanuit/naar de microcontroller klein blijven

edit3:
De stuurstroom die gaat lopen is volgens mij 5V / 1 kOhm = 5 mA. In de specs van de Arduino kan je lezen of dit teveel is.

[ Voor 45% gewijzigd door Daos op 13-05-2013 02:07 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Er zitten PNP transistoren in: een LOW op IN1 en/of IN2 zorgt ervoor dat er een stroom van VCC via het relais naar GND gaat lopen. Het relais trekt dan aan. Dus 1): ja.

Acties:
  • 0 Henk 'm!

  • heggico
  • Registratie: Augustus 2011
  • Laatst online: 12:11
Dus 1):nee, niet helemaal. Niet de stroom door de relais, maar de stuurstroom van de transistor.
2): Dit gaat helaas niet zomaar werken. Omdat de transistor past stopt met geleiden als de spanning op de ingangspin boven de 4.3V komt (5V- diodeovergang=~0.7V). Je zult dus nog een klein printje er tussen moeten zetten met bv een npn torretje. Hierdoor gaat de stuurstroom die je arduino moet leveren/sinken ook meteen nog verder omlaag

Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Raar dat ze hem dan niet met een npn-transistor hebben gebouwd. Dan heb je dat probleem met te lage aanstuurspanning toch niet?

edit:
Soms zie je een weerstand tussen de base en emitter. Werkt dit dan niet als een soort pull-up? Je kan dan misschien de uitgang als ingang configureren zodat hij een hoge impedantie krijgt en dat hij daardoor uitschakelt. Een weerstandje van 10 kOhm bij elke transistor solderen is dan misschien alles wat nodig is

[ Voor 56% gewijzigd door Daos op 13-05-2013 12:29 ]


Acties:
  • 0 Henk 'm!

  • SA007
  • Registratie: Oktober 2002
  • Laatst online: 09-10 23:20

SA007

Moderator Tweaking
Mm, erg vaag ontwerp, dat krijg je niet aangestuurd met een 3.3V signaal.

Opties die je hebt:
1. Bord aanpassen naar NPN transistors ipv PNP.
2. NPN transistors toevoegen op de input pinnen.
3. Relais vervangen door 3.3V modellen (bijna onvindbaar).

Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Daos schreef op maandag 13 mei 2013 @ 12:17:
Je kan dan misschien de uitgang als ingang configureren zodat hij een hoge impedantie krijgt en dat hij daardoor uitschakelt. Een weerstandje van 10 kOhm bij elke transistor solderen is dan misschien alles wat nodig is
Met een beetje mazzel werkt dit misschien ook zonder extra weerstand. Gewoon uitgang configureren als input en kijken of hij uitgaat.

Acties:
  • 0 Henk 'm!

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
SA007 schreef op maandag 13 mei 2013 @ 14:25:
Mm, erg vaag ontwerp, dat krijg je niet aangestuurd met een 3.3V signaal.

Opties die je hebt:
1. Bord aanpassen naar NPN transistors ipv PNP.
Dat gaat ook niet werken omdat de emitter niet aan ground hangt. Basis moet bij NPN hoger hangen dan emitter, hou je te weinig spanningsruimte over want de collector moet nog hoger dan basis zitten. Dan zou je de transistor ook moeten verplaatsen en dat is waarschijnlijk niet realistisch.

Die oplossing met hoogimpendante ingangen vind ik eigenlijk wel een leuke. Pin als input configureren schakelt hem uit, als je hem als output configureert en een LOW schrijft zal hij current sinken. Dan heb je wel genoeg om dat ding in geleiding te krijgen. Dat werkt wel.

Ik zal het even wat verder toelichten. Jouw vraag:
1) klopt het dat er stroom van de VCC van de relais naar de Due gaat lopen als ik de input LOW maak?
Nee, maar wél als je de output low maakt. Arduino's benoeming van een IO als input/output is een tikkie te simpel, feitelijk schakel je daarmee de tri/state buffer van een pin. Dat wil zeggen:

Pin als input programmeren zet de tri-state buffer AAN. Dat wil zeggen dat de ingang hoogimpendant is, dat er verwaarloosbaar weinig stroom loopt en beschouwd kan worden als een open verbinding. Als die buffer aan staat kun je ook de spanning op die pin uitlezen als bitje.
Pin als output programmeren zet de tri-state buffer UIT. Dan kun je stroom van (sourcen) en naar (sinken) de microcontroller laten lopen, tot een maximum van +- 20mA per pin en een maximum voor alle pinnen in totaal (staat in de datasheet van die microcontroller). Door high of low naar die pin te schrijven defineer je de spanning op die pin.

Van een PNP-transistor loopt de "stuurstroom" (ik ben de term basisstroom gewend) VAN de basis (bij een NPN loopt hij NAAR de basis) en die moet weg om dat ding in geleiding te krijgen, dus naar ground. Als je je Duo-pin als output defineert en je schrijft een LOW, dan hangt die pin aan ground en kan hij stroom sinken. Je relais zal schakelen.

Het verradelijke is dat je grote kans hebt dat als je een output HIGH schrijft naar die pin dat het relais blokkeert. Je werkt op 3V3, dus aan de linkerkant van R1 of R2 op je schema zet je 3V3, maar op de basis staat altijd VCC - 0,7V = 4,3V vanwege de interne diode. Dat betekent dat er nog steeds spanning staat over de weerstand van 4,3 - 3,3 = 1V, dus wet van Ohm toepassen I = U/R = 1/1k = 1mA loopt er nog steeds vanaf die basis weg als je die pin hoog maakt. Dat betekent dat die transistor niet volledig blokkeert, maar wel een stroombegrenzing instelt. Een relais heeft altijd een minimumstroom nodig om te schakelen en door die stroombegrenzing wordt die stroom waarschijnlijk niet gehaald, dus zal het relais niet schakelen. Nou, mooi toch zou je denken, maar je verspilt wel stroom en dat willen we natuurlijk niet.

Dus die oplossing die iemand anders dus noemde is om je pin te schakelen als input. Dat maakt hem hoogimpendant en daardoor fungeert hij in feite als open verbinding. Als je dat doet kan er geen stroom lopen van de basis naar ground en zal die tor volledig blokkeren, waardoor je ook geen stroomverspilling meer hebt. Dankzij R1 en R2 is dit ook niet schadelijk voor de Duo. Dus even een vertaalslag maken met het programmeren, waarschijnlijk anders dan je gewend bent, maar dat lost het wel op zonder extra componenten.

/edit: Ik lees dit nog eens even door en begin te twijfelen over dat laatste... Als die pin hoogimpendant is en er geen stroom loopt, heb je ook geen spanningsval over R1/R2 en dat zou betekenen dat je 4.3V aanbiedt aan die Duo wat dus wél schadelijk is...

Misschien toch een goed idee om een mosfetje ervoor te zetten. Dat kan sowieso als je problemen hebt met digitale spanningniveau's.

[ Voor 67% gewijzigd door Flake op 13-05-2013 21:09 ]


Acties:
  • 0 Henk 'm!

  • Koffie
  • Registratie: Augustus 2000
  • Nu online

Koffie

Koffiebierbrouwer

Braaimeneer

Heb je niet iets aan deze: https://www.iprototype.nl...s/buttons-switches/relais ?
Die gebruik ik met mijn Raspberry Pi.
Ik heb 5V naar het relais lopen, en gebruik een GPIO pin (3.3v) om dmv high en low het relais te schakelen.

Tijd voor een nieuwe sig..


Acties:
  • 0 Henk 'm!

  • tonschong
  • Registratie: Februari 2009
  • Laatst online: 09-10 18:20
Of natuurlijk deze http://dx.com/s/arduino+relay

Edit; zag dat je al een bordje had.

[ Voor 29% gewijzigd door tonschong op 14-05-2013 20:08 ]


Acties:
  • 0 Henk 'm!

  • NS_5
  • Registratie: Februari 2005
  • Laatst online: 18-12-2024
Bedankt voor de uitleg allemaal. Ik was al bang dat het allemaal wat tricky ging worden. Ik heb ook even met één van mijn electronicadocenten (doe zelf geen electronicaopleiding btw) gesproken, en hij tekende ook al gauw een schakeling zoals Flake die beschrijft op een whiteboard.

Helaas is dat iets teveel van het goede denk ik. Want om nou overal een diode + 2 weerstanden voor te solderen (ik moet 16 relays schakelen :X ), dat is toch wat veel en onhandig. Ik denk dat ik toch gewoon voor een Arduino Mega ga in dit geval. Waren het minder relais geweest dan had ik de soldeerbout gepakt ;).
Pagina: 1