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


Op 20 november 2019 14:36:35 schreef Arco:
[...]
(daar komt ook nog de pic->pic communicatie bij)

En dat is me toch vreselijk ontiegelijk moeilijk............ veel moeilijker dan de interrupts.
Maar wat doe jij hier nog?
Toch je berichtenteller weer ophogen met een als altijd zinloos commentaar?
Het enige dat ik van je lees is dat het allemaal niet klopt en dat het kapot kan en dat het omslachtig is, dat het allemaal veeel eenvoudiger kan, maar werkelijk geen letter die tot een oplossing zou kunnen gaan leiden.

Lambiek

Special Member

Op 20 november 2019 14:36:35 schreef Arco:
Nee, da's pollen/state machine... ;)

Pollen? Met een on interrupt een teller/timer aanmaken?

Dat werkt ook, is alleen omslachtig met 3 pic's voor één simpel klusje.

Je zal de fabrikanten de kost moeten geven die het zo doen, ben al zoveel controller borden tegen gekomen waar meerdere processoren op zitten en die babbelen gewoon met elkaar.

Dus als er in een machine meerdere PLC's zitten "die ook met elkaar kletsen" is dat ook een slecht idee?

Hoe meer (onnodige) onderdelen, hoe eerder iets mis gaat.

Dat is een beetje onzin natuurlijk, ligt er helemaal aan hoe het ontworpen is en hoe het software matig in elkaar zit. Als je het over de prijs hebt, dan wordt het een ander verhaal, zeker bij grote aantallen.

Op 20 november 2019 14:54:06 schreef stortbak:
Maar wat doe jij hier nog?
Toch je berichtenteller weer ophogen met een als altijd zinloos commentaar?

Dat is nu weer zo'n loze opmerking, beetje jammer weer.

Als je haar maar goed zit, GROETEN LAMBIEK.

@TS: Ga jij nou maar verder met je 'creatief met kurk' cursus... ;)

@lambiek:
TS gebruikt geen interrupts maar polt de timerflag in de main routine.

Dus als er in een machine meerdere PLC's zitten "die ook met elkaar kletsen" is dat ook een slecht idee?

Nee, dat wordt al heel lang gedaan. Maar iedere plc of processor moet wel iets zinvols te doen hebben. (alleen 1 teller bijhouden vind ik niet zinvol)

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

Op 20 november 2019 15:08:16 schreef Lambiek:
Dat is nu weer zo'n loze opmerking, beetje jammer weer.

Met alleen maar commentaar als:

Op 20 november 2019 15:24:46 schreef Arco:
polt de timerflag in de main routine.

terwijl hij zelf nog geen regeltje als voorbeeld wil typen om mij uit te leggen hoe ik een interrupt kan gebruiken,
.
.
.
.
Lees al zijn bijdrages eens na, je zal zien dat er geen enkele naar een oplossing leidt.
Het is alleen maar commentaar, dit deugt niet, dat is niet goed en uiteraard wel heel veel stoer Engels.

Als je echt iemand wilt (en vooral KAN) helpen, kan je ook wat bijvoegen als: "verander die en die regel eens in dit of dat en vul aan met zus en zo".
Maar nee, weer strooien met "polt de timerflag."

Tja,

Als je niets afweet van de basiswerking van microcontrollers zul je eerst dat onder de knie moeten krijgen. (of een andere hobby zoeken)
(een timerflag hoort toch wel bij de basisbeginselen)
En Engels: als je wilt programmeren zul je dat moeten leren. Je kunt niet verwachten dat datasheets en handleidingen in het Nederlands worden gemaakt.

Wat betreft voorbeelden: ik heb er een gegeven. Dat je dat (simpele) voorbeeld niet begrijpt kan ik niet helpen...
(ik zou nog wel verder willen uitleggen en helpen, maar niet als je jezelf zo als een zwartgallige droplul opstelt...)

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

Op 20 november 2019 13:48:06 schreef stortbak:
[...]
Mijn besturing werkt.

Dat programma van Lambiek werkt, maar dat jij dat programma aangepast hebt aan met tacho daar geloof ik niks van >:)

Hier heb je mijn programma.

Ben toch maar voor een analoge instelling gegaan.

- De integratietijd bedraagt 1sec, dat wil zeggen dat de snelheid 1stap op- of afloopt per sec, dit om de AC-motor de tijd te geven zich aan te passen. Dit kan later aangepast worden als de regeling sneller moet werken, maar eerst proberen.

- Bij de 1ste start begint de motor op volle snelheid om daarna af te bouwen tot de ingestelde snelheid.

- Bij een stopcommando stopt de motor maar omdat er geen tachopulsen meer komen gaat de regeling naar maximum RPM in stappen van 1sec en start terug op max.

- De regeling regelt zich zoals je zelf hebt opgegeven, de minimum instelling werd op 6Hz gezet, lager kun je de motor niet laten draaien zonder programma aanpassingen.
Ook de analoge instelling werd hierop aangepast min 6Hz(360tr/min) en max 45Hz (2700tr/min).

Eén belanrijk gegeven, ik heb geen opstelling gemaakt, enkel de signalen met de scoop bekeken maar dat wil niet zeggen dat ik geen fout over het hoofd heb gezien, daarvoor moet ik feedback krijgen als je het programma gebruikt tenminste, daar ben je volledig vrij in.

Als je het test wees geduldig, een AC motor is niet zo manipuleerbaar als een dc motor, vooral die 1sec integratietijd kan langer uitvallen dan verwacht, heb daar geen ervaring mee.

LDmicro user.
Lambiek

Special Member

Op 20 november 2019 15:24:46 schreef Arco:
Nee, dat wordt al heel lang gedaan. Maar iedere plc of processor moet wel iets zinvols te doen hebben. (alleen 1 teller bijhouden vind ik niet zinvol)

Het moet inderdaad wel zinvol zijn ja. :)

Op 20 november 2019 17:49:32 schreef MGP:
Hier heb je mijn programma...........

Je hebt je middag weer zinvol besteed. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 20 november 2019 18:13:55 schreef Lambiek:
Je hebt je middag weer zinvol besteed. :)

Deze namiddag ben ik gaan petanquen bij de 55+ ;)
Veel te mooi weer om binnen te blijven.

Een stuk ervan had ik al eens gemaakt, de rest gisterenavond deze voormiddag en aan de scoop gelegd.
Vanavond de tekening gemaakt.

LDmicro user.

Op 20 november 2019 17:49:32 schreef MGP:
[...]
Dat programma van Lambiek werkt, maar dat jij dat programma aangepast hebt aan met tacho daar geloof ik niks van >:)

Hier heb je mijn programma.

Dank voor de moeite.
Ik heb alleen niets aan HEX code.
Die kan ik namelijk niet vertalen in normaal leesbare dingen waarbij ik kan zien wat er gebeurt.
Kan ik dus ook niet uitbreiden met wat ik nog meer nodig heb.

Ik heb gisteren een nietwerkend thermokoppel retour Duitsland gestuurd en hoop daar een wel werkend voor terug te krijgen.
Want mijn pic kijkt ook nog naar rookgastemperatuur en cv watertemperatuur.

Vanmorgen heb ik de woonkamer weer eens "toonbaar" gemaakt en het experimenteerbord even in de kast gezet.
Als de kachelprint het begeeft, is het snel genoeg overgezet, maar voorlopig wilde ik even wachten op warmere dagen voor de grote ombouw en test.
Daarna kan ik een print ontwerpen en maken en dan kan alles over.
Omdat het in de kast staat kan ik je ook niet zeggen met welke stappen mijn toerental regelbaar is.
Dat vind ik wel jammer.
En over die tacho........tja waarom zou ik zeggen dat het wel werkt terwijl het er niet in zit?
Ik hoef me hier niet beter voor te doen dan ik ben.

Later meer dus en dan zal ik bewijs aanleveren in de vorm van video.

Mocht er nog iemand kunnen uitleggen over die unterrupts, lees ik dat nog graag.

Je hebt niks aan de hex code, ok dan... want aan de programmacode heb je ook niks want daar kun jij toch niks aan veranderen zonder gedegen kennis van LDmicro.
Maar omdat je aandringt hieronder de LD code.

En over die tacho........tja waarom zou ik zeggen dat het wel werkt terwijl het er niet in zit?

Dan had ik het toch bij het rechte eind, niet uw programma maar Lambieks programma werkt.

Het heeft eigenlijk ook geen zin van interrupts uit te leggen op een forum dat wordt ook niks gezien de hoeveel literatuur die daar al over bestaat.
Maar hier een voorbeeld dat je in GCBasic kunt vinden.

De timer gebruikt een klok van 20 000 000/4 wat standaard is en de PS (prescaler) deelt de klok (5 000 000) nog eens door 8
Deze deelcijfers kun je binnen de perken aanpassen.

Telkens de timer in overflow gaat wordt een signaal gegeven (intern hardware) om eerst de subroutine "sub IncCounter" uit te voeren en daarna verder te gaan waarmee hij bezig was, hier is dat printen.
Een interrupt onderbreekt alles waarmee de controller bezig was en gaat na de afwikkeling verder met zijn gewone doen.

Eens echt goed deze routine eens bekijken, bij Picbasic heb je ook zoiets.

pic basic code:

'This program increments a counter every time Timer1 overflows
    #chip 16F876A, 20

    'LCD connection settings
    #define LCD_IO 4
    #define LCD_DB4 PORTC.4
    #define LCD_DB5 PORTC.5
    #define LCD_DB6 PORTC.6
    #define LCD_DB7 PORTC.7
    #define LCD_RS PORTC.0
    #define LCD_RW PORTC.1
    #define LCD_Enable PORTC.2

    InitTimer1 Osc, PS1_1/8 ' Prescaler is deler door 8
    StartTimer 1
    CounterValue = 0

    Wait 100 ms
    Print "Int Test"

    On Interrupt Timer1Overflow Call IncCounter

    Do
        CLS
        Print CounterValue
        Wait 100 ms
    Loop

    Sub IncCounter
        CounterValue ++
    End Sub
LDmicro user.
Lambiek

Special Member

Op 20 november 2019 19:22:11 schreef MGP:
Maar hier een voorbeeld dat je in GCBasic kunt vinden.

De timer gebruikt een klok van 20 000 000/4 wat standaard is en de PS (prescaler) deelt de klok (5 000 000) nog eens door 8
Deze deelcijfers kun je binnen de perken aanpassen.

Telkens de timer in overflow gaat wordt een signaal gegeven (intern hardware) om eerst de subroutine "sub IncCounter" uit te voeren en daarna verder te gaan waarmee hij bezig was, hier is dat printen.
Een interrupt onderbreekt alles waarmee de controller bezig was en gaat na de afwikkeling verder met zijn gewone doen.

Precies.

Eens echt goed deze routine eens bekijken, bij Picbasic heb je ook zoiets.

Die heb ik ook al geplaatst "ergens hier in het topic" maar als daar niets mee gedaan wordt....

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 20 november 2019 19:36:09 schreef Lambiek:

Die heb ik ook al geplaatst "ergens hier in het topic" maar als daar niets mee gedaan wordt....

ik meen dat in jouw prog staat
LIMITE_TIMER = 38
daar kreeg ik in 50 seconden 100 tellen.
Ik heb nu LIMITE_TIMER = 80
dan heb ik wel dat 100 secondes 100 tellen geeft.
DUS is er wel wat mee gedaan.

Ik heb toen ook ontdekt dat een afteltimer die door die commentaargever zo de hemel in geprezen wordt (boven de opteltimer), na nul gewoon doortelt en dus weer groter wordt dan 0.
Zeg je dus <0 then..........komt hij daar nooit. Lekker dom advies dus.
Maar dat is ook opgelost, ik heb nu een TMR0 die 2 optel en 2 afteltimers laat "meelopen" op zijn pulsen.

Maar ja, nog steeds zonder interrupts.

Op 20 november 2019 19:22:11 schreef MGP:
1,Maar omdat je aandringt hieronder de LD code.

2,Dan had ik het toch bij het rechte eind, niet uw programma maar Lambieks programma werkt.

1. Ik kijk er niet eens naar. Zonde van je werk, waarom post je het dan, je wist al van te voren dat ik er niets aan heb.
2. Toch krijg je mijn code niet als bewijs.
Na eerdere vragen naar code en schema werd na plaatsen ook niets gedaan.

Heren fijne avond.

@MGP: Waarom besteedt je nog tijd en moeite aan die trol?... ;)

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

Sorry maar ik hoef uw code niet, de mijne is veel beter ..geef mij 3 dagen en uw pelletkachel zal beter werken dan de originele versie :p

Btw: dat is geen zonde van mijn werk, integendeel en ben zelfs niet verrast, want ik weet heel goed hoe een forum werkt en kan mij ook heel goed voorstellen wie er aan de overkant zit.
Dat laatste was trouwens ook een onderdeel van mijn job vroeger.

edit: @Arco ben in een goede bui ;) maar dat was het laatste technisch antwoord.

LDmicro user.

Ik geef stortbak hierin gelijk. Zijn code werkt. Jouw code implementeren is voor hem riskant en moeilijk met daarbij het risico dat hij eindigt met een nietwerkend systeem. Zijn code werkt zonder interrupts en het spul kan ook zonder interrupts (op applicatieniveau) gebouwd worden. Er is ook niks mis met het gebruik van drie pic-jes. Ze kosten niks en het bespaart stortbak een hoop werk. Ik geef toe, het systeem van stortbak kan (hoogst waarschijnlijk) efficiënter gebouwd worden.

Bezoek mijn neefjes' site: www.tinuselectronics.nl

Weer een volslagen zinloos bericht, maar:

Op 20 november 2019 20:46:18 schreef Arco:
Aantal geposte berichten 35044

Knap hoor.

.
.
.

Op 20 november 2019 21:20:45 schreef ohm pi:
Ik geef stortbak hierin gelijk. Zijn code werkt zonder interrupts en het spul kan ook zonder interrupts (op applicatieniveau) gebouwd worden. Er is ook niks mis met het gebruik van drie pic-jes.

Dank voor dit waardevolle bericht. _/-\o_

@ohm pi, ik geef hem ook gelijk, het is zijn project, maar gaat dit ellenlange topic daarover?

EDIT Startpost:

Op 5 oktober 2019 08:50:51 schreef stortbak:
Geachte forummers,
is er al iemand die met een pic een 230 AC motor heeft aangestuurd en dan ook nog het gekozen toerental laat vasthouden door gebruik te maken van een hall sensor op de motoras?

Zijn daar al schema's en programmaregels van bekend, die je zou willen delen?

Motoren zijn 40W en minder.
Triac zal iets zijn als de 2N6073
de koppeling gaat via een optocoupler MOC3011
een zero crossing detector zal ook gebruikt moeten worden.
En ik las iets over een snubber (rimpelbluskring schat ik zo in)

Toepassing wordt voor een pelletkachel waarbij de ene motor de vijzel en de andere motor de rookgasventilator gaat aandrijven.

Ben voorlopig de enige die daar een bruikbaar antwoord op gegeven heeft. :p
....en mijn buikgevoel zegt dat hij daar toch gebruik van zal maken :)

LDmicro user.
Lambiek

Special Member

Op 20 november 2019 20:40:06 schreef stortbak:
ik meen dat in jouw prog staat
LIMITE_TIMER = 38
daar kreeg ik in 50 seconden 100 tellen.
Ik heb nu LIMITE_TIMER = 80
dan heb ik wel dat 100 secondes 100 tellen geeft.

Het ligt er helemaal aan wat je nodig hebt en welk kristal je gebruikt. Maar dat kun je inderdaad aanpassen met, "LIMITE_TIMER" dus gewoon een waarde ingeven die voor jou van toepassing is.

DUS is er wel wat mee gedaan.

Als je dat niet meld dat je daar mee aan de gang geweest bent, dat kunnen wij niet ruiken natuurlijk. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 6 oktober 2019 10:41:00 schreef MGP:
Je kunt ook eerst een Freq/Volt (LM331, LM2904 ..) maken en dit inlezen in een pic en vanaf daar verder doen, waarschijnlijk de eenvoudigste oplossing.

Opmerkelijk dat je dat niet in je eigen schema hebt gebruikt.

Dat was voor u de eenvoudigste oplossing, niet voor mij :p

Edit:

Op 20 november 2019 21:23:35 schreef stortbak:
Knap hoor...

Idd heel knap wat die hier doet, ook iemand met heel veel kennis en die het nog wil delen ook en zo kan ik er nog een enkele opnoemen.
Mag ook eens gezegd worden.

LDmicro user.

Op 6 oktober 2019 14:26:30 schreef Lambiek:

Je zou naar een ander pic kunnen kijken, bijv een 18F4520. Heeft de zelfde pinning, maar heeft meer geheugen en andere voordelen.

Bedankt dat je dit toen schreef.
Gisteren de stoute schoenen aangehad en met zonder hulp, de pic werkend gekregen, op de plaats waar de 16f887 zat.
En inderdaad het RTFM was echt nodig.
Het hele programma draaide helaas 2.5 maal trager op hetzelfde 20MHz kristal.
Gek genoeg op een 10MHz kristal dezelfde tijd, maar zonder kristal geen werking.
De pic voelde dus dat er op een kristal moest worden geklokt, maar gebruikte zijn inwendige 8MHz snelheid.
1 bitje extra op 0 en het werkte wel.
Nu is er slechts 35% gebruikt, tegen de 96 die in gebruik was bij de 887.
Ik kan dus nog even vooruit.
Naar de andere voordelen ga ik niet opzoek.

enkele quotes:

Op 22 oktober 2019 15:02:17 :
In het voorbeeld gebruik ik delayms, in plaats daarvan kun je ook met interrupt werken.

Op 29 oktober 2019 10:12:35 :
Zoals Lambiek ook al opmerkte zie ik niet in hoe je zo'n tijdsgebonden programma zonder interrupts kunt maken.

Je zult toch eens wat tijd moeten maken om u eens te verdiepen hoe interrupts werken, daar is veel over te vinden, eerst de handleiding van Protonbasic eens nalezen, algemene artikels over interrupts zijn ook goed en moeten niet noodzakelijk in een bepaalde taal geschreven zijn.

Verspil uw tijd niet aan problemen enkel om wat tijd uit te sparen, een controller is razendsnel maar je moet hem onder controle kunnen houden ;)

Op 30 oktober 2019 11:45:29 :
In de handleiding .....

Maar eerst moet je begrijpen wat interrupts eigenlijk zijn, los van het soort programmeertaal.

Op 30 oktober 2019 13:11:28 :
Zal ik u eens iets vertellen, de dag dat je uw topic geplaatst hebt, heb ik zo'n programma gemaakt in LDmicro en dan nog met PI(d) control.
Het werkte toen al in de simulator

Allemaal geweldige hulp. 8)7

Tussen de bedrijven door heel veel gekloot en gelukkig heel veel meer geleerd.
10 stappen vooruit en 9 terug. |:(
Ook ontdekt dat hoe meer de pic kan hoe minder er werkt als je hem niet juist instelt.

Ik raak aardig thuis in de RTFM en begrijp echt niet dat er zo geheimzinnig gedaan wordt over interrupts en timers.
ALS je eenmaal hebt ontdekt hoe iets KAN werken, is het erg simpel.
Maar blijkbaar is dat "erg simpel" te moeilijk om op een forum uit te leggen voor de "haantjes" hier. :?

De laatste pic die ik heb aangeschaft heeft nog ruimte genoeg.
Echter is het aantal nog vrije poorten beperkt.
Van de 7 beschikbare timers zij er nog 2 8-bits over.
Voor deze pic was wel de nieuwste versie van proton nodig en een pickit3 ipv de pickit2.
Het werkt geweldig. :)

De twee hall sensors die het tacho signaal geven van de motoren, worden gekoppeld aan twee ccp modules en dus twee timers.
.. ..
(getracht is om de frequentie om te zetten in voltage en dat via de analoge ingang van de pic en een berekening tot een toerental te vermaken. De pic vertraagt echter veel te veel)
Twee thermokoppels inlezen op deze manier werkt wel naar behoren.

.. ..
Twee triacs dus twee timers.
(De eerdere wachttijd met een delay gaf een dusdanige vertraging in de pic dat daar niets zinnigs meer uitkwam, wanneer die nog meer moest dan alleen die triac openen en sluiten.)

Getallen oversturen van een rekenpic naar een uitstuurpic ging op den duur ook te traag.
Bovendien kwam door het te beperkte aantal over te sturen waardes de PID regeling niet tot zijn recht.
Alles zit nu in 1 pic en het is nu tijd om daarvoor een print te gaan maken.

Alles zit nu in 1 pic

Toch nog goed gekomen... (dat werd je een half jaar geleden in het begin van het topic al geadviseerd... ;) )

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

Op 28 mei 2020 17:38:44 schreef Arco:
dat werd je een half jaar geleden in het begin van het topic al geadviseerd

Dat heb ik dan vast over het hoofd gezien.