2x PCF8591 uitlezen met Raspberry Pi problemen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Mavamaarten
  • Registratie: September 2009
  • Laatst online: 16:26

Mavamaarten

Omdat het kan!

Topicstarter
Hoi medetweakers,

Als klein vakantieproject had ik het idee om een DJ controller te maken. Alle onderdelen zijn ondertussen ingebouwd en gesoldeerd, alle knopjes werken, maar ik loop tegen een probleem aan met het uitlezen van mijn A/D converters.

Het gaat om 2x PCF8591's die ik uitlees met een Raspberry Pi.
Ik kan AIN0 van de 1e A/D chip (met adres 0x48) zonder problemen uitlezen, maar AIN1, 2 en 3 geven schijnbaar random waarden aan. Toon je de waardes in een grafiekje/progressbar, dan zie je dat die laatste 3 bits een soort van binaire teller zijn. Héél vreemd. Ik dacht iets verkeerd te hebben geprogrammeerd, maar zowel mijn eigen java-code als een op internet gevonden stuk code om een PCF8591 uit te lezen geven dezelfde waarden.
Hier is een filmpje van wat er te zien is, dat verduidelijkt het probleem misschien: https://dl.pushbulletuser...5/VID_20150823_162737.mp4 (150 is de waarde die dus klopt)

De tweede converter heeft adres 0x4f en deze geeft voor élk inputkanaal 128. Dat is dus helemaal niet goed :/
Ik heb de tweede converter al eens losgekoppeld om te kijken of er interferentie was tussen de twee chips op de bus, maar er verandert niets aan de output.

Nu zit ik dus een beetje met mijn handen in het haar. Ik heb wel een beetje basiskennis elektronica (zelf opgedaan, niet van school ofzo), maar dit gaat mijn pet een beetje te boven. Heeft er iemand misschien een idee wat ik verkeerd zou kunnen gedaan hebben, of waar ik kan beginnen troubleshooten?

Een mooi schema is het niet (in het echt is het ook een warboel van draadjes op mijn breadboard), maar dit is hoe ik alles ongeveer aangesloten heb: Afbeeldingslocatie: http://i.imgur.com/sgCEK5H.png

Alvast bedankt voor het meedenken! :)

Android developer & dürüm-liefhebber


Acties:
  • 0 Henk 'm!

  • Mavamaarten
  • Registratie: September 2009
  • Laatst online: 16:26

Mavamaarten

Omdat het kan!

Topicstarter
Bump?
Ik had het idee dat ik misschien pull-up weerstanden nodig had bij de I²C-bus, maar blijkbaar heeft een Raspberry Pi die al ingebouwd. Dat kan het probleem dus al niet zijn... :/

Android developer & dürüm-liefhebber


Acties:
  • 0 Henk 'm!

  • conara
  • Registratie: Februari 2010
  • Laatst online: 07:31
Heb je een logical analyzer of een oscilloscoop? Vaak kan je met die hulpmiddelen eenvoudiger debuggen. Zelf zal ik als eerste de volgende stappen doorlopen:

- Alle AINx ingangen aan de 3.3v koppelen. (en kijken wat het resultaat daarvan is). Oftewel de opstelling zo klein en simpel mogelijk maken.
- kijken wat er over de i²C bus gaat.

Ik heb even snel door het datasheet gebladerd en heb nog geen dingen gevonden die je eventueel verkeerd zou kunnen doen. Ik kan aan de hand van jou informatie niet zeggen wat er verkeerd gaat. Kan je een datadump maken van de data die je binnen haalt? Is het steeds dezelfde data? als je het interval van het pollen aanpast wordt het dan andere data of?

Acties:
  • 0 Henk 'm!

  • Mavamaarten
  • Registratie: September 2009
  • Laatst online: 16:26

Mavamaarten

Omdat het kan!

Topicstarter
Ik heb helaas geen oscilloscoop o.i.d., ik heb de basis aan materiaal (multimeter, breadboard, een berg componenten die ik uit allerlei toestellen heb gesloopt). Alles aan 3.3V koppelen is een goed idee, dat zal ik later vandaag even proberen. Ik was al van plan om mijn schakeling helemaal af te breken (is op breadboard momenteel), misschien dat ik ergens iets verkeerd verbonden heb.

De snelheid van het pollen heeft geen invloed, dat had ik al geprobeerd. Ik was ook op de hoogte van het feit dat je 2x moet lezen van de bus als je van kanaal wisselt, de 1e keer berekent hij dan de waarde voor je en de 2e keer zet hij de waarde op de bus. Maar ja ook dat is het probleem niet.

Bedankt voor je input, in elk geval :)




Hm, een halve overwinning! :)
Bij het herbouwen van het schema merkte ik op dat ik Vdd aan de 3,3V had gehangen ipv de 5V. Nu krijg ik op de 1e chip netjes alle vier kanalen te zien. De tweede chip, echter, doet het nog steeds niet. Ik krijg waardes van 192, met tussenin een hoop random rommel.

In de datasheet staat het volgende vermeld:
Supply lines common to a PCF8591 device and noisy digital circuits and ground loops should be avoided. Decoupling capacitors (>10 µF) are recommended for power supply and reference voltage inputs.
Beide chips hangen echter wel gewoon aan dezelfde "supply line", maar ik heb er geen andere. Ik heb kleine caps tussen Vref en Ground gehangen, maar dat had geen effect.

Om uit te sluiten dat 1 van de A/D's kapot is, heb ik ze al omgewisseld, maar met hetzelfde resultaat (1 werkt, 1 niet).

[ Voor 62% gewijzigd door Mavamaarten op 24-08-2015 19:01 ]

Android developer & dürüm-liefhebber


Acties:
  • 0 Henk 'm!

  • conara
  • Registratie: Februari 2010
  • Laatst online: 07:31
Goed om te lezen dat je vooruitgang boekt. Het gebruik van ontkoppel condensatoren is wel degelijk van groot belang voor de stabiliteit van de IC's. Sommige IC's hebben het meer dan andere maar de volgende vuistregel(s) gebruik ik altijd:

- Bij elke voedingspin een ontkoppel condensator (zo dicht mogelijk bij de pin) van 100nF
- Bij elke voedingspin een buffer condensator (plaatsing minder kritisch, maar hoe dichter bij hoe beter) van 10uF.

Indien er andere waardes in het datasheet staan dan die gebruiken uiteraard.

Overigens ben ik een beetje verbaasd over dit:
Hm, een halve overwinning! :)
Bij het herbouwen van het schema merkte ik op dat ik Vdd aan de 3,3V had gehangen ipv de 5V.
Want dit staat in het datasheet: 'Operating supply voltage 2.5 V to 6.0 V'
De tweede chip, echter, doet het nog steeds niet. Ik krijg waardes van 192, met tussenin een hoop random rommel.
Is het echt random? De waardes in je filmpje zijn namelijk niet random.
Beide chips hangen echter wel gewoon aan dezelfde "supply line", maar ik heb er geen andere. Ik heb kleine caps tussen Vref en Ground gehangen, maar dat had geen effect.

Om uit te sluiten dat 1 van de A/D's kapot is, heb ik ze al omgewisseld, maar met hetzelfde resultaat (1 werkt, 1 niet).
Er is natuurlijk een mogelijkheid dat die echt kapot is, maar vaak gaan ze niet zomaar kapot. Een te hoge spanning oid of verkeerde polariteit kan natuurlijk wel fataal zijn. Heeft de tweede chip hetzelfde wat de eerste chip eerst had?

Acties:
  • 0 Henk 'm!

  • Mavamaarten
  • Registratie: September 2009
  • Laatst online: 16:26

Mavamaarten

Omdat het kan!

Topicstarter
conara schreef op maandag 24 augustus 2015 @ 21:45:
Goed om te lezen dat je vooruitgang boekt. Het gebruik van ontkoppel condensatoren is wel degelijk van groot belang voor de stabiliteit van de IC's. Sommige IC's hebben het meer dan andere maar de volgende vuistregel(s) gebruik ik altijd:

- Bij elke voedingspin een ontkoppel condensator (zo dicht mogelijk bij de pin) van 100nF
- Bij elke voedingspin een buffer condensator (plaatsing minder kritisch, maar hoe dichter bij hoe beter) van 10uF.

Indien er andere waardes in het datasheet staan dan die gebruiken uiteraard.

Overigens ben ik een beetje verbaasd over dit:


[...]


Want dit staat in het datasheet: 'Operating supply voltage 2.5 V to 6.0 V'

Is het echt random? De waardes in je filmpje zijn namelijk niet random.
Tgoh, het eerste kanaal lijkt een heel klein beetje te reageren op input van een potmeter, terwijl de andere kanalen flikkeren tussen 192, 255 en soms 0. Het is wel echt zo goed als random, in tegenstelling tot de vorige keer waar het echt net een teller was.
Er is natuurlijk een mogelijkheid dat die echt kapot is, maar vaak gaan ze niet zomaar kapot. Een te hoge spanning oid of verkeerde polariteit kan natuurlijk wel fataal zijn. Heeft de tweede chip hetzelfde wat de eerste chip eerst had?
Ik heb ze beiden apart getest en ze doen het allebei. Gebruik ik ze beiden tegelijkertijd, dan verandert er niets aan de situatie als ik ze omwissel.

Ik dacht misschien dat het aan de (fysieke) lengte van de bus lag, maar als ik enkel de verste IC gebruik op de bus werkt het ook gewoon naar behoren. Misschien toch eventjes wat kleinere condensators aanschaffen (10uF is het kleinste dat ik heb)

[ Voor 3% gewijzigd door Mavamaarten op 25-08-2015 23:47 ]

Android developer & dürüm-liefhebber


Acties:
  • 0 Henk 'm!

  • Mavamaarten
  • Registratie: September 2009
  • Laatst online: 16:26

Mavamaarten

Omdat het kan!

Topicstarter
Kleine bump met een filmpje van de huidige situatie:
[YouTube: https://www.youtube.com/watch?v=VG0YMOhkQ24]

Ik heb het voorbeeldschema uit de datasheet nog eens goed bekeken en daar is één verschil: ze hebben een Analogue ground en een Digital ground. Tja, op een breadboard valt dat niet echt te realiseren, toch? :/
Momenteel heb ik twee buffer caps van 10 µF maar die hebben geen merkbare invloed. Caps van 100nF heb ik niet, ik heb er twee van 47nF, maar ook die geven geen merkbare invloed. (ik hang ze tussen Vdd en Ground, toch?)

Hier is wat in in elkaar heb geflanst:
Afbeeldingslocatie: http://i.imgur.com/Zyr3i9fl.png

EDIT: Toch twee .001 caps gevonden (dat is gelijk aan 100 nF als ik mij niet vergis?). Die hangen nu tussen Vdd en Ground, en dan die twee 47nF caps tussen Vref en Ground. Nog steeds geen verschil te merken. De flitsende waardes lijken iet of wat beinvloed te worden door de waardes van de potmeters, maar ik kan het niet echt in woorden uitdrukken. Ook als ik het film is het niet echt duidelijk... :/

Afbeeldingslocatie: http://i.imgur.com/d5RGEk3l.png

[ Voor 26% gewijzigd door Mavamaarten op 26-08-2015 13:58 ]

Android developer & dürüm-liefhebber


Acties:
  • 0 Henk 'm!

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
Mavamaarten schreef op maandag 24 augustus 2015 @ 11:20:
Om uit te sluiten dat 1 van de A/D's kapot is, heb ik ze al omgewisseld, maar met hetzelfde resultaat (1 werkt, 1 niet).
Daarmee sluit je dus al 2 mogelijke oorzaken uit, chip kapot of code fout. Ervan uitgaande dat je geen fout hebt gemaakt in de connecties op de 2e chip denk ik dat je breadboard de boosdoener is. Die krengen kunnen enorme ruis en oscillaties veroorzaken, dusdanig zelfs dat ik ze nooit meer gebruik. Ook een los contactje ergens kan al roet in het eten gooien en dan ben je zo ellendig lang aan het zoeken...

Dus ik zou een printje tekenen of alles op experimenteerprint bouwen.

/edit: Hoe zit het met je addressering van de 2e chip? Daar toevallig geen fout gemaakt? Kun je in software testen of je op dat tweede adres wel ACK's krijgt op de I2C bus?

[ Voor 10% gewijzigd door Flake op 30-08-2015 12:52 ]


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06-10 21:27

Damic

Tijd voor Jasmijn thee

Je grounds zijn in dit geval 1 dus die mogen gewoon van dezelfde ground komen, wat gebeurd er al je je adres selectie op 3V zet in de plaats van op 5V.

Dit al tegengekomen: http://wiringpi.com/extensions/i2c-pcf8591/ ?

ps. mooie Belgische vlag dat je onbewust getekend hebt :p

[ Voor 33% gewijzigd door Damic op 30-08-2015 13:15 ]

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • Mavamaarten
  • Registratie: September 2009
  • Laatst online: 16:26

Mavamaarten

Omdat het kan!

Topicstarter
Ugh 8)7 Ik heb het probleem gevonden. De voedingsrails van mijn breadboard lopen niet helemaal door (wie heeft het verzonnen om dat niet aan te duiden op dat ding?). Dit had als gevolg dat Vss bij de 2e chip helemaal niet aangesloten was op de ground.

Ik kan nu zonder problemen beide A/D converters uitlezen. Zelfs zonder alle condensators en dergelijke werkt alles zonder interferentie.
Bedankt voor het meedenken!

Android developer & dürüm-liefhebber


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 06-10 21:27

Damic

Tijd voor Jasmijn thee

Daar is maar 1 reactie op _O- _O- _O- _O- _O- _O- _O- _O- _O- _O- _O-

Wat hebbe nwe daar uit geleerd?: Altijd je spanning controleren op je pinnen :D

[ Voor 34% gewijzigd door Damic op 31-08-2015 18:35 ]

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • Raven
  • Registratie: November 2004
  • Niet online

Raven

Marion Raven fan

Spanning controleren of niet, het is wel verwarrend dat bij het ene breadboard de voedingslijnen helemaal doorlopen en bij anderen halverwege onderbroken zijn en daar helemaal niets over vermeld is :S

After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...

Oscar Wilde

Pagina: 1