|
Ämnessammanfattning
Skrivet av: rgx107
« skrivet: 03 mars 2013, 10:04:11 »
Är det någon som har en länk till en vettig öppna/stäng pi regulator för arduino. Skulle kanske kunna programmera en själv men skulle gärna uppskatta att titta på en.
För att göra en enkel regulator som reglerar inom 2° funderar jag såhär Läs av temp Läs av börvärde. Om börvärde > temp +1, slå till relä1 1sek x P x temperaturdifferans. Om börvärde < temp -1, slå till relä2 1sek x P x temperaturdifferans Vänta (I) sekunder.
Tänker jag fel?
Om man ska vara petig så beskriver du en ren I-regulator, som i sig är instabil. Hysteresen kan göra den stabil. Om du vill göra en P-reglering behöver du på något sätt hålla reda på var shunten är (antar att det är shuntstyrning vi talar om) och varje cykel flytta shunten till det nya, beräknade läget, oavsett var den är. Det bästa vore att ha en vinkelgivare på shunten. Alternativt skulle man kunna köra shunten till ändläget nån gång per dygn och räkna därifrån. Personligen tror jag inte det ger så mycket att förbättra shuntstyrningen eftersom man ju mäter framledningen och kan reglera den ganska bra med en vanlig ramp och hysteres. Det intressanta skulle i mitt fall vara lite mer intelligent reglering av framledningen.
Skrivet av: 240GLT
« skrivet: 02 mars 2013, 23:46:51 »
Jag har inte provkört den själv, men det finns tydligen PID-regulatorer färdiga för Arduino. Bara sätt derivata-delen D till 0 så blir den inaktiverad, och kvar har du en PI-regulator. Här är ett exempel för att driva ett relä: http://playground.arduino.cc//Code/PIDLibraryRelayOutputExample
Skrivet av: Berrkan
« skrivet: 20 januari 2013, 10:17:04 »
Är det någon som har en länk till en vettig öppna/stäng pi regulator för arduino. Skulle kanske kunna programmera en själv men skulle gärna uppskatta att titta på en.
För att göra en enkel regulator som reglerar inom 2° funderar jag såhär Läs av temp Läs av börvärde. Om börvärde > temp +1, slå till relä1 1sek x P x temperaturdifferans. Om börvärde < temp -1, slå till relä2 1sek x P x temperaturdifferans Vänta (I) sekunder.
Tänker jag fel?
Skrivet av: BosseBus
« skrivet: 04 juli 2012, 21:14:09 »
Ja det var ju rätt logiskt...det fungerade.. Mycket att lära... får ta en bit i taget...
Skrivet av: gossen
« skrivet: 04 juli 2012, 20:55:34 »
Om du vill att number skall nollas och sedan börja om igen kan du sätta number=0; efter delay(10000); Jag tror att du igentligen skall kolla lite på for loop och/eller while loop för att få en mindre och tydligare(?) kod.
Nej, jag använder inte arduino själv men jag har programmerat en hel del AVR(som det sitter på arduino) i C.
Nästa gång jag skall göra något mindre hobbyprojekt kommer jag nog att köra på en arduino för man får väldigt mycket för pengarna som gör att det inte är värt att bygga eget från grunden(sen att programmeringssyntaxen är väldigt enkel och att man kan skriva även i C är en bonus:) ).
/G
Edit: Såg nu att du även ändrat till if (number > 4) vilket är helt rätt, ett annat alternativ är if (number >= 4) som är sant ifall number är större än eller lika med 4.
Skrivet av: BosseBus
« skrivet: 04 juli 2012, 20:08:44 »
Ändrade visst lite mer.. Serial.println(++number);// print number: la till ++ delay(1); if (number > 4) // number Ändrade här också { digitalWrite(led, HIGH); // On led delay(10000); }
else
delay(1); } Så nu blinkar den 4 ggr. sedan in i den andra lopen...
Skrivet av: BosseBus
« skrivet: 04 juli 2012, 19:55:45 »
Nej det gör den inte... Lade till ++ på denna kod Serial.println(++number);// print number: Då visar den rätt och koden verkar fungera... Man kan inte nollställa "number" ?? Grejar du något själv med Arduino?
Skrivet av: gossen
« skrivet: 04 juli 2012, 19:40:35 »
Ser inte riktigt vad som är det felet du säger men du gör en eveighetsloop som aldrig nollas och kommer att fortsätta räkna upp tills räknaren slår runt. Detta borde du dock se i utskriften. Lyser leden någonsin länge?
/G
Skrivet av: BosseBus
« skrivet: 04 juli 2012, 18:48:56 »
Provar å ser om det är några vakna i detta ämne. Tanken är att en led ska blinka 4 gånger Räknas in i variabel "number" som ska börja på 0 och sen +1 osv. tills 4 är uppnådd, sedan lysa längre.. Sen försöker jag se vad som är i variabeln "number" med serial print...men det visar bara 0 Fel är det ju... kanske någon kan hjälpa till ? Kod: int led = 11;// led 11 int number = (0);//Variabel void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { digitalWrite(led, HIGH); // turn the LED on delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off delay(1000); // wait for a second number +1; // + Serial.println(number);// print number: delay(1); if (number== 4) // number { digitalWrite(led, HIGH); // On led delay(10000); } else delay(1); }
Skrivet av: Theander
« skrivet: 16 juni 2012, 19:51:05 »
Det som är riktigt kul med Arduino är att det finns så mycket expansionsmoduler att köpa till den.
Skrivet av: GDS-Jan
« skrivet: 16 juni 2012, 00:35:51 »
fast egentligen blir det 401-499 och 499-599 i och med att villkoren är större eller mindre än (><)
man kan använda större eller lika med <= eller mindre eller lika med >=
Nu var du petig, han kan aldrig ställa in pot'en med den toleransen Han vill lära sig hur man programmerar. Har man 1 vilkor så skriver man det. Har man 2 vilkor så skriver man de efter varandra om de är oberoende av varandra. Rent praktisk så kommer de att ske samtidigt eftersom arduinon kör 16milj instruktioner i sekunden. Första steget till programmering: Saker som är oberoende av varandra kan man lägga i en följd. Men saker som är beroende av ett resultat eller svar från en funktion kan inte utföras innan de har resultatet. Logiskt eller?
Skrivet av: BosseBus
« skrivet: 15 juni 2012, 22:05:35 »
Ja jo det märks...att det blir så, försöker lära mig så det är bara test än.. Det här är kul.
Skrivet av: Theander
« skrivet: 15 juni 2012, 21:53:54 »
ja den koden bör tända första dioden mellan 400-500 och sen mellan 500-600
fast egentligen blir det 401-499 och 499-599 i och med att villkoren är större eller mindre än (><)
man kan använda större eller lika med <= eller mindre eller lika med >=
Skrivet av: BosseBus
« skrivet: 15 juni 2012, 21:48:31 »
2 lysdioder mellan 2 olika värden. Blir så här då? Kanske onödigt skrivit.. Tanken är att jag ska läsa från olika brytare och ge dom olika motstånd, in på samma analoga ingång. int analogPin = A0; // pot int led12 = 12; //led int led11 = 11; //led int pot_value = 0; //Variabel
void setup() { pinMode(led12, OUTPUT); pinMode(led11, OUTPUT); Serial.begin(9600); }
void loop() { int pot_value = analogRead(analogPin);// läs pot if ((pot_value > 400) && (pot_value < 500)) //ok kod gör det de ska { digitalWrite(led11, HIGH); } else { digitalWrite(led11, LOW); }
if ((pot_value > 500) && (pot_value < 600)) //ok kod gör det de ska { digitalWrite(led12, HIGH); } else { digitalWrite(led12, LOW); } Serial.println(pot_value);// print pot: delay(1); }
Skrivet av: Theander
« skrivet: 15 juni 2012, 21:44:37 »
Lycka till med resterande programmering.
Skrivet av: BosseBus
« skrivet: 15 juni 2012, 21:36:33 »
Oj då... nu fungerar det.... Tack... ett steg fram....
Skrivet av: Theander
« skrivet: 15 juni 2012, 21:28:11 »
sorry slarvigt av mig
if ((pot_value > 400) && (pot_value < 500))
så här skall if satsen se ut hade glömt parenteser samt vänt på > tecknen
Skrivet av: BosseBus
« skrivet: 15 juni 2012, 21:16:23 »
Tack för tipset... men jag famlar runt i mörkret... Något är fel.. int analogPin = A0; // pot int led = 12; //led int pot_value = 0; //Variabel void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { int pot_value = analogRead(analogPin);// läs pot if (pot_value < 400) && (pot_value > 500) //klagar här { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } Serial.println(pot_value);// print pot: delay(1); }
Skrivet av: Theander
« skrivet: 15 juni 2012, 20:17:52 »
Koden borde se ut ungefär så här om du har en variabel pot_value
if (pot_value < 400) && (pot_value > 500) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); }
Koden kommer att tända LEDen om variabeln pot_value är större än 400 och mindre än 500
Hoppas det gick att förstå.
Skrivet av: BosseBus
« skrivet: 11 juni 2012, 23:44:34 »
Ja det låter ju bra... Jag har kört ett antal enkla tutorials... Det finns en seriel monitor som man kan se värden på... Jag försöker läsa värden på Analog ingång från en pot.. Sen tänkte jag att jag skulle få en led att lysa när värdet är mellan ex: 400-500 Men vet inte hur jag ska skriva... Kanske kan återkomma...
Skrivet av: purjo__
« skrivet: 11 juni 2012, 23:18:43 »
Fråga på bara...
Som sagt var - Du får vara beredd på att du måste skriva en hel del kod. Det finns visserligen en del färdiga bibliotek att använda sig av, men om du skall komma nån vart så är det lika bra att börja med ett antal enkla tutorials och sen bygga vidare därifrån. När du vet hur man tänder och släcker några dioder baserat på diverse ingångsvilkor och/eller timers så är det dags att börja med 'the real stuff'. Sen kan det ju vara bra att ha nån sorts display så att man vet vad som försiggår också. Även där tillkommer det en del programmering för att tända och släcka rätt pixlar...
Skrivet av: GDS-Jan
« skrivet: 11 juni 2012, 23:14:28 »
Kanske uttryckte mig oklart men min fråga var: Är det någon här som kan förklara vad som är skillnaden på PLC och Arduino mikrodator. Och det tror jag att jag har fått lite svar på. Sen vore det ju trevligt med någon som kan programmera dessa, som man kunde fråga och få lite tips angående programmering. Men det kanske var ett önsketänkande. Det är inte lätt att börja från 0...
Att programmera är att ligga 1 steg före maskinen hela tiden. Det är bara du som vet vad som skall göras. Du måste tänka ut varje steg eller val som programmet måste göra och språket eller datorn (arduino, PLC, basicstamp, PC eller vad som helst) spelar ingen roll. Om du nu har köpt arduino så råder jag dig att börja någonstans och få ett program att fungera så du börjar någonstans.
Skrivet av: BosseBus
« skrivet: 11 juni 2012, 22:59:44 »
Kanske uttryckte mig oklart men min fråga var: Är det någon här som kan förklara vad som är skillnaden på PLC och Arduino mikrodator. Och det tror jag att jag har fått lite svar på. Sen vore det ju trevligt med någon som kan programmera dessa, som man kunde fråga och få lite tips angående programmering. Men det kanske var ett önsketänkande. Det är inte lätt att börja från 0...
Skrivet av: GDS-Jan
« skrivet: 11 juni 2012, 22:39:32 »
GDS-Jan Nä jag har inte förväntat mig att du ska lära mig att programmera... Det är väl ingen större skillnad på att tända en lysdiod och att starta en kompressor eller en fläkt, så länge de inte drar mer än 40mA?
Det var inte jag som ville ha hjälp. Jag kan programmera vad som helst på den och bygga dom gränssnitt som behövs. De finns program till arduinon som genererar videosignal direkt, det gör du inte med en PLC eller en Mindstorms uC heller för den delen. Jag förstår inte vad du vill? Du har en dator med 32Kb programminne, 2Kb RAM och 1KB EEPROM. Det går att göra nästan vad som helst.
Skrivet av: BosseBus
« skrivet: 11 juni 2012, 22:19:02 »
purjo__ Ja då förstår jag lite som Lego mindstorm för barn. (PLC) Jo den har ju som allt begränsningar... men kanske kan duga så länge.. Om jag nu klurar ut hur... Har i och för sig hittat något program som verkar kunna göra det samma...om jag nu förstår mig på det... GDS-Jan Nä jag har inte förväntat mig att du ska lära mig att programmera... Det är väl ingen större skillnad på att tända en lysdiod och att starta en kompressor eller en fläkt, så länge de inte drar mer än 40mA?
Skrivet av: purjo__
« skrivet: 11 juni 2012, 22:16:31 »
Det finns ju färdiga reläkort som löser det problemet...
Skrivet av: GDS-Jan
« skrivet: 11 juni 2012, 21:42:57 »
Fördelen med ett kommersiellt PLC-system är väl att det finns programmeringsverktyg där man aldrig behöver skriva en rad kod. Man ritar lite flödesdiagram på PC'n och bygger koden av det... Nackdelen är att det kostar pengar...
En nackdel med Arduino Uno, som du visade bild på, är att den har ganska få in-/utgångar. Skall man kunna mäta mer än en handfull saker och styra lika mycket så tar det slut på anslutningar. Som tur är finns det Arduino Mega med betydligt fler anslutningar.
Sedan så måste man nivåanpassa själv. Det är lite skillnad på att tända en lysdiod och att starta en kompressor eller en fläkt.
Skrivet av: purjo__
« skrivet: 11 juni 2012, 21:37:29 »
Fördelen med ett kommersiellt PLC-system är väl att det finns programmeringsverktyg där man aldrig behöver skriva en rad kod. Man ritar lite flödesdiagram på PC'n och bygger koden av det... Nackdelen är att det kostar pengar...
En nackdel med Arduino Uno, som du visade bild på, är att den har ganska få in-/utgångar. Skall man kunna mäta mer än en handfull saker och styra lika mycket så tar det slut på anslutningar. Som tur är finns det Arduino Mega med betydligt fler anslutningar.
Skrivet av: GDS-Jan
« skrivet: 11 juni 2012, 21:10:30 »
PLC kanske då har redan typ reläer på utgångar? Tack för länken men där har jag varit och på snart 1000 andra ställen känns det som.. ^-^i alla fall. Men så fort jag försöker göra något eget så går det inte... i programmeringen.
Jag skall inte lära dig hur man programmerar men du måste analysera och beta ner vad du vill åstakomma och skapa kod efter det. Om du tittar på blink-koden så är det absolut basic vad man kan göra. Sätt portpin13 hög, vänta 1000ms, sätt portpin13 låg, vänta 1000ms och upprepa detta i oändlighet. Det är basic och kommer att blinka lysdioden som sitter på pin13 på arduinon. Sedan så bygger styrningar på konditionellt programflöde, Om pin12 är hög så gör detta. Om pin9 är låg sätt pin11 hög. Om det är Tisdag sätt temperaturen till 20 °C. Alla program fungerar så.
Skrivet av: BosseBus
« skrivet: 11 juni 2012, 20:56:22 »
PLC kanske då har redan typ reläer på utgångar? Tack för länken men där har jag varit och på snart 1000 andra ställen känns det som.. ^-^i alla fall. Men så fort jag försöker göra något eget så går det inte... i programmeringen.
Skrivet av: GDS-Jan
« skrivet: 11 juni 2012, 19:36:11 »
Vad jag har kunskap om så är det inte så mycket som skiljer en arduino eller annan uC från en PLC förutom programmeringsspråk och elektrisk nivå på I/O. Fördelen med arduinon är den stora användarbasen med exempel och bibliotek för givare och hårdvara på internet som gör det lätt att få support. Börja på www.arduino.cc som har massor med exempel och kod för allt möjligt.
Skrivet av: BosseBus
« skrivet: 11 juni 2012, 17:48:17 »
Är det någon här som kan förklara vad som är skillnaden på PLC och Arduino mikrodator. Är det samma sak? Någon påstår att PLC är bättre.. Jag har läst att flera här har snöat in på dessa små datorer, så ni kanske vet? Nybliven ägare till ett antal Arduino mikrodator, som jag hade tänkt att kunna styra ditt å datt med så som ventilation,panna,spjäll,m.m.. men programmeringsspråket har jag svårt för.... Så är det någon som kan komma med tips om något i detta ämne så är det välkommet också.
|
|
|