Keresés

Részletes keresés

granov Creative Commons License 2015.01.18 0 0 576

Kiinduláshoz talán elegendő ez:

http://playground.arduino.cc/Code/PIDLibrary

 

Előzmény: Törölt nick (574)
Törölt nick Creative Commons License 2015.01.18 0 0 575

Az Excelbe kiíráshoz a kód átírva:

 

/*
Single_Temp.pde - Example using the MAX6675 Library.
Created by Ryan McLaughlin <ryanjmclaughlin@gmail.com>

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
http://creativecommons.org/licenses/by-sa/3.0/
*/
#define HIDEGEBB 6 // relay1
#define MELEGEBB 7 // relay2
#define MOTORFUTASIDO 1000
#define CIKLUSIDOMP 30
#include <MAX6675.h>
int x = 0;
int row = 0;
int LED1 = 13; // Status LED Pin
int CS = 4; // CS pin on MAX6675
int SO = 3; // SO pin of MAX6675
int SCLK = 5; // SCLK pin of MAX6675
int units = 1; // Units to readout temp (0 = raw, 1 = ˚C, 2 = ˚F)
float temperature = 0.0; // Temperature output variable
float hofok10 = 0.0;

// Initialize the MAX6675 Library for our chip
MAX6675 temp(CS,SO,SCLK,units);


// Setup Serial output and LED Pin
// MAX6675 Library already sets pin modes for MAX6675 chip!
void setup() {
Serial.begin(9600);
Serial.println("CLEARDATA");
Serial.println("LABEL, TIME, temperature");
pinMode(LED1, OUTPUT);
pinMode(HIDEGEBB, OUTPUT);
pinMode(MELEGEBB, OUTPUT);
}

void loop() {
// Read the temp from the MAX6675
temperature = temp.read_temp();

if(temperature < 0) {
// If there is an error with the TC, temperature will be < 0
Serial.print("Thermocouple Error on CS");
Serial.println( temperature );
digitalWrite(LED1, HIGH);
} else {
//Serial.print("Current Temperature: ");
Serial.println(temperature );
digitalWrite(LED1, LOW);
Serial.print("DATA, TIME,");
row++;
x++;
}
// Wait one second before reading again
delay(500);

int hofok10 = temp.read_temp()*10;
if(hofok10 > 300) {
digitalWrite(HIDEGEBB, LOW);
}
if(hofok10 < 290) {
digitalWrite(MELEGEBB, LOW);
}
delay(MOTORFUTASIDO);
digitalWrite(HIDEGEBB, HIGH);
digitalWrite(MELEGEBB, HIGH);
delay(CIKLUSIDOMP*100);
}

Előzmény: Törölt nick (574)
Törölt nick Creative Commons License 2015.01.18 0 0 574

Az eredeti célkitűzés egy termosztát PID-es. szabályozással, az adatok logolása Excelbe.

Ez utóbbi is megoldva a PLX-DAQ makróval:

 

 

Logolás Excelbe, on-line grafikon.

 

Előzmény: granov (573)
granov Creative Commons License 2015.01.18 0 0 573

Mit szeretnél PID használatával szabályozni?

Előzmény: Törölt nick (572)
Törölt nick Creative Commons License 2015.01.17 0 0 572

Működik 2 relével a termosztát MAX6675 bredboarddal, SainSmart Due SAM3X8E 32-bit ARM Cortex-M alaplappal.

A PID-es szabályozáshoz hogyan tovább?

Törölt nick Creative Commons License 2015.01.17 0 0 571

MAX6675.ccp fájl:

 

/*
MAX6675.h - Library for reading temperature from a MAX6675.

/*
MAX6675.cpp - Library for reading temperature from a MAX6675.

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
http://creativecommons.org/licenses/by-sa/3.0/
*/

#include <MAX6675.h>

MAX6675::MAX6675(uint8_t CS_pin, uint8_t SO_pin, uint8_t SCLK_pin, uint8_t units)
{
pinMode(CS_pin, OUTPUT);
pinMode(SO_pin, INPUT);
pinMode(SCLK_pin, OUTPUT);

digitalWrite(CS_pin, HIGH);

_CS_pin = CS_pin;
_SO_pin = SO_pin;
_SCLK_pin = SCLK_pin;
_units = units;
}

float MAX6675::read_temp()
{
uint16_t value = 0;
uint8_t error_tc = 0;
float temp = 0.0;

/*
Initiate a temperature conversion. According to MAX's tech notes FAQ's
for the chip, Line going high initiates a conversion, which means, we
need to clock the chip low to high to initiate the conversion, then wait
for the conversion to be complete before trying to read the data from
the chip.
*/
digitalWrite(_CS_pin,LOW);
delay(2);
digitalWrite(_CS_pin,HIGH);
delay(220);

/* Read the chip and return the raw temperature value */

/*
Bring CS pin low to allow us to read the data from
the conversion process
*/
digitalWrite(_CS_pin,LOW);

/* Cycle the clock for dummy bit 15 */
digitalWrite(_SCLK_pin,HIGH);
delay(1);
digitalWrite(_SCLK_pin,LOW);

/*
Read bits 14-3 from MAX6675 for the Temp. Loop for each bit reading
the value and storing the final value in 'temp'
*/
for (int i=11; i>=0; i--) {
digitalWrite(_SCLK_pin,HIGH);
value += digitalRead(_SO_pin) << i;
digitalWrite(_SCLK_pin,LOW);
}

/* Read the TC Input inp to check for TC Errors */
digitalWrite(_SCLK_pin,HIGH);
error_tc = digitalRead(_SO_pin);
digitalWrite(_SCLK_pin,LOW);

/*
Read the last two bits from the chip, faliure to do so will result
in erratic readings from the chip.
*/
for (int i=1; i>=0; i--) {
digitalWrite(_SCLK_pin,HIGH);
delay(1);
digitalWrite(_SCLK_pin,LOW);
}

// Disable Device
digitalWrite(_CS_pin, HIGH);

/*
Keep in mind that the temp that was just read is on the digital scale
from 0˚C to 1023.75˚C at a resolution of 2^12. We now need to convert
to an actual readable temperature (this drove me nuts until I figured
this out!). Now multiply by 0.25. I tried to avoid float math but
it is tough to do a good conversion to ˚F. THe final value is converted
to an int and returned at x10 power.

2 = temp in deg F
1 = temp in deg C
0 = raw chip value 0-4095
*/
if(_units == 2) {
temp = (value*0.25) * 9.0/5.0 + 32.0;
} else if(_units == 1) {
temp = (value*0.25);
} else {
temp = value;
}

/* Output negative of CS_pin if there is a TC error, otherwise return 'temp' */
if(error_tc != 0) {
return -_CS_pin;
} else {
return temp;
}
}

 

MAX6675.h library fájl:

 

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
http://creativecommons.org/licenses/by-sa/3.0/
*/

#ifndef MAX6675_h
#define MAX6675_h

#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif

class MAX6675
{
public:
MAX6675(uint8_t CS_pin, uint8_t SO_pin, uint8_t SCLK_pin, uint8_t units);
float read_temp();
private:
uint8_t _CS_pin;
uint8_t _SO_pin;
uint8_t _SCLK_pin;
uint8_t _units;
uint8_t chip_read(uint8_t CS_pin, uint8_t &error_tc);
};

#endif

DUE_thermostat_MAX6675.ino ilyen lett:

/*
Single_Temp.pde - Example using the MAX6675 Library.
Created by Ryan McLaughlin <ryanjmclaughlin@gmail.com>

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
http://creativecommons.org/licenses/by-sa/3.0/
*/
#define HIDEGEBB 6 // relay1
#define MELEGEBB 7 // relay2
#define MOTORFUTASIDO 1000
#define CIKLUSIDOMP 30
#include <MAX6675.h>

int LED1 = 13; // Status LED Pin
int CS = 4; // CS pin on MAX6675
int SO = 3; // SO pin of MAX6675
int SCLK = 5; // SCLK pin of MAX6675
int units = 1; // Units to readout temp (0 = raw, 1 = ˚C, 2 = ˚F)
float temperature = 0.0; // Temperature output variable
float hofok10 = 0.0;

// Initialize the MAX6675 Library for our chip
MAX6675 temp(CS,SO,SCLK,units);


// Setup Serial output and LED Pin
// MAX6675 Library already sets pin modes for MAX6675 chip!
void setup() {
Serial.begin(9600);
pinMode(LED1, OUTPUT);
pinMode(HIDEGEBB, OUTPUT);
pinMode(MELEGEBB, OUTPUT);
}

void loop() {
// Read the temp from the MAX6675
temperature = temp.read_temp();

if(temperature < 0) {
// If there is an error with the TC, temperature will be < 0
Serial.print("Thermocouple Error on CS");
Serial.println( temperature );
digitalWrite(LED1, HIGH);
} else {
Serial.print("Current Temperature: ");
Serial.println( temperature );
digitalWrite(LED1, LOW);
}
// Wait one second before reading again
delay(1000);

int hofok10 = temp.read_temp()*10;
if(hofok10 > 300) {
digitalWrite(HIDEGEBB, LOW);
}
if(hofok10 < 290) {
digitalWrite(MELEGEBB, LOW);
}
delay(MOTORFUTASIDO);
digitalWrite(HIDEGEBB, HIGH);
digitalWrite(MELEGEBB, HIGH);
delay(CIKLUSIDOMP*100);
}

Törölt nick Creative Commons License 2015.01.16 0 0 570

Rosszul fogalmaztam.

Korrekten kiírja a max6675 hőfok értékét C-ban, ennél a csipnél nincs a kompenzációs hőfok is kiírva.

Az arduino IDE könyvtárbeállításban megadott helyre kell telepíteni a korábban megadott zipes módszerrel, + átírtam a kódot.

A következő a relé működtetése lesz, még tanulmányozom a lap mellé kapott modul milyen kiépítésű, nehogy gond legyen a 3,3 V miatt.

Előzmény: Prof (569)
Prof Creative Commons License 2015.01.15 0 0 569

Serial.print-et neki, hogy a kiolvasás megy-e, vagy már azzal is gond van, nem csak a megjelenítéssel.

Előzmény: Törölt nick (568)
Törölt nick Creative Commons License 2015.01.14 0 0 568

Az SCK átírva SCLK-ra megoldódott a hiba, sikeresen ment a fordítás, a feltöltés a DUE-re.

Jelenleg egy értékket jelez, a referencia hőfokot nem.

Előzmény: Törölt nick (567)
Törölt nick Creative Commons License 2015.01.14 0 0 567

https://codebender.cc/library/MAX6675#MAX6675.h

https://codebender.cc/library/MAX6675#MAX6675.cpp

https://github.com/ryanjmclaughlin/MAX6675-Library

A legújabb források.

ZIP-ből megnyitottam a könyvtárat.

 

Arduino: 1.5.8 (Windows 7), Board: "Arduino Due (Programming Port)"

read_temp.pde:14:5: error: conflicting declaration 'int SCK'
In file included from D:arduinohardwarearduinosamcoresarduino/Arduino.h:189:0,
from C:Userswindows71DocumentsArduinolibrariesMAX6675-Library-master/MAX6675.h:12,
from read_temp.pde:9:
D:arduinohardwarearduinosamvariantsarduino_due_x/variant.h:135:22: error: 'SCK' has a previous declaration as 'const uint8_t SCK'
static const uint8_t SCK = PIN_SPI_SCK;
^
Hiba a fordítás során.

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.

 

Most ez a hibaüzenet.

Előzmény: Prof (564)
Törölt nick Creative Commons License 2015.01.13 0 0 566

Könyvtár probléma.

 

Azt is illik figyelembe venni, hogy az 1.5.8 BETA verzió máshogy kezeli a könyvtárakat mint a korábbi verziók. Akinek van ideje érdemes összehasonlítani egy régebbit az újjal, kicsit belemászva. Speciális meghatározott felépítése van, hogyan kell felépülnie a könyvtáraknak és van mindegyikben egy fájl is, ami leírja a könyvtár tartalmát.


Első gyanúm a hibaüzenet alapján, hogy neked ez a könyvtár nincs is telepítve, így bele se tudja fordítani a kódba. Így azt le kell töltened, és hozzá kell adni a könyvtárakhoz.

 

Ha régi felépítésű könyvtárt találsz, akkor egy korábbi Arduino verziószámmal kell feltöltened, vagy át kell alakítani a könyvtár szerkezetét.

Előzmény: Törölt nick (563)
John Zero Creative Commons License 2015.01.13 0 0 565

Letöltötted a két ZIP-et (library-k?)

    MAX6675 Libary – ZIP
    I2C LCD Library – ZIP

 

Nem kell kitömöríteni!
Utána pedig  Sketch - import library - Add Library... -> kiválasztani a ZIP-et.

 

Előzmény: Törölt nick (563)
Prof Creative Commons License 2015.01.13 0 0 564

Tipp: rosszul van telepítve a könyvtár. Szedd le, nézz bele editorral, hogy nincs-e benne hibás belső hivatkozás, aztán tedd fel újra rendes, hivatalos úton.

Előzmény: Törölt nick (563)
Törölt nick Creative Commons License 2015.01.13 0 0 563

Megérkezett a sainsmart DUE és a max6675 thermocouole breakout, összedrótoztam.

Az AURDINO 1.5.8 IDE az http://hobbybotics.com/projects/hobbybotics-max6675-thermocouple-breakout/

innét származó sketchnél

 

Arduino: 1.5.8 (Windows 7), Board: "Arduino Due (Programming Port)"

MAX6675_Serial.ino:7:21: fatal error: MAX6675.h: No such file or directory
compilation terminated.
Hiba a fordítás során.

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.

 

a fenti hibát jelzi.

 

Hogyan tovább?

Törölt nick Creative Commons License 2015.01.08 0 0 562

"

Mert hiába rakod tele ha az este úgyis be kell gyújtani. A 85/70 fokos pufi vesztesége 25%-al több mint egy 70/70-re fűtött pufié.

Igaz 25%-al több energiát raktál bele, de annak a 20%-át buktad veszteség formájában."

 

Ez így nagyon általános megfogalmazás.A  fenti érték saccra 5-10 cm szigeteléssel lehet igaz, de ha emeled a szigetelés vastagságát ezek a számok már nagyon nem igazak.

 

 

Előzmény: granov (556)
Törölt nick Creative Commons License 2015.01.08 0 0 561

Nem cél a fojtott működés, a teljesítmény csökkentés szülte kényszer.

Viszont a rendszerhatásfokát inkább növeli, ez mért adat.

A napi hőmérséklet időszakfüggő, de egy hőigényen felül az alacsonyabb periódusban inkább gazdaságos a fojtott üzem, mint a nagyintenzitású ezért alacsonyabb hatásfokú felfűtés.

Az emberi bioszenzor érzékenységétől függ, mekkora hőingadozást visel el rövidtávon, hogyan működik a hőkomfortja.

Előzmény: granov (560)
granov Creative Commons License 2015.01.08 0 0 560

Talán az éjjeli fojtott működést.

De ez talán. 

Mert ez kényelmes lehet, de én nem hiszek abban, hogy ez kevesebb fűtőanyagot igényelne.

 

A hőfok érdekes kérdés. Mert nem feltétlen jó az egyenletes hőfok. Ha már közel van az elvárt értékhez a helyiség hőmérséklete a lecsökkentett hőmérsékletű radiátor szerintem jobb komfortot (és megtakarítást is) eredményez.

 

E mellett számomra jobb ha éjszaka hidegebb van. Egy szolid 3-5 fokos hőfoklépcső ha beilleszthető a napi rutinba jelentős, 20-30% megtakarítást is eredményezhet. (ezt viszont saját tapasztalatból tudom, mert mértem még anno gázból).

Előzmény: Törölt nick (557)
Törölt nick Creative Commons License 2015.01.08 0 0 559

Érkeznek lassan a modulok, usb/rs232, max6675 K hőelemmel.

Kellene egy kiépítési koncepció pl a füstgáz szabályozóra, a N2006P  ugye egy komplett PID-es mikrokontroller házzal.

A modulokból egy síkban, egymás mellett, mit a bővítőkártyáknál, vagy egymásra tornyozva arduinósan lenne praktikusabb építkezni?

Törölt nick Creative Commons License 2015.01.08 0 0 558

Mindig rendszerhatásfokot kell venni alapul, a végén a fizetendő összeget az határozza meg.

A puffer nálam nem a maximális töltés szempontjából érdekes, csak a hatásfok függvényében.

Hőszigeteléssel változik a vesztesége.

Előzmény: granov (556)
Törölt nick Creative Commons License 2015.01.08 0 0 557

 

Bocs, hogy betaszigálom ide a fűtési grafikonokat, csak érzékeltetném a feladatot.

A vegyestüzelésű kazán jelenleg radiátorra dolgozik, itt éppen 24 órás üzemben, éjjel fojtott működéssel.

Az előremenő hőfok változásai követik a kazánteljesítményt, viszonylag egyenletes belső hőfok mellett, a külső hőfoktól látszólag kevésbé függően.

Mit lehet ezen javítani?

A helyiségekben lehetne egyenletesebb a hőfok, állandóan, a hőkomfortnak megfelelően sugárzó radiátorokkal.

A radiátor visszatérő hőfokon látszik, jelenleg nem egyenletes a hőleadás.

Előzmény: granov (555)
granov Creative Commons License 2015.01.08 0 0 556

Had mondjak ellent egy kicsit:

"A kazán-puffer viszonylatában a maximális kazánhatásfok, maximális pufferhőfok, a puffer-radiátor oldalon a maximális hőkomfort, az időjáráskövető egyenletes, a helyiséghasználatot követő hőleadás a cél."

A maximális pufferhőfok nagyon csalóka. Több topicban is zajlik a licitálás a ki tud többet berakni a pufferbe verseny.

HA a puffer nem fűtött térben van, hanem kazánház, pince, garázs ez full totális veszteség.

Inkább a puffer kapacitásának illesztése a hőigényhez lenne érdekes.

Mert hiába rakod tele ha az este úgyis be kell gyújtani. A 85/70 fokos pufi vesztesége 25%-al több mint egy 70/70-re fűtött pufié.

Igaz 25%-al több energiát raktál bele, de annak a 20%-át buktad veszteség formájában.

Ha így közelíted meg, akkkor egy arduinó képes lehet (???) megmondani, hogy mennyi fa kell ahhoz, hogy a tárolási veszteséged csökkenjen. (Tudom, így leírva utópia, de valahol ez lehet a megtakarítás egyik alapja).

 

 

Előzmény: Törölt nick (551)
granov Creative Commons License 2015.01.08 0 0 555

Pont olyan dologról írtok amit majd valamikor szeretnék megvalósítani.

Nem az ésszerűség hanem a hobbi miatt.

Ami nekem folyamatirányításból átjött anno és szerintem a neheze az a differenciál egyenlet felírása. 

Tegyük fel, hogy a házunk fűtéséhez készülő pid vezérléshez akarom felírni az egyenletet.

Mi az alapja az egyenletnek?

Amiket látok PID-nek mondott vezérléseket mind hőfokra, füstgázra vezérel.

Én egy picit másképp gondoltam: az energia mennyiségre szeretném felírni az egyenletet.

Az épület hőveszteségét kell pótolni. De beleszámít a hőtároló kapacitás, a rendszer saját tároló képessége, puffer (mint tárolós tag a "P", "I", "D" tagon felül).....

Ezek szerencsére létező s jól megfogható összefüggések. Szerintem egy arduino simán elboldogulna vele, merthogy az egyenletek egy jelentős része előre meghatározható, nem változó, hanem konstans értékekkel számolható. (pl a falak hűlése egy felmérés után alig tartalmaz változót: a rétegrendből származó hőátbocsájtás innentől egyszerű).

 

 

 

 

Előzmény: Törölt nick (550)
Törölt nick Creative Commons License 2015.01.08 0 0 554

Köszi ránézek.

Előzmény: John Zero (553)
John Zero Creative Commons License 2015.01.08 0 0 553

Arduino + PLC: ezt ismered? Még nem próbáltam, de PLC-szerű library arduino-ra. Mondjuk én inkább leprogramoztam eddig kézzel, de a PLC ladder logicnak lehet előnye, talán jobban áttekinthető és könnyebb.

http://www.open-electronics.org/arduino-as-a-programmable-logic-controller-plc/

Előzmény: Törölt nick (552)
Törölt nick Creative Commons License 2015.01.07 0 0 552

Vannak hasonló tervek, ileltve egy része megvalósult, csak máshogy.... Nálam jelenlege egy PLC műveli a felvázolt dolgot, és van egy két plusz még:

- a padlófűtésem is van, és be van rakva a betonba is egy hőérzékelő, ami méri konkrétan a beton hőmérsékletét (persze jó kérdés, melyik részre és hová tegyünk egy ilyen érzékelőt, mert nem evidens.... eleve többkörös, északi és déli oldal, stb)

- elgondolkodtató lenne az osztógyűjtő kimenetére elektronikus elzárószelepeket rakni áganként (csak ne kerülne olyan sokba....), így körönként szabályozhatóvá válhatna a hőmérséklet (persze jó lett volna gyárilag kihúzni szobánként, de az rengeteg cső és pénz)

 

Viszont mivel elég bugyuta PLC, ezért olyan sokmindenre nem alkalmas, csak alapdolgokra. Így tervezem lecserélni magam is mikrovezérlős rendszerre az egészet, mert egy korrekt PLC nagyon drága masinéria.

 

Egy vegyes-puffer körbe lehet nem nyúlnék bele elektronikával, hordoz magában veszélyeket. Persze meg lehet oldani biztonsági pluszokkal, de ott nem érzem szükségét belenyúlni. Nem gondolom, hogy sokkal jobb hatásfokot kapunk. Max ugyebár a már sokak által megvalósított elektronikus huzatszabályzóval lehet kicsit jobbá tenni, de másban én nem látok nagyon nagy lehetőséget.

 

Puffer-ház körnél viszont annál inkább van értelme......

Előzmény: Törölt nick (551)
Törölt nick Creative Commons License 2015.01.07 0 0 551

Az eddigi fűtési és mérési tapasztalatok alapján kezd fogalmazódni a követelményrendszer, ami a gazdaságosan megvalósítható komfortos fűtéshez vezethet.

Vegyestüzelés és radiátoros fűtés esetén nem beszélhetünk kiegyensúlyozott hőáramokról, meglehetősen változóak a körülmények.

Ezért fontos a viszonylag kevésszámú beavatkozási elem kezelése.

A szabályzó elektronika ne legyen nagyon bonyolult, masszív legyen, megbízható, az összes bekerülési költség arányos részét képviselje.

Az is látszik a mérések alapján, a puffer lesz az a beiktatott gépészeti elem a rendszerben, ami a legkönnyebben összekapcsolja a két eltérő működésű egységét.

Vagyis kell egy időjáráskövető szabályozás egy vegyestüzelésű-puffer-radiátor elemekből álló fűtéshez. Esetemben.

A kazán-puffer viszonylatában a maximális kazánhatásfok, maximális pufferhőfok, a puffer-radiátor oldalon a maximális hőkomfort, az időjáráskövető egyenletes, a helyiséghasználatot követő hőleadás a cél.

Filléres elektronikával......

Előzmény: Törölt nick (550)
Törölt nick Creative Commons License 2015.01.07 0 0 550

"ahol én a klasszikus értelemben vett pid szabályozásnak nem sok értelmét látom, mert ahogy te is írtad, annyi külső változó van, hogy annak komplexitása"

 

Ez így nem igaz. persze el lehet menni a végtelenbe bonyolultságot és algoritmust tekintve, de van egy egészséges határ, amit betartva igenis hasznos és jól alkalmazható dolog. Ez kb az a kategória, hogy méred a külső, belső hőmérsékletet, és a keverőszelepen tudsz változtatni az előremenőn. Ez három mérési pont, nem több, és elég tud lenni.- Gyárilag is hasonlóak a szabályzók, van amelyik még az előremenőt sem méri, vagy magával a kazánnal kommunikálva intézi ezt el.  és mérhető adott esetben az energiatakarékosság is, a kevesebb energiafelhasználás.

 

Ipari szintű méretekben is hasonló az elv, csak ott PLC-ket használnak a vezérlés megvalósítására, és sokzónás rendszer van, több mindent mérnek. Illetve ebből kifolyólag sokkal komplexebb.

 

"de adott esetben egy több magos nagy processzor számítási kapacitását is erősen feszegetné."

 

Ez nagyon nagy baj lenen ha így lenne. Egy pár Mhz-en ketyegő mikrokontrollerrel ez simán úgy megvalósítható, hogy az idő 99%-ban pihen a kontroller :-). Nem igényel ez komoly erőforrást, csak jól megkonstruált matematikai alapokat amik komoly elméleti háttérrel rendelkeznek. 20-30 ezer ft környékén már lehet kapni az egyszerűbb verziókat készen, abban sem P4 procik vannak - már csak a telepes alacsony energiafelhasználású táplálás miatt se. És PID alapúak. Az egyik ok amiért nem kell nagy erőforrás a sebesség igénye. NAgy időállandók vannak, bőven van idő mindenre. Pl egy motorvezérlésnél, ahol usec idők alatt kell beavatkozni és reagálni, ott már más a helyzet, az keményebb dió.

Előzmény: Prof (548)
Prof Creative Commons License 2015.01.06 0 0 549

Pár nap múlva visszatérek rá, most elég sűrű napjaim vannak ahhoz, hogy ne tudjak bennük elmélyedni.

Előzmény: Törölt nick (536)
Prof Creative Commons License 2015.01.06 0 0 548

Hali!

Köszi, nagyon jó összefoglaló. Java itt megvan/volt teljesen. :-)

Alapvetően rendkívül egyszerű rendszer építése a cél később, 1 bites kimenettel és kvázi-analóg, viszonylag szűk tartományú, de annál nagyobb felbontású bemenettel. Később jön majd kifelé analóg rendszer is, aminek a bemenete már nem egy, hanem várhatóan több paramétert fog elemezni (szintén analógot, csak más jellegűt).

Egyébként pont a ház fűtésvezérlés az, ahol én a klasszikus értelemben vett pid szabályozásnak nem sok értelmét látom, mert ahogy te is írtad, annyi külső változó van, hogy annak komplexitása nem hogy egy Arduino, de adott esetben egy több magos nagy processzor számítási kapacitását is erősen feszegetné. (Megjegyzem, az egyik barátom korábbi házában a fűtésszabályozás konkrétan a külső hőmérséklettől függött, vagyis akkor fűtött, amikor kint hideg volt, nem akkor, amikor bent, volt is gázszámla vastagon.)

Egy egyszerű rendszerben (egy bit ki, analóg be) egy Mega szintű 16 MHz-es mikrokontroller bőségesen elég a cél megvalósításához, ipari berendezésekben (konkrétan kávégépekben) is hasonló bonyolultságú eszközök dolgoznak teljesen megbízhatóan, paraméterezhetően (P, I, D paraméter). Ezt a szintet valamelyik O'Reilly-könyvben elég felszínesen ugyan, de funkcionálisan megfelelően kivesézik, annyira legalábbis, hogy egy működő egyszerű rendszer összeállítható legyen. Majd megkeresem, illetve majd ha odaérek, mutatom a projektet is.

Előzmény: Törölt nick (541)
Prof Creative Commons License 2015.01.06 0 0 547

Alapból 100 kHz, amit elvileg a könyvtáron belül fel lehet húzni 400 kHz-ig. Tovább nagyon nem javasolják, ahogy olvastam.

Előzmény: Törölt nick (539)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!