hoe spanning meten van aangesneden sinus

Op 21 mei 2021 11:14:06 schreef MGP:
Als het is om een extra verbruiker in te schakelen als je zonnepanelen een overschot aan energie leveren zijn 8 metingen ruim voldoende.

Mooi.
Heb alleen geen mooie sinus te meten maar een aangesneden sinus.
Ik regel namelijk het afgenomen vermogen aan de hand van de stroom die het net op gaat, gewoon 2 kW met een 8A triac.
Daarbij houd ik iets van 400W als reserve.
Gaat er 500W, dan stop ik 100 in de boiler.
Gaat er 2400W dan mag er 2k in de boiler.
In het hoge bereik werkt dat perfect, in het lage bereik geeft de "ruis" uit de amperespoel teveel ellende als je aangesneden sinus moet volgen.
Daarom is enkel een spanningsmeting uit die amperespoel niet voldoende.

Voorheen deed ik het met een relais, wekken de panelen meer dan 3 amp op dan kan er 1 element in de boiler =700 Watt aan.
Op dagen zoals vandaag was dat een heel geklapper: relais aan, wolk, relais uit, wolk weg, relais aan
nu is het stil en wordt het water gewoon warm ook.
Heb je 2200W van de panelen, heb je 1 sec later nog maar 800W, sec later 1500W
De omvormer heeft het druk.

Lambiek

Special Member

Op 21 mei 2021 11:33:53 schreef stortbak:
Voorheen deed ik het met een relais, wekken de panelen meer dan 3 amp op dan kan er 1 element in de boiler =700 Watt aan.
Op dagen zoals vandaag was dat een heel geklapper: relais aan, wolk, relais uit, wolk weg, relais aan....

Dat is een kwestie van een hysterese inbouwen in je software, ik heb het ook gedaan werkt prima.

Ik gebruik LEM Current Transformers die geven een keurige 0 tot 5VDC spanning af. Lees ik ook in met een pic controller. Is ook voor zonnepanelen, maar dan net anders. Ik moest een overschot wegwerken, in verband met te kleine hoofdzekeringen.

Als je haar maar goed zit, GROETEN LAMBIEK.

Met hysterese heb je nog steeds maar een aan / uit regeling.
Dat is wel erg ouderwets.
Of je moet 3 schakelingen maken met 3 relais.
er zitten tenslotte 3 elementen in van 700W het stuk.
Ik zie overigens nog steeds geen kans om een timertje te laten meelopen per µseconde of msec
Iemand tips? Vandaar mijn eerdere vraag of je dat met de interne timers moest doen.

[Bericht gewijzigd door stortbak op vrijdag 21 mei 2021 13:07:19 (11%)

Arco

Special Member

In de interruptroutine (bijv. iedere mS) zet je zoiets:

pic basic code:


Dim TmrCnt As Byte
Dim Res As Word[10]
...
...
interrupt:

Res[TmrCnt] = ADC_Get_Sample()
Inc (TmrCnt)
If TmrCnt >= 10 Then TmrCnt = 0 End If
...
...
end interrupt:

De 10 resultaten komen dan in het Res[] array.

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

Special Member

Op 21 mei 2021 13:05:08 schreef stortbak:
Met hysterese heb je nog steeds maar een aan / uit regeling.
Dat is wel erg ouderwets.

Ach, wat jij wil. :O

Als je haar maar goed zit, GROETEN LAMBIEK.

Er zat een inschakelvertraging in van ik meen 4 sec. maar als nadat de zon terug is er na 5 seconden weer een wolk is, is het relais precies 1 sec in. Dat geeft dus geklapper.

Een schakeling om je boiler te vullen is wel wat anders dan een beveiliging voor je zekering.

[Bericht gewijzigd door stortbak op vrijdag 21 mei 2021 14:05:13 (22%)

benleentje

Golden Member

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.

Hier ook een wattmeter van de website van Mikrobasic, ik heb die vroeger eens gedownload om te bekijken maar ik doe niet aan basic ;)

Volgens mij zijn er 2 versies, met en zonder interrupts

LDmicro user.

Op 21 mei 2021 13:42:41 schreef Arco:
In de interruptroutine (bijv. iedere mS) zet je zoiets:

Dank voor de poging.
Proton accepteert het alleen niet
res is een beschermde "naam"
endif hoort er niet achter
word[10] kent hij niet
en er ontbreekt een =

Kan je wellicht wat uitleg geven over de pic's in het algemeen?
En dan over de 18F46K22 http://www.datasheet-pdf.com/PDF/PIC18F46K22-Datasheet-MicrochipTechno…

Ik heb dit ingegeven.

FOSC = HSMP met kristal
PLLCFG = OFF oscillator used directly
PRICLKEN = ON primary clock is always enabled
.
.
.
.
XTAL = 16
.
.
.
.
OSCCON.6 = 1
OSCCON.5 = 1
OSCCON.4 = 1 is 16MHz
.
OSCCON.1 = 1
OSCCON.0 = 0 is int osc block............00 is prim clock
.
.
.
T0CON.0 = 1 is prescaler 1:4
T0CON.1 = 0
T0CON.2 = 0
T0CON.3 = 0
T0CON.4 = 0
T0CON.5 = 0 is Fosc/4........ 1 is kristal en waarom geeft dat geen verschil
T0CON.6 = 0
T0CON.7 = 1

T1CON.0 = 1
T1CON.1 = 1
T1CON.2 = 0
T1CON.3 = 0
T1CON.4 = 0 is prescaler 1:4
T1CON.5 = 1 is Fosc/4
T1CON.6 = 0
T1CON.7 = 0

T2CON.0 = 1 is prescaler 1:16
T2CON.1 = 1
T2CON.2 = 1
T2CON.3 = 1 postscaler 1:1 (?)
T2CON.4 = 0
T2CON.5 = 1
T2CON.6 = 0
T2CON.7 = 0

T3 en T5 zijn gelijk aan T1
T4 en T6 zijn gelijk aan T2

Nu lijkt het er op dat T2 de interne klok is, want als ik die verander gaat het programma sneller of langzamer. Display ververst ook veel sneller.
Als ik die in de interruptroutine (zoals je hierboven mogelijk bedoelde) een zelfbenoemde variabele laat verhogen, gaat die als een speer.

IF TMR2IF = 1 THEN
INC VAL_TIMER
TMR2IF = 0
ENDIF

Maar loopt heel het programma niet meer stabiel.(waarschijnlijk gaat het veeel te snel en zijn de adin tijden te kort voor een juiste meting.
waarin dan staat:
Limit_Timer = 430
IF VAL_TIMER > Limit_Timer then val_timer = 0
IF val_timer = 0 then puls1 = 1
IF puls1 =1 then TMR_1 = TMR_1 + 1
puls1 =0
Ik meende dat T0 voor intern was en dat T1,2,3,4,5 en 6 voor eigen gebruik waren.
Hoe zit dat.
Wat is nu de interne clock, de prim clock en de FOSC?

Dus wat is de basis clock wat is de FOSC
Wat is de prim clock
En welke timers van hierboven zijn NIET verstorend voor de afloop van het programma

Hieronder de boiler regeling tot nu toe.
Gaat een beetje lang duren, maar bij 2,45 gaat de zon wel snel aan en uit.
https://www.youtube.com/watch?v=0MylvEKiheM

en eentje met net afschakelende belasting.
https://www.youtube.com/watch?v=mQOuGqKDqdw

Arco

Special Member

Dank voor de poging. Proton accepteert het alleen niet

Is ook Mikrobasic, aanpassen mag je zelf doen... ;)

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

Op 21 mei 2021 15:26:57 schreef Arco:
[...]
;)

Die taal spreek ik net zo als jij basic spreekt.

En de rest van het timer vraagstuk, kan je daar wel wat op zeggen?

Arco

Special Member

Basic is basic. Als je kunt programmeren stelt dat omzetten niks voor.
(maar ik ben niet van plan om me in protonbasic te gaan verdiepen)

T0 is timer 0, T1 is timer 1, en T2 is Timer 2. Timer 2 is de meest universeel toepasbare.

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

Op 21 mei 2021 15:43:59 schreef Arco:

(maar ik ben niet van plan om me in protonbasic te gaan verdiepen)

Dat weet ik al, maar blijkbaar weet je ook niet hoe een pic werkt en welke klok hij intern gebruikt. |:(

Arco

Special Member

Dat moet jij nodig zeggen, je snapt er zelf de ballen niet van... :) :) :)

T0...T6 zijn timers, die hebben niks met de clock te maken. Interne clock is Fosc / 4.

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

Op 21 mei 2021 16:16:04 schreef Arco:

T0...T6 zijn timers, die hebben niks met de clock te maken. Interne clock is Fosc / 4.

Waarom zeg je dat dan niet gewoon?
Wist jij bij je geboorte alles al?
Heb jij niets hoeven vragen en leren?
Doe toch niet zo uit de hoogte als een gevorderde nitwit wat vraagt?

Je zegt dat de interne klok Fosc/4 is.........
Wat doet de Fosc dan, waarom bestaat die dan als die 4 keer sneller loopt, waar is dat dan goed voor?
Waarom staat in de RTFM ook "primary clock" is dat ook fosc/4
Waarom noemen ze dat gedeeld door vier. Wat is het origineel dan?

Wie legt uit wat het verschil is?

SCS<1:0>: System Clock Select bit
1x = Internal oscillator block
01 = Secondary (SOSC) oscillator
00 = Primary clock (determined by FOSC<3:0> in CONFIG1H).

Op 20 mei 2021 16:23:51 schreef stortbak:
Dank voor de reacties.
Ik ga maar eens kijken of ik een paar metingen kan doen per 10 ms en die dan in de pic met elkaar vermenigvuldigen en dan een gemiddelde nemen.
Lijkt me wel te doen.

Doe het met een oscilloscope:

Sample met een hoge rate, bv 1 kHz of hoger en pak maar 1 sinus. Een paar metingen per 10 ms gaat niet werken, de golfvorm van de stroom is veel te krom, je krijgt daar geen goede integratie die gecorreleerd aan je sinus is.

Arco

Special Member

Wat doet de Fosc dan, waarom bestaat die dan als die 4 keer sneller loopt, waar is dat dan goed voor?

Verdiep je eens in hoe een controller werkt.
De inctruction cycle clock (in dit geval Fosc/4) is de cyclus waarin 1 instructie behandeld wordt (z.g. fetch-decode-execute cycle)

Wie legt uit wat het verschil is?

Dat hoeft niet, de tekst spreekt voor zich... (interne osc/secundaire 32kHz osc/osc volgens config)

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

Op 21 mei 2021 21:41:27 schreef Arco:
[...]
Verdiep je eens in hoe een controller werkt.

Dank voor de geweldige tip

Op 21 mei 2021 21:41:27 schreef Arco:

Dat hoeft niet, de tekst spreekt voor zich...

Was eigenlijk een foute opmerking van mij, maar ik was dermate teleurgesteld in je reactie, die weer geen antwoord was, dat ik zomaar wat intiepte.
Want je geeft nog steeds nergens antwoord wat de intern gekozen en dus gebruikte klok is.
Is dat het signaal dat uit de CLOCK SWITCH komt? Wordt dat de Fosc genoemd?
Sluit je een xtal aan van 16MHz en verandert daar niets in de osccon komt er uit die switch de 16MHz en is dat dan de Fosc?

Ik zag naast fos/4 ook fosc/2 gebruikt worden voor TMR

In een blokdiagram mag je ook al is het simpel toch wel een blokje verwacht /4 en /2............

Voor de TMR0 wordt een externe klok OF de Fosc/4 gebruikt. In mijn geval dan 16/4 is 4 MHz

Heb ik dat nu goed?

Op 21 mei 2021 21:18:02 schreef Hoeben:
[...]
Doe het met een oscilloscope:

Wat een opmerkelijk voorstel om in de meterkast een scope te hangen.
Welk type raad je aan en hoe krijg ik dan het vermogen dat hij aangeeft naar buiten?
Liefst een signaal van 0-4 volt, want dan kan ik dat in de pic gebruiken.

Op 21 mei 2021 21:41:27 schreef Arco:
[...]
Verdiep je eens in hoe een controller werkt.

Met een PIC zonder fouten was het een stuk eenvoudiger geweest.
Huidige programma heb ik eerder gebruikt.
Nu copy en paste, dat scheelt typen.
Heb nu geen T2CON meer nodig, stond echter nog wel genoemd.
Zonder timer echter geen leven in de pic.
Nou denk je dan "timer omschrijven" en dan op "uit" en klaar.
Alleen niet bij deze pic. Dan loopt programma niet meer.
timer moet ON en in de interrupt moet je steeds zetten: TMR2IF = 0
Verander je de prescaler, geeft dat een andere afloop van het programma.

Terwijl deze gebruikersklok niet de interne klok is van de pic.

Wie het kan uitleggen mag het proberen.

Arco

Special Member

de interrupt moet je steeds zetten: TMR2IF = 0

Da's met alle processoren zo:
De processor wil graag weten dat je klaar bent met de interruptafhandeling, en dat ziet 'ie aan het resetten van de timer flag...

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

Op 27 mei 2021 14:21:52 schreef Arco:
[...]

De processor wil graag weten dat je klaar bent met de interruptafhandeling, en dat ziet 'ie aan het resetten van de timer flag...

Ja dat snap ik, maar waarom moet ik die timer wel programmeren terwijl die niet gebruikt wordt?
Op die andere 4 timers stopt hij niet, terwijl die ook niet gebruikt worden en dus ook niet geprogrammeerd staan.
Daarom vroeg ik aan het begin: welke timer is voor intern gebruik, want als ik timer 2 verander, heeft dat invloed op de doorlooptijd van de pic.

Arco

Special Member

Als je de timer niet gebruikt kun je die gewoon uitzetten (TMR2ON = 0 en TMR2IE = 0)

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