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   481 / 839
(#) elektronika95 hozzászólása Okt 24, 2018 /
 
Sziasztok!

Ardoino-val kell megoldani egy DC motor nyomaték illetve fordulatszám vezérlését...
Kérdésem az lenne, hogy egy hajszárító motornak kb. 14-18 V-ot megtudok-e hajtani vele, ha külső tápot használok?!
Illetve nyomógombokat és potmétert gondoltam hozzá a megvalósításhoz.
Még azt hogy egy 16x2-es LCD kijelzőre kiírni az aktuális fordulatszámot...

Valaki tudna segíteni?
Előre is köszönöm!
(#) tbarath válasza cpt.zoltan.simon hozzászólására (») Okt 24, 2018 /
 
Ja hogy ESP. Szóval ez Atmel "utasítás", ki tudja hogy implementálták ezt ESP-re, már ha igen. Ha a String-es téma jól megy akkor szerintem ne is küzdj szerintem tovább.
(#) tbarath válasza elektronika95 hozzászólására (») Okt 24, 2018 /
 
Persze, meg tudsz hajtani bármit, csak nem közvetlenül. Kell valamilyen kapcsolóelem, mondjuk egy FET, vagy valamilyen motorvezérlő cél IC. Motorból hülye vagyok, olvasmányélményem a H-bridge, lehet ezzel előrébb vagy.
A nyomógomb, a poti és az LCD triviális, de az már csak a hab lesz a tortán, a funkció legyen az elsődleges.
(#) icserny válasza cpt.zoltan.simon hozzászólására (») Okt 25, 2018 / 1
 
A core_esp8266_noniso.c fájlban van definiálva a függvény, érdemes ellenőrizni, javítani.
Ebben a fórumtopikban is küzdöttek vele (bár lehet, más volt a probléma).
A hozzászólás módosítva: Okt 25, 2018
(#) wbt válasza elektronika95 hozzászólására (») Okt 25, 2018 /
 
Kérdés a visszacsatolás mikéntje. Meghajtani akár egy NFET-tel vagy híddal is lehetséges, ott az áramra figyelj leginkább.
(#) cpt.zoltan.simon válasza icserny hozzászólására (») Okt 26, 2018 /
 
Köszönöm szépen, ránézek!
(#) GPeti1977 hozzászólása Okt 26, 2018 /
 
Egy arduino mega panel mekkora sebességgel (fps) tud egy 480x320 felbontású kijelzőt vezérelni, ilyenre gondoltam:
Bővebben: Kijelző
(#) vargham válasza GPeti1977 hozzászólására (») Okt 26, 2018 /
 
A megjelenítendő képnek mi a forrása? Az Arduinonak kell generálnia folyamatosan, vagy olvassa valahonnan (pl SD kártya)?
(#) GPeti1977 válasza vargham hozzászólására (») Okt 26, 2018 /
 
Az arduino-nak kell generálni. Bár a due jobb lenne használni.
(#) benjami válasza GPeti1977 hozzászólására (») Okt 26, 2018 /
 
A youtube-on találhatsz egy rakat videót az "arduino mega 320x480" keresőszavak kombinálásával. Amúgy lassabb lesz valamivel mint egy UNO, mert a MEGA 8 bites adat lábai jobban össze vannak keverve mint az UNO-é. Ekkora felbontáshoz azért inkább valami 32bites cuccot javasolnék.
A hozzászólás módosítva: Okt 26, 2018
(#) vargham válasza GPeti1977 hozzászólására (») Okt 26, 2018 /
 
STM32
Van hozzá Arduino is.
DMA SPI igen gyorsan kiírja az adatokat.
(#) kapu48 válasza GPeti1977 hozzászólására (») Okt 26, 2018 /
 
Ez a megára való LCD:
Bővebben: Link
(#) atus1981 válasza wbt hozzászólására (») Okt 26, 2018 /
 
8 sec-re raktam kapásból a kódban, ekkor csinálta amit írtam. Új bootloader van?
(#) atus1981 hozzászólása Okt 26, 2018 /
 
Sziasztok!
Soros porton kapok az espeasy-től adatot, viszont elég sok karakter van, ami nem kell. Van megoldás, hogy hogyan lehet kiszűrni a "hasznos" karaktereket további feldolgozásra?
Köszi.
(#) Peter65 válasza elektronika95 hozzászólására (») Okt 26, 2018 /
 
Szia!
A hajszárító motor eredetileg nem DC motor, hanem soros univerzális gép. Persze megtáplálhatod DC feszültséggel, de a nyomaték szabályozás soros gépnél bonyolultabb, mint ha egy külső gerjesztésű vagy állandó mágneses DC motort választanál.
Ha elég az egynegyedes szabályozás (egyirányú fordulatszám és nyomaték), akkor a meghajtásnak elég lehet egy fet és egy szabadon futó dióda.
A fordulatszám és a nyomaték közvetett meghatározásához legalább a motor feszültségét és áramát kellene mérni.
(#) KoblogPerGyok válasza atus1981 hozzászólására (») Okt 27, 2018 /
 
Szia!

Hol vannak ezek a karakterek? Az elején, végén, vagy közben?

De mindegy is, mert a string.replace() függvény segítségével lecserélheted a keresett karaktereket semmire. (azaz amire cserélnéd az '' karakter, nem adsz neki értéket, csak az idézőjelek egymás után.)

Bővebben: Link

Ehhez nyilván az kell, hogy használd a string osztályt. Ha azt nem akarod és byte/char tömbben vannak az adatok, akkor azt is megteheted, hogy a readbyte-nál egy if-el figyeled mi jön be és ha ezek közöl valamelyik megegyezik a kivágni kívántakkal, egyszerően nem teszd bele.

Ennél is van jobb megoldás, de kód nélkül nem tudok mást javasolni.
(#) atus1981 válasza KoblogPerGyok hozzászólására (») Okt 27, 2018 /
 
Egyenlőre még nincs fogadóoldali kód. Az espeasy 10 percenként küld "ACT: OK" és nekem csak az "OK"-ra kellene reagálnia az arduinonak. Vagy az egészre és akkor nem kell válogatni sem.
(#) atus1981 válasza atus1981 hozzászólására (») Okt 27, 2018 /
 
Ebből próbálok elindulni, de csak 2 karakterre reagál, 3 vagy többre nem.
És olyan is akad, hogy bármit beírok, ami A-val kezdődik máris jön a válasz.
  1. int incomingByte = 0;
  2.  
  3. void setup() {
  4.  
  5. Serial.begin(9600);
  6.  
  7. }
  8.  
  9. void loop() {
  10.  
  11.  
  12. if (Serial.available() > 0) {
  13.  
  14. incomingByte = Serial.read();
  15.  
  16. if (incomingByte == 'A'&'C') {
  17.  
  18.  
  19. Serial.println("vetel ok");
  20. }
  21.  
  22.  
  23. }
  24.  
  25. }
(#) berkesandor válasza atus1981 hozzászólására (») Okt 27, 2018 /
 
Csak azt figyelje, hogy jön e egy "O" és utána egy "K" ?
(#) KoblogPerGyok válasza atus1981 hozzászólására (») Okt 27, 2018 / 1
 
Szia!

Szerintem így nem lesz jó. Egésznek adsz át Byte értéket. (int incomingbyte az egész típus nem byte)

Az egyik megoldás, hogy definiálsz egy char tömböt és abba szépen belepakolod azokat a byte-okat amiket a serial-ról kapsz. Ezután a tömb utolsó előtti is utolsó elemét vizsgálod, hogy azok ok-t adnak ki vagy sem. Ez a mód a jobb, mert nem használ string-osztályt. (szerintem ez a jobb, de a string osztállyal sem rossz.)
(#) atus1981 válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
Az lenne a cél.
(#) berkesandor válasza atus1981 hozzászólására (») Okt 27, 2018 / 1
 
Ez a kód mást csinál, de az elv ugyanaz.
Addig vár amíg nem jön "O" "K" a soroson.
Innen már nem nagy ügy.

  1. void WaitOK()
  2. {
  3.  
  4.   char c1 = ' ';
  5.   char c2 = ' ';
  6.   boolean OK = false;
  7.   // Wait for data in rx buffer
  8.   //-----------------------------------------------
  9.   while (Serial.available()) {
  10.   }
  11.   // Read data from buffer
  12.   //-----------------------------------------------
  13.   while (!OK) {
  14.     while (Serial.available()) {
  15.       c1 = c2;
  16.       c2 = char(Serial.read());
  17.       if ( (c1 == 'O') and (c2 == 'K') ) {
  18.         // OK received
  19.         //-----------------------------------------------
  20.         OK = true;
  21.       }
  22.     }
  23.   }
  24. }
(#) atus1981 válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
De azért mást is kell csináljon a program, nem várhat az "OK"-ra 10 percet.
(#) berkesandor válasza atus1981 hozzászólására (») Okt 27, 2018 /
 
Az elvet nézd, sorba olvassa a karaktereket, nem kell tömb, se string, egyszerű a vizsgálat is.
(#) atus1981 válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
Ezt "sütöttem" ki a segítségedből, működik.
Viszont van a programban összesen 10-11 sec delay. Nem okoz problémát?
  1. char c1 = ' ';
  2. char c2 = ' ';
  3.  
  4. void setup() {
  5.  
  6. Serial.begin(9600);
  7.  
  8. }
  9.  
  10. void loop() {
  11.  
  12.  
  13. if (Serial.available() > 0) {
  14.  
  15.       c1 = c2;
  16.       c2 = char(Serial.read());
  17.       if ( (c1 == 'O') and (c2 == 'K') ) {
  18.         Serial.println("vetel ok");
  19.   }
  20.  }
  21. }
(#) berkesandor válasza atus1981 hozzászólására (») Okt 27, 2018 /
 
Nem tudom a buffer tárolja e az adatot, a 10-11 sec egyben van vagy darabokba?
Ki kell próbálni, jobb ötlet nincs.
(#) atus1981 válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
Darabokban van. Viszont olyan opciót lehet csinálni, hogy a válasz után törölni a c1 és c2 értékét?
  1. if (Serial.available() > 0) {
  2.  
  3.       c1 = c2;
  4.       c2 = char(Serial.read());
  5.       if ( (c1 == 'O') and (c2 == 'K') ) {
  6.         Serial.println("vetel ok");
  7.           char c1 = 0;
  8.           char c2 = 0;
(#) berkesandor válasza atus1981 hozzászólására (») Okt 27, 2018 /
 
Miért kell törölni? De persze, lehet.
(#) atus1981 válasza berkesandor hozzászólására (») Okt 27, 2018 /
 
Gondoltam azért törölném, hogy ne legyen tele a serial buffer. Vagy az nem tud megtelni?
(#) vyky hozzászólása Okt 27, 2018 /
 
Sziasztok. Volna egy kérésem,kérdésem. Adott egy kód.
  1. /*
  2.    circuits4you.com
  3.    Digital Temperature Controller
  4. */
  5. //#include <LiquidCrystal.h>
  6.  
  7. // initialize the library with the numbers of the interface pins
  8. //LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
  9.  
  10. const int LED_RED=10; //Red LED
  11. const int LED_GREEN=11; //Green LED
  12. const int RELAY=12; //Lock Relay or motor
  13.  
  14. //Key connections with arduino
  15. const int up_key=3;
  16. const int down_key=2;
  17.  
  18. int SetPoint=30;
  19. //=================================================================
  20. //                  SETUP
  21. //=================================================================
  22. void setup(){
  23.   Serial.begin(9600);
  24.   pinMode(LED_RED,OUTPUT);
  25.   pinMode(LED_GREEN,OUTPUT);  
  26.   pinMode(RELAY,OUTPUT);  
  27.   pinMode(up_key,INPUT);
  28.   pinMode(down_key,INPUT);
  29.  
  30.   //Pull up for setpoint keys
  31.   digitalWrite(up_key,HIGH);
  32.   digitalWrite(down_key,HIGH);
  33.  
  34.    // set up the LCD's number of columns and rows:
  35.  // lcd.begin(16, 2);
  36.   // Print a message to the LCD.
  37.   Serial.print("nyomas szabalyzas");  
  38.   //lcd.setCursor(0,1); //Move coursor to second Line
  39.   Serial.print("Temp. Controller");
  40.   digitalWrite(LED_GREEN,HIGH);  //Green LED Off
  41.   digitalWrite(LED_RED,LOW);     //Red LED On
  42.   digitalWrite(RELAY,LOW);       //Turn off Relay
  43.   delay(2000);
  44. }
  45. //=================================================================
  46. //                  LOOP
  47. //=================================================================  
  48. void loop(){
  49.   int sensorVal = analogRead(A1);
  50.  
  51.   float voltage = (sensorVal * 5.0) / 1024.0;
  52.  
  53.   float pressure_pascal = (3.0 * ((float)voltage - 0.47)) * 1000000.0;
  54.   float pressure_bar = pressure_pascal / 10e5;
  55.  
  56.    
  57.   //double Temperature = ((5.0/1024.0) * analogRead(A1)) * 100;  //10mV per degree 0.01V/C. Scalling
  58.  
  59.  // lcd.setCursor(0,0);
  60.   Serial.print("Nyomas:");    //Do not display entered keys
  61.   Serial.print(pressure_bar);
  62.  
  63. //Get user input for setpoints  
  64.   if(digitalRead(down_key)==LOW)
  65.   {
  66.     if(SetPoint>0)
  67.     {
  68.       SetPoint--;    
  69.     }
  70.   }
  71.   if(digitalRead(up_key)==LOW)
  72.   {
  73.     if(SetPoint<150)
  74.     {
  75.       SetPoint++;
  76.     }
  77.   }
  78.  
  79. //Display Set point on LCD
  80.   //lcd.setCursor(0,1);
  81.   Serial.println("Set Point:");
  82.   Serial.print(SetPoint);
  83.   Serial.println("Bar   ");
  84.  
  85. //Check Temperature is in limit
  86. if(pressure_bar > SetPoint)
  87. {
  88.    digitalWrite(RELAY,LOW);    //Turn off heater
  89.    digitalWrite(LED_RED,LOW);
  90.    digitalWrite(LED_GREEN,HIGH);  //Turn on Green LED
  91. }
  92. else
  93. {
  94.   digitalWrite(RELAY,HIGH);    //Turn on heater
  95.   digitalWrite(LED_GREEN,LOW);
  96.   digitalWrite(LED_RED,HIGH);  //Turn on RED LED  
  97. }
  98.  
  99.   delay(100); //Update at every 100mSeconds
  100. }

Ez jelenleg egy nyomás szabályzó vezérlés.
Az esetemben a relé helyén vagy utána egy dc motor lenne.
Azt szeretném elérni,hogy ha a nyomás leesik a beállított értéktől akkor a motor elinduljon és termeljen nyomást és utána megálljon. Jelen esetben ezt is teszi. A nehézség ott kezdődik,hogy valószínűleg a motor mire megáll több nyomást fog előállítani mint ami kell.Ezt a,hogy lehetne megoldani? Azt sejtem hogy áttételes motor kell,így már jobb a helyzet. Vagy esetleg lehet ezt PWM szabályzással? Akkor a relé kiesik ami nem lenne gond.De ezt a részét nem tudom megoldani egyedül. Ebben kérnék segítséget.
Következő: »»   481 / 839
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