Fórum témák
- • Számítógép hiba, de mi a probléma?
- • Rendelés külföldről (eBay - Paypal)
- • Analóg oszcilloszkóp javítása
- • Kávéfőzőgép hiba
- • KETTLER töltő
- • Hozom-viszem, veszem-küldöm!
- • 32A 40-re bővítése?
- • Tápegységgel kapcsolatos kérdések
- • Arduino relé modul, elnémul az out_pin
- • Elfogadnám, ha ingyen elvihető
- • Tranzisztorok helyettesítése
- • Multiméter - miért, milyet?
- • Műhelyünk felszerelése, szerszámai
- • Vibrációs búvárszivattyú
- • Kapcsolóüzemű táp 230V-ról
- • Gitárerősítő
- • Erősítő építése elejétől a végéig
- • Napelem alkalmazása a lakás energia ellátásában
- • Klíma szervizelés, javítás
- • LCD TV probléma
- • Ventilátoros hűtés
- • Milyen csatlakozó ez?
- • Elektronikus szulfátoldó (Akku aktivátor)
- • Elektroncső
- • Felajánlás, azaz ingyen elvihető
- • Gyors hőmérséklet mérés tapintó érzékelővel ellátott műszerrel
- • Dobozolási technikák, műszerdobozok
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • Erősítő mindig és mindig
- • Bojler javítása, kérdések
- • Audiofil, High End Audio
- • Klíma beszerelése, fűtés-hűtés házilag
- • Teljesítmény -LED, powerLED (pl. Cree, Luxeon) vezérlése
- • Varrógép elektronika
- • WiFi antenna készítés
- • Mosógép vezérlők és általános problémáik
- • Transzformátor készítés, méretezés
- • Túlfeszültségvédő
- • SONY TA-F 590ES MOSFET végfok átalakítása
- • Kapcsolóüzemű tápegység
- • Vakondriasztó
- • Indukciós főzőlap javítása
- • Gitár torzító / Effekt / Erősítő / Pickup
- • Tápegység
- • Oszcilloszkóp vétel, mit gondoltok?
- • Be-/kikapcsoló nyomógombbal
- • Hűtőgép probléma
- • XBOX kiegészítők, javítások átalakítások
- • Kazettás magnó (deck) javítása
- • Villanyszerelés
- • Leválasztó transzformátor
- • Kombinált gáztűzhely
- • Li-Po - Li-ion akkumulátor és töltője
- • Kompresszor hiba
- • Keverőpult építése, javítása
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Annyit gondolok hogy 2 diagramnak szinte lineárisnak kell leni egymásal minél simább akor jo a pid értékeke kalkulácio ha jol gondolom?
Jól gondolod, ez működni is normál esetben.
De itt egy 50 mm magas, 40 mm külső átmérőjű (poharat) fűtök, egy 300W os fűtéssel. (ez nagyon túl van méretezve, de ennek ilyennek kell lenni).
Mivel a pohárnak is van hőtehetelensége, és annak is kell egy pici idő amíg a hőmérő szenzor átmelegszik, bekapcsolja hűtést pár másodpercre és túllő 10 fokot, hiába nem fűt már a hőfok még szalad felfelé.
Ezért a setpointhoz közel csak nagyon óvatosan lehet fűteni.
Ha első felfűtésnél óvatosan fűtök, kell 7-8 perc mire felfűt, azt meg sok.
Muternek szeretnnék már csinálni egy Csoki temperáló eszközt aminek 2 fázisa van csoki olvasztás ez idore anyi amenyi 50..60c de a temperálási idö ami fontos vissza hütés és 28..33c tarása pid jolene ehez nagyon!
Most sima ki be hisztézis van szabályzásra de tulszalad a beálitot érték pedik a tömeg nem nagy ugy 1..2dl csak! A hozzászólás módosítva: Júl 15, 2017
De nincs túlméretezve a fűtés akkor sima ügy, felfűtesz sima ki-be módszerrel, majd pidre váltasz. Sima liba.
30W csak gyári de a vezérlése csak sima ntc nagyon kezdetleges a megoldása!
Az arduino power bankról 5v-ról megy. Az arduinoról az föld és az 5v-os kimenet van szétosztva. Ezért a közös föld megvan. Nem tudom az arduino usb-n van meghajtva az mennyit befolyásol, de nekem így a legkényelmesebb az illesztés.
Valaki itt a con-on valami olyat mondott, hogy a 2 adatot a földel le kéne valahol elkenállásozni. De nem részletezte.
Örülnék ha a jelmez szalag kábelezését nem kéne lecserélni mert a felfogatól nem vastagabb kábelre készültek.
Minden segítséget, ötletet köszönök.
Ami neked van pid szabályzás aval van most gond vagy ujitanád bövitenéd?
Van működő típusom, ez újítás lenne.
Az if -ben igy használjuk az 'and' feltételt:
if ( arany < valtfelso && StartTime < 300000 )
Bővebben: Link
Szia!
Miért futott le 'AND'-el egyáltalán? Nem kellene hibát dobnia fordításkor?
(Mondjuk a zárójeleket nem hagynám el, mert később hiba is lehet.)
A 2 csatornás PID szabályozáshoz.
Egyszerüen csak mindent megduplázol.
Például, Tuningolt 2 csatornás szabályozás:
/********************************************************
* PID Adaptive Tuning Example
* One of the benefits of the PID library is that you can
* change the tuning parameters at any time. this can be
* helpful if we want the controller to be agressive at some
* times, and conservative at others. in the example below
* we set the controller to use Conservative Tuning Parameters
* when we're near setpoint and more agressive Tuning
* Parameters when we're farther away.
* HU.:
* * PID adaptív hangolási példa
* A PID könyvtár egyik előnye, hogy tudsz
* Módosítsa a hangolási paramétereket bármikor. Ez lehet
* Hasznos, ha azt akarjuk, hogy a vezérlő agresszív legyen
* Idő, és mások konzervatív. Az alábbi példában
* A vezérlőt a konzervatív hangolási paraméterek használatára állítottuk be
* Ha közel állunk az alapértékhez és az agresszívabb hangoláshoz
* Paraméterek, amikor távolabb vagyunk.
********************************************************/
#include <PID_v1.h>
#define PIN_INPUT 0
#define PIN_OUTPUT 3
#define PIN_INPUT2 1
#define PIN_OUTPUT2 4
//Define Variables we'll be connecting to
double Setpoint, Input, Output;
double Setpoint2, Input2, Output2;
//Define the aggressive and conservative Tuning Parameters
double aggKp=4, aggKi=0.2, aggKd=1;
double consKp=1, consKi=0.05, consKd=0.25;
double aggKp2=4, aggKi2=0.2, aggKd2=1;
double consKp2=1, consKi2=0.05, consKd2=0.25;
//Specify the links and initial tuning parameters
PID myPID(&Input, &Output, &Setpoint, consKp, consKi, consKd, DIRECT);
PID myPID2(&Input2, &Output2, &Setpoint2, consKp2, consKi2, consKd2, DIRECT);
void setup()
{
//initialize the variables we're linked to
Input = analogRead(PIN_INPUT);
Setpoint = 100;
Setpoint2 = 200;
//turn the PID on
myPID.SetMode(AUTOMATIC);
myPID2.SetMode(AUTOMATIC);
}
void loop()
{
Input = analogRead(PIN_INPUT);
double gap = abs(Setpoint-Input); //distance away from setpoint
if (gap < 10)
{ //we're close to setpoint, use conservative tuning parameters
myPID.SetTunings(consKp, consKi, consKd);
}
else
{
//we're far from setpoint, use aggressive tuning parameters
myPID.SetTunings(aggKp, aggKi, aggKd);
}
myPID.Compute();
analogWrite(PIN_OUTPUT, Output);
// PID 2 ------------------------------------------------------
Input2 = analogRead(PIN_INPUT2);
double gap2 = abs(Setpoint2-Input2); //distance away from setpoint
if (gap2 < 10)
{ //we're close to setpoint, use conservative tuning parameters
myPID2.SetTunings(consKp2, consKi2, consKd2);
}
else
{
//we're far from setpoint, use aggressive tuning parameters
myPID2.SetTunings(aggKp2, aggKi2, aggKd2);
}
myPID2.Compute();
analogWrite(PIN_OUTPUT2, Output2);
}
Mi lenne az amit szeretnél még meg lévön kivül?
Ha érdekel van egy minta példa vezérlés a képen lévö rendszerhez....(tanulmányozásra) A hozzászólás módosítva: Júl 15, 2017
Pontosan erre van szükségem, holnap kipróbálom.
Nagyon szépen köszönöm a segítséget.
Én nem sörözök! De 1 kiérdemelt, felfelé mutató hüvelyk újnak örülni szoktam!
A hozzászólás módosítva: Júl 15, 2017
Mézet se szereted?
Sziasztok!
Ez tuti jó? Megold mindent a pid? Nem tudom, ezért kérdezem.
double gap = abs(Setpoint-Input); //distance away from setpoint
if (gap < 10)
{ //we're close to setpoint, use conservative tuning parameters
myPID.SetTunings(consKp, consKi, consKd);
}
else
{
//we're far from setpoint, use aggressive tuning parameters
myPID.SetTunings(aggKp, aggKi, aggKd);
}
Amennyiben csak fűt agresszívan és lágyan de nem hűt, akkor ez gond is lehet. Valamiért melegebb pl 11 fokkal mint kellene akkor kigyulladásig fűti ebben az esetben. Nem jól látom?
Ez csak az érzékenységet állítja!
Ha bövebben érdekel a téma?
Itt a magyarázat: Bővebben: Link
Nézem régebben, de nem tudtam használni.
Nem működött, gondolom béna vagyok.
Láttam egy videót, ahol a srác egy fa lécre rakott két propellert, középen feltámasztotta, és próbálgatással állapította meg a megfelelő értékét a változóknak. Ha nekem kellene PID-et állítani, én is valahogy így csinálnám, persze ha megoldható.
Igen.
A megfelelő értékeket az adott HW-n, kel kikisérletezni! ???
//Define the aggressive and conservative Tuning Parameters
double aggKp=4, aggKi=0.2, aggKd=1;
double consKp=1, consKi=0.05, consKd=0.25;
double aggKp2=4, aggKi2=0.2, aggKd2=1;
double consKp2=1, consKi2=0.05, consKd2=0.25;
Ezt könnyíti az előző program. Mert menetközben, sorosporton beadhatod neki a változtatásokat.
Mivel tud többet a PID_v1 könyvtártol?
Nem látom átt igazán!
Sziasztok!
Olyan dolgot szeretnék megvalósítani, hogy minden egyes gombnyomásra eggyel növekedjen a számláló. Sajnos a mellékelt program olyat csinál, hogyha nyomva tartom a gombot, akkor a következő gombnyomásra 2-t, 3-t ad hozzá a számlálóhoz. Az egy csavar a dologban, hogy minden 5. értéket iratom a serial-ra, szerintem nem az befolyásolja a dolgot.
Segítségeket köszönöm!
int inPin = 2; // the number of the input pin
int nulla = 3;
int outPin = 13; // the number of the output pin
int szam = 0;
int state = HIGH; // the current state of the output pin
int reading; // the current reading from the input pin
int previous = LOW; // the previous reading from the input pin
int nullazo;
int szam1 = 0;
// the follow variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long time = 0; // the last time the output pin was toggled
long debounce = 500; // the debounce time, increase if the output flickers
void setup()
{
Serial.begin(9600);
pinMode(inPin, INPUT_PULLUP);
pinMode(nulla, INPUT_PULLUP);
pinMode(outPin, OUTPUT);
}
void loop()
{
reading = digitalRead(inPin);
nullazo = digitalRead(nulla);
// if the input just went from LOW and HIGH and we've waited long enough
// to ignore any noise on the circuit, toggle the output pin and remember
// the time
if (reading == HIGH && previous == LOW && millis() - time > debounce) {
szam++;
szam1++;
if (state == HIGH)
state = LOW;
else
state = HIGH;
time = millis();
}
if (nullazo == LOW) {
szam = 0;
szam1 = 0;
Serial.println(szam);
Serial.println(szam1);
}
if (szam1 == 5) {
Serial.println(szam);
Serial.println(szam1);
szam1 = 0;
}
digitalWrite(outPin, state);
previous = reading;
}
még azt is lehetne hogy a értékeket meg adása sorosporton keresztül pl aggKp=4 ezt igy irod be soros porton K4
double aggKp=4, aggKi=0.2, aggKd=1;
double consKp=1, consKi=0.05, consKd=0.25;
double aggKp2=4, aggKi2=0.2, aggKd2=1;
double consKp2=1, consKi2=0.05, consKd2=0.25;
valahogy igy ez még sajnos a tizeses érrtéket nem tudom hogy kell kezelni eeprom iráshoz ezt majd itt segitenek bene!
#include <EEPROM.h>
#define fre_EEPRCIM 10
double aggKp=0; ///pid egy ertek példa
void setup() {
Serial.begin(9600);
aggKp = fre_EEPolvas(fre_EEPRCIM);
Serial.println(aggKp);
}
void loop() {
if (Serial.available()){
int inByte = Serial.read();
switch (inByte) {
case 'K':
aggKp = Serial.parseInt();
fre_EEPiras(fre_EEPRCIM, aggKp);
Serial.print(aggKp);
Serial.flush();
break;
}
}
}
unsigned long fre_EEPolvas(int address){
long negy = EEPROM.read(address);
long harom = EEPROM.read(address + 1);
long ketto = EEPROM.read(address + 2);
long egy = EEPROM.read(address + 3);
return ((negy << 0) & 0xFF) + ((harom << 8) & 0xFFFF) + ((ketto << 16) & 0xFFFFFF) + ((egy << 24) & 0xFFFFFFFF);
}
void fre_EEPiras(int address, long adat){
byte negy = (adat & 0xFF);
byte harom = ((adat >> 8) & 0xFF);
byte ketto = ((adat >> 16) & 0xFF);
byte egy = ((adat >> 24) & 0xFF);
EEPROM.write(address, negy);
EEPROM.write(address + 1, harom);
EEPROM.write(address + 2, ketto);
EEPROM.write(address + 3, egy);
}
A hozzászólás módosítva: Júl 16, 2017
Nálam a PID értékek meg vannak szorozva 10-el, úgy vannak eltárolva az eepromban, kiolvassa aztán /10.
|
|