Arduino multplexen met HC595

Op 28 juli 2016 23:34:18 schreef High met Henk:
je kunt ook een losse Atmel nemen, dan kun je al veel meer IO kwijt een atmega128 bijvoorbeeld..

of als je op arduino platform wilt blijven de genuino.

maarem het is een idee. er is niets mis met Multiplexen.

Omdat ik geen enkele electronica ervaring heb wou ik toch eerst wat simpele dingen succesvol doen alvorens componenten te gaan gebruiken waar meer kan bij mis gaan. Bij bootloaders en hun mogelijke problemen waren ze me dus al kwijt.
Over Arduino (2009 = ATmega328) kan je zowel informatie in eenvoudige bewoordingen terugvinden als gedetailleerde info over details. Ik vermoed ook dat het programmeren wat eenvoudiger is omdat enkele zaken je al uit handen genomen worden.

Het is dus niet de goedkoopste/krachtigste, oplossing, maar laat iemand zoals mezelf toe om er stapsgewijs in te komen (of het te houden op eenvoudige dingen).
Zo probeer ik momenteel uit te zoeken hoe ik met analoge signalen en PWM kan omgaan (744051 of ...). Dan moet er ook nog een eenvoudige display bijkomen en externe klok, bekijk ik wat ik met i2c protocol kan doen, moet er data logging gebeuren en was het mijn idee om voor bediening een link te leggen met een Raspberry PI (waar ik nu nog niets van ken).

Je kan me dus niet verwijten geen ambitie te hebben (gehad ?).

Op 28 juli 2016 22:58:13 schreef Arco:
Zitten alle overige lijnen van de 74595 wel aangesloten? (anders gaat 'ie natuurlijk vreemde dingen doen...)

In men testopstelling zijn alle pinnen aangesloten op een led met weerstand.
Ingangen hebben daarnaast een drukknop of schakelaar naar de plus. 'Zwevende' spanningen zou ik dus nergens mogen hebben.

Op 28 juli 2016 22:58:13 schreef Arco:
Schema is nogal een warrige boel (alles loopt door elkaar, en van de transistoren is niet duidelijk of het een top of bottom view is)

De vorige bijlage was de print layout (top-view op componenten, blauw zijn connecties onderaan, rood langs boven).
Hier als bijlage het elektrisch schema. Beiden zijn gemaakt met eagle en wijken dus niet van mekaar af.

Arco

Special Member

Weerstanden van 10k aan de optocoupler ingang zijn wel heel, heel erg hoog... (ik zou 470 Ohm of hooguit 1k nemen)
Wat is trouwens het nut van die optocouplers? (zo te zien zitten in en uitgang aan dezelfde voeding vast...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Ik gok op "een poging de 595 te beschermen". Mijn voorstel: beschouw die 595 gewoon als "buffer" die zichzelf opoffert als er dingen verkeerd gaan.

Je output schakeling is niet zo handig. Zo hou je maar ongeveer 4V over aan de uitgang. Dat kan 5x beter met een iets andere constructie (ofwel: schakel de min, de opto trekt dan de basis van de 547 via een weerstand omhoog, ofwel gebruik een 557 en de opto trekt via een vergelijkbare constructie de basis omlaag om hem aan te krijgen).

Je huidige constructie werkt niet. Zet je 20V op een uitgang, dan gaat zo'n uitgangstransistor kapot, en gaat geleiden. Dan krijg je 20V op je 5V draad en dan gaat de arduino ook gewoon kapot. Aparte voedingen zijn nodig om enige zekerheid te hebben dat een fout niet "overslaat". Gewoon voorzichtig zijn... :-)

[Bericht gewijzigd door rew op vrijdag 29 juli 2016 07:48:00 (24%)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
mel

Golden Member

Is de voedingsspanning wel ontkoppeld op ieder ic? Dat wil ook wel eens rare dingen geven.

u=ir betekent niet :U bent ingenieur..

In het onderhavige geval was de aansturing statisch en stond de boel al raar te doen (oscileren). Dus dat zal niet komen doordat de chip dynamisch z'n voeding onderuit trekt (waar je de ontkoppel-C voor hebt).

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Wanneer je OE hoog maakt worden de uitgangen in Z-state gebracht. Mijn ervaring is dat de uitgangen beginnen te "zweven" waardoor je soms onverwachte resultaten krijgt. Om dit op te lossen gebruik ik vaak een resistor-array waarvan ik de gemeenschappelijke pen aan GND hang. Zoals arco al vermelde is 10kΩnogal aan de hoge kant. Een waarde tussen 470Ω en 1kΩ is meer gebruikelijk

Depeet

Je maakt het je makkelijker als je een Arduino Mega pakt, die heeft veel meer I/O on board.

Op 29 juli 2016 09:53:24 schreef depeet:
Wanneer je OE hoog maakt worden de uitgangen in Z-state gebracht. Mijn ervaring is dat de uitgangen beginnen te "zweven" waardoor je soms onverwachte resultaten krijgt. Om dit op te lossen gebruik ik vaak een resistor-array waarvan ik de gemeenschappelijke pen aan GND hang. Zoals arco al vermelde is 10kΩnogal aan de hoge kant. Een waarde tussen 470Ω en 1kΩ is meer gebruikelijk

Als ik OE hoog zet is alles perfect 0 en heb ik geen enkele sturing van uitgangen. Als ik OE laag maak begint de chip onmiddellijk te reageren.

Op 29 juli 2016 01:36:21 schreef Arco:
Weerstanden van 10k aan de optocoupler ingang zijn wel heel, heel erg hoog... (ik zou 470 Ohm of hooguit 1k nemen)
Wat is trouwens het nut van die optocouplers? (zo te zien zitten in en uitgang aan dezelfde voeding vast...)

De werking van de optocouplers met 10k heb ik op zich gecontroleerd en werkt prima. Door de stroom laag te houden kan ik meer kaartjes gaan toevoegen (5V@10k= 0.5mA, 64 DO+32 DI = 50mA,
Arduino 200mA max per groep -> zou dus max. tot 2,5k kunnen laten zakken).

Op 29 juli 2016 07:45:27 schreef rew:
...
Je output schakeling is niet zo handig. Zo hou je maar ongeveer 4V over aan de uitgang. Dat kan 5x beter met een iets andere constructie (ofwel: schakel de min, de opto trekt dan de basis van de 547 via een weerstand omhoog, ofwel gebruik een 557 en de opto trekt via een vergelijkbare constructie de basis omlaag om hem aan te krijgen).

Je huidige constructie werkt niet. Zet je 20V op een uitgang, dan gaat zo'n uitgangstransistor kapot, en gaat geleiden. Dan krijg je 20V op je 5V draad en dan gaat de arduino ook gewoon kapot. Aparte voedingen zijn nodig om enige zekerheid te hebben dat een fout niet "overslaat". Gewoon voorzichtig zijn... :-)

De optocouplers laten toe om 2 (of meer) verschillende voedingen te gebruiken en juist het probleem van overslaan of kortsluiting (arduino reset) te vermijden.
Zo kan ik ook, door 5,7V voeding te geven, opnieuw een mooie 5.0V uitsturen (of eender welke andere spanning)
Zo kan ik ook één kaartje spanningsloos maken zonder uitgangen los te maken en kan ik bvb een opgeblazen transistor vervangen zonder de arduino stil te moeten leggen.

Door de transistoren aan de plus zijde te hangen is mijn nul overal nul en geen 0,7V. Die 0,7V tussen de nul van een sturing en de echte nul zou in eventuele achterliggende elektronica voor problemen kunnen gaan zorgen en dat wil ik vermijden.

Op 29 juli 2016 09:07:59 schreef Vonkenpromotor:
Probeer deze eens van het Arduino form:

https://www.arduino.cc/en/Tutorial/ShiftOut

Daar is alles op gebaseerd, ik heb daar een scheiding van voedingen aan toegevoegd en ook de OE en MR beschikbaar gemaakt (kan deze nog steeds vast zetten indien ik ze toch niet zou gebruiken)

Op 29 juli 2016 10:03:26 schreef Rolo:
Je maakt het je makkelijker als je een Arduino Mega pakt, die heeft veel meer I/O on board.

Heeft 54 IO en daar ga ik zeker niet mee toekomen. Het is wel een optie om 2 Mega's te gebruiken.

Om het geheugen niet te overbelasten (geen idee hoeveel nuttige code daar in te krijgen valt) wil ik de code in de arduino heel eenvoudig houden (servo, encoder, allerlei regelkringen, tijd gestuurde uitgangen en eenvoudige 'snelle' logica).
'Trage' logica wil ik extern laten draaien (Rasberry PI of ...)

Arco

Special Member

De werking van de optocouplers met 10k heb ik op zich gecontroleerd en werkt prima.

Je denkt dat het prima werkt... ;)
Met zo'n lage stroom (380µA) is de CTR van de opto ronduit bedroevend (ver onder de 100%)
(de Vcesat van de transistor wordt niet eens opgegeven bij zulke extreme waardes. Een geval van 'werkt, maar absoluut niet aan te bevelen en onbetrouwbaar')

Neem een pic24, die is er in 100 pins, kun je vooruit...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Het lijkt dat alles op minieme spanningen reageert (radio ?, ... ) waarbij ikzelf en/of draden als antenne functioneren.
Gewoon door mijn hand te bewegen, zonder iets aan te raken, of een hendeltje van een schakelaar aan te raken, heeft dit al impact.

Ik heb laminaat op de vloer en geen tapijt, zelf contact maken met de nul geeft ook geen verbetering.

P.S. Ik gebruik een 74HCT595N (als dit enig verschil zou maken) - geen zinvol idee waarom ik niet de klassieke 74HC595 gebruik.

Op 29 juli 2016 14:20:44 schreef Arco:
[...]
Je denkt dat het prima werkt... ;)
Met zo'n lage stroom (380µA) is de CTR van de opto ronduit bedroevend (ver onder de 100%)
(de Vcesat van de transistor wordt niet eens opgegeven bij zulke extreme waardes. Een geval van 'werkt, maar absoluut niet aan te bevelen en onbetrouwbaar')

Neem een pic24, die is er in 100 pins, kun je vooruit...

Ik heb de test niet gedaan, maar vermoed dat dit enkel kan door aan de andere zijde de uitgang naar een extra transistor te leiden die dan als versterker dient.
Tot nu toe heb ik er enkel ledjes mee gestuurd (2 à 3 mA). Of de transistor in volledige geleiding zit weet ik dus niet. Zal eens een testje met 50mA doen.

Ondertussen test gedaan en ik kan inderdaad maar 4 à 5 mA trekken.
Een optie is om er darlington schakelingen van te maken.

Om de aangehaalde redenen (met één foutje de boel opblazen / het totaal vermogen dat de arduino moet leveren) stap ik niet graag af van de scheiding van stuurcircuit en 'vermogen' deel.

Een 595 kan per uitgang wel 25mA leveren, maar in totaal slechts zowat 70 mA (Vcc/GND). Rechstreeks 8 relais gaan sturen is dus niet echt mogelijk. Ik wil hem ook niet belasten met de in- en uitschakelpieken (zelfs met terugslagdiode over de spoelen).

[Bericht gewijzigd door Cojon op vrijdag 29 juli 2016 15:26:11 (27%)

Arco

Special Member

Is niet 'klassiek'... ;)
Zijn gewoon verschillende families. De HC is cmos compatible, en de HCT is TTL compatible. (qua logic levels)
Als de boel vreemd doet bij in de buurt komen of aanraken, hangt er ergens gegarandeerd een ingang los die als antenne functioneert...
Wat je kunt schakelen hangt van de BC547 af (of dit een A, B, C type is). De 100mA haal je zeker niet. (met de BC547A haal je met wat veel geluk zo de 25mA)

Uitproberen hoeft niet; als de datasheet zegt dat iets niet gaat of twijfelachtig is: niet aan beginnen.
De 595 kan die ledjes ook rechtstreeks aansturen; dan kan alle onnodig/zinloos spul er tussenuit (opto, bc547)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Ondertussen test gedaan en ik kan inderdaad maar 4 à 5 mA trekken.
( Correctie : fout getest, blijkt tot ca 80mA te geraken bij kortsluiting)
Een optie is om er darlington schakelingen van te maken.

Om de aangehaalde redenen (met één foutje de boel opblazen / het totaal vermogen dat de arduino moet leveren) stap ik niet graag af van de scheiding van stuurcircuit en 'vermogen' deel.

Een 595 kan per uitgang wel 25mA leveren, maar in totaal slechts zowat 70 mA (Vcc/GND). Rechstreeks 8 relais gaan sturen is dus niet echt mogelijk. Ik wil hem ook niet belasten met de in- en uitschakelpieken (zelfs met terugslagdiode over de spoelen).

http://www.learnerswings.com/2014/09/cascade-operation-of-two-74595-sh…

Meer heb je niet nodig. Wil je relais aansturen gebruik je achter de 74HC595 een ULN2803.

[Bericht gewijzigd door Roland van Leusden op vrijdag 29 juli 2016 15:30:56 (24%)

It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.
Arco

Special Member

Voor relais neem je een ULN2803. Heb je 8 uitgangen, en de diodes zitten er ook al in... :)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
blackdog

Golden Member

Hi Cojon, :-)

Heb je ook al eens bij Microchip gekeken, deze hebben een serie i2c extenders zodat je tot 64 extra in/uitgangen kan gaan.

MCP23017 en b.v. de MCP23018, hou echter wel rekening met de maximale spanning die de uitgangen aan kunnen (5,5V).
Als je zeg 12V of 24 relais wilt gaan sturen heb je alsnog een transisor nodig of zoals al eerder is voor gesteld een ULN2803 of een van zijn broertje.

Misschien is het wat voor je...

Gegroet,
Blackdog

You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.
Arco

Special Member

...een serie i2c extenders zodat je tot 64 extra in/uitgangen kan gaan...

Kan nog wel verder ook, hoor... ;) (16 bit per expander)
Ik heb kortgeleden trouwens een andere handige i2c expander gevonden: de PCA9506. Geeft 40 extra i/o per chip...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 29 juli 2016 15:28:54 schreef Roland van Leusden:
http://www.learnerswings.com/2014/09/cascade-operation-of-two-74595-sh…

Meer heb je niet nodig. Wil je relais aansturen gebruik je achter de 74HC595 een ULN2803.

Het cascade gebruik van 595 en 165 ken ik. De ULN2803 kende ik nog niet. (Thx)

@ Blackdog
@ Arco

Ik ben met het i2c protocol bekend in zoverre dat je daar dus inderdaad meerdere (en zeer diverse) ic's kan aanhangen en deze individueel aanspreken.

De reden dat ik er niet mee begonnen ben is dat ik het simpel wilde houden. i2c is/lijkt niet zo moeilijk, maar het was toch al een stapje verder. Bovendien moet ik dan meteen alles via de arduino doen.
Moest ik komen vast te zitten om het werkende te krijgen, dan zou dit mijn 'jeugdig' enthousiasme nogal temperen en komt de kartonnen doos boven.

Met het handje data in klokken op een 74HC595 dmv een drukknop zonder ontdendering is ook geen feestje hoor. Mi maak je het jezelf allemaal veel te moeilijk.

Een TPIC6B595 is nog handiger dan de combinatie van 74HC595 & ULN2803

Simple shift register IC that can control high-voltage/high-current devices directly! Clock in data and latch it to control devices like relays, motors, high-current optical devices, and more! Each channel can sink 150mA continuous, 500mA max.

https://www.sparkfun.com/products/734

It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.

In het schema achter de link van de eerste post van Roland merkte ik op dat de nul ook geaard was.

Even gecontroleerd hoe het bij mij zat en blijkt dat ik mijn DC voeding niet van aarding voorzien had.
Ik vreesde dat het iets dom ging zijn en heb me waarschijnlijk laten verleiden tot een tweepolige stekker omdat de voeding van een laptop er tenslotte ook maar twee heeft.
https://az705183.vo.msecnd.net/onlinesupportmedia/onlinesupport/media/skype/screenshots/fa12330/emoticons/facepalm_80_anim_gif.gif?width=40&height=40

Het wilde flikkeren is nu weg.
Ik krijg het nog niet aan het werken, maar zou nu verder moeten kunnen met foutzoeken.

Iedereen bedankt voor mee te denken en de extra info.

Moest ik in het schema zelf nog iets (moeten) aanpassen, dan post ik wel een update, anders zal het een foutje in de testopstelling zijn of heeft het inderdaad met denderen te maken en hang ik het nu beter rechtstreeks aan de arduino.

Zodra ik ook resultaat heb met de 74165, post ik daar het schema van.
Niet dat die schema's nu zo geweldig zijn, maar voor iemand die de kennis heeft die ik had, kan het altijd handig zijn (heb nooit iets teruggevonden met optocouplers).

@ Roland
Een eenvoudig shiftregister wilde ik niet gebruiken omdat dat tijdens het shiften de uitgangen wijzigen tot het shiften voltooid is. Trage actoren hebben daar nauwelijks last van, maar als je met de uitgangen andere digitale electronica gaat sturen dan is het geen optie. Ik wil inderdaad alle opties open houden en maak het daardoor niet eenvoudig - ook al is de huidige optie niet echt moeilijk te noemen en biedt ze toch veel voordelen.
---TPIC6B595 is inderdaad de betere optie (tot 1W totaal vermogen en eigen uitgangsspanning tot 50V).---

====> Topic voorlopig gesloten.

Ik bedoelde meer dat je direct icm je arduino zou moeten testen. Voor fout zoeken ed kan een logic analyser (saleae clone icm sigrok) ook handig zijn.

https://sigrok.org/wimg/thumb/e/eb/Pulseview_win_jtag.png/800px-Pulseview_win_jtag.png

https://sigrok.org/

https://sigrok.org/wiki/MCU123_Saleae_Logic_clone

[Bericht gewijzigd door Roland van Leusden op vrijdag 29 juli 2016 17:34:09 (18%)

It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.