PID drukregeling
28 berichten
• Pagina 2 van 3 • 1, 2, 3
Re: PID drukregeling
Het probleem met het sensorvoltage is opgelost, ik had een weerstand in mijn testopstellling....
Ik heb de sensor ook "gemapt".
Nu kan ik de onderdruk uitlezen in Millibar en Inch H2O met deze code:
cpp code
Ik heb de sensor ook "gemapt".
Nu kan ik de onderdruk uitlezen in Millibar en Inch H2O met deze code:
cpp code
/*
Pressure Sensor test Code
*/
// These constants won't change. They're used to give names
// to the pins used:
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
int sensorValue = 0; // value read from the pressure sensor via the amplifier stage
float outputValue1 = 0; // value output to the Serial port and LCD display
float outputValue2 = 0;
void setup()
{
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}
void loop()
{
// read the analog in value:
sensorValue = analogRead(analogInPin);
outputValue1 = map(sensorValue, 66, 1015, 0, 62); //The zero value of sensor is around 66
outputValue2 = map(sensorValue, 66, 1015, 0, 24.890710877044);
// print the results to the serial monitor:
Serial.print("\tMbar= ");
Serial.println(outputValue1);
Serial.print("\tINCH H2O = ");
Serial.println(outputValue2);
// wait 500 milliseconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:
delay(100);
}
Advertisement
Re: PID drukregeling
Nu moet ik dus een PID regeling maken waarin ik de onderdruk instel door in te geven welke testdruk ik wil hebben, laten we zeggen 20 inch H2o
Dan moet de output dus PWM aangestuurd worden dat hij de motoren regelt naar deze testdruk.
Hoe doe ik dit?
Dan moet de output dus PWM aangestuurd worden dat hij de motoren regelt naar deze testdruk.
Hoe doe ik dit?
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: PID drukregeling
Deze regel:cpp code
outputValue2 = map(sensorValue, 66, 1015, 0, 24.890710877044);zal wat minder nauwkeurig werken dan je verwacht. Op de Arduino zijn doubles en floats het zelfde met een precisie van ongeveer 7 cijfers totaal. Dus bij jouw 24 hooguit 4-5 cijfers achter de komma.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: PID drukregeling
Hoe zou jij het zelf doen? gewoon zonder de code.
Re: PID drukregeling
4 cijfers achter de komma is goed genoeg.
Ik begrijp niet precies wat je bedoelt met "hoe ik het zou doen".
Ik heb uitgelegd hoe ik de PID regeling wil laten werken maar ik heb geen idee hoe ik dat moet programmeren.
Ik heb al wel wat PID code's gezien maar daar zat geen duidelijke beschrijving bij of het waren regelkringen die te veel afweken van mijn regeling.
Ik begrijp niet precies wat je bedoelt met "hoe ik het zou doen".
Ik heb uitgelegd hoe ik de PID regeling wil laten werken maar ik heb geen idee hoe ik dat moet programmeren.
Ik heb al wel wat PID code's gezien maar daar zat geen duidelijke beschrijving bij of het waren regelkringen die te veel afweken van mijn regeling.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: PID drukregeling
Alex schreef:4 cijfers achter de komma is goed genoeg.
Ik begrijp niet precies wat je bedoelt met "hoe ik het zou doen".
Ik heb uitgelegd hoe ik de PID regeling wil laten werken maar ik heb geen idee hoe ik dat moet programmeren.
Een van de grootste fouten die vaak met ontwikkelen van programma's worden gemaakt is dat we eerst gaan intikken en dan pas denken. Daarmee verlies je het overzicht en zie je door de bomen het bos niet meer. In het papiervolle tijdperk werden we verplicht om eerst een structuur neer te zetten van een programma. Dus hoe is de stroom van de gegevens of in moderne termen de "proces flow". De stelling was toen en gaat nog steeds op is dat als je het niet kan beschrijven kun je het niet programmeren.
in jouw geval zeg je dat het een PID is. Maar verder ga je niet. Probeer dat nu eens uit te werken zonder je direct te bekommeren over de feitelijke c-code. Als je het kan beschrijven als continu proces kan je programmeren. Het vertalen in C-code is dan slechts nog het coderen.
Re: PID drukregeling
Je hebt helemaal gelijk Nico. Dit is normaal ook mijn werkwijze, sterker nog ik heb dit project al jaren in de planning maar ik ben geen programmeur dus daar loop ik een beetje vast. Ik zal vanavond wederom de boel eens proberen te verduidelijken.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: PID drukregeling
Af en toe moet je mensen weer ff een zetje gevenAlex schreef:Je hebt helemaal gelijk Nico. Dit is normaal ook mijn werkwijze, sterker nog ik heb dit project al jaren in de planning maar ik ben geen programmeur dus daar loop ik een beetje vast. Ik zal vanavond wederom de boel eens proberen te verduidelijken.
Re: PID drukregeling
Ok hierbij nog een poging om duidelijk te maken wat het systeem is en wat het moet kunnen.
Het doel is om een constante (ingestelde) onderdruk in een testkast te halen en houden. Laten we zeggen: 6Kpa onderdruk.
Deze testkast heeft drie ruimtes; In ruimte Ruimte A word de testdruk gemeten en via ruimte B word de lucht naar de vacuum motoren gezogen.
De doorlaat van het gat aan de bovenzijde van ruimte A kan variëren door een instelbare smoring.
Als de doorlaat groter word zullen de motoren dus harder moeten draaien om de ingestelde testdruk te halen of houden.
Bij het opstarten van het systeem moeten de motoren langzaam draaien op een soort "idle stand" en pas als een knop bediend word moeten de motoren naar de ingestelde druk gaan.
De onderdruk word door een MPXV4006DP sensor gemeten op de locatie waar in de tekening de meetbuis aan zit.
De 6 vacuum motoren zijn Universeel motoren die met faseafsnijding in twee circuits geregeld worden door twee Kemo M028N modules. (Is getest en werkt). Omdat de M028N modules niet rechtstreeks met PWM of lage voltages kunnen werken zitten er ook 2 Kemo M150 modules parallel aan de M028N modules. Deze M150 modules kunnen met PWM aangestuurd worden (is getest door met een Arduino aan te sturen en werkt).
Nu is het dus de vraag hoe we dit geheel kunnen programmeren zodat de gewenste testdruk ingegeven word,de sensorwaarde afgelezen word en de motoren geregeld worden naar de testdruk.
Het doel is om een constante (ingestelde) onderdruk in een testkast te halen en houden. Laten we zeggen: 6Kpa onderdruk.
Deze testkast heeft drie ruimtes; In ruimte Ruimte A word de testdruk gemeten en via ruimte B word de lucht naar de vacuum motoren gezogen.
De doorlaat van het gat aan de bovenzijde van ruimte A kan variëren door een instelbare smoring.
Als de doorlaat groter word zullen de motoren dus harder moeten draaien om de ingestelde testdruk te halen of houden.
Bij het opstarten van het systeem moeten de motoren langzaam draaien op een soort "idle stand" en pas als een knop bediend word moeten de motoren naar de ingestelde druk gaan.
De onderdruk word door een MPXV4006DP sensor gemeten op de locatie waar in de tekening de meetbuis aan zit.
De 6 vacuum motoren zijn Universeel motoren die met faseafsnijding in twee circuits geregeld worden door twee Kemo M028N modules. (Is getest en werkt). Omdat de M028N modules niet rechtstreeks met PWM of lage voltages kunnen werken zitten er ook 2 Kemo M150 modules parallel aan de M028N modules. Deze M150 modules kunnen met PWM aangestuurd worden (is getest door met een Arduino aan te sturen en werkt).
Nu is het dus de vraag hoe we dit geheel kunnen programmeren zodat de gewenste testdruk ingegeven word,de sensorwaarde afgelezen word en de motoren geregeld worden naar de testdruk.
- Bijlagen
-
- Vacuum testkast.png (40.22 KiB) 6440 keer bekeken
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: PID drukregeling
Maar simpel uitgedrukt:
cpp code
Hoe wordt dat smoren geregeld?
cpp code
ALS drukGemeten < dan gewensteDruk DAN
MotorDraaitHarder
ANDERS
MotorDraaitLangzamer
Einde ALS
Hoe wordt dat smoren geregeld?
28 berichten
• Pagina 2 van 3 • 1, 2, 3
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 84 gasten