Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   482 / 840
(#) berkesandor válasza atus1981 hozzászólására (») Okt 27, 2018 /
 
Így csak a két változónak adsz más értéket, a buffert nem törlöd.
Inkább akkor ez: Bővebben: Link
(#) berkesandor válasza vyky hozzászólására (») Okt 27, 2018 /
 
Annyira pontosnak kellene lenni a nyomásnak?
Milyen motor AC vagy DC?
(#) vyky válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
A helyzet az,hogy jó lenne ha max 1-2 báron belül maradna. És dc motor Mert munkakasiról fog üzemelni.
(#) berkesandor válasza vyky hozzászólására (») Okt 27, 2018 /
 
Erre ig nehéz bármit mondani.
Mekkora a puffer amiben a nyomás keletkezik ? Mekkora a szivattyú szállítási teljesítménye?
Ezeket csak próba után lehet meghatározni.
Első körben a maximális nyomás előtt kapcsolnám le a szivattyút, próbálgatással meghatározva mennyivel előbb kell megállni.
A másik, kell egy bekapcsolási nyomás, és egy kikapcsolási. Mert ha kicsi az "elvétel" a szivattyút folyamatosan rángatni fogja.
Ha nagyon tutit akarsz valami függvénnyel kell szabályoznod. (fordulatszám szabályzás + PI, PID).
(#) vyky válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
Értem,akkor a tesztelés jön hamarosan,amikor tudok szerezni egy 300-500 wattos dc motort. Hogy mekkora a szivattyú teljesítménye? Passz.Mert az nincs rajta feltüntetve. De a max nyomás 100 bar nekem a fele elég lenne. A bekapcsolási nyomás az 5 barral kevesebb,de lehet a kikapcsolási is annyi szóval,meglehet jó az a 10 bar eltérés. De majd a teszt eldönti. Ez a PID szabályzás elég sötét folt nekem,azt hogy tudnám megvalósítani?
(#) berkesandor válasza vyky hozzászólására (») Okt 27, 2018 /
 
100 bar? A vezetékes vízhálózatban kb 3,5-4 bar van.
Bővebben: Link

Nagyon nagyon nagyon nagyon nagyon leegyszerűsítve, figyeli az aktuális értéket és a munka pont távolságát, valamint változás mértékét (meredekségét) is.
Pl: nekem 10 bár kell, 8 bárig padló gáz, majd ahogyan közeledik a 10-hez egyre lassít, és pont 10 bárra érkezik.
(#) vyky válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
Nem vizet kell sűríteni Festéknyomás lenne tervben
(#) berkesandor válasza vyky hozzászólására (») Okt 27, 2018 /
 
Nem tudom honnan jött a víz nekem
(#) vyky válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
Azt nem tudhatom
(#) KoblogPerGyok válasza vyky hozzászólására (») Okt 27, 2018 /
 
Szia!

Én azt tenném, hogy folyamatosan mérném a nyomást. A motort pedig PWM jellel vezérelném, ha az lehetséges. Az Arduino mikor közelít a nyomáshoz akkor lassan csökkenti a fordulatszámot. Annyit tennék még bele, hogy miután kikapcsolt akkor az alsó nyomásérték aktiválódjon a kódban, azaz végzettnek tekintse a feltöltést. Ha nem ezt teszed, akkor a nyomás vagy el sem éri a kért szintet és a motor örökké megy, vagy folyton elindul, ha kis nyomásvesztés lép fel. Hagyni kell neki játékteret mindenképp.
(#) vyky válasza KoblogPerGyok hozzászólására (») Okt 27, 2018 /
 
Szia! Köszönöm a tanácsot. A nyomás figyelés elvileg folyamatos.De hogyan hagyjak benne holtjátékot? Ebben segítenél?
(#) Kera_Will válasza vyky hozzászólására (») Okt 27, 2018 /
 
A forrásķódban tudod megírni magát a hiszterézised értékét.
Pár darab if else vagy select/case utasítással.
A folyamatos mérési eredményeket érdemes 5 -10 mérés átlagolása után felhasználni a hiszterézis eldöntéséhez.
(#) vyky válasza Kera_Will hozzászólására (») Okt 27, 2018 /
 
Köszönöm,akkor ennek megpróbálok utána nézni
(#) atus1981 hozzászólása Okt 27, 2018 /
 
Sziasztok!
Olyat tapasztalt már valaki, hogy Nano, I2C kijelző, hardveres soros vonalon egy esp-01 és amikor nincs rákötve a kijelző a lapra, akkor a loop-ban nem kommunikál a soros port?
Gondoltam minek a kijelző, ha csak a soros portot piszkálom. Már majdnem kicseréltem a Nano-t, amikor eszembe jutott, hogy megnézem a kijelzőn nem-e lefagyott a program setup után...
Láss csodát, rajta a kijelző és jöttek az adatok...
(#) vyky válasza KoblogPerGyok hozzászólására (») Okt 27, 2018 /
 
Átírtam a kódot.
  1. //#include <LiquidCrystal.h>
  2.  
  3. //LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
  4.  
  5. const int LED_RED=10; //Red LED
  6. const int LED_GREEN=11; //Green LED
  7. const int RELAY=12; //Lock Relay or motor
  8.  
  9. //Key connections with arduino
  10. const int up_key=3;
  11. const int down_key=2;
  12.  
  13. int SetPoint=30;
  14. //=================================================================
  15. //                  SETUP
  16. //=================================================================
  17. void setup(){
  18.   Serial.begin(9600);
  19.   pinMode(LED_RED,OUTPUT);
  20.   pinMode(LED_GREEN,OUTPUT);  
  21.   pinMode(RELAY,OUTPUT);  
  22.   pinMode(up_key,INPUT);
  23.   pinMode(down_key,INPUT);
  24.  
  25.   //Pull up for setpoint keys
  26.   digitalWrite(up_key,HIGH);
  27.   digitalWrite(down_key,HIGH);
  28.  
  29.    // set up the LCD's number of columns and rows:
  30.  // lcd.begin(16, 2);
  31.   // Print a message to the LCD.
  32.   Serial.print("nyomas szabalyzas");  
  33.   //lcd.setCursor(0,1); //Move coursor to second Line
  34.   Serial.print("nyomasmeres");
  35.   digitalWrite(LED_GREEN,HIGH);  //Green LED Off motor
  36.   digitalWrite(LED_RED,LOW);     //Red LED On
  37.   digitalWrite(RELAY,LOW);       //Turn off Relay
  38.   delay(2000);
  39. }
  40. //=================================================================
  41. //                  LOOP
  42. //=================================================================  
  43. void loop(){
  44.   int sensorVal = analogRead(A1);
  45.  
  46.   float voltage = (sensorVal * 5.0) / 1024.0;
  47.  
  48.   float pressure_pascal = (3.0 * ((float)voltage - 0.47)) * 1000000.0;
  49.   float pressure_bar = pressure_pascal / 10e5;
  50.   int pwm =map(pressure_bar,0,1023,0,255);
  51.    
  52.   //double Temperature = ((5.0/1024.0) * analogRead(A1)) * 100;  //10mV per degree 0.01V/C. Scalling
  53.  
  54.  // lcd.setCursor(0,0);
  55.   Serial.print("Nyomas:");    //Do not display entered keys
  56.   Serial.print(pressure_bar);
  57.  
  58. //Get user input for setpoints  
  59.   if(digitalRead(down_key)==LOW)
  60.   {
  61.     if(SetPoint>0)
  62.     {
  63.       SetPoint--;    
  64.     }
  65.   }
  66.   if(digitalRead(up_key)==LOW)
  67.   {
  68.     if(SetPoint<150)
  69.     {
  70.       SetPoint++;
  71.     }
  72.   }
  73.  
  74. //Display Set point on LCD
  75.   //lcd.setCursor(0,1);
  76.   Serial.println("Ertek:");
  77.   Serial.print(SetPoint);
  78.   Serial.println("Bar   ");
  79.  
  80. //Check Temperature is in limit
  81. if(pressure_bar > SetPoint)
  82. {
  83.    digitalWrite(RELAY,LOW);    //Turn off heater
  84.    digitalWrite(LED_RED,LOW);
  85.    digitalWrite(LED_GREEN,HIGH);  //Turn on Green LED
  86. }
  87. else
  88. {
  89.   digitalWrite(RELAY,pwm);    //Turn on heater
  90.   digitalWrite(LED_GREEN,LOW);
  91.   digitalWrite(LED_RED,HIGH);  //Turn on RED LED  
  92. }
  93.  
  94.   delay(100); //Update at every 100mSeconds
  95. }
Így ,de szerintem valami nem jó,mert "bár a motor helyén led van" nem érzékelem a pwm szabályzást.
A belerakott kód potméterhez van írva,lehet ez a baj?
(#) KoblogPerGyok válasza vyky hozzászólására (») Okt 27, 2018 /
 
Valójában nem annyira bonyolult leprogramozni, kell bele pár logikai változó amik a megfelelő helyen változtatják értékeiket. (és ehhez kell majd pár if... :.-))

Elsőnek pár kisebb program, amiben mindent kiszervezel függvényekbe amit csak lehet, mert az megkönnyíti a munkát. Simításhoz jó megoldás lehet a mozgóátlag. Ezzel simíthatod a nyomás mérését. Nem látom a projektet, de gondolom indítani is kell majd a rendszert, ezért most azt gondolom, hogy pl a setup-ban annyi nyomásmérést kell végrehajtani ami ezt a mozgóátlagot feltölti. Utána aloop-ban is mérni, (hozzáadni a tömbhöz, bármi) és annak függvényében PWM jel előállítása. Ezt a mozgóátlagot és PWM jelet előállító függvényt ki kellene szervezni függvényekbe, majd a loop-ból hívogatni.

Későbbiekben pedig a megszakításokkal operálni, de lehet nem kell sok, maximum a vészstop, vagy valami vész nyomásérzékelő/túlmelegedés védelem bekötése esetén. Ezt neked kell tudnod.
(#) atus1981 válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
Ilyen szinten nem merek belenyúlni, de köszi.

Most az a bökkenő, hogy ha a fentebb, általad hozott példát feltöltöm, akkor soros monitorról működik is, viszont ha az esp-re kötöm, akkor nem. Vagy nem jól értelmezem amit az esp küld?
  1. ACT  : OK
az esp soros kimenete, természetesen 'A' és 'C' van vizsgálva. gépről soros monitoron megy, esp-vel nem.
A hozzászólás módosítva: Okt 27, 2018
(#) berkesandor válasza atus1981 hozzászólására (») Okt 27, 2018 /
 
Hülye kérdés, de átirtad, hogy a soft serial-t nézze (ha arról megy)?
(#) atus1981 válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
Hardveres serial-lal nem működik? Nincs softwareserial használatban.
A "csupasz" kódban, amit kivettem a példádból, azzal működik a hardveres serial-on.
A hozzászólás módosítva: Okt 27, 2018
(#) berkesandor válasza atus1981 hozzászólására (») Okt 27, 2018 /
 
De, a soros is azon megy.
Soros monitor, meg a HW kommunikáció a modul és az ardu kötött nem fog egyszerre menni.
(#) vyky válasza KoblogPerGyok hozzászólására (») Okt 27, 2018 /
 
Köszönöm,ennek is utána olvasok.
Valaki tudna nekem mutatni egy példaprogramot arra,hogy egy bizonyos számú enkóder elmozdulásra ,hogy lehet kapcsolni pint? Erre nem találtam a neten semmit
(#) atus1981 válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
Ezt tudom. Viszont amikor nincs megnyitva a soros monitor, akkor az esp és a nano kommunikálhat. Vagy mindenképpen tegyem softserial-ra?
A hozzászólás módosítva: Okt 27, 2018
(#) berkesandor válasza atus1981 hozzászólására (») Okt 27, 2018 /
 
HW stabilabb. Baud-ok stimmelnek?
(#) atus1981 válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
Igen, 9600-on van mind a kettő. Vagy még az lehet, hogy nem az jönne ki az esp-ből soros monitorra, mint amit szimplán a nanonak küld, amikor magukra vannak hagyva? Nem értem mi lehet...
(#) berkesandor válasza atus1981 hozzászólására (») Okt 27, 2018 /
 
Logikai analizátor kellene, mert igy nehéz megtalálni a hibát.
(#) vyky hozzászólása Okt 27, 2018 /
 
Üdv ismét
Erre jutottam az encoder kóddal.
  1. #define outputA 2
  2.  #define outputB 3
  3.  int led =7;
  4.  int Pos = 0;
  5.  int State;
  6.  int LastState;  
  7. const float pi = 3.14;
  8.  
  9. const int R = 7;
  10. const int N = 22;
  11. float distance = 0;
  12.  
  13.  void setup() {
  14.    Serial.begin (9600);
  15.    pinMode (led,INPUT);
  16.    pinMode (outputA,INPUT);
  17.    pinMode (outputB,INPUT);
  18.    digitalWrite(led,LOW);
  19.  
  20.    // Reads the initial state of the outputA
  21.    LastState = digitalRead(outputA);  
  22.  }
  23.  void loop() {
  24.    State = digitalRead(outputA);
  25.    if (State != LastState){    
  26.      
  27.      if (digitalRead(outputB) != State) {
  28.        Pos ++;
  29.      }
  30.      else {
  31.        Pos --;
  32.      
  33.    }
  34.      distance = Pos+(2*pi*R)/N;
  35.      Serial.println(distance);
  36.      Serial.println("cm  ");
  37. if (distance >= 10){
  38.   digitalWrite (led,HIGH);
  39.  }

Most olyanban kellene segíteni,hogy azt miként lehet megoldani,hogy a következő 10 ciklus után kikapcsoljon?
(#) KoblogPerGyok válasza vyky hozzászólására (») Okt 28, 2018 /
 
Szia!

Milyen ciklus után? Változásra, vagy a loop lefutására? Az utóbbi néhány milisec alatt megtörténik, gondolom az nem kell. Egyszerűen egy segédváltozó, ami kezdetben 0, majd a változáskor növeled 1-l. Az egészet meg egy if-be... Ha a számláló >9 akkor fusson le amit szeretnél. Ennyi, nem kell bonyolultan gondolkodni.

A pi-t nyugodtan megadhatod 6 tizedesig, legyen pontosabb ha már...

Gondolom neked a distance ha eléri a 10-t akkor ne lehessen növelni, meg csökkenteni. Az egészet egy if-be kell tenni.
(#) Kera_Will válasza vyky hozzászólására (») Okt 28, 2018 /
 
Ismerkedj meg a WHILE függvénnyel is ami elöltesztelő nem csak IF van.

while függvényről
(#) vyky válasza KoblogPerGyok hozzászólására (») Okt 28, 2018 /
 
Ohh az éjjel megcsináltam De valami nem százas
  1. #define outputA 2 //enkoder 1
  2.  #define outputB 3 //enkoder 2
  3.  int led =7;// pisztolyszelep
  4.  int Pos = 0;
  5.  int State;
  6.  int LastState;  
  7. const float pi = 3.14;
  8. byte V = 1;
  9. const int R = 7;
  10. const int N = 22;
  11. float distance = 0;
  12.  
  13.  
  14.  void setup() {
  15.    Serial.begin (9600);
  16.    pinMode (led,INPUT);
  17.    pinMode (outputA,INPUT);
  18.    pinMode (outputB,INPUT);
  19.    digitalWrite(led,LOW);
  20.    // Reads the initial state of the outputA
  21.    LastState = digitalRead(outputA);  
  22.  }
  23.  void loop() {
  24.    State = digitalRead(outputA);
  25.    if (State != LastState){    
  26.      
  27.      if (digitalRead(outputB) != State) {
  28.        Pos ++;
  29.      }
  30.      else {
  31.        Pos --;
  32.      
  33.    }
  34.      distance = Pos+(2*pi*R)/N;
  35.      Serial.println(distance);
  36.      Serial.println("cm  ");
  37.  
  38.  if (Pos == 8){
  39.    V^= 1;
  40.   digitalWrite (led,V);
  41.     Pos = 0;    
  42.     distance = (distance +1 );    
  43.    }                  
  44.    }
  45.    LastState = State;}

Valamiért az első 10 ciklusra nem reagál A számláló nullázódik és csak a következőnél kapcsol be a led,majd a következő 10-nél ki. Ezt mitől lehet?
(#) vyky válasza Kera_Will hozzászólására (») Okt 28, 2018 /
 
Megnézem köszi
Következő: »»   482 / 840
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem