met PIC via triac en met Hall sensor AC motortoeren regelen.

ok wat uitgevogeld en moet mogelijk zijn

ik heb gevonden dat er twee soorten interrupts zijn (hoera voor mezelf)
hardware en software
de hardware kan voor problemen zorgen in een programma
als ik bv pwm signalen over de com lijn verzend en de intterupt gaat werken dan verstoor ik dus die pwm communicatie en kan de poort hoog of laag blijven wat soms niet goed is voor de achter hangende (servo BV)
een software intterupt die zet een vlag en dan gaat het programma de laatste instructie afwerken voor het naar de gezette vlag gaat kijken en voert dan de interrupt uit
waarna het programma terugkeert na de afgewerkte interrupt waar het gestopt is

dus eigenlijk een soort van gosub die overal kan opduiken om het zo te zeggen

ben ik juist of is het verkeerd

gr raf

Gr Raf
Lambiek

Special Member

Op 1 november 2019 16:25:48 schreef stortbak:
Ik heb twee 230 V motoren op de schakeling die onafhankelijk in toeren te regelen zijn.
Zonder timers en zonder interrupts, volgen ze exact wat ik bedacht heb dat ze moeten doen , volgens de later nog instelbare en nu "ongeveer" ingestelde waardes.

_/-\o_

Op 1 november 2019 16:35:20 schreef raf janssens:
ik heb gevonden dat er twee soorten interrupts zijn (hoera voor mezelf)

Start nu een eigen topic, zo moeilijk is dat niet. Al begrijp ik je problemen wel en de problemen die je hebt zijn erg genoeg.

Hier kun je een nieuw topic starten.

https://www.circuitsonline.net/forum/section/3

Klik op de link, helemaal naar onderen scrollen en daar staat nieuwe discussie.

Als je haar maar goed zit, GROETEN LAMBIEK.

PWM is ook hardwarematig, dus heeft geen last van interrupts.
In je hoofdprogramma horen sowieso geen tijdkritische zaken thuis, daar zijn dus die interrupts voor... ;)

Het kan wel, als je in assembly een soort state-machine programmeert en verder geen interrupts gebruikt. (maar da's veel omslachtiger)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

@raf: nee, wat jij een "software interrupt" noemt is geen interrupt, het woord interrupt is Engels voor "onderbreking", en je programma wordt niet onderbroken door de vlag die ergens gezet wordt. De reactietijd hangt in dat geval alsnog af van de eerstvolgende keer dat jij in je software naar die vlag kijkt, terwijl de hele kracht van interrupts juist is dat je supersnel kunt reageren, zonder onnodig vaak de status van de vlag te moeten controleren.

Wat meestal onder een software interrupt wordt verstaan, is een interrupt die via software getriggerd wordt. Dat is dus eigenlijk een ingewikkelde manier om een functie aan te roepen, en in de praktijk is dat zeer zelden nuttig.

Het is wel waar dat een interrupt de lopende code onderbreekt, maar als je het programma goed geschreven hebt, is dat niet erg. Een PWM signaal zou je niet moeten maken door een stuk code duimen te laten draaien tot een bepaalde periode voorbij is, als je dat netjes maakt, gebruik je een timer die ofwel direct een uitgang bedient, ofwel een interrupt maakt, waarbij je in de code van die interrupt (de interrupt service routine) de uitgang laat veranderen.

Als je echt niet kunt voorkomen dat je een stuk code hebt dat niet onderbroken mag worden, kun je de interrupts tijdelijk uitzetten, maar dat betekend dus dat je ook niet meer op die externe gebeurtenissen kunt reageren.

Het is dus gebruikelijk om alle tijdkritische taken interrupt gestuurd te maken, en in de main loop alleen niet-tijdkritische taken te zetten.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

als de hpwm een hardware interrupt is dan zou ik deze poort kunnen gebruiken voor het probleem met de pinkers

heeft niets met eender welk programma te maken de hpwm module zit in de 16f628 gebakken
deze zit vast op poort B.3
als ik de pinkers via B.3 laat pinken en dan via B.2 en B.1 deze aan zet dan heb ik wat ik moet hebben
software matig kan ik dan links //rechts of sos laten pinken
niet ?????

Gr Raf

@ lambiek

ok ga ik proberen te doen
pfhhhh we zien wel of het lukt

bedankt al reeds

Gr Raf

gelukt

die willen volgen https://www.circuitsonline.net/forum/view/message/2117252#2117252

en niet kwaad worden als ik het niet direct begrijp
ik ben niet dom alleen mijn hersens zitten wat in de knoei
ik heb met wat modelbouw collega's namelijk alle modellen voor de film torpedo gemaakt en we werken nu aan een spin off voor een vervolg

en daar zit een groot gedeelte in dat met deze oudere processoren bestuurd is geworden
spijtig dat wegens budget 1/3 van de opnames met de modellen is komen te vervallen want er had zoveel meer gekund wat reeds wel gebouwd is geworden maar niet te zien is in de film

Gr Raf

Vandaag weer lekker bezig geweest met de PIC
Ik heb de 16F887 als opper-PIC
De hele volgorde van opstarten en uitdoven, kijken naar veiligheden en gewenste waarde en terugregelen waarbij de rookgastemperatuur en de watertemperatuur leidend zijn zit er in en werkt.
Ook na storingen zoals te lage waterdruk, te hoge temperatuur van het water en geen doorstroming van de schoorsteen, stopt de kachel of start na afkoelen en met eventueel nog steeds aanwezige warmtevraag weer vanzelf op.
Ook kan ik parameters en gewenste waardes wijzigen met 4 knoppen die naast het display komen op de kachel.
Wanneer alles werkt zal ik die als harde getallen opslaan in de eeprom, zodat ze ook hetzelfde blijven na spanningsuitval.

Ik heb een deel van een gekregen voorbeeld programma gebruikt om een timer te starten, die je met een correctiegetal kan "synchroniseren" op de echte tijd.
120 tellen is nu dan ook ongeveer 2 minuten.
Dat met die TMR0 als referentie werkt een stuk makkelijker omdat je niet met verlopende tijden zit als je proogrammadoorloop ineens langer duurt.
2 optel en 2 afteltimers regelen nu de hele boel.
Heel simpel if tmr3 < zoveel en > zoveel then.......
De motivatie ontbreekt om me verder te verdiepen in de magische wereld van de hier ozo geprezen interrupts.

Een 16F88 gebruik ik om een triac te sturen, met een delay.
Dus gebruik ik er twee, voor elke motor eentje.
De cv pomp gaat met een 1/0 uitgang en een relais, het gloeien gaat met een triac, maar die is of open of dicht.

De berekeningen met variabelen, benoemd als float doen het ook, geen last meer van gespook.
Een testschakeling met pulsgever heeft samen met een frequentie naar voltage omvormer veelbelovende resultaten gegeven, dus alles gaat naar wens.

Nog wat optimaliseren zodat de (tacho)toerentallen overeenkomen met de spanning: weer een berekening gebruiken, verwacht ik.
De hoofdpic kijkt nu al naar spanning, maar die komt nog van een instelpotmeter.
Daarna kan de bedrading uit de kachel naar het experimenteerbord om te zien wat er klopt van dit verzonnen geheel.

Lambiek

Special Member

Nou mooi dat je het aan het werk hebt, dan zit je er van de winter warmpjes bij.

Maar je hebt nu de regeling voor je ventilator en je vijzel met een aparte pic gemaakt, dat kan is ook een oplossing zo. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Ja per triac een losse pic, want anders raken ze in de war met die afzonderlijke delay tijden.
Die berekent aan de hand van het tachosignaal dat hij inleest met de gewenste waarde die hij van de hoofdpic krijgt zelf de lengte van delay.

[Bericht gewijzigd door stortbak op 7 november 2019 14:23:00 (43%)]

Kun je misschien ook eens vertellen hoe je die toerentallen gaat instellen, toch niet met een potentiometer veronderstel ik, want ik denk dat die 16F887 die 2 andere gaat besturen of zie ik dat verkeerd?

LDmicro user.

Op 7 november 2019 14:24:50 schreef MGP:
of zie ik dat verkeerd?

O je bent iemand die graag hoort dat hij gelijk heeft?
Kan je krijgen hoor.

Je hebt helemaal gelijk. _/-\o_

Op 7 november 2019 14:24:50 schreef MGP:
Kun je misschien ook eens vertellen hoe je die toerentallen gaat instellen,

Is al eerder uitgelegd:

Op 29 oktober 2019 11:21:59 schreef stortbak:
[...]
Het lijkt er sterk op dat je zelf geen voorstelling hebt wat het allemaal inhoudt.
Een korte uitleg inzake project pelletkachel:
op het display geef je een waarde 350 -- 2700 RPM in
daar maak je een getal van 0---255
dat is nodig om een pwm signaal te maken dat je aanbiedt aan de andere pic.
Die leest de spanning en maakt er een delay tijd van.

Nu dus 1 hoofdpic en straks 2 picjes die alleen de nuldoorgang bekijken en een gewenst toerental aangeboden krijgen waar ze zelf een wachttijd van maken om samen met een tachosignaal een uitsturing te maken. Die picjes hebben twee berekeningen met floats.

Op 8 november 2019 13:16:27 schreef stortbak:
[...]
O je bent iemand die graag hoort dat hij gelijk heeft?
Kan je krijgen hoor.

Je hebt helemaal gelijk. _/-\o_

Beroepsmisvorming .. maar daar kan ik mee en van leven :p

Op 29 oktober 2019 11:21:59 schreef stortbak:
...
op het display geef je een waarde 350 -- 2700 RPM in
daar maak je een getal van 0---255
dat is nodig om een pwm signaal te maken dat je aanbiedt aan de andere pic.
Die leest de spanning en maakt er een delay tijd van.

De vraag was hoe geef je iets in dat op het display verschijnt, met een potentiometer, drukknoppen, temperatuursensor...?
Of anders gezegd, wie of wat bepaalt het toerental van de vijzel en/of ventilator?

LDmicro user.

Op 8 november 2019 13:45:28 schreef MGP:

Beroepsmisvorming .. maar daar kan ik mee en van leven :p

Komt wel uitermate onplezierig over.
Je kan beter vragen "klopt het dat dit of dat", dat klinkt wat leuker dan "ik weet het en ik wil dat je dat beaamt".

De vraag was ?

Op het diplay kan ik met een plus en een min knop het gewenste vermogen kiezen.
Per vermogen heeft het programma een vaste instelling voor de vijzel met bijbehorende instelling voor de ventilator.

Mocht na omschakelen van pellet merk er vlammen zijn met bruine slierten kan ik met een knop "menu" omschakelen tussen (standaard) vermogen en parameters.
Met plus en min kan ik de gewenste parameter opzoeken.
Druk ik dan de knop "wijzig" in en houd die vast kan ik met plus en min de waarde veranderen.
Met die waarde gaat de PIC daarna weer verder.

Ik heb het program nu zo dat hij altijd start op hoog vermogen, dit om de "tijd met te lage rookgassen en dus kans op condensatie" zo kort mogelijk te houden.
Komt de rookgastemperatuur boven een waarde gaat de kachel automatisch terug naar standje 4.

Was het huis nog warm en stonden er al radiatoren dicht, terwijl het in de kamer nog niet warm genoeg is, stijgt de retourwater temperatuur. Daarop regelt de kachel verder terug. Desnoods naar stand 1 of naar uit, ondanks dat de kamerthermostaat nog vragend staat.

Ik hoef dus eigenlijk niets te doen.
Wil ik echter 's avonds wat langer van het vuur genieten kan ik hem nadat hij goed warm is terugzetten naar stand 3: langer vlammetjes zonder dat je de buitendeur hoeft open te zetten.

Jochem

Golden Member

Op 8 november 2019 14:26:06 schreef stortbak:
Komt wel uitermate onplezierig over.
Je kan beter vragen "klopt het dat dit of dat", dat klinkt wat leuker dan "ik weet het en ik wil dat je dat beaamt".

Het spijt me zeer, maar dit lijkt me meer aan jouw interpretatie te liggen dan aan de formulering van MGP. Hij stelt echt een hele normale vraag.

Heb geduld: alle dingen zijn moeilijk voordat ze gemakkelijk worden.

O je bent iemand die graag hoort dat hij gelijk heeft?

Jij (TS) niet zeker? Jij wilt graag horen dat jouw firmware/schakeling de beste uitvinding is sinds het wiel?... :)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Als je de vragen "onplezierig" vindt moet je voor mij niet antwoorden, doe ik ook niet.

Maar als ik dat allemaal lees, programmeer je toch veel beter dan dat je in het begin van dit topic liet uitschijnen.

LDmicro user.

Op 8 november 2019 15:56:18 schreef MGP:
Maar als ik dat allemaal lees, programmeer je toch veel beter dan dat je in het begin van dit topic liet uitschijnen.

Alleen interrupts zijn nog steeds abracadabra. ;)

Zoals je al wist ken ik Picbasic niet, kan het wel lezen en minieme veranderingen aanbrengen en daarmee is alles gezegd.

Interrupts begrijpen gaat niet van vandaag op morgen, je moet er veel over lezen.

Er loopt trouwens al een topic van Raf hierover en ook daar komt weinig respons op want dat is niet in 1- 2- 3 uitgelegd.

LDmicro user.

Blijft wel dat firmware met user interface en tijdkritische taken eigenlijk niet zonder interrupts kan.
(het kan wel maar is meestal zeer complex en moeilijk te onderhouden)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
Jochem

Golden Member

Ik heb niet dit volledige topic gelezen, maar de toepassing van Raf in het andere topic betreft wel timing, maar niet zo kritisch. Daar zou je gerust met de waarde van een free-running counter kunnen werken.

Wat betreft de manier om in PICBASIC interrupts af te handelen kan ik alleen maar helpen door een manual te lezen, maar dan moet ik wel weten: Hebben we het hier over Proton PICBASIC of over MELABS PICBASIC Pro?

Heb geduld: alle dingen zijn moeilijk voordat ze gemakkelijk worden.

Op 8 november 2019 16:56:45 schreef Jochem:
free-running counter kunnen werken.

Als ik de vertaling daarvan gok, is dat op dit moment in mijn schakeling ook gebruikt.
Er loopt een TMR0 en die laat een andere timer meelopen op de pulsen die TMR0 geeft (als je die zelf start)
Reactie is daarna nog gewoon if TMR1 > zoveel THEN...........
Dat werkt.
Geweldig zelfs.
Alleen start die TMR1 nu op het zien van een hoge ingang ergens als het programma doorloopt.
Is de ingang al hoog en is het programma net na die "if input then", duurt het een cyclus, voordat daadwerkelijk die ingang doordringt in de PIC.
Niemand heeft nog kunnen zeggen hoe je van die ingang een ding maakt dat zodra dat hoog wordt er direct gebeurt wat gedaan moet worden.
En volgens mij heet dat werken met interrupt.
Iets met INT , maar daarvoor zijn zo vreselijk veel andere settings nodig die ik niet snap / weet.
Dus heb ik het hoofdstuk interrupts op een zijspoor gezet.
Wellicht dat er bij Raf in zijn verhaal nog iemand komt en de juiste settings en uitleg kan en wil geven, dan kom ik dat vanzelf wel tegen.
Tot die tijd werk ik naar een print met drie picjes, want op het testbord werkt het zonder interrupt en met delays.

Ik werk met proton

Op 17 oktober 2019 09:02:42 schreef Lambiek:
[...]

frequentie naar voltage
[bijlage]

Los werkt het inderdaad.
Totdat je het aan de analoge ingang knoopt van de 16F88
Het duurt gewoon 5 minuten voordat de waarde stabiel is als je van 45Hz terug gaat naar 6.
Van 6 naar 14Hz kost circa 3.5 minuten.

Het is net of de uitgangscondensator 500µF is.........

Heeft er nog iemand een idee om dit anders te doen?
Want dit als toerenterugkoppeling werkt natuurlijk niet.

6Hz geeft 0,318V
45Hz 2.187V

Als de uitgangscondensator weghaalt en de weerstand 10k maakt is de wachttijd te verkorten naar 30 sec
Neem je voor de 10k een nog lagere waarde gaat het iets sneller, maar krijg je een rimpelspanning.

Als de uitgangscondensator weghaalt en de weerstand 10k maakt

10k is veel te hoog, A/D ingang mag max. 2k5 zijn...

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
Lambiek

Special Member

Op 9 november 2019 15:19:20 schreef stortbak:
Los werkt het inderdaad.
Totdat je het aan de analoge ingang knoopt van de 16F88
Het duurt gewoon 5 minuten voordat de waarde stabiel is als je van 45Hz terug gaat naar 6.
Van 6 naar 14Hz kost circa 3.5 minuten.

Max een 1K weerstand gebruiken, liefst nog kleiner. Ik gebruik vaak zelfs helemaal geen weerstand, heb nooit problemen.

Als je haar maar goed zit, GROETEN LAMBIEK.