Sterrenhemel

Bavelt

Special Member

O ja, ik heb nog een klein issue met MikroBasic:

Ik heb me aangeleerd om regelmatig op de 'Save' knop te drukken (altijd goed natuurlijk :) )

Maar dat is ook ingegeven omdat regelmatig, op onverwachte momenten, de applicatie (MB) spontaan crasht en dit mooie scherm verschijnt:

Wellicht een bug? Of wellicht 'iets' i.c.m. Windows10...

Man is still the most extraordinary computer of all. JF Kennedy
Bavelt

Special Member

Ik zit nog even met de (Witte) LED's.

Ze zijn nl te fel. Nu kan je met de Max7219 de lichtsterkte regelen op twee manieren:
- mbv het Intensity Register
- Mbv een externe weerstand de zgn Iset.
Standaard is deze 10k. (is ook gemonteerd op de printjes).

Op de minimale registry waarde (0x01) is de lichtsterkte (PWM 1/32) nog te groot. Daarom had ik de externe weerstand verhoogd naar 68K.

Nog te weinig.

In de datasheet staat wel een minimum waarde (rond 10K) voor de weerstand, maar ik zie geen maximale waarde (wellicht lees ik er over heen).
Zou je deze zonder problemen net zo kunnen verhogen als je wilt?

Punt is wel dat ik dan alle SMD weerstandjes moet vervangen op de printjes, dat wordt er niet echt beter op om in die printjes te knutselen. (bovendien zijn ze al gemonteerd op de panelen).

Wat ook zou kunnen is om bij elke 'rij' naar de MAX7219 een weerstand op te nemen.
Het grappige is dat ik daar best een behoorlijke waarde voor moet nemen om het spul wat te dimmen (meer dan 1k).
De voedingsspanning is 4,6 Volt, Daar valt niet meer te halen met een minimum vereiste 4V voor de Max-en.

Is er wellicht een beter idee?

Man is still the most extraordinary computer of all. JF Kennedy
Bavelt

Special Member

Nu ik 8 panelen met sterren aan de praat heb, is er nog een vreemd verschijnsel waarneembaar.
Als je je hoofd beweegt terwijl er sterren aan staan, dan zie je heel even een soort 'lichttrein' tussen twee LED's. Een soort echo-effect.

Ik weet niet of dit een stroboscopisch effect is. Maar ik vermoed dat het komt vanwege het gebruik van PWM, aangestuurd door de MAX7219's.

Kent iemand dit verschijnsel en is er wat aan te doen?

Man is still the most extraordinary computer of all. JF Kennedy

Alle 7219's multiplexen op hun eigen oscillator en snelheid, dat kan soms effecten opleveren.
Ik geloof niet dat de 7219 een mogelijkheid heeft om meerdere te synchroniseren.

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

Special Member

Op 22 februari 2021 19:04:26 schreef Arco:
Alle 7219's multiplexen op hun eigen oscillator en snelheid, dat kan soms effecten opleveren.
Ik geloof niet dat de 7219 een mogelijkheid heeft om meerdere te synchroniseren.

Ik kan zo gauw niet ontdekken welke frequentie de MAX7219 gebruikt om te PWM-en...

Man is still the most extraordinary computer of all. JF Kennedy
Bavelt

Special Member

Nog iets wat me verbaast:

Ik heb gemeten hoeveel stroom de leds in totaal trekken.
Dat gebeurt door een weerstand van 10 Ohm in de voeding aansluiting van de panelen met MAX-en op te nemen en daar de spanningsval over te meten.

Alle 8 panelen samen, met gemiddeld zo'n 250 leds aan vragen op de minimale lichtsterkte (die nog teveel is ook), slechts 20 mA.

(0,195 Volt over de 10 Ohm).

Bij de maximale helderheid, waarbij het licht er bijna uitknalt, is dat 80 mA in totaal.
Dat is toch verduiveld weinig?

Man is still the most extraordinary computer of all. JF Kennedy

't Zijn vrijlopende oscillatoren die voor multiplexen gebruikt worden dus die lopen nooit gelijk. Dat kan allerlei interferentiestoringen geven...
De totale stroom kun je bij PWM en multiplexing niet direct met een voltmeter meten. Dan zou je een scoop over de weerstand moeten zetten.

[Bericht gewijzigd door Arco op 22 februari 2021 22:48:06 (32%)]

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

Special Member

Op 22 februari 2021 22:46:28 schreef Arco:
't Zijn vrijlopende oscillatoren die voor multiplexen gebruikt worden dus die lopen nooit gelijk. Dat kan allerlei interferentiestoringen geven...

Een andere oplossing ipv de MAX7219's zou dus ook kunnen. Deze PIC16F18857 heeft 7 PWM's, die je met dezelfde oscillator kan aansturen. Dus die lopen dan synchroon.

Maar ja, hoeveel heb ik er dan wel niet nodig om 8 panelen van 64 LEDS aan te sturen...

Man is still the most extraordinary computer of all. JF Kennedy
Bavelt

Special Member

De helderheid van de ledjes is ook gelukt, dwz een mooie lichtsterkte waardoor het meer op 'sterren' lijkt dan op 'lampjes'.

Ik moest daarvoor de Iset Weerstand bij de MAX7219 wel aanpassen naar...1 M Ohm.

Dat vind ik wel héél veel, zeker gezien de standaard van 10K.

Maar ja, het werkt.. :)

Tis alleen te hopen dat ik hiermee niet iets instabiels heb gecreëerd...

Man is still the most extraordinary computer of all. JF Kennedy
Bavelt

Special Member

De PIC16F18857 heeft naast CCP1 t/m CCP5 ook een PWM6 en PWM7 aan boord.

(PWM6OUT en PWM7OUT)

Ik kan deze functies aan een poort mappen:

pic basic code:

RC4PPS = 0x0E                                                'Map C.4 To PWM6OUT

en ook

pic basic code:

PWM6CON    = %10000000

kon ik uit de Dataheet halen.

Maar dan houdt het op...

pic basic code:

PWM6_Remappable_START() of PWM6OUT_Remappable_START()

kent MikroBasic niet.

Hoe krijg ik nu de PWM6OUT aan de praat?

Man is still the most extraordinary computer of all. JF Kennedy
Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com
Bavelt

Special Member

Update

Op 24 februari 2021 02:03:50 schreef Arco:
Zul je zelf moeten aansturen, daar is geen support voor: https://forum.mikroe.com/viewtopic.php?f=88&t=75732

Daar ben ik dus mee aan de slag gegaan en dat is op zich gelukt:

pic basic code:

PWM6CON    = %10000000                                       'Enable PWM6, Active High
CCPTMRS1   = %00101010                                       'Timer 4 for CCP5, PWM6, PWM7

Wat ik echter nog even niet snap: de duty Cycle kan worden ingesteld voor de CCP en PWM module met:

pic basic code:



 'CCP1:
 CCPR1H   =  %00000001          'Higher Bits 
 CCPR1L   =  %11000000          'Lower  Bits
 
 'PWM6:
 PWM6DCH   = %00000001          'Higher Bits 
 PWM6DCL   = %11000000          'Lower Bits

Echter beide geven niet hetzelfde resultaat. Te meten op de de scope.

Om beide exact dezelfde duty-cycle te geven, moet ik de PWM6 met 64 vermenigvuldigen. Dat zijn 6 bits opschuiven.

Maar waar kan dat vandaan komen? Wellicht het feit dat de eerste 6 Lower bits niet meedoen, vanwege de 10-bits resolutie?

Man is still the most extraordinary computer of all. JF Kennedy
Bavelt

Special Member

Na flink wat te hebben lopen grasduinen in de datasheet van de PIC16F18857, denk ik waar ik het moet zoeken:

De PulsWidth wordt bepaald door het register CCP1R. Deze heeft een hoog-en laag deel.
Maar omdat er maar 10 bits worden gebruikt, kan je de 'PWM alignment' instellen.

Dus ófwel de 2 LSB-bits van het hoog-gedeelte, aangevuld met het volledige 'Laag' gedeelte, óf het volledige hoog-gedeelte aangevuld met de 2 MSB bits van het lower-deel.

Deze PWM alignment wordt geregeld in het CCPxCON register: Bit 4.

En daar móet het zitten: De PWM6 heeft een andere instelling dan de CCP1.
Dat scheelt precies de 6 bits die ik ervaar...

Maar nou is het vreemde, dat wanneer ik bit 4 van CCP1CON wijzig, er geen enkele verandering optreedt in de pulsbreedte! En dat zou wel moeten.

Nu vermoed ik echter, dat de routine van MikroBasic roet in het eten gooit en de instelling weer verandert door

pic basic code:

PWM1_Remappable_START()

Klopt mijn redenatie en zou dat kunnen?

Man is still the most extraordinary computer of all. JF Kennedy
Bavelt

Special Member

Ik ben nog aan het puzzelen over de Maan in de sterrenhemel. Het programma heeft hiervoor een functie. Alles werkt, eerste kwartier, laatste kwartier, Volle en Nieuwe maan. Met PWM ook nog...Het komt langzaam op.

Maar... nu moet ik de maan nog wel máken. :>
Eigenlijk is het geen electronica/ programmeer aangelegenheid, maar probeer het hier toch maar even...

Ik dacht een maan te maken ter grootte van ca 4 Cm diameter.
Maar het is nog best wel lastig om een cirkel te maken die gevuld is met ledjes (waarbij dan steeds de helft wordt aangestuurd vanuit het programma).
Ik ben aan het knutselen geweest met karton, papier. schaar, lijm, passer, etc om een malletje te maken om uiteindelijk de LED's in het paneel te boren. Maar krijg nog niet echt een mooi resultaat.

Heeft iemand wellicht ook zoiets gehad? Of een andere oplossing? Om een dergelijk rondje te krijgen met LED's? Ik heb nog even gezocht op hele grote leds, maar kan daar niets van vinden.

Man is still the most extraordinary computer of all. JF Kennedy
Bavelt

Special Member

Ik heb een Maan gemaakt, die er een beetje op lijkt.
Het kost wel 24 LEd's per 'helft'.

Ik kan ze aansturen vanuit de ULN2803, die kan zo te zien max 500 mA aan per output.

Ik lees ook wel eens dat mensen een POWER FET (Zoals de STP36NF06L) gebruiken om LED's aan te sturen.

Maar wat is daar eigenlijk de lol van? Je zou toch in principe iedere willekeurige tor kunnen gebruiken die een beetje stroom aan kan (bv BD-reeks)?
Waarom dan een MOS Power FET?

Man is still the most extraordinary computer of all. JF Kennedy

In een transistor gaat veel meer vermogen verloren, dat scheelt vooral bij hoge vermogens aanzienlijk.
Bij 10A gaat er bij een Vcesat van 300mV zo'n 3W verloren in de tor als warmte, bij een goeie mosfet (~1mΩ) is dat maar 10mV (0.1W)...

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

Special Member

Ah, Ok..

Maar dat speelt dus vooral bij redelijk veel vermogen begrijp ik.

Ik heb de stroom gemeten door de ledjes: bij 6 mA geven ze al redelijk licht.
Als ik dan 24 * 6 mA = 144 mA trek dan zit ik nog ruim in de marge.

En dat is dan als ze continu branden. Ik ga PWM gebruiken om de helften aan te sturen, dan zal het nog minder zijn.

(Ik heb - eigenlijk hoort het niet, maar ja - de ledjes gewoon aan elkaar geknoopt als ware het één LED....Scheelt weer 48 weerstanden.

Man is still the most extraordinary computer of all. JF Kennedy

Je krijgt dan wel het 'kerstboom effect'... ;)
(als er 1 ledje doorbrandt krijgt de rest meer stroom, waardoor die eerder doorbranden en nog meer stroom krijgen, en uiteindelijk alles doorbrandt...)

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

Special Member

Op 27 februari 2021 14:55:15 schreef Arco:
Je krijgt dan wel het 'kerstboom effect'... ;)
(als er 1 ledje doorbrandt krijgt de rest meer stroom, waardoor die eerder doorbranden en nog meer stroom krijgen, en uiteindelijk alles doorbrandt...)

Op zich is dat juist, ik was me er wel van bewust (Vandaar 'het hoort eigenlijk niet' :) ).
Daarentegen is de stroom dusdanig beperkt (in de orde van ca 6-8 mA per Led), dat de andere LEDS een eventueel sneuvelen van een ledje op zouden moeten kunnen vangen. Daar komt ook nog bij dat de LED's niet continu branden. Ik gebruik hiervoor PWM6OUT en PWM7OUT van de PIC16F18857 (Ik vond het al geweldig dat ik dat aan de praat heb gekregen met PPS mapping, etc ;) ).
Alleen bij volle maan branden ze allemaal even. Bij nieuwe maan kunnen ze even uitrusten... :)

Wat ik altijd nog kan doen, (kost wel tijd en ik wil nog zoveel..) is een printje maken met een eigen processortje en MAX7219, alleen voor de Maan. Dan kan ik nog meer doen, zoals de maan kantelen, wassende maan, etc.
Zo'n printje kan ik dan op het paneel zetten waar de Maan zich bevindt...

Maar eerst maar eens sterrenhemel 1.0...

Het is best een heel leuk project geworden; ik heb al een paar keer een demo gegeven, wat leidde tot wat kreetjes van de toeschouwers... :) :)

Man is still the most extraordinary computer of all. JF Kennedy
Bavelt

Special Member

Wat ik me even afvroeg:

In de PIC16F18857 kan je met het CCP1CON register de PWM1 instellen.

Ik deed dat door

pic basic code:

 CCP1CON    = %10000000                                       'Enable CCP1, 

.

Maar bij het nogmaals lezen van de datasheet ziet ik dat bits 3:0 eigenlijk 1111 zouden moeten zijn voor de PWM Mode:

Ik heb er daarom maar

pic basic code:

 CCP1CON    = %10001111                                       'Enable CCP1, PWM Mode 

van gemaakt.

Wat me eigenlijk een beetje verbaasd, is dat beide statements gewoon goed werken. Beetje vreemd?
Of lees ik de sheet niet goed?

Man is still the most extraordinary computer of all. JF Kennedy

Gebruik je soms pwm_init of zo? (die regelt alles natuurlijk ook al)

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

Special Member

Nee, geen Init. wel:

pic basic code:

PWM1_Remappable_START()

Wellicht dat die het regelt?

Man is still the most extraordinary computer of all. JF Kennedy
Bavelt

Special Member

Ik vroeg me nog iets anders af:

Ik gebruik de Software I2C.

Is het dan eigenlijk nog nodig op externe pull-ups weerstanden voor de SCL en SDA te gebruiken? Ik heb het wel gedaan, maar vroeg me af of dat wel moet. Omdat je immers geen hardware I2C bus gebruikt...

Man is still the most extraordinary computer of all. JF Kennedy

Zou kunnen dat die start wat doet met de settings. (kun je in de asm of lst file zien...)
Pull-ups moet altijd bij i2c. Hard of softwarematig maakt daarin geen verschil. Waarde hangt af van de bussnelheid, belasting, en kabellengte.

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

Special Member

Op 4 maart 2021 21:43:53 schreef Arco:
Zou kunnen dat die start wat doet met de settings. (kun je in de asm of lst file zien...)
Pull-ups moet altijd bij i2c. Hard of softwarematig maakt daarin geen verschil. Waarde hangt af van de bussnelheid, belasting, en kabellengte.

Tja, ik heb maar 4K7 genomen, komt redelijk vaak voor in schema's.

Daarnaast, de PIC heeft 2 Poorten voor de ICSDAT en ICSCLK, waarmee je de PIC programmeert.
Nu gebruik ik deze poorten ook voor andere dingen, ervan uitgaande dat de ICS maar even nodig is voor het flashen.

Is dat zo? (m.a.w. er kleven geen bezwaren aan? Anders zou het je 2 poorten kosten)

Man is still the most extraordinary computer of all. JF Kennedy