Sterrenhemel Deel2

Arco

Special Member

Goed lezen... ;)

@rew zegt niet gate 'aan de V+ hangen, maar 'aan de V+ +5 hangen' (dus +10v)

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

Golden Member

Op 30 april 2021 18:44:12 schreef Arco:
Goed lezen... ;)

@rew zegt niet gate 'aan de V+ hangen, maar 'aan de V+ +5 hangen' (dus +10v)

gate = drain.. :)

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Op 30 april 2021 18:44:12 schreef Arco:
Goed lezen... ;)

@rew zegt niet gate 'aan de V+ hangen, maar 'aan de V+ +5 hangen' (dus +10v)

Ah, got it. :7

Ik dacht dat het een tikfoutje was. Maar dan moet je wel +10V hebben. Ik heb alleen maar +5V...

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

https://www.circuitsonline.net/forum/view/message/2262029#2262029

Daarom zegt 'ie ook: "En /dat/ is niet eenvoudig...."

[Bericht gewijzigd door Arco op vrijdag 30 april 2021 18:52:48 (30%)

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

Golden Member

Alles valt op zijn plek...
@Rew sorry voor mijn foute lezen.. :'(

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Bij mij viel ook pas na een paar keer lezen het kwartje... ;) (gewoon +10v was duidelijker geweest)

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

Wanneer is deze sterrenhemel te zien in volle glorie?

I love it when a plan comes together !
Arco

Special Member

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

Golden Member

Om Pic's onderling informatie te laten uitwisselen (terwijl de voeding er bij eentje of beide afgaat); is daarvoor een extra losse EEProm het geijke middel?
Wat zou daarvoor een gangbaar type zijn?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

UART gebruiken?
EEprom zit aan de ene of de andere controller, niet beide. (een dual ported eeprom zou kunnen, maar dat is wel een rare en exotische oplossing...)
https://www.onsemi.com/pub/Collateral/CAT24C208-D.PDF

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

Golden Member

Uart ben je toch ook kwijt na power down?

Laat ik het probleempje beter omschrijven:

De module voor de sterrenhemel geeft een puls af aan de powermodule. Beide uitgevoerd met een PIC16F1847.

Als na controle op x tijd blijkt dat er geen puls komt (m.a.w. de zendende partij 'hangt', dan sluit de power module de voeding af en na 2 seconden weer op. En de de sterrenhemel draait weer vrolijk.
Dat werkt,

Alleen wil ik graag een onderscheid kunnen maken tussen een "echte" Power Off/On en eentje veroorzaakt door ingreep van de powermodule.

Ik zocht al naar iets om een Poort van de Powermodule hoog te zetten, zodat de ontvangende module weet dat de power reset door hem is veroorzaakt en daarmee een andere flow in moet.

Ik heb echter geen (input) poorten op de PIC van de sterrenhemel meer vrij, behalve de ICSPCLK en ICSPDAT.
Maar daar kan ik niet zomaar hoog of laag op zetten, anders ziet de PicKit de processor niet meer.

Edit: ik kan tijdens programmeren de verbinding naar de PicKit ook uitschakelen, dan werkt het wel. Maar het liefdte had ik de ICP poorten vrij gehouden.

Maar op = op (of andere processor maar dan moet i kde hele print weer ombouwen).

[Bericht gewijzigd door Bavelt op zaterdag 1 mei 2021 18:40:34 (11%)

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Vannacht is de sterrenhemel (nog zonder de nieuwe Power-module) weer op hol geslagen. Alle LEd's plotseling uit, behalve paneel 6, die alle leds aan doet met maximale helderheid.
Daarmee is meteen ook de PIC ontregeld en watchdog doet het ook niet meer.

Power Off - even wachten - power up en het draait weer voor een uurtje...

Er is nog geen liefde, laat staan een goed huwelijk tussen de PIC en MAX7219..

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Dat heeft niks met de communicatie te maken, er is ergens iets grondig mis zoals reeds enkele malen gezegd.
Ik gok nog steeds op de voedingsspanning of een latch-up van een van de i/o pinnen.

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

Als watchdog en hardware reset het niet meer doen, dan heb je iets als een latchup van je chip. Dat komt door spanningen ver buiten het normale werkgebied van de chip. Dus ofwel je voed de chip soms met 10V of de spanning op een IO pin wordt zonuendan -5V.

Condensatoren op de voeding, weerstanden in signalen naar lange draden kunnen helpen.

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

Golden Member

Het is inderdaad een hardnekkig geval en ook best wel knap vervelend.
Ik had zo'n mooie hemel gemaakt, maar ja..

Soms gaat het goed, maar dan weer onvoorspelbare resultaten.
In mijn proefopsteling op breadboard en ook de print die ik maakte werkt het bij mij thuis. Zelfs met een lange kabel.
Het protocol (SPI) moet dus in orde zijn.

De voeding wordt verzorgd door een voeding van 5V, 2A. Op de print heb ik overal goede condensatoren en bij de chips pal op de voedingspennen 100nF.

De MAX-printjes hebben allen een 100nf op de voeding van de chip. Andere hebben ook nog een elcootje van 10uF erbij. (niet alle printjes zijn gelijk)

Deze zijn gebruikt:

Op ieder paneel zit een printje.

Waarbij ik de LED-Matrixen niet heb gebruikt, maar in de pinnetjes draden heb gesoldeerd die naar de 'echte' LED's gaan.

Hoe ik dan 10V of -5V erop kan krijgen zou ik niet weten.

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Naast de voeding, zijn zowel de CLK als de Latch doorgelust. Galvanisch. Er hangen dus 8 MAX7219-chipjes rechtstreeks aangesloten op de microcontroller.

De Data wordt door de MAX doorgelust, die heeft dat dus niet.

Daarom dacht ik even om een line buffer te gebruiken, bijvoorbeeld de HCT125. een niet-inverterende buffer met Open collector.

Als ik die er tussen doe, zouden de draden van de CLK en Latch in ieder geval niet meer rechtstreeks aan de PIC hangen.
Zou dat de moeite van het proberen waard zijn?

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Nog een probleem:
De +5V schakelen vanuit een PIC met dezelfde GND als de te voeden schakeling:
Zodra ik een poort van de ene PIC aan de andere aanluit, meet ik op de Voeding toch een spanning van ca 2,5 V (terwijl je 0 wilt omdat hij 'uit' is).
Dat zal gaan via de chip denk ik.

Je ziet de schakeling met ledjes dan ook een beetje oplichten..

Dat zou dan weer iets moeten worden met een opto-coupler o.i.d?

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Als je de voeding van de pic afschakelt, moeten ook wel alle ingangen spanningsloos zijn.
Anders gaan die via de clampingdiodes spanning aan de Vcc terugleveren.

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

Golden Member

@Arco, kun je niks met I2C "line extenders" op die SPI bus ?

De jongere generatie loopt veel te vaak zijn PIC achterna.

Op 2 mei 2021 00:59:17 schreef Bavelt:
De +5V schakelen vanuit een PIC met dezelfde GND als de te voeden schakeling:

Ahhhhh.

Zoals zovaak op CO: Iemand vraagt naar een oplossing voor een probleem zonder het kader goed uit te leggen.

Jij hebt het in je hoofd gehaald dat het schakelen van de GND van de "hoofdprint" door de "power module" een probleem zou zijn. Dat is niet zo.

Mijn voorstel: sluit als "communicatie-pin" tussen de twee modules gewoon een power-module-cpu pin (zie maar welke) aan op ICSP_CLK (of de andere).

Bij het opstarten maak je op de hoofd-module die pin: input-met-pullup en wacht je 0.1 seconde. Als in de 1s daarna dat ding staat te wiebelen dan heeft de power-module je gereset.

2 sec later maak je de pin OUTPUT en om aan te geven dat je nog leeft wiebel je die 2x per seconde.

Aan de andere kant, die pin die je gekozen hebt is normaliter input, maar als je gaat powercyclen, dan zet je de boel uit, wacht even, dan zet je hem aan en 0.1s later maak je je pin OUTPUT en gaat voor 1s met dat signaal wiebelen. Dan maak je hem input-pullup, geeft een paar seconden respijt en gaat dan monitoren op minstens 1 verandering per seconde.

In normaal bedrijf zou je dan met de programmer er normaal bij moeten kunnen: De target chip wordt toch gereset voor dat ICSP actief wordt? Dus dat die pin tot op dat moment output geconfigureerd is dat geeft niet.

Als je de min schakelt van de hoofd-schakeling, dan zal je vanaf de power-schakeling gezien alle signalen (ALLES!) op de 5V spanning zien. Dat geeft niet. Wel dus opletten dat je een continue 5V niet ziet als "hij doet het", maar terwijl ie uitstaat zou je daar geen controle op moeten hebben lopen.....

Om het betrouwbaarder te maken, zet een 220 ohm weerstand tussen de PIC en het uitgaande CLK signaal naar de max chipjes. Zet een 10nF condensator van de max-kant van die weerstand naar GND. De RC tijd is nu 2.2 µs. Gebruik een klok frequntie van max 100kHz. Als je nu al een lagere gebruikt, mag je van mij die condensator schalen met hoeveel lager. 2x lager, 2x grotere condensator. Als de condensator (bij 10kHz dus) de 100nF bereikt ga je de weerstand verder verhogen.

Let op: Ik zeg niet dat je dat allemaal moet gaan doen, alleen dat je afhankelijk van je klokfrequentie wat kan spelen met de weerstand en condensator waardes.

[Bericht gewijzigd door rew op zondag 2 mei 2021 08:07:05 (15%)

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

Golden Member

Omdat mijn topic intussen wel héél lang is geworden en door de moderator al is gesplitst, hierbij nog een kleine evaluatie van mijn sterrenhemel project.

Nog niet zo heel lang geleden ben ik begonnen aan het 'spelen' met microcontrollers. Dankzij dit forum en enthousiaste leden kon ik door jullie hulp stukje bij beetje wat meer doen.
Ledjes, geluiden, Uart, Wifi, noem maar op.

Zoals in het normale leven, loop je dan tegen problemen aan die je niet had voorzien. Meestal omdat je de kennis ontbeerde.

Ik was inmiddels al zover dat ik het aandurfde voor een vriendin een sterrenhemel te maken.
Omdat ik wat had geexperimenteerd met diverse Microprocessors (met MikroBasic als mijn hulpmiddel) en met de MAX7219 dacht ik dat dit eenvoudig moest zijn te maken.
Thuis kan ik alles veranderen en uitzoeken, op een breadboard en printplaatje. Uiteindelijk werkte hier alles 'in het klein'.

Waar ik totaal niet aan had gedacht, was dat het gekozen prototol -SPI- niet is gemaakt voor lange afstanden, maar voor On board PCB.
tussen de chips dus, niet om lengtes te overbruggen.

De eerste problemen manifesteerden zich al toen ik de 8 panelen met in totaal 512 Leds hier nog had. De gammele Dupont verbindingen (en al helemaal dat goedkope Chinese spul) gaven de eerste tekenen.
De kabels heb ik rap vervangen door CAT5 UTP kabel met degelijke jacks op de printjes.
Waarom UTP? Daar zitten 8 draden in, met een redelijk stevige kern. En het is lekker compact.
Plus dat ik daar nog een grote rol van had..

Met wat zoekwerk en wederom hulp van leden op dit forum kon ik wat verbeteren. zoals verlagen van de SPI klokfrequentie en het aanbrengen van weerstanden van 2K in de MAX-moduultjes.
Dat leek te werken. Maar eenmaal de panelen bij een blijde vriendin te hebben gemonteerd, door na veel zaag- en boorwerk een stevig houten regelwerk te hebben aangebracht, begonnen toch weer de problemen en de vriendin werd minder blij. ;(
De panelen gingen vaak hun eigen weg, soms brandde alles, dan weer 1 paneel, etc.
Soms draait het ook zomaar een nacht goed. Onvoorspelbaar dus.
Wat wel steeds consequent is: als het spul hangt, dan rest slechts de hoofdschakelaar. De microprocessor geeft dan zijn pijp aan Maarten en gooit de handdoek in de ring. De ledjes aan het plafond vertwijfeld achterlatend..

Bij starten gaat het dan altijd weer meteen goed. Soms voor een aantal uren, soms na 1 uur.

Eigenlijk moet ik de conclusie trekken dat mijn ontwerp gewoon fout is.
Wat nu?

Het geheel zit aan het plafond gemonteerd, dus aan de kant van de MAX-moduultjes kan ik niks meer (behalve bij het eerste en laatste paneel kan ik nog bij).
Rest de kant van de Microprocessor.
Ik begeef me dan wel, dat besef ik terdege, op het pad van lapmiddelen, symptoombestrijding en ben niet bezig het echte probleem op te lossen.
Maar ja, dat ding zit er nu eenmaal... ;(

Dus probeer ik nu symbolisch de lekkende kraan zodanig te bewerken dat hij een klein beetje druppelt ipv dat het water er uit stroomt.

Een voorziening om de boel te resetten als ik kan constateren dat de processor het niet meer doet, kan hierbij een eerste middel zijn. Niet netjes natuurlijk, maar als dat één of twee keer per nacht gebeurt, is daar mee te leven.

En anders is de ultieme oplossing om het geheel van het plafond te verwijderen. Maar dat kan ik nog maar één keer doen. Dan moet ik het wel goed doen.

Waarschijnlijk is mijn eerdere gedachte, om alles, microcontroller én MAX7219's netjes kort bij elkaar te monteren op een keurige printplaat, en de bedrading van de MAX-en naar de Ledjes, dus zonder elektronica er tusen.

Ik heb al gemeten dat de MAX7219 de Ledjes aanstuurt met een Cycle time van 200 uS, 5kHz dus.
Dat zou geen narigheid moeten opleveren. Tenzij ik weer ergens overheen kijk.

De hoofdprint hangt nu nog los bij de panelen, dus daar kan ik nog van alles mee.
Dus is het nu proberen wat ik nog kan doen. De laatste tip is een weerstand van 220 Ohm naar de Clock (die ik al heb gereduceerd tot 31 Khz).

Een Condensatorje aan de MAX-kant kan dan alleen op de print, achter de weerstand, omdat ik niet meer bij de panelen kan.

Misschien dat ik die nog verder kan verlagen. Het lijkt me hoe lager die frequentie, hoe minder last van storingen en andere narigheid.

Ik weet echter niet of de MAX7219 een minimum clockfreqentie vereist.
Tot zover even mijn relaas.

Met dank aan iedereen die met me meedenkt!

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Elk nadeel heb se voordeel...

Door al dat zoeken en troubleshooten levert het ook wel weer kennis en ervaring op. :)

Zo ben ik er nu achter dat wanneer de MAX-en 'raar' doen (door wat voor verstoring dan ook), je niet persé de hele boel hoeft te resetten.

De MAX-keten opnieuw initialiseren en het gaat gewoon verder (mits de processor natuurlijk wel doordraait).

pic basic code:


 Max_Write(0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
 Max_Write(0x0B, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07)
 Max_Write(0x0C, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01)
 Max_Write(0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
 Max_Write(0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)

Als ik deze met regelmaat draai kan dat ook helpen!

Fouten zijn het bewijs dat je het probeert..
Bavelt

Golden Member

Ik heb hier thuis een breadboard opstelling van de schakeling en er 15 meter UTP tegenaan gegooid.
Draait als een zonnetje..

Dit is de klokpus die ik meet op het laatste MAX-je

Ziet er toch wel redelijk uit, niet?

(30uS cycle time)

Fouten zijn het bewijs dat je het probeert..
Arco

Special Member

Ziet er goed uit.
Wat ook interessant is, is om te meten aan de Gnd tussen begin en eind van kabel met de scoop. Daar mag zeker niet meer als 0.8v verschil tussen zitten...

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

Golden Member

Het verschil tussen thuis en op de bestemming is dat de MAX-en hier bij elkaar (per 4 stuks) zitten.

In de bestemming zit er tussen ieder paneel 60 cm UTP en op 1 paneel 120 cm
Het eerst paneel is 30cm van de print

Dus daar is het:
30+60+60+60+120+60+60+60 = 510m cm totaal

Fouten zijn het bewijs dat je het probeert..